/* Le barregraphe L'objectif est de réalier un barregraphe, avec deux boutons poussoirs: un pour incrémenter le nombre de LEDs allumées, l'autre pour le décrémenter. */ /* Déclaration des constantes pour les noms des pattes */ const int btn_minus = 2; //Bouton 1 pour décrémenter le nombre de LEDs allumés const int btn_plus = 3; //Bouton 2 pour incrémenter le nombre de LEDs allumés const int led_0 = 8; //Led 0 const int led_1 = 9; //Led 1 const int led_2 = 10; //Led 2 const int led_3 = 11; //Led 3 /* Déclaration des variables utilisées pour le comptage et le décomptage */ int nombre_led = 0; //le nombre qui sera incrémenté et décrémenté int etat_bouton; //lecture de l'état des boutons (un seul à la fois mais une variable suffit; en effet, il n'est pas prévu d'appuyer sur les deux boutons simultanément) int memoire_plus = LOW; //état relâché par défaut pour le bouton 2 int memoire_minus = LOW; //état relâché par défaut pour le bouton 1 /* Initilisation des pattes en entrée/sortie: entrées pour les boutons, sorties pour les LEDs */ void setup() { pinMode(btn_plus, INPUT); pinMode(btn_minus, INPUT); pinMode(led_0, OUTPUT); pinMode(led_1, OUTPUT); pinMode(led_2, OUTPUT); pinMode(led_3, OUTPUT); } /* Et c'est parti pour le programme! */ void loop() { //lecture de l'état du bouton d'incrémentation (on lit l'état du btn_plus et on l'inscrit dans la variable etat_bouton) etat_bouton = digitalRead(btn_plus); //Si le bouton a un état différent que celui enregistré ET que cet état est "appuyé" if((etat_bouton != memoire_plus) && (etat_bouton == HIGH)) { nombre_led++; //on incrémente la variable qui indique combien de LEDs devrons s'allumer } memoire_plus = etat_bouton; //on enregistre l'état du bouton pour le tour suivant //et maintenant pareil pour le bouton qui décrémente etat_bouton = digitalRead(btn_minus); //lecture de son état //Si le bouton a un état différent que celui enregistré ET que cet état est "appuyé" if((etat_bouton != memoire_minus) && (etat_bouton == HIGH)) { nombre_led--; //on décrémente la valeur de nombre_led } memoire_minus = etat_bouton; //on enregistre l'état du bouton pour le tour suivant //on applique des limites au nombre pour ne pas dépasser 4 ou 0 (puisqu'on a 4 LEDs) if(nombre_led > 4) { nombre_led = 4; } if(nombre_led < 0) { nombre_led = 0; } //On créé une fonction affiche() pour l'affichage du résultat //on lui envoie alors en paramètre la valeur du nombre de LED à éclairer affiche(nombre_led); } void affiche(int valeur_recue) { //on éteint toutes les leds digitalWrite(led_0, LOW); digitalWrite(led_1, LOW); digitalWrite(led_2, LOW); digitalWrite(led_3, LOW); //Puis on les allume une à une if(valeur_recue >= 1) // "si la valeur reçue est plus grande ou égale à 1..." { digitalWrite(led_0, HIGH); // "on allume la LED 0 } if(valeur_recue >= 2) // "si la valeur reçue est plus grande ou égale à 2..." { digitalWrite(led_1, HIGH); // "on allume la LED 1 (sous-entendu que la LED 0 est allumée, puisque la valeur est plus grande que 1) } if(valeur_recue >= 3) // "si la valeur reçue est plus grande ou égale à 3..." { digitalWrite(led_2, HIGH); // "on allume la LED 2 } if(valeur_recue >= 4) // "si la valeur reçue est plus grande ou égale à 4..." { digitalWrite(led_3, HIGH); // "on allume la LED 3 } }