//#include <LiquidCrystal.h>
//LiquidCrystal lcd(7,6,5,4,3,2);
#include <neotimer.h>
Neotimer timerverde = Neotimer(5000);
Neotimer timeramarelo = Neotimer(5000);
Neotimer timervermelho = Neotimer(5000);
Neotimer timervermelhoPCD = Neotimer(5000);
const int botao = 8;
const int buzzer = A0;
enum Semaforo {c_verde, c_amarelo, c_vermelho, c_vermelho_pcd};
Semaforo statusSemaforo = Semaforo::c_verde;
int timerPassagem = 5;
void setup(){
Serial.begin(9600);
//DDRB = B111110;
pinMode(botao, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
//lcd.begin(16,2);
}
void loop(){
switch(statusSemaforo){
case Semaforo::c_verde:
Serial.println("Verde");
timerverde.start();
break;
case Semaforo::c_amarelo:
Serial.println("Amarelo");
timeramarelo.start();
break;
case Semaforo::c_vermelho:
Serial.println("Vermelho");
timervermelho.start();
break;
case Semaforo::c_vermelho_pcd:
Serial.println("Vermelho PCD");
timervermelhoPCD.start();
break;
}
ciclaStatus();
}
void ciclaStatus(){
if(statusSemaforo == Semaforo::c_verde){
if(timerverde.done())
statusSemaforo = Semaforo::c_amarelo;
} else if(statusSemaforo == Semaforo::c_amarelo){
if(timeramarelo.done())
statusSemaforo = Semaforo::c_vermelho;
} else if(statusSemaforo == Semaforo::c_vermelho){
if(timervermelho.done())
statusSemaforo = Semaforo::c_verde;
}
}
/*
void nextState() {
if (state == States::RED) state = States::GREEN;
else if (state == States::GREEN) state = States::BLUE;
else state = States::RED;
}
*/