Descuentos Primer Envío 20%
Tienda Electrónica logo
Facebook Tienda ElectrónicaInstagram Tienda ElectrónicaYouTube Tienda ElectrónicaTikTok Tienda Electrónica

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.
Semáforo con Arduino. | CruceSemaforo 01
Los semáforos serán armados en pequeñas tarjetas con su conector para enviar las señales desde nuestro Arduino.
Semáforo con Arduino. | DSC 0200 12

 

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:
Semáforo con Arduino. | SemaforoEsquematico
Semáforo con Arduino. | SemaforoFritzing
Utiliza el menor espacio posible, nosotros te mostramos algunas fotos de nuestro resultado:
Semáforo con Arduino. | DSC 0186 1
Semáforo con Arduino. | DSC 0187 2
Semáforo con Arduino. | DSC 0188 3
Semáforo con Arduino. | DSC 0190 5
Semáforo con Arduino. | DSC 0191 6
Semáforo con Arduino. | DSC 0189 4
Debes repetir ese circuito para cada semáforo, en este caso queda así con los 4 semáforos:
Semáforo con Arduino. | DSC 0194 7
Semáforo con Arduino. | DSC 0195 8
Semáforo con Arduino. | DSC 0196 9
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.
Semáforo con Arduino. | DSC 0197 10
Semáforo con Arduino. | DSC 0198 11

 

4.- Conexión.

Es momento de conectar los 4 semáforos al Arduino, hazlo de acuerdo al siguiente diagrama o dibujo:
Semáforo con Arduino. | semaforo esquema
Semáforo con Arduino. | semaforo bb

 

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.

[code language=»java»]
// 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);
}
[/code]

 

 

 

 

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:

Entradas relacionadas

4 comentarios

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

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

      Un saludo!

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

    • 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 😉

Deja tu comentario