🛠 Lire un bouton poussoir avec résistance de pull-up interne
Objectifs
Apprendre à lire une entrée numérique sur la Mega 2560 en utilisant la résistance de pull-up interne (20 à 50 kΩ selon la documentation officielle), éviter les rebonds mécaniques par une logique d'anti-rebond, et allumer une LED quand le bouton est pressé.
Matériel
- 1 × Arduino Mega 2560 + câble USB
- 1 × bouton poussoir
- 1 × LED + 1 × résistance 330 Ω
- Plaque d'essai et câbles
Le bouton se branche entre la broche 2 et la masse (GND), sans résistance externe : la logique est inversée (LOW = pressé) car la pull-up interne maintient la broche à 5 V au repos. La Mega 2560 dispose de 54 broches numériques, donc les broches avec interruption externe (2, 3, 18, 19, 20, 21) restent disponibles pour des projets plus avancés.
Code complet
// Bouton + pull-up interne — Arduino Mega 2560
const uint8_t BTN_PIN = 2;
const uint8_t LED_PIN = 13;
uint8_t etatPrecedent = HIGH;
uint32_t dernierRebond = 0;
bool etatStable = false; // false = relâché
void setup {
pinMode(BTN_PIN, INPUT_PULLUP); // pull-up interne 20-50 kΩ
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
}
void loop {
uint8_t lecture = digitalRead(BTN_PIN);
uint32_t maintenant = millis;
if (lecture != etatPrecedent) {
dernierRebond = maintenant; // rebond détecté
}
if (maintenant - dernierRebond > 30) {
bool état = (lecture == LOW); // logique inversée
if (état != etatStable) {
etatStable = état;
Serial.println(état ? F("bouton pressé") : F("bouton relâché"));
}
}
etatPrecedent = lecture;
digitalWrite(LED_PIN, etatStable ? HIGH : LOW);
}
Vérification attendue
Ouvrez le moniteur série à 115200 bauds : chaque appui affiche « bouton pressé » une seule fois (pas de salves dues aux rebonds) et la LED suit l'état du bouton. Au repos, la LED est éteinte.
Erreurs fréquentes
- Oublier
INPUT_PULLUPet laisser la broche en entrée flottante : l'état change tout seul, la LED scintille. - Oublier l'inversion de logique : avec une pull-up, le bouton pressé donne LOW, pas HIGH.
- Anti-rebond trop court (moins de 20 ms) : plusieurs appuis fantômes à chaque pression.
- Utiliser le câblage « bouton vers 5 V » avec la pull-up interne : court-circuit 5 V vers masse quand on appuie.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinodouble-servo.inoArduinopont-uart.inoArduinopwm-respiration.inoArduinopotentiometre-plotter.inoArduino