🛠 Bouton avec pull-up interne
Objetivos
Aprender a leer una entrada digital con la resistencia de pull-up interna (INPUT_PULLUP, 20-50 kΩ en el ATmega328P): el botón conecta el pin a tierra, por lo que el estado está INVERTIDO (LOW = pulsado). Encendemos el LED integrado (pin 13) cuando se pulsa el botón, con una antirrebote de software simple. El pin 2 está bien elegido: también es la interrupción externa INT0, útil para despertar la placa en modo de sueño profundo en tutoriales avanzados.
Material
- 1 × Arduino Pro Mini (ATmega328P, uno de los dos modelos)
- 1 × botón pulsador
- Cables macho-hembra; no se necesita resistencia externa gracias al pull-up interno (~20-50 kΩ)
- El LED integrado de la placa (pin 13)
- Adaptador FTDI/CP2102 en el conector de 6 pines para programar y ver el monitor serie
Código completo
// 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(57600); // meme debit que le bootloader d'usine
}
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 !")); // F : la chaine reste en flash
}
}
Verificación esperada
Al programar, el LED está apagado y el monitor serie (57600 baudios) muestra « ¡pulso! » en cada pulsación firme del botón, alternando el estado del LED. Sin botón pulsado, digitalRead(BTN) vale HIGH gracias al pull-up interno: el montaje permanece estable en reposo. Tenga en cuenta el uso de F alrededor de las cadenas: con 32 KB de flash de los cuales 2 KB están ocupados por el bootloader, cada byte cuenta en el Pro Mini.
Errores frecuentes
- Esperar HIGH cuando el botón está pulsado: con INPUT_PULLUP, es LOW lo que indica la pulsación; cablear el botón hacia VCC requeriría una resistencia de pull-down.
- Botón cableado pin→VCC sin resistencia: cortocircuito al pulsar, la placa se reinicia (el regulador lineal se corta).
- Rebotes mecánicos: sin la temporización de 50 ms, una pulsación única provoca múltiples conteos.
- Pin flotante: olvidar INPUT_PULLUP deja que el pin capte ruido y el LED parpadee solo; en el modelo de 3,3 V, la lógica es idéntica pero a nivel de 3,3 V.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-poussoir.inoArduinopwm-fade.inoArduinocapteur-lumiere-ldr.inoArduinoservo-balayage.inoArduinoruban-neopixel.inoArduino