🛠 Bouton avec pull-up interne
Objectifs
Apprendre à lire une entrée numérique avec la résistance de pull-up interne (INPUT_PULLUP, 20-50 kΩ sur l'ATmega328P) : le bouton relie la broche à la masse, donc l'état est INVERSÉ (LOW = appuyé). On allume la LED builtin (broche 13) quand le bouton est pressé, avec un anti-rebond logiciel simple. La broche 2 est bien choisie : c'est aussi l'interruption externe INT0, utile pour réveiller la carte en sommeil profond dans les tutos avancés.
Matériel
- 1 × Arduino Pro Mini (ATmega328P, l'un des deux modèles)
- 1 × bouton poussoir
- Câbles mâle-femelle ; aucune résistance externe nécessaire grâce au pull-up interne (~20-50 kΩ)
- La LED builtin de la carte (broche 13)
- Adaptateur FTDI/CP2102 sur le connecteur 6 broches pour téléverser et voir le moniteur série
Code complet
// Bouton sur broche 2, pull-up interne : LOW = appuyé
const uint8_t BTN = 2;
const uint8_t LED = LED_BUILTIN; // broche 13
uint32_t dernierAppui = 0;
void setup {
pinMode(BTN, INPUT_PULLUP); // pull-up interne activé
pinMode(LED, OUTPUT);
Serial.begin(57600); // même débit que le bootloader d'usine
}
void loop {
bool appuye = (digitalRead(BTN) == LOW); // logique inversée
if (appuye && millis - dernierAppui > 50) {
dernierAppui = millis; // anti-rebond 50 ms
digitalWrite(LED, !digitalRead(LED));
Serial.println(F("appui !")); // F : la chaîne reste en flash
}
}
Vérification attendue
Au téléversement, la LED est éteinte et le moniteur série (57600 bauds) affiche « appui ! » à chaque pression franche du bouton, en alternant l'état de la LED. Sans bouton enfoncé, digitalRead(BTN) vaut HIGH grâce au pull-up interne : le montage reste stable au repos. Notez l'usage de F autour des chaînes : avec 32 Ko de flash dont 2 Ko pris par le bootloader, chaque octet compte sur Pro Mini.
Erreurs fréquentes
- Attendre HIGH quand le bouton est pressé : avec INPUT_PULLUP, c'est LOW qui signale l'appui ; câbler le bouton vers VCC exigerait une résistance de pull-down.
- Bouton câblé broche→VCC sans résistance : court-circuit quand on appuie, la carte redémarre (le régulateur linéaire coupe).
- Rebonds mécaniques : sans la temporisation de 50 ms, un appui unique déclenche plusieurs comptages.
- Broche flottante : oublier INPUT_PULLUP laisse la broche capter du bruit et la LED clignoter toute seule ; sur le modèle 3,3 V, la logique est identique mais au niveau 3,3 V.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-poussoir.inoArduinopwm-fade.inoArduinocapteur-lumiere-ldr.inoArduinoservo-balayage.inoArduinoruban-neopixel.inoArduino