Bu yazıyı Türkçe okuyun · Read in English
¿Qué hace este proyecto?
Construimos un semáforo que funciona igual que los de los cruces de verdad. Los coches tienen luces roja, amarilla y verde; los peatones, roja y verde. Cuando un peatón pulsa el botón, la luz de los coches pasa a amarillo y luego a rojo, y los peatones pueden cruzar. Aunque nadie pulse el botón, las luces cambian solas cada cierto tiempo.
- Edad: a partir de 9 años
- Nivel: Principiante
- Tiempo: unos 40 minutos
- Qué aprenderás: encender y apagar LED, leer un botón, medir el tiempo con
millis(), escribir una función
Lista de materiales
| Material | Cant. |
|---|---|
| Arduino Uno (o compatible) | 1 |
| LED (2 rojos, 1 amarillo, 2 verdes) | 5 |
| Resistencia de 220 Ω | 5 |
| Pulsador | 1 |
| Protoboard | 1 |
| Cables puente macho-macho | ~12 |
| Cable USB | 1 |
Conexiones

| Componente | Conexión | Pin de Arduino |
|---|---|---|
| LED rojo de coches | Pata larga (a través de 220 Ω) | D8 |
| LED amarillo de coches | Pata larga (a través de 220 Ω) | D9 |
| LED verde de coches | Pata larga (a través de 220 Ω) | D10 |
| LED rojo de peatones | Pata larga (a través de 220 Ω) | D11 |
| LED verde de peatones | Pata larga (a través de 220 Ω) | D12 |
| Todos los LED | Patas cortas | GND |
| Botón | Una pata | D2 |
| Botón | Pata opuesta en diagonal | GND |
No usamos una resistencia externa para el botón; en su lugar activamos la resistencia pull-up interna de Arduino (INPUT_PULLUP).
Código
// Semáforo con Arduino y botón para peatones - ozandamci.com
const int carRed = 8;
const int carYellow = 9;
const int carGreen = 10;
const int pedRed = 11;
const int pedGreen = 12;
const int buttonPin = 2;
const unsigned long greenTime = 10000; // el verde de coches dura 10 s si nadie pulsa el botón
void setup() {
pinMode(carRed, OUTPUT);
pinMode(carYellow, OUTPUT);
pinMode(carGreen, OUTPUT);
pinMode(pedRed, OUTPUT);
pinMode(pedGreen, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void lights(bool cr, bool cy, bool cg, bool pr, bool pg) {
digitalWrite(carRed, cr);
digitalWrite(carYellow, cy);
digitalWrite(carGreen, cg);
digitalWrite(pedRed, pr);
digitalWrite(pedGreen, pg);
}
void loop() {
// 1) Verde para coches, rojo para peatones
lights(LOW, LOW, HIGH, HIGH, LOW);
unsigned long start = millis();
while (millis() - start < greenTime) {
if (digitalRead(buttonPin) == LOW) {
delay(1000); // breve espera tras pulsar el botón
break;
}
}
// 2) Amarillo para coches
lights(LOW, HIGH, LOW, HIGH, LOW);
delay(2000);
// 3) Rojo para coches, verde para peatones
lights(HIGH, LOW, LOW, LOW, HIGH);
delay(5000);
// 4) El verde de peatones parpadea como aviso
for (int i = 0; i < 4; i++) {
digitalWrite(pedGreen, LOW);
delay(300);
digitalWrite(pedGreen, HIGH);
delay(300);
}
// 5) Rojo para peatones, rojo + amarillo para coches (preparados)
lights(HIGH, HIGH, LOW, HIGH, LOW);
delay(1500);
}
Paso a paso
- Prepara las líneas de alimentación. Conecta el pin GND de Arduino a la línea – de la protoboard.
- Coloca las luces de los coches. Pon los LED rojo, amarillo y verde uno debajo de otro. Conecta una resistencia de 220 Ω a la pata larga de cada uno y llévalos a D8, D9 y D10.
- Coloca las luces de los peatones. Pon los LED rojo y verde un poco más allá y conéctalos a D11 y D12 a través de resistencias.
- Conecta las patas cortas de todos los LED a la línea –.
- Coloca el botón. Pon el botón sobre la separación central de la protoboard. Conecta una pata a D2 y la pata opuesta en diagonal a la línea –.
- Sube el código. En el Arduino IDE, elige Arduino Uno y el puerto correcto en Herramientas → Placa y haz clic en Subir.
- Pruébalo. Pulsa el botón mientras la luz de los coches esté en verde. Un segundo después debería encenderse el amarillo y, a continuación, el verde de los peatones.
Solución de problemas
- No pasa nada al pulsar el botón: Comprueba que usas patas del botón opuestas en diagonal. Las patas del mismo lado pueden estar siempre conectadas.
- Un LED no se enciende nunca: Puede que el LED esté al revés; la pata larga debe ir al pin de Arduino.
Pruébalo tú mismo
- Cambia los tiempos y añade un modo nocturno: por la noche solo parpadea la luz amarilla.
- Añade un zumbador que suene mientras la luz de peatones esté en verde, para ayudar a las personas con discapacidad visual.

Birisi “Semáforo con Arduino y botón para peatones (materiales y código)” üzerinde düşündü