Quand nous analysons le code :
/* Blink */ // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Nous voyons que le pseudo-code équivalent serait :
Initialisation: port LED_BUILDIN est un composant LED. Donc le port est en écriture. Loop: allume la LED. attend une seconde. eteint la LED. attend une seconde.
Si nous avions une classe Led
, nous pourrions réécrire le code comme suit :
Led builtinLed(LED_BUILTIN); // Crée un objet LED connecté au port LED_BUILTIN void setup() {} void loop() { builtinLed = true; delay(1000); builtinLed = false; delay(1000); }
Le code serait nettement plus lisible.
On pourrait même inverser l'état de la led et le code se réduirait à :
Led builtinLed(LED_BUILTIN); // Crée un objet LED connecté au port LED_BUILTIN void setup() {} void loop() { builtinLed = !(builtinLed; delay(1000); }
Nous vous proposons de créer une classe Led
ayant l'entête suivante :
class Led { public: Led(uint32_t thePin); Led& operator = (bool isOn); operator bool() const; Led& operator ~(); // Optionel. }; <code>