#include <LiquidCrystal_I2C.h> // LCD I2C library
#include <Ds1302.h> // DS1302 RTC library
#include <Wire.h> // I2C communication library
#define SERIAL_OPTION 0 // Serial communication: 1 = enabled, 0 = disabled
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address: 0x3F or 0x27
// DS1302 pin definitions
const int DS1302_CLK_PIN = 8; // Clock pin
const int DS1302_DIO_PIN = 6; // Data input/output pin
const int DS1302_RST_PIN = 7; // Reset pin
// Create DS1302 object
Ds1302 rtc(DS1302_RST_PIN, DS1302_DIO_PIN, DS1302_CLK_PIN);
void setup() {
if (SERIAL_OPTION) Serial.begin(9600); // Initialize serial communication
lcd.init(); // Initialize LCD
lcd.backlight(); // Turn on LCD backlight
rtc.halt();
// Uncomment and set the correct date and time only once
// rtc.setDateTime(__DATE__, __TIME__);
// rtc.setDateTime(2022, 9, 30, 18, 13, 40); // Set year, month, day, hour, minute, second
}
void loop() {
Ds1302::DateTime now;
rtc.getDateTime(&now);
if (SERIAL_OPTION) {
Serial.print(now.year); Serial.print("/");
Serial.print(now.month); Serial.print("/");
Serial.print(now.day); Serial.print(" ");
Serial.print(now.hour); Serial.print(":");
Serial.print(now.minute); Serial.print(":");
Serial.print(now.second); Serial.print("\n");
}
lcd.setCursor(0, 0); lcd.print("DATE: ");
lcd.print(now.year); lcd.print("/"); lcd.print(now.month); lcd.print("/"); lcd.print(now.day);
lcd.setCursor(0, 1); lcd.print("TIME: ");
lcd.print(now.hour); lcd.print(":"); lcd.print(now.minute); lcd.print(":"); lcd.print(now.second);
delay(1000);
}