// Library
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
// Type Device
LiquidCrystal_I2C mylcd(0x27, 20, 4);
#define DHTTYPE DHT22
// Pin Device
#define DHTPIN 5
#define KIPAS 8
#define POMPA 9
#define anrPin 1
// Variabel Sensor
DHT dht(DHTPIN, DHTTYPE);
const float GAMMA = 0.7;
const float RL10 = 50;
float hum, temp, voltage, resistance, lux;
int analogValue;
// Method Setup
void setup()
{
// Baudrate
Serial.begin(9600);
// Inisialisasi Pin State
pinMode(POMPA, OUTPUT);
pinMode(KIPAS, OUTPUT);
// Memulai DHT
dht.begin();
// Memulai LCD
mylcd.init();
// Splash Screen
mylcd.backlight();
delay(250);
mylcd.noBacklight();
delay(250);
mylcd.backlight();
// Menampilkan data pada LCD
mylcd.setCursor(5,1);
mylcd.print("Edspert.id");
mylcd.setCursor(4,2);
mylcd.print("Bootcamp Ke-4");
delay(3000);
// Menghapus penampilan data pada LCD
mylcd.clear();
}
// Membaca dan Memberi Batasan pada sensor LDR
void Read_LDR_Sensor(){
analogValue = analogRead(anrPin);
voltage = analogValue * 5/1023.0;
resistance = 2000 * voltage / (1 - voltage / 5);
lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
if(lux >= 50000){
digitalWrite(POMPA, HIGH); // Pompa Menyala
Display_LCD("", "ON ", "");
}
else{
digitalWrite(POMPA, LOW); // Pompa Mati
Display_LCD("", "OFF ", "");
}
}
// Membaca dan Memberi Batasan pada sensor DHT22
void Read_DHT22_Sensor(){
hum = dht.readHumidity();
temp = dht.readTemperature();
if(temp > 25 && hum < 80){
digitalWrite(KIPAS, HIGH); // Kipas Menyala
digitalWrite(POMPA, HIGH); // Pompa Menyala
Display_LCD("ON ", "", "ON ");
}
else if(temp > 25 && hum>= 80 ){
digitalWrite(KIPAS, HIGH); // Kipas Menyala
Display_LCD("OFF ", "", "ON ");
}
else if(temp <= 25 && hum < 80){
digitalWrite(POMPA, HIGH); // Pompa Menyala
Display_LCD("ON ", "", "OFF ");
}
else{
digitalWrite(KIPAS, LOW); // Kipas Mati
digitalWrite(POMPA, LOW); // Pompa Mati
Display_LCD("OFF ", "", "OFF ");
}
}
// Cetak Data di Serial Monitor
void Display_Serial_Monitor(){
Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(", Temperature: ");
Serial.print(temp);
Serial.print(", Illuminance: ");
Serial.println(lux);
}
// Cetak Data Sensor di LCD
void Display_LCD(String POMPADHT22, String POMPALDR, String FAN){
mylcd.setCursor(0,0);
mylcd.print("H:");
mylcd.print(hum,1);
mylcd.print("%");
mylcd.setCursor(13,0);
mylcd.print("POM:");
mylcd.print(POMPADHT22);
mylcd.setCursor(0,1);
mylcd.print("T:");
mylcd.print(temp,1);
mylcd.print((char)223);
mylcd.println("C");
mylcd.setCursor(13,1);
mylcd.print("FAN:");
mylcd.print(FAN);
mylcd.setCursor(0,2);
mylcd.print("L:");
mylcd.print(lux,1);
mylcd.println("lx");
mylcd.setCursor(13,2);
mylcd.print("POM:");
mylcd.print(POMPALDR);
}
// Method Loop
void loop()
{
Read_LDR_Sensor();
Read_DHT22_Sensor();
Display_Serial_Monitor();
delay(500);
}
// Nama Peserta Edspert.id : Devan Cakra Mudra Wijaya, S.Kom.