// Menggunakan library DHT dan LCD I2C
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
// Mendefinisikan pin dan tipe sensor DHT
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Mendefinisikan alamat dan ukuran LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Mendefinisikan pin untuk LED hijau dan merah
#define LED_GREEN 4
#define LED_RED 5
// Mendefinisikan pin untuk relay
#define RELAY 3
// Mendefinisikan variabel untuk menyimpan suhu dan kelembapan
float temp;
float humi;
void setup() {
// Menginisialisasi sensor DHT
dht.begin();
// Menginisialisasi LCD I2C
lcd.init();
lcd.backlight();
// Mengatur pin LED dan relay sebagai output
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_RED, OUTPUT);
pinMode(RELAY, OUTPUT);
// Menyalakan relay
digitalWrite(RELAY, HIGH);
}
void loop() {
// Membaca suhu dan kelembapan dari sensor DHT
temp = dht.readTemperature();
humi = dht.readHumidity();
// Menampilkan suhu dan kelembapan pada LCD I2C
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Kelembaban: ");
lcd.print(humi);
lcd.print("%");
// Mengatur LED sesuai dengan suhu
if (temp >= 30) {
// Menyalakan LED hijau dan mematikan LED merah
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_RED, LOW);
} else {
// Menyalakan LED merah dan mematikan LED hijau
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, LOW);
}
if (humi >= 50) {
//menyalakan relay untuk output kelembaban
digitalWrite(RELAY, HIGH);
} else {
digitalWrite(RELAY, LOW);
}
// Menunggu 2 detik sebelum membaca lagi
delay(2000);
}