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
}
}