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; // definimos el valor del pin para el led
int boton = 7; // definimos el valor del pin para el boton
// Variable que guarda el estado actual del botón
int estadoBoton = 0;
// Variable que guarda el estado que tenía el botón en la vuelta anterior
// del programa. Se usa para detectar cuándo el botón acaba de ser presionado
int estadoAnterior = 0;
// Variable que almacena el estado del LED
// 0 (LOW) = Apagado - 1 (HIGH) = Encendido
int estadoLed = 0;
void setup() {
pinMode(led, OUTPUT); // declaramos el pin led como salida
pinMode(boton, INPUT); // declaramos el pin boton como entrada
}
void loop() {
// Lee el estado actual del botón
// Si está presionado devuelve HIGH. Si no está presionado devuelve LOW.
estadoBoton = digitalRead(boton);
// Detecta cuando se presiona el botón. Esto ocurre cuando:
// Ahora está en HIGH (presionado) - Antes estaba en LOW (sin presionar)
if (estadoBoton == HIGH && estadoAnterior == LOW) {
// Cambia el estado del LED.
// Si estaba apagado (0), pasa a encendido (1).
// Si estaba encendido (1), pasa a apagado (0).
estadoLed = !estadoLed; // Cambia el estado del LED
// Espera 200 milisegundos (anti-rebote)
delay(200); // Pequeño anti-rebote
}
// Envía el valor almacenado en estadoLed al pin del LED
// Si estadoLed vale HIGH, el LED se enciende. Si vale LOW, el LED se apaga.
digitalWrite(led, estadoLed);
// Guarda el estado actual del botón para compararlo
// en la siguiente repetición del programa
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.


Publicar un comentario