#include <LiquidCrystal_I2C.h> // Inclui a Biblioteca
#include <RTClib.h> // Inclui a Biblioteca
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Inicia o display 16x2 no endereço 0x27
const int hourButtonPin = 8; // Pino para ajustar a hora
const int minuteButtonPin = 7; // Pino para ajustar o minuto
void setup() {
rtc.begin(); // Inicia o módulo RTC
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Ajuste Automático da hora e data
rtc.adjust(DateTime(2024, 9, 8, 00, 49, 10)); // Ajuste Manual (Ano, Mês, Dia, Hora, Min, Seg)
lcd.init(); // Inicia o Display
lcd.backlight(); // Inicia o Backlight
pinMode(hourButtonPin, INPUT_PULLUP); // Configura o pino do botão como entrada com resistor de pull-up
pinMode(minuteButtonPin, INPUT_PULLUP); // Configura o pino do botão como entrada com resistor de pull-up
}
void loop() {
DateTime now = rtc.now(); // Leitura única do tempo atual
lcd.setCursor(1, 0); // Posiciona o cursor na primeira linha
lcd.print("Hora: "); // Imprime o texto "Hora: "
lcd.print(now.hour()); // Imprime a Hora
lcd.print(":"); // Imprime o texto entre aspas
lcd.print(now.minute()); // Imprime o Minuto
lcd.print(":"); // Imprime o texto entre aspas
lcd.print(now.second()); // Imprime o Segundo
lcd.setCursor(0, 1); // Posiciona o cursor na segunda linha
lcd.print("Data: "); // Imprime o texto entre aspas
lcd.print(now.day()); // Imprime o Dia
lcd.print("/"); // Imprime o texto entre aspas
lcd.print(now.month()); // Imprime o Mês
lcd.print("/"); // Imprime o texto entre aspas
lcd.print(now.year()); // Imprime o Ano
// Verifica se o botão de hora foi pressionado
if (digitalRead(hourButtonPin) == LOW) {
DateTime newTime = now + TimeSpan(3600); // Adiciona uma hora (3600 segundos)
rtc.adjust(newTime); // Ajusta o RTC para a nova hora
delay(200); // Debounce
}
// Verifica se o botão de minuto foi pressionado
if (digitalRead(minuteButtonPin) == LOW) {
DateTime newTime = now + TimeSpan(60); // Adiciona um minuto (60 segundos)
rtc.adjust(newTime); // Ajusta o RTC para o novo minuto
delay(200); // Debounce
}
delay(10); // Aguarda 1 segundo e reinicia
lcd.clear();
}