🛠 Allumer une LED avec un bouton poussoir
Objectifs
Lire une entrée numérique et commander une sortie : le couple bouton/LED, base de toute interaction. Vous allez découvrir les résistances de pull-up internes (INPUT_PULLUP), le montage actif-à-l'état-bas, et le phénomène de rebond mécanique.
Matériel
- 1 Arduino UNO R3 + câble USB-B
- 1 breadboard, fils de connexion
- 1 bouton poussoir
- 1 LED + 1 résistance 330 Ω (limiter le courant sous le plafond de 20 mA par broche)
- Câblage : bouton entre la pin 2 et GND (aucune résistance externe nécessaire, la pull-up interne fait le travail) ; LED + 330 Ω entre la pin 13 et GND.
Code complet
// Bouton sur pin 2 (vers GND), LED sur pin 13.
const uint8_t BTN = 2;
const uint8_t LED = 13;
void setup {
pinMode(BTN, INPUT_PULLUP); // pull-up interne : repos = HIGH, appuyé = LOW
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop {
bool appuye = (digitalRead(BTN) == LOW); // logique inversée (actif-bas)
digitalWrite(LED, appuye ? HIGH : LOW);
Serial.println(appuye ? "appuye" : "repos");
delay(10);
}
Vérification attendue
LED éteinte au repos, allumée quand on appuie. Le Moniteur série (9600 bauds) affiche l'état en continu. Si vous retirez le fil de la pin 2 sans le pull-up, l'entrée flotte et l'affichage devient aléatoire — c'est précisément le comportement qu'INPUT_PULLUP corrige.
Erreurs fréquentes
- Oublier INPUT_PULLUP et câbler le bouton vers +5 V sans résistance de pull-down : entrée flottante, lectures erratiques.
- Inverser la logique : avec ce montage, appuyé == LOW. Beaucoup de débutants testent == HIGH et croient le bouton mort.
- Résistance LED oubliée : la LED claque ou la broche sature (max 20 mA).
- Le rebond mécanique fait trembler la lecture : invisible ici, critique dès qu'on compte des appuis — voir le tuto multitâche millis avec debounce à 30 ms.
- Mauvais port série : l'UNO réinitialise à chaque ouverture du port (le bootloader intercepte les premiers octets) ; les premiers caractères peuvent manquer.
Autres tutoriels pour cette carte
- Faire clignoter la LED intégrée de l'UNO R3
- Faire varier la luminosité avec un potentiomètre (ADC + PWM)
- Thermomètre de lumière : LDR, seuils et hystérésis
- Télémétrie série robuste vers le Traceur série
- Multitâche non bloquant : heartbeat + bouton avec debounce
- Data logger sur EEPROM : persistance sans usure
Exemples de code pour cette carte
clignotante.inoArduinobouton-poussoir.inoArduinopwm-fade.inoArduinocapteur-lumiere-ldr.inoArduinoservo-balayage.inoArduinoruban-neopixel.inoArduino