Semáforo Inteligente con Arduino

Hola a todos nuevamente, en esta ocasión les quiero dejar este tutorial donde vamos a implementar lo aprendido de como prender uno y varios leds desde la protoboard en un ejemplo clásico con Arduino.

Para ello les propongo como desafió que armemos y programemos juntos un semáforo simple tal cual como las que vemos en las calles de nuestra ciudad.

Entonces…necesitamos hacer que prenda cada una de las luces a penas se apague la anterior, en forma secuencial y con tiempos de encendidos diferentes. Ya que el amarillo es el que menos tiempo va a estar encendido.

Manos a la obra!

Que necesitamos para hacerlo?

1-Software Necesario

 

El ide (entorno de programacion) del Arduino descargado e Instalado

Chequear siempre antes de cargar cualquier código de arduino a la placa, que este bien seleccionado la Placa que estemos utilizando y el Puerto al cual esta conectada la misma.

 

2-Componentes Electrónicos

 

 

 

1 – Arduino Uno o cualquier otro tipo de Arduino que disponga de los pines hembra soldados.

 

 

1 -Cable USB para conectar el Arduino a la PC

 

 

 

 

1-Protoboard ya sea de 400 puntos o de 800 puntos

 

 

 

 

3-Resistencias de entre 100 y 330 Ohms, habitualmente utilizamos 220 Ohms

 

 

 

 

4- Cables macho macho para la conexión de los elementos de la protoboard con el arduino.

 

 

 

3-Leds de colores rojo, amarillo y verde para indicar los colores del semáforo.

Esquema de conexión eléctrica

 

Código de Programación

//-----------------------------------------------------------
// Autor: Konrad Peschka
// Para: Tutoriales de Arduino Basico
//-----------------------------------------------------------

/*
En este ejemplo el objetivo es manejar 3 leds y darle una utilidad
final como puede ser la de un semaforo
*/

int led_verde = 12; //le doy un nombre al pin 12
int led_amarillo = 11; //tambien se conocen como darle un alias
int led_rojo = 10; //en este caso al pin 10 lo llamamos led_rojo

//recordemos que en la funcion setup se definen las salidas
void setup()
{
pinMode(led_verde, OUTPUT); //defino el pin verde como salida
pinMode(led_amarillo, OUTPUT); //defino el pin amarillo como salida
pinMode(led_rojo, OUTPUT); //defino el pin rojo como salida
}

//aqui comienza el loop o bucle principal
void loop()
{
digitalWrite(led_rojo, HIGH); //prendemos el led rojo con HIGH
digitalWrite(led_amarillo,LOW); //apago el led amarillo con LOW
digitalWrite(led_verde, LOW); //apago el led verde con LOW
delay(3000); // esperamos 3 segundos

digitalWrite(led_rojo, LOW); //apagamos el led rojo con LOW
digitalWrite(led_amarillo, HIGH); //prendemos el led amarillo con HIGH
digitalWrite(led_verde, LOW); //apago el led verde con LOW
delay(1000); //esperamos 1 segundo

digitalWrite(led_rojo, LOW); //apagamos el led rojo con LOW
digitalWrite(led_amarillo,LOW); //apagamos el led amarillo con LOW
digitalWrite(led_verde, HIGH); //prendemos el led verde con HIGH
delay(3000); //esperamos 3 segundo

digitalWrite(led_rojo, LOW); //apagamos el led rojo con LOW
digitalWrite(led_amarillo, HIGH); //prendemos el led amarillo con HIGH
digitalWrite(led_verde, LOW); //apago el led verde con LOW
delay(1000); //esperamos 1 segundo

//y despues se vuelve a repetir el ciclo con el led verde
}

Desafíos adicionales

 

1) Modificar el tiempo de encendido para que la luz roja y la verde esten mas tiempos prendidos.

2) Modificar el encendido de la luz amarilla para que titile, osea se prenda y apague 3 veces antes de pasar a la otra luz.