#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RTClib.h"
#define DHTPIN 3 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27,20,4); //
char namaHari[7][12] = {"Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"};
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init(); //
lcd.backlight(); // LCD baclite
// Inisialisasi RTC
if (!rtc.begin()) {
Serial.println("Tidak dapat menemukan RTC");
while (1)
delay(10);
}
// Periksa apakah RTC berjalan, jika tidak, atur waktu default
if (!rtc.isrunning()) {
Serial.println("RTC tidak berjalan");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
float jam = (now.hour() * 100) + now.minute();
float h = dht.readHumidity();
float t = dht.readTemperature();
lcd.setCursor(0,0);
lcd.print("Time: ");
printAngka(now.hour());
lcd.print(":");
printAngka(now.minute());
lcd.print(":");
printAngka(now.second());
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(namaHari[now.dayOfTheWeek()]);
lcd.print(",");
printAngka(now.day());
lcd.print("/");
printAngka(now.month());
lcd.print("/");
printAngka(now.year());
lcd.setCursor(0,2);
lcd.print("Temp: ");
lcd.print(t);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,3);
lcd.print("Humi: ");
lcd.print(h);
lcd.print("%");
delay(1000);
}
void printAngka(int digits) {
if (digits < 10) lcd.print('0');
lcd.print(digits);
}