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.
Brancher votre diode blanche en la mettant entre la terre et un port de la carte ARDUINO parmi les ports allants de 8 à 12.
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.
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 :
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.
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é.
Suivant: Jalon 2: Détecter les appuis courts, longs et très longs sur le bouton poussoir