#include <Wire.h> // ไลบรารีสำหรับ I2C
#include <LiquidCrystal_I2C.h> // ไลบรารีสำหรับ LCD I2C
#include <RTClib.h> // ไลบรารีสำหรับ RTC DS1307
// กำหนดที่อยู่ของ LCD (ปกติ 0x27 หรือ 0x3F ขึ้นอยู่กับโมดูล)
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 rtc;
void setup() {
Wire.begin(); // เริ่มต้นการสื่อสาร I2C
lcd.init(); // เริ่มต้นการทำงานของ LCD
lcd.backlight(); // เปิดไฟ backlight ของ LCD
if (!rtc.begin()) { // ตรวจสอบว่า RTC เชื่อมต่อหรือไม่
lcd.print("RTC Error");
while (1);
}
if (!rtc.isrunning()) { // ถ้า RTC ยังไม่ได้ตั้งเวลา
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // ตั้งเวลาเป็นเวลาปัจจุบันของการคอมไพล์
}
}
void loop() {
DateTime now = rtc.now(); // ดึงข้อมูลวันที่และเวลาจาก RTC
lcd.setCursor(0, 0); // กำหนดตำแหน่งให้แสดงที่บรรทัดแรก
lcd.print("Date: ");
lcd.print(now.day(), DEC); // แสดงวันที่
lcd.print('/');
lcd.print(now.month(), DEC); // แสดงเดือน
lcd.print('/');
lcd.print(now.year(), DEC); // แสดงปี
lcd.setCursor(0, 1); // กำหนดตำแหน่งให้แสดงที่บรรทัดที่สอง
lcd.print("Time: ");
lcd.print(now.hour(), DEC); // แสดงชั่วโมง
lcd.print(':');
lcd.print(now.minute(), DEC); // แสดงนาที
lcd.print(':');
lcd.print(now.second(), DEC); // แสดงวินาที
delay(1000); // หน่วงเวลา 1 วินาที ก่อนการอัปเดตค่าครั้งถัดไป
}