Semáforo para peatones (Arduino)

En esta ocasión vamos a llevar a cabo un ejercicio práctico, aprovechando los conocimientos que ya tenemos sobre el funcionamiento de los interruptores, y ver una utilidad sobre el uso de los mismos.

El suspuesto consiste en desarrollar, montaje y programación, un semáforo para peatones. El funcionamiento de un semáforo tradicional es bien conocido: verde para permitir el paso a los vehículos, ámbar para avisar de precaución y rojo para cerrar el paso, momento en el cual se abre otro semáforo (de cualquier tipo) para abir el paso por otra vía.

Pues bien, en nuestro caso hemos incorporado un semáforo típico de vehículos y un semáforo de peatones de los que se regulan mediante la pulsación de un botón; de tal forma que si no se pide paso, el semáforo de los vehículos permanece abierto de forma indefinida, y cuando se pulse el botón, tras un intervalo de tiempo ‘indeterminado’, se cierra el paso a los vehículos para darlo a los peatones.

Vemos el video:

 

Espero que el montaje se aprecie lo suficientemente claro por si alguien quiere reproducirlo. Y como ayuda, dejo también el código y añado una aclaración: las variables avanceT, avanceMAX y CICLO son las que utilizo para establecer los tiempos en los que se chequea si hayh que dar el paso a los peatones; en una situación real, aunque el peatón pulse el botón, hay otros factores que intervienen, principalmente otros semáforos para otras vías…


// Semáforo para peatones


const int coche_verde = 2;
const int coche_amarillo = 3;
const int coche_rojo = 4;
int avanceT = 0;
int avanceMAX = 0;
const int CICLO = 22000;
const int boton = 7;
int estadoBoton = 0;
int abrirPeaton = 0;
const int peaton_verde = 8;
const int peaton_rojo = 9;

void setup()
{
pinMode (coche_verde, OUTPUT);
pinMode (coche_amarillo, OUTPUT);
pinMode (coche_rojo, OUTPUT);
pinMode (boton, INPUT);
pinMode (peaton_rojo, OUTPUT);
pinMode (peaton_verde, OUTPUT);
}

void loop()
{
delay(50);
digitalWrite(coche_verde, HIGH);
digitalWrite(coche_amarillo, LOW);
digitalWrite(coche_rojo,LOW);
digitalWrite(peaton_verde,LOW);
digitalWrite(peaton_rojo,HIGH);
do
{
avanceT++;
if (abrirPeaton == 0) estadoBoton = digitalRead(boton);
if (estadoBoton == 1 and abrirPeaton == 0) abrirPeaton = 1;
if (avanceT == 90)
{
avanceT = 0;
avanceMAX++;
}
}
while (avanceMAX < CICLO);

if (abrirPeaton == 1)
{
digitalWrite(coche_verde,LOW);
digitalWrite(coche_amarillo,HIGH);
delay(1000);
digitalWrite(coche_amarillo,LOW);
digitalWrite(coche_rojo,HIGH);
digitalWrite(peaton_rojo,LOW);
digitalWrite(peaton_verde,HIGH);
delay(5000);
}
avanceT = 0;
avanceMAX = 0;
abrirPeaton = 0;
estadoBoton = 0;
}

Anuncios
Esta entrada fue publicada en Arduino, Construcciones, Electrónica, Programación y etiquetada , , , . Guarda el enlace permanente.

Una respuesta a Semáforo para peatones (Arduino)

  1. raultm dijo:

    Al final parece que lo conseguiste. Necesitaste ayuda de alguno de tus alumnos 😉

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s