
Vidéo
Schéma du circuit

Code source
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Allumer et éteindre une LED avec un bouton
4// ─────────────────────────────────────────
5// Chaque appui sur le bouton bascule la LED (allumée/éteinte). L'attente
6// de 300 ms ignore les rebonds du bouton. Si le bouton est maintenu, la
7// LED bascule toutes les 300 ms.
8//
9// Broches :
10// D13 -> Bouton, autre patte sur 5V
11// D13 -> Résistance de 10k vers GND (pull-down)
12// D7 -> LED (avec une résistance de 330 ohm)
13
14int ledState = 0; // État de la LED : 0 = éteinte, 1 = allumée
15
16void setup() {
17 pinMode(13, INPUT); // Entrée du bouton (pull-down externe)
18 pinMode(7, OUTPUT); // Sortie de la LED
19}
20
21void loop() {
22 if (digitalRead(13) == 1) { // Bouton appuyé
23 ledState = !ledState; // Inverser l'état
24 digitalWrite(7, ledState);
25 delay(300); // Attendre la fin du rebond
26 }
27}
28FAQ
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é.
