//Projeto baseado no estudo da biblioteca DS3231.h
#include <U8g2lib.h>
#include <Wire.h>
#include <DS3231.h>
DS3231 Clock;
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
bool century = false;
bool h12;
bool PM;
int ano, mes, dia, ds, hora, minuto, segundo;
#define bt1 8
#define bt2 9
void display()
{
hora = Clock.getHour(h12, PM);
minuto = Clock.getMinute();
segundo = Clock.getSecond();
ds = Clock.getDoW();
dia = Clock.getDate();
mes = Clock.getMonth(century);
ano = Clock.getYear();
u8g2.setFont(u8g2_font_ncenB18_tf);
u8g2.setCursor(10,40); //Posicionando o cursor
u8g2.print(hora / 10); //Escrevendo a hora
u8g2.print(hora % 10);
u8g2.drawStr(40,37,":"); //Escrevendo ":"
u8g2.setCursor(50,40); //Posicionando o cursor
u8g2.print(minuto / 10); //Escrevendo os minutos
u8g2.print(minuto % 10);
u8g2.drawStr(80,37,":"); //Escrevendo ":"
u8g2.setCursor(90,40); //Posicionando o cursor
u8g2.print(segundo / 10); //Escrevendo os segundos
u8g2.print(segundo % 10);
u8g2.setFont(u8g2_font_pressstart2p_8u);
u8g2.setCursor(23,10); //Posicionando o cursor
u8g2.print(dia / 10); //Escrevendo o dia
u8g2.print(dia % 10);
u8g2.drawStr(40,10,"/"); //Escrevendo "/"
u8g2.setCursor(47,10); //Posicionando o cursor
u8g2.print(mes / 10); //Escrevendo o mes
u8g2.print(mes % 10);
u8g2.drawStr(63,10,"/"); //Escrevendo "/"
u8g2.setCursor(73,10); //Posicionando o
u8g2.print(20);
u8g2.print(ano); //Escrevendo o ano
switch(ds)
{
u8g2.setFont(u8g2_font_pressstart2p_8u);
case 1: u8g2.drawStr(35,60,"DOMINGO"); break;
case 2: u8g2.drawStr(35,60,"SEGUNDA"); break;
case 3: u8g2.drawStr(35,60," TERCA") ; break;
case 4: u8g2.drawStr(35,60," QUARTA"); break;
case 5: u8g2.drawStr(35,60," QUINTA"); break;
case 6: u8g2.drawStr(35,60," SEXTA") ; break;
case 7: u8g2.drawStr(35,60,"SABADO") ; break;
}
if(!digitalRead(8)) //green button
{
hora++;
if(hora > 23) hora = 0;
Clock.setHour(hora), Clock.setMinute(minuto), Clock.setSecond(segundo);
delay(400);
}
if(!digitalRead(9)) //blue button
{
minuto++;
if(minuto > 59) minuto = 0;
Clock.setHour(hora), Clock.setMinute(minuto), Clock.setSecond(segundo);
delay(400);
}
}
void setup()
{
Wire.begin();
u8g2.begin();
//Clock.begin();
pinMode(bt1, INPUT_PULLUP);
pinMode(bt2, INPUT_PULLUP);
}
void loop()
{
u8g2.firstPage();
do
{
display();
}
while (u8g2.nextPage());
delay(250); // Atualiza a 250 milisegundo
}