====== 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.
};