Publicado el

Semáforo con Arduino.

Este proyecto es uno de los clásicos cuando te estás introduciendo al desarrollo de proyectos, automatización y otras áreas. Aquí te mostramos una guía rápida y fácil de montar 4 semáforos para un cruce de 2 avenidas. Encontrarás el diagrama electrónico y código de funcionamiento del semáforo.

1.- Introducción.

Una de las aplicaciones más sencillas que se pueden hacer con Arduino son los semáforos, esta aplicación consiste en crear una secuencia de LEDs de colores rojo amarillo y verde, simulando el funcionamiento de cuatro semáforos y controlar un cruce como el de la siguiente imagen.

Los semáforos serán armados en pequeñas tarjetas con su conector para enviar las señales desde nuestro Arduino.

 

2.- Materiales.

Arduino UNO
4x LEDs Rojo
4x LEDs Amarillo
4x LEDs Verde
Pack de 4 resistores de 300 Ohms
2x Placa fenólica perforada
Tira de pines macho
Pack de Jumpers H-H (10 pzas)
Pack de Jumpers H-M (40 pzas)
Soldadura

3.- Armado.

Utilizando la placa perforada debemos armar el siguiente circuito para cada semáforo:


Utiliza el menor espacio posible, nosotros te mostramos algunas fotos de nuestro resultado:






Debes repetir ese circuito para cada semáforo, en este caso queda así con los 4 semáforos:



Debido a que la tarjeta de Arduino no tiene suficientes conexiones de tierra hay que hacer una tarjeta extra que simplemente nos sirva para unir todas las conexiones de tierra y conectar sólo una al Arduino.

 

4.- Conexión.

Es momento de conectar los 4 semáforos al Arduino, hazlo de acuerdo al siguiente diagrama o dibujo:

 

5.- Código.

El código es bastante sencillo, hace la secuencia correspondiente a cada semáforo, en la sección de constantes puedes cambiar el tiempo de duración de cada luz, están en milisegundos.

// Constantes
const int RETARDO_VERDE = 4000;
const int RETARDO_PARPADEO_VERDE = 500;
const int RETARDO_AMARILLO = 2000;
// Conexiones
int verde_semaforo1 = 2;
int amarillo_semaforo1 = 3;
int rojo_semaforo1 = 4;
int verde_semaforo2 = 5;
int amarillo_semaforo2 = 6;
int rojo_semaforo2 = 7;
int verde_semaforo3 = 8;
int amarillo_semaforo3 = 9;
int rojo_semaforo3 = 10;
int verde_semaforo4 = 11;
int amarillo_semaforo4 = 12;
int rojo_semaforo4 = 13;
void setup() {
// Inicialización
digitalWrite(verde_semaforo1,LOW);
digitalWrite(rojo_semaforo1,HIGH);
digitalWrite(amarillo_semaforo1,LOW);
digitalWrite(verde_semaforo2,LOW);
digitalWrite(rojo_semaforo2,HIGH);
digitalWrite(amarillo_semaforo2,LOW);
digitalWrite(verde_semaforo3,LOW);
digitalWrite(rojo_semaforo3,HIGH);
digitalWrite(amarillo_semaforo3,LOW);
digitalWrite(verde_semaforo4,LOW);
digitalWrite(rojo_semaforo4,HIGH);
digitalWrite(amarillo_semaforo4,LOW);
pinMode(verde_semaforo1,OUTPUT);
pinMode(amarillo_semaforo1,OUTPUT);
pinMode(rojo_semaforo1,OUTPUT);
pinMode(verde_semaforo2,OUTPUT);
pinMode(amarillo_semaforo2,OUTPUT);
pinMode(rojo_semaforo2,OUTPUT);
pinMode(verde_semaforo3,OUTPUT);
pinMode(amarillo_semaforo3,OUTPUT);
pinMode(rojo_semaforo3,OUTPUT);
pinMode(verde_semaforo4,OUTPUT);
pinMode(amarillo_semaforo4,OUTPUT);
pinMode(rojo_semaforo4,OUTPUT);
}
void loop() {
// Secuencia para semaforo 1
digitalWrite(verde_semaforo1,HIGH);
digitalWrite(amarillo_semaforo1,LOW);
digitalWrite(rojo_semaforo1,LOW);
delay(RETARDO_VERDE);
digitalWrite(verde_semaforo1,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,LOW);
digitalWrite(amarillo_semaforo1,HIGH);
delay(RETARDO_AMARILLO);
digitalWrite(amarillo_semaforo1,LOW);
digitalWrite(rojo_semaforo1,HIGH);
// Secuencia semaforo 2
digitalWrite(verde_semaforo2,HIGH);
digitalWrite(amarillo_semaforo2,LOW);
digitalWrite(rojo_semaforo2,LOW);
delay(RETARDO_VERDE);
digitalWrite(verde_semaforo2,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo2,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo2,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo2,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo2,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo2,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo2,LOW);
digitalWrite(amarillo_semaforo2,HIGH);
delay(RETARDO_AMARILLO);
digitalWrite(amarillo_semaforo2,LOW);
digitalWrite(rojo_semaforo2,HIGH);
// Secuencia semaforo 3
digitalWrite(verde_semaforo3,HIGH);
digitalWrite(amarillo_semaforo3,LOW);
digitalWrite(rojo_semaforo3,LOW);
delay(RETARDO_VERDE);
digitalWrite(verde_semaforo3,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo3,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo3,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo3,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo3,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo3,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo3,LOW);
digitalWrite(amarillo_semaforo3,HIGH);
delay(RETARDO_AMARILLO);
digitalWrite(amarillo_semaforo3,LOW);
digitalWrite(rojo_semaforo3,HIGH);
// Secuencia semaforo 4
digitalWrite(verde_semaforo4,HIGH);
digitalWrite(amarillo_semaforo4,LOW);
digitalWrite(rojo_semaforo4,LOW);
delay(RETARDO_VERDE);
digitalWrite(verde_semaforo4,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo4,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo4,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo4,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo4,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo4,HIGH);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo4,LOW);
digitalWrite(amarillo_semaforo4,HIGH);
delay(RETARDO_AMARILLO);
digitalWrite(amarillo_semaforo4,LOW);
digitalWrite(rojo_semaforo4,HIGH);
}

 

 

 

 

6.- Video.

En el siguiente video puedes ver una visualización rápida de la secuencia programada para nuestro Semáforo con Arduino:

 

 

Compartir ahora:

4 comentarios en “Semáforo con Arduino.

  1. Hola..exelente trabajo….consulta..necesito conectar un buzzer para invidentes cada vez que de luz verde….me puedes orientar como…gracias

    1. William gracias por leernos.
      Con todo gusto te compartimos este tip. 1. Identifica el polo positivo de tu buzzer (normalmente viene indicado con el signo +). 2. Conecta el polo positivo de tu buzzer a la patita positiva del led Verde. 3. El negativo de tu buzzer al cualquier negativo de tu circuito. Prueba y listo.
      Cualquier duda o comentario será un gusto para nosotros ayudarte.
      Te enviamos un saludo William. Y Felicidades por tu iniciativa 😉

  2. Hola, estoy empezando con la programación y tengo una duda.
    Para el arduino nano es exactamente lo mismo para conectar?

    1. Hola Lady Velazquez.
      Gracias por tu comentario.
      Sí es correcto, aplica las mismas entradas y salidas para tu Arduino Nano.

      Un saludo!

Deja una respuesta