🛠 Lire un bouton avec résistance de pull-up interne
Objetivos
Aprender a leer una entrada digital en la Nano Every con un botón pulsador, utilizando la resistencia de pull-up interna (INPUT_PULLUP) en lugar de una resistencia externa. La placa dispone de 22 pines de E/S digitales (0 a 21) con lógica de 5 V.
Material
- 1 × Arduino Nano Every
- 1 × botón pulsador
- 1 × cable de conexión (pin 2 → botón, botón → GND)
- Cable micro-USB
Código completo
// 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 etat = digitalRead(BTN); // LOW = pressé
if (etat != etatPrecedent) {
delay(30); // anti-rebond logiciel grossier
etat = digitalRead(BTN);
Serial.println(etat == LOW ? "Bouton presse" : "Bouton lache");
etatPrecedent = etat;
}
digitalWrite(LED_BUILTIN, etat == LOW ? HIGH : LOW);
}
Verificación esperada
Conecte el botón entre el pin 2 y GND: en reposo digitalRead vale HIGH (pull-up interna) y el LED 13 está apagado; al pulsar, la lectura pasa a LOW, el LED se enciende y el monitor serie (9600 baudios) muestra el evento. No se necesita ninguna resistencia externa.
Errores frecuentes
- Conectar el botón entre el pin y los 5 V: con
INPUT_PULLUPla lógica está invertida y se cortocircuita el pull-up; mantenga pin → GND. - Olvidar
INPUT_PULLUP: el pin queda flotante y las lecturas cambian solas. - Confundirlo con el Nano clásico: el pinout es idéntico, pero el Every usa un ATmega4809 — seleccione correctamente la placa en el IDE.
- Rebotes mecánicos sin tratar: sin temporización, una sola pulsación genera varias líneas; el
delay(30)del tutorial es un mínimo pedagógico, prefieramillisen proyectos reales. - Atención: los pines PWM de esta placa son únicamente 3, 5, 6, 9 y 10 — el pin 2 es una E/S digital simple, lo cual es suficiente aquí.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
multi-serie.inoArduinoadc-filtre.inoArduinointerrupt-bouton.inoArduinonvm-consignes.inoArduinosommeil-every.inoArduinowatchdog-secours.inoArduino