LedOn withButton03.ino
Aller à la navigation
Aller à la recherche
// Example 03C: Turn on LED when the button is pressed // and keep it on after it is released // after Getting started with Arduino by M. Banzi // pp. 51 et 52 // version 3, définitve, résolvant le "bouncing" // due à l'imperfection des contacts du bouton // par une pause de 10 à 50 millisecondes (debouncing) // debugging April 11, 2012 // French comments April, 13, 2012 // @atelierpdf/infolipo March 20, 2012 const int LED = 13; // la fiche pour la LED const int BUTTON = 7; // la fiche d'entrée // à laquelle le bouton est relié int val = 0; // val va contenir l'état // de la fiche d'entré int old_val = 0; // cette variable va contenir // la valeur précédente de "val" int state = 0; // 0 = LED éteinte, 1 = LED allumée void setup() { // Serial.begin(9600); // ouverture de la ligne série pinMode(LED, OUTPUT); // variable LED est une sortie pinMode(BUTTON, INPUT); // la variable BUTTON est une entrée } void loop(){ val = digitalRead(BUTTON); // la dernière valeur en entrée // est conservée dans val // Serial.println(val); // affiche dans moniteur du port série l'état de l'interrupteur // on teste si il y a eu une transition // si oui, on change la valeur de "val" if ((val == HIGH) && (old_val == LOW)){ state = 1 - state; // on ajoute un temps de 10 milisecondes pour // tenir compte du bouncing delay(50); } old_val = val; // val est à présent ancienne, conservons la // si la LED est allumée if (state == 1) { digitalWrite(LED, HIGH); // allume-la } else { digitalWrite(LED, LOW); // sinon, éteins-la } }