#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // GANTI 0x3F Ke 0x27 kalau LCD ga muncul
#include <DHT.h>
//inisialisasi pin DHT22
DHT dht(10, DHT22); //Pin, Jenis DHT
int powerPin = 3; // untuk pengganti VCC/5VOLT
// Mengatur pin untuk relay
#define RELAY_PIN 9
void setup() {
//Inilisialisasi LCD
lcd.init();
// Menampilkan cahaya LCD
lcd.backlight();
// Inisialisasi relay
pinMode(powerPin, OUTPUT); // default bernilai LOW
digitalWrite(powerPin, LOW);
Serial.begin(9600);
dht.begin();
}
void loop() {
digitalWrite(powerPin, HIGH);
// Membaca data dari sensor DHT
float kelembaban = dht.readHumidity();
float suhu = dht.readTemperature();
// Menampilkan data di Serial Monitor
Serial.print("kelembaban: ");
Serial.print(kelembaban);
Serial.print(" % ");
Serial.print("suhu: ");
Serial.print(suhu);
Serial.println(" C ");
// Menampilkan data di LCD
lcd.setCursor(0,0);
lcd.print("Kelembaban: ");
lcd.print(kelembaban);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print((char)223); // simbol derajat
lcd.print("C");
// Mengontrol relay berdasarkan suhu dan kelembaban
if (kelembaban >= 30.0 && kelembaban <= 69.0 || suhu >= 30.0 && suhu <= 64.0){
digitalWrite(RELAY_PIN, HIGH); // relay ON
}else if(kelembaban <= 29.0 && suhu <= 29.0){
digitalWrite(RELAY_PIN, LOW); // relay OFF
}
else if(suhu >= 65.0 || kelembaban >= 70.0){
digitalWrite(RELAY_PIN, HIGH);
delay(200);
digitalWrite(RELAY_PIN, LOW);
delay(100);
}else if(suhu <= 29.0 || kelembaban <= 29.0){
digitalWrite(RELAY_PIN, LOW); // relay OFF
}else{
digitalWrite(RELAY_PIN, LOW); //relay OFF
}
delay(1000); // tunggu selama dua detik
}