#define Luz_Verde 13
#define Luz_Amarillo 12
#define Luz_Rojo 11
#define Pin_Trig 3
#define Pin_Echo 2
long t;
long d;
int TiempoVerdePeatonCerca = 3000;
int TiempoAmarilloPeatonCerca = 3000;
int TiempoRojoPeatonCerca = 10000;
int TiempoVerdePeatonLejos = 10000;
int TiempoAmarilloPeatonLejos = 3000;
int TiempoRojoPeatonLejos = 6000;
void setup() {
Serial.begin(9600);
pinMode(Luz_Verde,OUTPUT);
pinMode(Luz_Amarillo,OUTPUT);
pinMode(Luz_Rojo,OUTPUT);
pinMode(Pin_Trig,OUTPUT);
pinMode(Pin_Echo,INPUT);
digitalWrite(Pin_Trig,LOW);
}
void loop() {
digitalWrite(Pin_Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Pin_Trig,LOW);
t = (pulseIn(Pin_Echo,HIGH));
d = (t/2)/29;
if (d<=200){
Serial.print("Distancia de peaton: ");
Serial.print(d);
Serial.print("cm");
Serial.println();
delay(100);
//Luz Verde Con Peaton A Menos De Dos Metros
digitalWrite(Luz_Verde,HIGH);
Serial.print("Tiempo restante en verde ");
Serial.print(TiempoVerdePeatonCerca);
Serial.println("ms");
delay(TiempoVerdePeatonCerca);
digitalWrite(Luz_Verde, LOW);
delay(1000);
//Luz Amarillo Con Peaton A Menos De Dos Metros
digitalWrite(Luz_Amarillo,HIGH);
Serial.print("Tiempo restante en amarillo ");
Serial.print(TiempoAmarilloPeatonCerca);
Serial.println("ms");
delay(TiempoAmarilloPeatonCerca);
digitalWrite(Luz_Amarillo,LOW);
Serial.println("Semaforo a punto de cambiar");
delay(1000);
//Luz Rojo Con Peaton A Menos De Dos Metros
digitalWrite(Luz_Rojo,HIGH);
Serial.print("Tiempo restante en rojo ");
Serial.print(TiempoRojoPeatonCerca);
Serial.println("ms");
delay(TiempoRojoPeatonCerca);
digitalWrite(Luz_Rojo,LOW);
Serial.println();
delay(1000);
}
if (d>200){
digitalWrite(Pin_Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Pin_Trig,LOW);
Serial.print("Distancia de peaton: ");
Serial.print(d);
Serial.print("cm");
Serial.println();
//Luz Verde Sin Peaton o Peatón A Mas De Dos Metros
digitalWrite(Luz_Verde,HIGH);
Serial.print("Tiempo restante en verde ");
Serial.print(TiempoVerdePeatonLejos);
Serial.println("ms");
delay(TiempoVerdePeatonLejos);
digitalWrite(Luz_Verde, LOW);
delay(1000);
//Luz Amarillo Sin Peaton o Peatón A Mas De Dos Metros
digitalWrite(Luz_Amarillo,HIGH);
Serial.print("Tiempo restante en amarillo ");
Serial.print(TiempoAmarilloPeatonLejos);
Serial.println("ms");
delay(TiempoAmarilloPeatonLejos);
digitalWrite(Luz_Amarillo,LOW);
Serial.println("Semaforo a punto de cambiar");
delay(1000);
//Luz Rojo Sin Peaton o Peatón A Mas De Dos Metros
digitalWrite(Luz_Rojo,HIGH);
Serial.print("Tiempo restante en rojo ");
Serial.print(TiempoRojoPeatonLejos);
Serial.println("ms");
delay(TiempoRojoPeatonLejos);
digitalWrite(Luz_Rojo,LOW);
Serial.println();
delay(1000);
}
}