====== Création d'une classe LED ====== ====== Pourquoi créer une classe LED ====== 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); } ====== Action : Créer une classe Led ====== 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. };