Uno de los proyectos más básicos y útiles al iniciar con Arduino es controlar un LED mediante un botón. Este ejercicio permite comprender cómo funcionan las entradas digitales y las salidas digitales, base de casi todos los proyectos electrónicos.
🎯 Objetivo
Encender un LED al presionar un botón y apagarlo al soltarlo.
🧰 Materiales
- 1 Arduino Uno
- 1 LED
- 1 botón (push button)
- 2 resistencias (220Ω y 10kΩ)
- Protoboard
- Cables jumper
🔌 Descripción del Circuito
En este proyecto:
- El LED se conecta a un pin digital de salida (por ejemplo, el pin 8).
- El botón se conecta a un pin digital de entrada (por ejemplo, el pin 7).
- Se usa una resistencia para proteger el LED y otra como pull-down para el botón.
👉 Cuando presionas el botón, el Arduino detecta un HIGH (1) y enciende el LED.
💻 Código Arduino
//Mientras mantenga presionado el botón
//se mantiene encendido el Led
int led=8; //definimos el valor del pin para el led
int boton=7; //definimos el valor del pin para el boton
void setup() {
pinMode(led, OUTPUT); //declaramos el pin led como salida
pinMode(boton, INPUT); //declaramos el pin boton como entrada
}
void loop() {
if (digitalRead(boton) == HIGH) { //si el botón esta presionado
digitalWrite(led, HIGH); //encendemos el led
}
else { //caso contrario
digitalWrite(led, LOW); //apagamos el led
}
}
[warning title="Simulación en Wokwi" icon="check-circle"]
https://wokwi.com/projects/458711382664387585
[/warning]
🔁 Encender LED con Botón en Modo Interruptor (Toggle)
En el ejemplo anterior, el LED solo se encendía mientras mantenías presionado el botón. Ahora vamos a mejorar el proyecto para que funcione como un interruptor real (modo toggle).
🎯 ¿Qué es el modo Toggle?
El modo toggle permite que:
- 🔘 Presionas una vez → el LED se enciende
- 🔘 Presionas otra vez → el LED se apaga
Es decir, cada pulsación cambia el estado del LED, igual que un interruptor de luz en casa.
🔌 Circuito
✔ Se utiliza exactamente el mismo circuito anterior
(No necesitas hacer ningún cambio en las conexiones)
🧠 ¿Cómo funciona?
El Arduino debe detectar el momento exacto en que presionas el botón, no solo si está presionado.
Para eso:
- Se guarda el estado anterior del botón
- Se compara con el estado actual
- Si detecta un cambio (de LOW a HIGH), cambia el estado del LED
💻 Código en Arduino
//Presiona botón enciende LED
//Vuelve a presionar botón y se apaga el LED
int led = 8;
int boton = 7;
int estadoBoton = 0;
int estadoAnterior = 0;
int estadoLed = 0;
void setup() {
pinMode(led, OUTPUT);
pinMode(boton, INPUT);
}
void loop() {
estadoBoton = digitalRead(boton);
// Detecta cuando se presiona el botón
if (estadoBoton == HIGH && estadoAnterior == LOW) {
estadoLed = !estadoLed; // Cambia el estado del LED
delay(200); // Pequeño anti-rebote
}
digitalWrite(led, estadoLed);
estadoAnterior = estadoBoton;
}
[warning title="Simulación en Wokwi" icon="check-circle"]
https://wokwi.com/projects/458764769388938241
[/warning]
🔍 Explicación del Código
- estadoAnterior guarda el estado previo del botón
- Se detecta el cambio de LOW → HIGH (cuando presionas)
- estadoLed = !estadoLed invierte el estado:
- Si estaba apagado → se enciende
- Si estaba encendido → se apaga
⚠️ Importante: Anti-rebote
Los botones físicos generan pequeñas vibraciones eléctricas al presionarse (rebote), lo que puede hacer que el Arduino detecte múltiples pulsaciones.
Por eso usamos:
delay(200);
🚀 Aplicaciones del modo Toggle
Este tipo de control es muy útil en proyectos reales:
- 💡 Encendido/apagado de luces
- 🔐 Sistemas de seguridad
- 🤖 Robots
- 🎮 Interfaces con botones
🧾 Conclusión
Este proyecto es fundamental para entender cómo Arduino interactúa con el mundo físico mediante entradas (botón) y salidas (LED). Dominar este ejercicio te permitirá avanzar hacia proyectos más complejos como sistemas automatizados, alarmas o interfaces interactivas.
El modo toggle convierte un simple botón en un verdadero interruptor digital. Dominar esta técnica te permitirá crear interfaces más avanzadas y mejorar la interacción en tus proyectos con Arduino.