Publicado el

Semáforo con Arduino.

semáforo con arduino

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.

Semáforo con Arduino. Aquí iniciamos.

[nextpage title=”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.
CruceSemaforo-01
Los semáforos serán armados en pequeñas tarjetas con su conector para enviar las señales desde nuestro Arduino.
DSC_0200-12
[nextpage title=”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
[nextpage title=”Armado del Semáforo”]
Utilizando la placa perforada debemos armar el siguiente circuito para cada semáforo:
SemaforoEsquematico
SemaforoFritzing
Utiliza el menor espacio posible, nosotros te mostramos algunas fotos de nuestro resultado:
DSC_0186-1
DSC_0187-2
DSC_0188-3
DSC_0190-5
DSC_0191-6
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
semáforo con arduino
semáforo con arduino
[nextpage title=”Conexiones de Tierra (GND)”]
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
semáforo con arduino
[nextpage title=”Conexion de los 4 semaforos”]
Es momento de conectar los 4 semáforos al arduino, házlo de acuerdo al siguiente diagrama o dibujo:
semáforo con arduino
semaforo_bb
[nextpage title=”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);
}

[nextpage title=”Funcionamiento”]
En el siguiente video puedes ver una visualización rápida de la secuencia programada para nuestro Semáforo con Arduino:

 

¿Aún no tienes los conocimientos en Arduino? Tenemos una invitación especial para ti. Inscríbete a nuestro Curso Online. Recibe todo el soporte de instructores capacitados para resolver tus dudas todo el tiempo mientras aprendes. Haz clic aquí para ver el Curso. 

 

Compártelo:

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

Deja un comentario