🛠 Lire un bouton avec une résistance de pull-up interne
Objectifs
Lire un bouton poussoir sur l'Arduino Micro en utilisant la résistance de pull-up interne (20 à 50 kΩ), sans composant externe, et comprendre la logique active-low.
Matériel
- 1 Arduino Micro
- 1 bouton poussoir
- 1 fil entre la broche 2 et une patte du bouton, l'autre patte sur GND
- Câble micro-USB
Code complet
// Bouton sur broche 2 vers GND, pull-up interne actif.
// Logique active-low : lecture LOW quand le bouton est enfonce.
const uint8_t BTN = 2; // les broches 0,1,2,3,7 portent aussi une interruption externe
bool etatLed = false;
void setup {
pinMode(BTN, INPUT_PULLUP); // pull-up interne 20-50 kOhm
pinMode(LED_BUILTIN, OUTPUT); // broche 13
Serial.begin(9600); // Serial = port USB CDC
}
void loop {
if (digitalRead(BTN) == LOW) { // bouton enfonce
delay(50); // anti-rebond grossier
if (digitalRead(BTN) == LOW) {
etatLed = !etatLed;
digitalWrite(LED_BUILTIN, etatLed);
Serial.println(etatLed ? "LED ON" : "LED OFF");
while (digitalRead(BTN) == LOW) {} // attendre le relachement
}
}
}
Vérification attendue
Chaque appui bascule la LED 13 et affiche LED ON / LED OFF dans le Moniteur série (port série du Micro). Aucun rebond visible : un appui donne une seule ligne.
Erreurs fréquentes
- Oublier INPUT_PULLUP : l'entrée flotte et le Moniteur affiche des changements aléatoires.
- Câbler le bouton vers 5 V au lieu de GND sans résistance externe : court-circuit quand le pull-up est actif.
- Attendre HIGH quand le bouton est enfoncé : avec un pull-up, l'appui donne LOW (actif-low).
- Utiliser Serial1 par réflexe : sur le Micro, Serial1 est l'UART TTL des broches 0/1, invisible dans le Moniteur série.
Autres tutoriels pour cette carte
- Faire clignoter la LED embarquée (et comprendre les LED TX/RX)
- Lire un capteur analogique sur le convertisseur 10 bits
- Transformer le Micro en clavier USB (HID) avec bouton de sécurité
- Pont Serial vers Serial1 : passerelle USB vers TTL
- Piloter un servo moteur avec le PWM et un potentiomètre
- Sortir des sentiers : registres AVR et interruption externe
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino