#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const int botao = A0;
const int buzzer = A1;
unsigned long millisAnterior = 0;
const long intervalo = 1000;
int timer10 = 10;
int timer5 = 5;
int timer15 = 15;
bool contando = true;
enum Status {
VERMELHO,
AMARELO,
VERDE
}
Status statusSemaforo = Status::VERDE;
void setup() {
DDRD = B11111100;
pinMode(botao, INPUT);
pinMode(buzzer, OUTPUT);
lcd.begin(16,2);
}
void loop() {
}
void proximoStatus() {
if (statusSemaforo == Status::VERMELHO) statusSemaforo = Status::AMARELO;
else if (statusSemaforo == Status::AMARELO) statusSemaforo = Status::VERDE;
else statusSemaforo = Status::VERMELHO;
}
void contador10(){
unsigned long millisAtual = millis();
if (millisAtual - millisAnterior >= intervalo && contando == true) {
millisAnterior = millisAtual;
lcd.clear();
lcd.home();
if(timer10 >= 10){
lcd.print("00:" + String(timer10));
} else {
lcd.print("00:0" + String(timer10));
}
timer10--;
if (timer10 <= 0)
{
contando = false;
//timer = 5;
}
}
}
void contador5(){
unsigned long millisAtual = millis();
if (millisAtual - millisAnterior >= intervalo && contando == true) {
millisAnterior = millisAtual;
lcd.clear();
lcd.home();
lcd.print("00:0" + String(timer5));
timer5--;
if (timer5 <= 0)
{
contando = false;
//timer = 5;
}
}
}
void contador15(){
unsigned long millisAtual = millis();
if (millisAtual - millisAnterior >= intervalo && contando == true) {
millisAnterior = millisAtual;
lcd.clear();
lcd.home();
if(timer15 >= 10){
lcd.print("00:" + String(timer15));
} else {
lcd.print("00:0" + String(timer15));
}
timer15--;
if (timer15 <= 0)
{
contando = false;
//timer = 5;
}
}
}