====== Jalon 1: La classe DimmableLed ====== [[in202:seance_7|Retour à la séance 7]] Pour ce TD, nous allons partir du code qui est présent dans l'archive que vous [[https://perso.ensta-paris.fr/~bmonsuez/Media/code/in202/2021/DimmableLed.zip|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 [[https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/|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 ====== Suivant: ** Jalon 2: **[[.:jalon_2|Détecter les appuis courts, longs et très longs sur le bouton poussoir]]