User Tools

Site Tools


in202:seance_7:jalon_1

Jalon 1: La classe DimmableLed

Retour à la séance 7

Pour ce TD, nous allons partir du code qui est présent dans l'archive que vous télécharger à partir de ce lien.

L'objectif est d'étendre la classe Led en implantant une classe DimmableLed, la différence entre la classe Led et la classe DimmableLed, c'est que la classe DimmableLed autorise de contrôler la tension que nous délivrons à la classe diode. Plus la tension est élevée, plus l'intensité lumineuse de la diode est importante.

Phase 1

Brancher votre diode blanche en la mettant entre la terre et un port de la carte ARDUINO parmi les ports allants de 8 à 12.

Phase 2

Tester le bon branchement de votre diode en écrivant un petit programme qui peut ressembler au programme suivant :

const int ledPin = 8; // J'ai pris le port 8 pour la Diode.
 
void setup() {
  pinMode(ledPin, OUTPUT);  
  digitalWrite(ledPin, HIGH);
}
 
void loop() {}

Normalement votre led doit s'allumer.

Phase 3

Maintenant, nous allons nous intéresser au squelette de la classe DimmableLed. Ce squelette propose des fonctions nouvelles par rapport à la classe Led :

  • bool IncreaseLigth(); Cette fonction augmente l'intensité lumineuse de la led et retourne true si l'opération est possible. Si la led est déjà au maximun, alors la fonction ne modifie pas l'intensité lumineuse et retourne false.
  • bool DecreaseLigth(); Cette fonction diminuer l'intensité lumineuse de la led et retourne true si l'opération est possible. Si la led est éteinte, alors la fonction ne modifie pas l'intensité lumineuse et retourne false.

A côté de ces fonctions nouvelles, nous devons modifier les anciennes fonctions :

  • bool SwicthOn(); Met la diode à l'intensité maximale.
  • bool SwicthOff(); Eteint la diode en mettant son intensité à 0.
  • bool isSwitchOn() const; Test si la diode est allumée (ie. son intensité est supérieure à 0).

Ensuite, vous pouvez ajouter des fonctions complémentaires si vous le souhaitez :

  • une fonction pour récupérer l'intensité,
  • une fonction pour indiquer si la led est au maximun d'intensité.

Etape 1

Désormais, nous ne sommes pas en tout ou rien. C'est pour cela que nous n'utilisons pas la commande digitalWrite mais la commande analogWrite(pin, value) qui prend deux valeurs :

  • pin: le port de sortie,
  • value : le niveau d'intensité, c'est une valeur entre 0 (0V) et 255 (3,3V).

analogWrite(ledPort, 0) revient à éteindre la led, analogWrite(ledPort, 255) revient à mettre la led au maximun de son intensité.

Compléter le code de la classe DimmableLed en définissant d'abord les fonctions :

  • bool SwicthOn(); Met la diode à l'intensité maximale.
  • bool SwicthOff(); Eteint la diode en mettant son intensité à 0.
  • bool isSwitchOn() const; Test si la diode est allumée (ie. son intensité est supérieure à 0).

Tester si cela fonctionne bien.

Etape 2

Compléter les fonctions :

  • bool IncreaseLigth(); Cette fonction augmente l'intensité lumineuse de la led et retourne true si l'opération est possible. Si la led est déjà au maximun, alors la fonction ne modifie pas l'intensité lumineuse et retourne false.
  • bool DecreaseLigth(); Cette fonction diminuer l'intensité lumineuse de la led et retourne true si l'opération est possible. Si la led est éteinte, alors la fonction ne modifie pas l'intensité lumineuse et retourne false.

et tester enfin avec un programme dont la boucle du programme qui allume la diode et diminue progressivement l'intensité. Une fois la diode éteinte, il rallume la diode et diminue progressivement l'intensité.

Navigation

in202/seance_7/jalon_1.txt · Last modified: 2022/11/18 10:45 (external edit)