#define botao 7
#define buzzer 6
#define verdeC 0
#define amareloC 1
#define vermelhoC 2
#define verdeP 3
#define vermelhoP 4
#define chamadaP 5
int estado = verdeC;
bool pressionado = false;
unsigned long tempoPassagem = 5000;
void setup()
{
pinMode(buzzer, OUTPUT);
pinMode(botao, INPUT);
Serial.begin(9600);
}
void loop(){
tempoPassagem = 5000;
pressionado = false;
switch(estado){
case verdeC:
Serial.println("Aberto pra carro");
delay(3000);
estado = amareloC;
break;
case amareloC:
Serial.println("Amarelo");
delay(3000);
estado = vermelhoC;
break;
case vermelhoC:
Serial.println("Fechou pra carro");
if(digitalRead(botao) == HIGH){
if(!pressionado){
pressionado = true;
delay(50);
if(digitalRead(botao) == HIGH){
tone(buzzer,1000,100);
tempoPassagem *= 2;
}
}
} else{
pressionado = false;
}
delay(tempoPassagem);
Serial.println(String(tempoPassagem) + " - " + String(pressionado));
estado = verdeC;
break;
}
}