#include "DHT.h"
#include "RTClib.h"
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 rtc;
#define LED 13
#define LED2 12
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int JAM,MENIT,DETIK,HARI,TANGGAL,BULAN,TAHUN;
char Temp[60];
char nama_hari[7][7] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
void setup () {
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
lcd.backlight(); lcd.init();
lcd.setCursor(0,1); lcd.print(" AJAD SUDARMAN "); delay(1000);
Serial.begin(9600);
if(! rtc.begin()) {
Serial.print("RTC Error");
lcd.setCursor(0,1); lcd.print(" RTC Error ");
}
else {
Serial.println("RTC OKE");
lcd.setCursor(0,1); lcd.print(" RTC OKE ");
}
rtc.adjust(DateTime(2023, 6, 26, 14, 10, 00));
dht.begin();
}
void loop () {
int Kelembaban = dht.readHumidity();
float suhu = dht.readTemperature();
lcd.setCursor(0, 1);
lcd.print("T="); lcd.print(suhu,1); lcd.write(0xdf); lcd.print("C ");
lcd.print("H="); lcd.print(Kelembaban); lcd.print("% ");
if(JAM==14 && MENIT==12) digitalWrite(LED,HIGH);
else digitalWrite(LED,LOW);
if(Kelembaban>=60) digitalWrite(LED2,HIGH);
else digitalWrite(LED,LOW);
DateTime now = rtc.now();
JAM = now.hour();
MENIT = now.minute();
DETIK = now.second();
HARI = now.dayOfTheWeek();
TANGGAL = now.day();
BULAN = now.month();
TAHUN = now.year();
if(DETIK>50) {
sprintf(Temp,"%s,%02d-%02d-%d", nama_hari[HARI],TANGGAL,BULAN,TAHUN);
lcd.setCursor(0,0); lcd.print(Temp);
}
else {
sprintf(Temp,"JAM %02d:%02d:%02d WIB ", JAM,MENIT,DETIK);
lcd.setCursor(0,0); lcd.print(Temp);
}
}