Semáforo en Arduino.

Para nuestro proyecto utilizaremos:

● 1 Placa Arduino.
● 3 Diodos Led de color Rojo, Verde y Amarillo.
● 3 Resistencias de 330Ω.

En este proyecto utilizaremos los pines pin13, pin12 y pin11 digitales y haremos que primero se encienda el diodo Led rojo, espere 5 segundos tras los cuales se apagará y se encenderá el led verde que, tras 5 segundos se apagará encendiéndose el led amarillo durante 2 segundos para volver a apagarse y que se encienda de nuevo el rojo continuando ciclo.

Primero empezamos conectando los diodos Led de la forma que puedes ver en la imagen (asegúrate de que sus cátodos estén a negativo).

Conectándo el diodo led

El código es el siguiente:

int ledRojo = 13;
int ledAmarillo = 12;
int ledVerde = 11;

void setup() {
// inicializo el pin digital como salida (impedancia baja).
pinMode(ledRojo, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledVerde, OUTPUT);
}

void loop() {
digitalWrite(ledRojo, HIGH);// Pongo el puerto del Led rojo en alto
delay(5000); // Espero 5 segundos
digitalWrite(ledRojo, LOW); // Pongo el puerto del led rojo en bajo
digitalWrite(ledVerde, HIGH); // Pongo el puerto del led verde en alto
delay(5000);
digitalWrite(ledVerde, LOW); // Pongo el puerto 11 en bajo
digitalWrite(ledAmarillo, HIGH);
delay(2000);
digitalWrite(ledAmarillo, LOW);
}

Cuando ejecutas el sketch verás tú como el diodo Rojo se enciende durante 5 segundos, después el verde hace lo mismo y el amarillo durante 2 segundos para volver a encenderse el rojo.

proyecto semáforo

Pulsadores y montajes.

El circuito con resistencia pull down es un circuito de tal forma que siempre exista un estado lógico (0 o 5V) a la entrada del controlador y que si se pulsa cambia el estado lógico a 5V y si se deja sin pulsar el estado será de 0V.

resitencias en pull down y pull up

Intercambiando el pulsador y poniendo primero la resistencia, de cara al controlador, la resistencia estará conectada en pull up y si se pulsa el interruptor, la entrada estará a 0V y si se pulsa pasará a 5V.

resitencias en pull down y pull up

Eso sí, los valores de resistencias pull down y pull up tienen valores resistivos típicos de 10 o 22KΩ, por lo que es muy sencillo identificarlas. Pero claro, además te habrás dado cuenta que aunque la disposición de los interruptores es diferente para los circuitos pull down y pull up, realizan la misma función: Al estar suelto, no circula corriente por el circuito y al estar presionado si lo hacen. Para cambiar el estado hay que programar con Arduino las entradas y activar las salidas correspondientes para ponerlas como activada o no:

Void setup() {
pinMode (númeroPin, INPUT); //Configura PIN como salida.
digitalWrite(númeroPin, HIGH); // Activa R de pull up.
}

Así ya nos aseguramos que el circuito funcione como deseamos.

estructura de los pulsadores

Y como puedes ver, existen terminales que son comunes cuando se pulsa el interruptor. Así que para usar el circuito correctamente yo cruzo las pistas para que cuando se pulse el interruptor se ponga a 5V la salida. Así que sabiendo eso, en el siguiente circuito lo ponemos a pull up simplemente con la conexión del interruptor:

Circuito en pull up

Y en pull down:

Circuito en pull down

Señal de paso a nivel.

Cuando se baja la barrera en un paso a nivel con barreras, un semáforo parpadea con dos luces rojas indicándonos que no puedes pasar. Y cuando las barreras están levantadas, una luz verde nos indica que todo está correcto.

paso a nivel con barreras

Para nuestro proyecto con Arduino necesitaremos:

● 2 diodos Led rojos.
● 1 diodo Led verde.
● 1 pulsador.
● Placa Arduino uno.
● Placa Protoboard en la que conectar el circuito.

En éste proyecto simularemos una barrera de paso a nivel que cuando esté bajada, parpadearán los dos diodos Led rojos alternativamente. Al estar levantada permanecerá encendido el Led Verde permitiendo el paso a peatones y vehículos a través del paso a nivel. Para simular la barrera utilizaremos el pulsador que cuando esté pulsado simulará la barrera bajada y cuando esté desactivado, la barrera estará subida.

paso a nivel

El código es el siguiente:

//Este código está patrocinado por Mirpas.com
int pulsador = 0;

void setup() {
pinMode (3,OUTPUT); //diodo Verde
pinMode (4, OUTPUT);//diodo rojo 1
pinMode (5, OUTPUT);//diodo rojo 2
//Establezco el puerto 2 como entrada
pinMode (2, INPUT);}

void loop() {
//pongo el pulsador en modo escucha
pulsador = digitalRead(2);
//condicional según esté presionado o no el pulsador
if (pulsador == LOW) {
//si no está presionado el diodo verde estará encendido
digitalWrite(3, HIGH);//diodo Verde encendido
//Los otros dos diodos rojos estarán apagados
digitalWrite(4, LOW); //diodo rojo 1
digitalWrite(5, LOW); //diodo rojo 2
} else {
//Si está presionado el diodo verde se apagará
digitalWrite(3, LOW);//diodo verde apagado
//Los diodos rojos pasaran a alto
digitalWrite(4, LOW);//pasa a bajo para que no se enciendan a la vez
digitalWrite(5, HIGH); //para la alternancia, introduzco una pausa y lo subo
delay (250);
digitalWrite(4, HIGH);//Diodo rojo 1 activo
digitalWrite(5, LOW); //Diodo rojo 2 desactivado
delay (250); //otra pausa y comienza de nuevo el bucle
}
}

Como observarás, el código muestra que cuando esta sin presionar el pulsador (se aplica la condición principal IF), en la que los diodos rojos están en LOW. Cuando se presiona el pulsador, uno pasa a LOW y otro a HIGH (para evitar que ambos diodos rojos estén encendidos al mismo tiempo). Una pausa de un cuarto de segundo después, se invierte el proceso y el que estaba en LOW pasa a HIGH y el que estaba en HIGH pasa a LOW. Y después otra pausa. Esto se hace para que se produzca la alternancia entre ambos diodos rojos y que simule que la barrera está bajada.

paso a nivel en arduino