#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16,2);
RTC_DS1307 clock;
byte hora, minuto, segundo, ds, dia, mes, menu = 0;
uint16_t ano;
void setup()
{
lcd.begin(16,2);
clock.begin();
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
}
void loop()
{
relogio();
botao();
selecionaMenu();
}
void relogio()
{
DateTime t = clock.now();
hora = t.hour();
minuto = t.minute();
segundo = t.second();
dia = t.day();
mes = t.month();
ano = t.year();
ds = t.dayOfTheWeek();
lcd.setCursor(4,0);
lcd.print(hora / 10);
lcd.print(hora % 10);
lcd.print(":");
lcd.print(minuto / 10);
lcd.print(minuto % 10);
lcd.print(":");
lcd.print(segundo / 10);
lcd.print(segundo % 10);
lcd.setCursor(0,1);
lcd.print(dia / 10);
lcd.print(dia % 10);
lcd.print("/");
lcd.print(mes / 10);
lcd.print(mes % 10);
lcd.print("/");
lcd.print(ano / 10);
lcd.print(ano % 10);
lcd.setCursor(13,1);
switch(ds)
{
case 0: lcd.print("DOM"); break;
case 1: lcd.print("SEG"); break;
case 2: lcd.print("TER"); break;
case 3: lcd.print("QUA"); break;
case 4: lcd.print("QUI"); break;
case 5: lcd.print("SEX"); break;
case 6: lcd.print("SAB"); break;
}
}
void botao()
{
if(menu == 1)
{
lcd.setCursor(4,0);
lcd.print(hora / 10);
lcd.print(hora % 10);
delay(100);
lcd.setCursor(4,0);
lcd.print(" ");
lcd.print(" ");
delay(25);
if(!digitalRead(8)) // acerta a hora
{
hora++;
if(hora > 23) hora = 0;
clock.adjust(DateTime(ano, mes, dia, hora, minuto, segundo));
while(!digitalRead(8));
}
}
else if(menu == 2)
{
lcd.setCursor(7,0);
lcd.print(minuto / 10);
lcd.print(minuto % 10);
delay(100);
lcd.setCursor(7,0);
lcd.print(" ");
lcd.print(" ");
delay(100);
if(!digitalRead(8)) // acerta o minuto
{
minuto++;
if(minuto > 59) minuto = 0;
clock.adjust(DateTime(ano, mes, dia, hora, minuto, segundo));
while(!digitalRead(8));
}
}
else if(menu == 3)
{
lcd.setCursor(0,1);
lcd.print(dia / 10);
lcd.print(dia % 10);
delay(100);
lcd.setCursor(0,1);
lcd.print(" ");
lcd.print(" ");
delay(100);
if(!digitalRead(8)) // acerta o minuto
{
dia++;
if(dia > 59) dia = 0;
clock.adjust(DateTime(ano, mes, dia, hora, minuto, segundo));
while(!digitalRead(8));
}
}
else if(menu == 4)
{
lcd.setCursor(3,1);
lcd.print(mes / 10);
lcd.print(mes % 10);
delay(100);
lcd.setCursor(3,1);
lcd.print(" ");
lcd.print(" ");
delay(100);
if(!digitalRead(8)) // acerta o minuto
{
mes++;
if(mes > 59) mes = 0;
clock.adjust(DateTime(ano, mes, dia, hora, minuto, segundo));
while(!digitalRead(8));
}
}
}
void selecionaMenu()
{
if(!digitalRead(7))
{
menu++;
if(menu > 6) menu = 0;
delay(400);
}
}