// libraries
#include <Servo.h>
bool encendido = true;
//Semáforos
/*Semáforo 1*/
#define LedTren1 2
#define LedVerde1 3
#define LedAmarillo1 4
#define LedRojo1 5
/*Semáforo 2*/
#define LedTren2 6
#define LedVerde2 7
#define LedAmarillo2 8
#define LedRojo2 9
// Barrera (Servo motor)
int e=90;
int i=0;
Servo barrera;
// Boton //
#define boton 13
int botonE = 0;
byte lastButtonState = LOW;
unsigned long debounceDuration = 100; // millis
unsigned long lastTimeButtonStateChanged = 0;
/// VOID ///
void setup (){
//Barrera
barrera.attach(11);
barrera.write(90);
delay(1000);
// Semáforo setups
pinMode(LedTren1,OUTPUT);
pinMode(LedTren2,OUTPUT);
pinMode(LedVerde1,OUTPUT);
pinMode(LedAmarillo1,OUTPUT);
pinMode(LedRojo1,OUTPUT);
pinMode(LedVerde2,OUTPUT);
pinMode(LedAmarillo2,OUTPUT);
pinMode(LedRojo2,OUTPUT);
//Boton//
pinMode(boton,INPUT);
}
/// MAIN LOOP ///
void loop (){
if (millis() - lastTimeButtonStateChanged > debounceDuration) {
byte buttonState = digitalRead(boton);
if (buttonState != lastButtonState) {
lastTimeButtonStateChanged = millis();
lastButtonState = buttonState;
encendido=!encendido;
if (buttonState==LOW) {
///TREN ESTÁ PASANDO
if(e<90){
e=e+90;
barrera.write(e);}
digitalWrite(LedTren1,1);
digitalWrite(LedTren2,1);
delay(5000);
}
else
{///TREN NO ESTÁ PASANDO
if (e>0)
{
e=e-90;
barrera.write(e);
}
semaforos();
digitalWrite(LedTren1,0);
digitalWrite(LedTren2,0);
}
}
}
}
/// semaforos
void semaforos (){
digitalWrite(LedTren1, 0);
digitalWrite(LedTren2, 0);
digitalWrite(LedVerde1, 1);
digitalWrite(LedRojo2, 1);
delay (1000);
for(i=0;i<3;i++){
digitalWrite(LedVerde1,1);
digitalWrite(LedVerde1,0);
delay(100);
}
digitalWrite(LedAmarillo1,1);
delay(1000);
digitalWrite(LedAmarillo1, 0);
digitalWrite(LedRojo2, 0);
digitalWrite(LedRojo1,1);
digitalWrite(LedVerde2, 1);
delay(1000);
for(i=0;i<3;i++){
digitalWrite(LedVerde2,1);
digitalWrite(LedVerde2,0);
delay(100);
}
digitalWrite(LedAmarillo2,1);
delay(1000);
digitalWrite(LedRojo1,0);
digitalWrite(LedAmarillo2, 0);
}