User Tools

Site Tools


in202:seance_4:led

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.
};
<code>
in202/seance_4/led.txt · Last modified: 2022/11/18 10:47 (external edit)