🛠 Lire un bouton avec résistance de pull-up interne
Objectifs
Apprendre à lire une entrée numérique sur la Nano Every avec un bouton-poussoir, en utilisant la résistance de pull-up interne (INPUT_PULLUP) plutôt qu'une résistance externe. La carte dispose de 22 broches d'E/S numériques (0 à 21) en logique 5 V.
Matériel
- 1 × Arduino Nano Every
- 1 × bouton-poussoir
- 1 × fil de connexion (broche 2 → bouton, bouton → GND)
- Câble micro-USB
Code complet
// Bouton sur broche 2, logique inversée grâce au pull-up interne
const uint8_t BTN = 2;
bool etatPrecedent = HIGH;
void setup {
pinMode(LED_BUILTIN, OUTPUT); // broche 13
pinMode(BTN, INPUT_PULLUP); // pull-up interne : HIGH au repos
Serial.begin(9600);
}
void loop {
bool état = digitalRead(BTN); // LOW = pressé
if (état != etatPrecedent) {
delay(30); // anti-rebond logiciel grossier
état = digitalRead(BTN);
Serial.println(état == LOW ? "Bouton presse" : "Bouton lache");
etatPrecedent = état;
}
digitalWrite(LED_BUILTIN, état == LOW ? HIGH : LOW);
}
Vérification attendue
Branchez le bouton entre la broche 2 et GND : au repos digitalRead vaut HIGH (pull-up interne) et la LED 13 est éteinte ; en appuyant, la lecture passe à LOW, la LED s'allume et le moniteur série (9600 bauds) affiche l'événement. Aucune résistance externe n'est nécessaire.
Erreurs fréquentes
- Câbler le bouton entre la broche et le 5 V : avec
INPUT_PULLUPla logique est inversée et on court-circuite le pull-up ; gardez broche → GND. - Oublier
INPUT_PULLUP: la broche flotte, les lectures changent toutes seules. - Confondre avec le Nano classique : le brochage est identique, mais le Every est en ATmega4809 — sélectionnez bien la bonne carte dans l'IDE.
- Rebonds mécaniques crus : sans temporisation, un appui unique génère plusieurs lignes ; le
delay(30)du tuto est un minimum pédagogique, préférezmillisen projet réel. - Attention : les broches PWM de cette carte sont 3, 5, 6, 9, 10 uniquement — la broche 2 est une E/S numérique simple, ce qui suffit ici.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
multi-serie.inoArduinoadc-filtre.inoArduinointerrupt-bouton.inoArduinonvm-consignes.inoArduinosommeil-every.inoArduinowatchdog-secours.inoArduino