
Vidéo
Schéma du circuit

Code source
1int ledState = 0;
2
3void setup() {
4 pinMode(13, INPUT);
5 pinMode(7, OUTPUT);
6}
7
8void loop() {
9 if (digitalRead(13) == 1) {
10 ledState = !ledState;
11 digitalWrite(7, ledState);
12 delay(300);
13 }
14}FAQ
Qu'est-ce que le « debounce » et pourquoi est-il nécessaire ?▾
Lorsqu'on appuie sur un bouton mécanique, celui-ci s'ouvre et se referme plusieurs fois en l'espace de quelques millisecondes (rebond). L'Arduino peut interpréter cela comme plusieurs pressions successives et la LED reste alors dans un état aléatoire. Le débounce ignore ces rebonds en attendant un court laps de temps (par exemple 50 ms) après le changement d'état.
Parfois, la LED ne change pas ou change deux fois, pourquoi ?▾
En général, le délai anti-rebond est absent ou trop court. De plus, il suffit de détecter le moment où le bouton est « enfoncé » (état précédent : LOW, nouvel état : HIGH) ; si l'état change à chaque cycle tant que le bouton reste enfoncé, la LED clignote de manière aléatoire.
À quoi sert la variable d'état ?▾
Elle conserve en mémoire si la LED est allumée ou éteinte. À chaque pression valide, la variable est inversée (ledDurum = !ledDurum) et la LED est activée ou désactivée en fonction de cette valeur.
Puis-je contrôler différentes LED à l'aide de plusieurs boutons ?▾
Oui, il suffit de définir une broche distincte, un état précédent distinct et une variable d'état de la LED distincte pour chaque bouton. Si tu utilises beaucoup de boutons, il est préférable d'utiliser des tableaux et un code de débouncing basé sur la fonction `millis()` pour plus de clarté.
