viernes, 23 de abril de 2010

Semáforo Arduino





Hoy hemos terminado la programación de un montaje que simula un semáforo, con luces de paso para tráfico rodado, peatones, un pulsador para preferencia de paso para los peatones e incluso señal acústica para peatones invidentes.



El circuito electrónico es el ejemplo de semáforo de los tutoriales de fritzing, al cual hemos añadido un altavoz piezoeléctrico para el modo de aviso acústico.
El código controla el estado de los semáforos para tráfico rodado y peatones, el pulsador para prioridad de paso de los peatones, el avisador acústico para paso de peatones invidentes, e informa por puerto serie el estado del semáforo en tiempo real.

Este es el código fuente:

#include "pitches.h"

int Tr_rojo=12;
int Tr_amarillo=11;
int Tr_verde=10;

int P_rojo=9;
int P_verde=8;

int P_boton=2;

int Tr_tiempo;

int P_tiempo;
int Estado_boton;
int Bandera;

void setup()
{
pinMode(Tr_rojo, OUTPUT);
pinMode(Tr_amarillo, OUTPUT);
pinMode(Tr_verde, OUTPUT);
pinMode(P_rojo, OUTPUT);
pinMode(P_verde, OUTPUT);
pinMode(P_boton, INPUT);

P_tiempo=10000;

Serial.begin(9600);
}

void loop()
{

Estado_boton = digitalRead(P_boton);
Serial.println(P_tiempo);
Serial.println(Bandera);

if(Estado_boton == HIGH)
{
P_tiempo=5000;
Bandera=1;
}
// Bloque 1
Serial.println("Bloque 1");
digitalWrite(Tr_verde, HIGH);
digitalWrite(P_rojo, HIGH);
delay(P_tiempo);
if(Bandera==1)
{
P_tiempo=10000;
Bandera=0;
}
// Bloque 2
Serial.println("Bloque 2");
digitalWrite(Tr_verde, LOW);
for(Tr_tiempo=0; Tr_tiempo<10;>
{
Serial.println("Bloque 2 - Encendido");
Serial.println(Tr_tiempo);
digitalWrite(Tr_amarillo, HIGH);
digitalWrite(P_rojo, HIGH);
delay(250);
Serial.println("Bloque 2 - Apagado");
digitalWrite(Tr_amarillo, LOW);
digitalWrite(P_rojo, LOW);
delay(250);
}

// Bloque 3
Serial.println("Bloque 3");

for(Tr_tiempo=0; Tr_tiempo<5;>
{
digitalWrite(Tr_rojo, HIGH);
digitalWrite(P_verde, HIGH);
tone(6, NOTE_G3,8);
tone(6, NOTE_G3,8);
delay(1000);
}
// Bloque 4
Serial.println("Bloque 4");
digitalWrite(Tr_rojo, LOW);
for(Tr_tiempo=0; Tr_tiempo<5;>
{
Serial.println("Bloque 4 - Encendido");
Serial.println(Tr_tiempo);
digitalWrite(Tr_amarillo, HIGH);
digitalWrite(P_verde, HIGH);
delay(250);
tone(6, NOTE_G3,4);
tone(6, NOTE_G3,4);
Serial.println("Bloque 4 - Apagado");
digitalWrite(Tr_amarillo, LOW);
digitalWrite(P_verde, LOW);
delay(250);
}

}




2 comentarios:

  1. está bien saber que los de electrónica no somos los únicos que pasamos el rato programando con arduino; enhorabuena al que os ha metido el arduino en vuestras vidas.XD

    ResponderEliminar
  2. Hola que tal, he estado buscando información sobre como usar el arduino pero ya de una forma más real.. para conectarlo en un semáforo un poco más real, no nada más en protoboar.. pero no encuentro nada, es que en mi escuela hay un semaforo didáctico, y necesitamos conectarlo usando el arduino como programación.. sabes algo al repecto?

    ResponderEliminar