🛠 Lire un bouton poussoir avec résistance de pull-up interne
Objetivos
Aprender a leer una entrada digital en la Mega 2560 utilizando la resistencia de pull-up interna (20 a 50 kΩ según la documentación oficial), evitar los rebotes mecánicos mediante una lógica antirrebote, y encender un LED cuando se pulsa el botón.
Material
- 1 × Arduino Mega 2560 + cable USB
- 1 × botón pulsador
- 1 × LED + 1 × resistencia de 330 Ω
- Placa de pruebas y cables
El botón se conecta entre el pin 2 y la masa (GND), sin resistencia externa: la lógica está invertida (LOW = pulsado) porque la pull-up interna mantiene el pin a 5 V en reposo. La Mega 2560 dispone de 54 pines digitales, por lo que los pines con interrupción externa (2, 3, 18, 19, 20, 21) siguen disponibles para proyectos más avanzados.
Código completo
// 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 etat = (lecture == LOW); // logique inversée
if (etat != etatStable) {
etatStable = etat;
Serial.println(etat ? F("bouton pressé") : F("bouton relâché"));
}
}
etatPrecedent = lecture;
digitalWrite(LED_PIN, etatStable ? HIGH : LOW);
}
Verificación esperada
Abra el monitor serie a 115200 baudios: cada pulsación muestra «botón pulsado» una sola vez (sin ráfagas debidas a los rebotes) y el LED sigue el estado del botón. En reposo, el LED está apagado.
Errores frecuentes
- Olvidar
INPUT_PULLUPy dejar el pin como entrada flotante: el estado cambia solo, el LED parpadea. - Olvidar la inversión de la lógica: con una pull-up, el botón pulsado da LOW, no HIGH.
- Antirrebote demasiado corto (menos de 20 ms): varias pulsaciones fantasma en cada presión.
- Utilizar el cableado «botón hacia 5 V» con la pull-up interna: cortocircuito de 5 V a masa al pulsar.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinodouble-servo.inoArduinopont-uart.inoArduinopwm-respiration.inoArduinopotentiometre-plotter.inoArduino