#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int led = 13;
unsigned long tempoAnterior = 0;
unsigned long tempoAtual = 0;
const long intervalo = 300;
int iniciar = 0;
int segundos = 0;
int minutos = 0;
int alarmeSeg = 0;
int alarmeMin = 0;
#define botaoMudaSeg 7
#define botaoMudaMin 6
#define botaoIniciar 8
#define Led 12
#define buzzer 11
int permissaoSeg = 0;
int permissaoMin = 0;
int permissaoLIGA = 0;
int permissaoRE = 0;
void setup()
{
pinMode(led, OUTPUT);
pinMode(Led, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(botaoMudaSeg, INPUT);
pinMode(botaoMudaMin, INPUT);
pinMode(botaoIniciar, INPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0,1);
lcd.print("Tempo:");
lcd.setCursor(0,0);
lcd.print("Alarme:");
}
void loop() {
int start = digitalRead(botaoIniciar);
if(digitalRead(botaoMudaSeg) && permissaoSeg == 0){
permissaoSeg = 1;
alarmeSeg ++;
}
if(digitalRead(botaoMudaSeg) == LOW){
permissaoSeg = 0;
}
if(digitalRead(botaoMudaMin) && permissaoMin == 0){
permissaoMin = 1;
alarmeMin ++;
}
if(digitalRead(botaoMudaMin) == LOW){
permissaoMin = 0;
}
lcd.setCursor(8,0);
if(alarmeMin < 10) lcd.print("0");
lcd.print(alarmeMin);
lcd.print(":");
if(alarmeSeg < 10) lcd.print("0");
lcd.print(alarmeSeg);
if (start == HIGH && permissaoLIGA == 0){
iniciar = 1;
permissaoLIGA = 1;
}
if (start == LOW && permissaoLIGA == 1){
permissaoRE = 1;
}
if (iniciar == 1 ){
tempoAtual = millis();
if (tempoAtual - tempoAnterior >= intervalo) {
tempoAnterior = tempoAtual;
segundos++;
digitalWrite(led, !digitalRead(led));
if(segundos >= 60) {
segundos = 0;
minutos++;
}
if(minutos >= 60) {
minutos = 0;
}
lcd.setCursor(6,1);
if(minutos < 10) lcd.print("0");
lcd.print(minutos);
lcd.print(":");
if(segundos < 10) lcd.print("0");
lcd.print(segundos);
}
}
if(minutos == alarmeMin && segundos == alarmeSeg){
digitalWrite(Led, HIGH);
digitalWrite(buzzer, HIGH);
} if (minutos == alarmeMin && segundos == alarmeSeg) {
digitalWrite(Led, LOW);
digitalWrite(buzzer, LOW);
iniciar = 0;
}
if (start == HIGH && permissaoRE == 1){
segundos = 0;
minutos = 0;
permissaoRE = 0;
permissaoLIGA = 0;
}
}