#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <RTClib.h>
RTC_DS3231 myRTC;
#define DHTPIN 14
#define DHTTYPE DHT22
#define LDRPIN 33
DHT dhtku(DHTPIN,DHTTYPE);
LiquidCrystal_I2C lcdKita(0x27, 16, 2);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
dhtku.begin();
myRTC.begin();
lcdKita.init();
lcdKita.backlight();
splashScreen();
myRTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop() {
// put your main code here, to run repeatedly:
DateTime now = myRTC.now();
int tahun = now.year();
int bulan = now.month();
int tanggal = now.day();
int jam = now.hour();
int menit = now.minute();
int detik = now.second();
float temp = dhtku.readTemperature();
float hum = dhtku.readHumidity();
// Membaca Sensor LDR
float adcLdr = analogRead(LDRPIN);
float lux = adc2Lux(adcLdr);
tampilkan(tahun,bulan,tanggal,jam,menit,detik,temp,hum,lux);
}
void tampilkan(int year, int month, int day, int hour, int minute, int second, float t, float h, float l){
lcdKita.setCursor(0,0);
lcdKita.print("Date: ");
lcdKita.print(year);
lcdKita.print("/");
lcdKita.print(month);
lcdKita.print(":");
lcdKita.print(day);
lcdKita.setCursor(0,1);
lcdKita.print("Time: ");
lcdKita.print(hour);
lcdKita.print(":");
lcdKita.print(minute);
lcdKita.print(":");
lcdKita.print(second);
delay(2000);
lcdKita.clear();
lcdKita.setCursor(0,0);
lcdKita.print("T:");
lcdKita.print(t);
lcdKita.setCursor(8,0);
lcdKita.print("H:");
lcdKita.print(h);
lcdKita.setCursor(3,1);
lcdKita.print("L:");
lcdKita.print(l,2);
delay(3000); // this speeds up the simulation
lcdKita.clear();
}
void splashScreen(){
lcdKita.setCursor(5,0);
lcdKita.print("EDSPERT");
delay(3000);
lcdKita.clear();
lcdKita.setCursor(5,0);
lcdKita.print("SYSTEM");
lcdKita.setCursor(3,1);
lcdKita.print("MONITORING");
delay(3000);
lcdKita.clear();
}
float adc2Lux(int adcValue){
const float GAMMA = 0.7;
const float RL10 = 33;
float voltage = adcValue / 4096. * 3.3;
float resistance = 2000 * voltage / (1 - voltage / 3.3);
float luxValue = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
return luxValue;
}