void loop() {
// Membaca suhu dan kelembapan dari DHT22
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Pastikan pembacaan DHT berhasil
if (isnan(humidity) || isnan(temperature)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("DHT Error!");
return; // Kembali ke awal loop jika error
}
// Membaca waktu dari RTC
DateTime now = rtc.now(); // Membaca waktu terkini
// Tampilkan suhu dan kelembapan di baris pertama
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature, 1); // Satu angka di belakang koma
lcd.print(" C "); // Tambahkan dua spasi di akhir untuk pemisahan
lcd.setCursor(10, 0);
lcd.print("Hum: ");
lcd.print(humidity, 1); // Satu angka di belakang koma
lcd.print(" % "); // Tambahkan dua spasi di akhir untuk pemisahan
// Tampilkan waktu di baris kedua dalam format HH:MM:SS
lcd.setCursor(0, 1);
if (now.hour() < 10) lcd.print('0'); // Tambahkan nol jika jam kurang dari 10
lcd.print(now.hour(), DEC);
lcd.print(':');
if (now.minute() < 10) lcd.print('0'); // Tambahkan nol jika menit kurang dari 10
lcd.print(now.minute(), DEC);
lcd.print(':');
if (now.second() < 10) lcd.print('0'); // Tambahkan nol jika detik kurang dari 10
lcd.print(now.second(), DEC);
// Tampilkan status pemberian pakan di akhir baris kedua
lcd.setCursor(13, 1);
if (feedingStatus) {
lcd.print("F");
} else {
lcd.print(" ");
}
// Simulasikan pemberian pakan (misalnya setiap jam tertentu)
if (now.minute() == 0 && now.second() == 0) { // Setiap jam
giveFeed();
}
delay(1000); // Update setiap detik
}