🛠 Bouton avec pull-up interne
Objectifs
Apprendre à lire une entrée numérique avec la résistance de pull-up interne (INPUT_PULLUP) : 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.
Matériel
- 1 × Arduino Nano classique (ATmega328P)
- 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)
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(9600);
}
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 !"));
}
}
Vérification attendue
Au téléversement, la LED est éteinte et le moniteur série (9600 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.
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 le 5 V exigerait une résistance de pull-down.
- Bouton câblé broche→5 V sans résistance : court-circuit 5 V/masse quand on appuie, la carte se met en protection (reset).
- 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 allumer la LED tout seul.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
buzzer-melodie.inoArduinoservo-sweep.inoArduinoultrason-hcsr04.inoArduinolcd-i2c.inoArduinoeeprom-contre.inoArduinosommeil-watchdog.inoArduino