#include <Servo.h>
Servo cancela;
int botao = 2;
int vermelhop = 3;
int amarelop = 4;
int verdep = 5;
int vermelhoc = 6;
int amareloc = 7;
int verdec = 8;
int estado = 0;
int atravesar = 0;
int sinal = 13;
unsigned long int tempatravesar = millis();
void setup() {
cancela.attach(9);
pinMode(botao, INPUT_PULLUP);
pinMode(vermelhop, OUTPUT);
pinMode(amarelop, OUTPUT);
pinMode(verdep, OUTPUT);
pinMode(vermelhoc, OUTPUT);
pinMode(amareloc, OUTPUT);
pinMode(verdec, OUTPUT);
pinMode(sinal, OUTPUT);
}
void loop() {
estado = digitalRead(botao);
if(estado == 0){
digitalWrite(sinal, HIGH);
tempatravesar = millis();
}
if((millis() - tempatravesar) < 5000){
atravesar = 1;
}
else{
atravesar = 0;
}
if(atravesar == 0){
cancela.write(90);
digitalWrite(vermelhop, HIGH);
digitalWrite(amarelop, LOW);
digitalWrite(verdep, LOW);
digitalWrite(vermelhoc, LOW);
digitalWrite(amareloc, LOW);
digitalWrite(verdec, HIGH);
}
if(atravesar == 1){
cancela.write(90);
digitalWrite(vermelhop, HIGH);
digitalWrite(amarelop, LOW);
digitalWrite(verdep, LOW);
digitalWrite(vermelhoc, LOW);
digitalWrite(amareloc, HIGH);
digitalWrite(verdec, LOW);
delay(1000);
cancela.write(0);
digitalWrite(vermelhop, LOW);
digitalWrite(amarelop, LOW);
digitalWrite(verdep, HIGH);
digitalWrite(vermelhoc, HIGH);
digitalWrite(amareloc, LOW);
digitalWrite(verdec, LOW);
delay(3000);
cancela.write(0);
digitalWrite(vermelhop, LOW);
digitalWrite(amarelop, HIGH);
digitalWrite(verdep, LOW);
digitalWrite(vermelhoc, HIGH);
digitalWrite(amareloc, LOW);
digitalWrite(verdec, LOW);
delay(1000);
}
}