#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RTClib.h"
#include "DHT.h"
// กำหนด DS1307 RTC
RTC_DS1307 rtc;
// กำหนด LCD (ที่อยู่ 0x27 ขนาด 20x4 หรือ 16x2)
LiquidCrystal_I2C lcd(0x27, 20, 4);
// กำหนด DHT22
#define DHTPIN 13 // ขาที่เชื่อมต่อกับ DHT22
#define DHTTYPE DHT22 // ระบุชนิดเซนเซอร์เป็น DHT22
DHT dht(DHTPIN, DHTTYPE);
int ledPins[] = {15, 2, 4, 16, 17, 5, 18, 19}; // ขาที่ต่อกับ LED
int numLeds = sizeof(ledPins) / sizeof(ledPins[0]); // นับจำนวน LED
void setup() {
// เริ่มการทำงานของ LCD
lcd.init(); // เปลี่ยนจาก lcd.begin() เป็น lcd.init()
lcd.backlight(); // เปิดไฟหลังจอ
// เริ่มการทำงานของเซนเซอร์ DHT22
dht.begin();
// เริ่มการทำงานของ RTC
if (!rtc.begin()) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Couldn't find RTC");
while (1);
}
if (!rtc.isrunning()) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("RTC is NOT running");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // ตั้งเวลาตามเวลาปัจจุบัน
}
// ตั้งค่าให้แต่ละขาเป็น OUTPUT
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW); // เริ่มต้นโดยปิด LED ทั้งหมด
}
}
void loop() {
// อ่านเวลาและวันที่จาก RTC
DateTime now = rtc.now();
// แสดงเวลาในรูปแบบ HH:MM:SS
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Time: ");
if (now.hour() < 10) lcd.print('0'); // เพิ่ม 0 ข้างหน้า ถ้าเป็นเลขหลักเดียว
lcd.print(now.hour());
lcd.print(':');
if (now.minute() < 10) lcd.print('0');
lcd.print(now.minute());
lcd.print(':');
if (now.second() < 10) lcd.print('0');
lcd.print(now.second());
delay(1000); // หน่วงเวลา 1 วินาทีเพื่อแสดงผลอย่างต่อเนื่อง
}