01. Semáforo LED con secuencia
Tu primer circuito con Arduino: tres LEDs que reproducen el ciclo de un semáforo real con temporización.
🧰 Lista de materiales
🎯 Qué vas a aprender
Este es el «Hola mundo» de la electrónica. Vas a controlar tres LEDs desde un microcontrolador y a entender los dos conceptos que sostienen casi todo lo demás: las salidas digitales (GPIO) y la temporización con delay().
Al terminar sabrás encender y apagar cargas a voluntad, calcular la resistencia limitadora de un LED y leer un esquema de conexión sencillo.
📚 Teoría: por qué un LED necesita una resistencia
Un LED (diodo emisor de luz) no se comporta como una bombilla. Tiene una tensión directa (Vf) fija — alrededor de 2 V para rojo/amarillo/verde — y por encima de ella la corriente se dispara. Si lo conectas directo a los 5 V del Arduino, pasarían cientos de miliamperios y el LED (o el pin) se quemaría en segundos.
La resistencia limitadora absorbe la diferencia de tensión y fija la corriente. Se calcula con la Ley de Ohm:
R = (V_fuente − V_led) / I_deseada
R = (5 V − 2 V) / 0,015 A ≈ 200 Ω → usamos 220 Ω (valor estándar)🔌 Conexiones
El ánodo (pata larga, +) de cada LED va al pin de Arduino a través de su resistencia. El cátodo (pata corta, junto al chaflán plano) va a GND.
| LED | Pin Arduino | Resistencia | A GND |
|---|---|---|---|
| Rojo | D10 | 220 Ω | Cátodo → GND |
| Amarillo | D9 | 220 Ω | Cátodo → GND |
| Verde | D8 | 220 Ω | Cátodo → GND |
💻 Código completo
Copia este sketch en el IDE de Arduino y súbelo a la placa. Está comentado línea a línea.
// Semáforo LED — ciclo rojo → verde → amarillo
const int LED_ROJO = 10;
const int LED_AMARILLO = 9;
const int LED_VERDE = 8;
void setup() {
// Configuramos los tres pines como SALIDA digital
pinMode(LED_ROJO, OUTPUT);
pinMode(LED_AMARILLO, OUTPUT);
pinMode(LED_VERDE, OUTPUT);
}
void loop() {
// --- Fase STOP: rojo 5 s ---
digitalWrite(LED_ROJO, HIGH);
delay(5000);
digitalWrite(LED_ROJO, LOW);
// --- Fase PASO: verde 4 s ---
digitalWrite(LED_VERDE, HIGH);
delay(4000);
digitalWrite(LED_VERDE, LOW);
// --- Fase PRECAUCIÓN: amarillo 1,5 s ---
digitalWrite(LED_AMARILLO, HIGH);
delay(1500);
digitalWrite(LED_AMARILLO, LOW);
// el loop() se repite indefinidamente
}🛠️ Montaje paso a paso
- Coloca los tres LEDs en la breadboard, separados, con el cátodo (pata corta) hacia el carril negativo (−).
- Une el carril negativo (−) de la breadboard a un pin GND del Arduino.
- Conecta una resistencia de 220 Ω entre el ánodo de cada LED y un cable hacia su pin (D10, D9, D8).
- Conecta el Arduino al PC por USB y sube el sketch.
- Observa el ciclo. Ajusta los valores de
delay()a tu gusto.
🧩 Resolución de problemas
| Síntoma | Causa probable | Solución |
|---|---|---|
| Ningún LED enciende | GND no conectado | Verifica el cable del carril − al GND |
| Un LED no enciende | Polaridad invertida | Da la vuelta a ese LED |
| Brillo muy bajo | Resistencia demasiado grande | Usa 220 Ω, no 2,2 kΩ |
| Sketch no sube | Puerto/placa mal seleccionados | IDE → Herramientas → Placa: Arduino Uno |
🚀 Para ir más lejos
- Añade un pulsador de peatón (proyecto 03) que acorte la fase verde.
- Sustituye los
delay()pormillis()para no bloquear el programa. - Monta dos semáforos cruzados sincronizados.