Vamos a simular un semáforo en Arduino usando 3 leds de color rojo, amarillo y verde. También vamos a usar resistencias para evitar desgastar a los mismos, y obviamente código Arduino para encenderlos y apagarlos.
Lo que repasaremos con esta práctica es:
pinMode – Para establecer si un pin será de salida o entrada
digitalWrite – Apagar o encender un LED con Arduino
Semáforo simple con Arduino
El circuito
Primero que nada, veamos el circuito. No lo hice con Fritzing, sino con Tinkercad; pues esta última herramienta me ayuda a simular además de diseñar.
1.1 Semáforo simple
Utilizamos 3 resistencias de 220 ohms (puedes poner una de hasta 47 pero se disminuiría el tiempo de vida de los leds) y también una resistencia mayor.
Cada led está conectado a una resistencia y cada resistencia a su vez está conectada a una salida del Arduino (7, 8 y 9). El cátodo de los 3 leds va a tierra.
Código de semáforo
Para encender un led usamos digitalWrite(numeroDePin, HIGH) y para apagarlo usamos digitalWrite(numeroDePin, LOW).
He puesto este comportamiento dentro de la función cambiarA, que apaga el anterior y enciende el nuevo.
/*
Prueba 1: Semáforo simple
INSTRUCCIONES: Realizar un sketch en Arduino que permita
encender tres LED’s con la lógica de funcionamiento de un
semáforo simple. El proceso inicia con el encendido del VERDE.
@author parzibyte
Visita: parzibyte.me/blog
*/int ledRojo =7,
ledAmarillo =8,
ledVerde =9,
SEGUNDOS_DE_ESPERA_VERDE_Y_ROJO =5*1000,// En mi caso puse que el verde y rojo duren 10 segundos (10,000 milisegundos)
SEGUNDOS_DE_ESPERA_AMARILLO =2*1000,// En mi caso puse que el amarillo dure 2 segundos (2,000 milisegundos)
LED_ACTUAL =0;// Por defecto no hay led encendidovoidsetup(){/*
Establecemos como salida los tres leds
*/pinMode(ledRojo,OUTPUT);pinMode(ledAmarillo,OUTPUT);pinMode(ledVerde,OUTPUT);}voidloop(){cambiaA(ledVerde);delay(SEGUNDOS_DE_ESPERA_VERDE_Y_ROJO);cambiaA(ledAmarillo);delay(SEGUNDOS_DE_ESPERA_AMARILLO);cambiaA(ledRojo);delay(SEGUNDOS_DE_ESPERA_VERDE_Y_ROJO);}voidcambiaA(int nuevoLed){/*
Función ayudante que apaga el led y enciende el nuevo,
además de asignar a LED_ACTUAL el valor del (valga la redundancia)
led actual
*/if(LED_ACTUAL !=0)digitalWrite(LED_ACTUAL,LOW);
LED_ACTUAL = nuevoLed;digitalWrite(LED_ACTUAL,HIGH);}
Para simular el semáforo el algoritmo es sencillo y va dentro del loop. Primero encendemos el led verde, esperamos 5 segundos, cambiamos a amarillo, esperamos 2 segundos, cambiamos a rojo, esperamos 5 segundos y el ciclo se repite.
Si quieres puedes simular el circuito haciendo click aquí.
Estoy aquí para ayudarte
Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto
No te pierdas ninguno de mis posts
Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
Esta es la parte 2 de los ejercicios de Arduino con leds. En este caso veremos cómo simular el comportamiento de un semáforo doble con cruce. Vamos a agregar otros 3 leds de manera que ahora sean 6; el código será muy parecido al del semáforo simple. Nota: vamos a…
Hace algún tiempo vimos cómo simular un semáforo con 3 leds en Arduino, en donde usamos delay. En este post veremos exactamente lo mismo, pero con una condición: no usar delay. El enfoque que hoy veremos servirá para otros proyectos en donde no podemos usar delay, por ejemplo, en uno…
Último post sobre simulación de semáforos en Arduino. En este ejercicio veremos cómo simular el comportamiento de un semáforo doble (o dos semáforos) que tienen además un cruce peatonal. En total vamos a usar 10 leds: 3 para el semáforo 1, 3 para el semáforo 2 y finalmente 4 para…