🛠 Allumer une LED avec un bouton poussoir
Objetivos
Leer una entrada digital y controlar una salida: el par botón/LED, la base de toda interacción. Descubrirás las resistencias de pull-up internas (INPUT_PULLUP), el montaje activo a nivel bajo y el fenómeno del rebote mecánico.
Material
- 1 Arduino UNO R3 + cable USB-B
- 1 protoboard, cables de conexión
- 1 botón pulsador
- 1 LED + 1 resistencia de 330 Ω (para limitar la corriente por debajo del límite de 20 mA por pin)
- Cableado: botón entre el pin 2 y GND (no se necesita resistencia externa, la pull-up interna hace el trabajo); LED + 330 Ω entre el pin 13 y GND.
Código completo
// Bouton sur pin 2 (vers GND), LED sur pin 13.
const uint8_t BTN = 2;
const uint8_t LED = 13;
void setup {
pinMode(BTN, INPUT_PULLUP); // pull-up interne : repos = HIGH, appuyé = LOW
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop {
bool appuye = (digitalRead(BTN) == LOW); // logique inversée (actif-bas)
digitalWrite(LED, appuye ? HIGH : LOW);
Serial.println(appuye ? "appuye" : "repos");
delay(10);
}
Verificación esperada
LED apagada en reposo, encendida al pulsar. El Monitor serie (9600 baudios) muestra el estado continuamente. Si retiras el cable del pin 2 sin la pull-up, la entrada queda flotante y la visualización se vuelve aleatoria; este es precisamente el comportamiento que corrige INPUT_PULLUP.
Errores frecuentes
- Olvidar INPUT_PULLUP y cablear el botón hacia +5 V sin una resistencia de pull-down: entrada flotante, lecturas erráticas.
- Invertir la lógica: con este montaje, pulsado == LOW. Muchos principiantes prueban == HIGH y creen que el botón está averiado.
- Olvidar la resistencia del LED: el LED se quema o el pin se satura (máx. 20 mA).
- El rebote mecánico hace temblar la lectura: invisible aquí, crítico en cuanto se cuentan pulsaciones; consulta el tutorial multitarea con millis y debounce de 30 ms.
- Puerto serie incorrecto: el UNO se reinicia cada vez que se abre el puerto (el bootloader intercepta los primeros bytes); pueden faltar los primeros caracteres.
Otros tutoriales para esta placa
- Faire clignoter la LED intégrée de l'UNO R3
- Faire varier la luminosité avec un potentiomètre (ADC + PWM)
- Thermomètre de lumière : LDR, seuils et hystérésis
- Télémétrie série robuste vers le Traceur série
- Multitâche non bloquant : heartbeat + bouton avec debounce
- Data logger sur EEPROM : persistance sans usure
Ejemplos de código para esta placa
clignotante.inoArduinobouton-poussoir.inoArduinopwm-fade.inoArduinocapteur-lumiere-ldr.inoArduinoservo-balayage.inoArduinoruban-neopixel.inoArduino