#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Mendefinisikan pin untuk DHT22, modul relay, dan LED
#define DHTPIN 2 // Pin yang terhubung ke data sensor DHT22
#define DHTTYPE DHT22 // Tipe DHT yang digunakan
#define RELAY_PIN 7 // Pin untuk modul relay
#define LED_RED_PIN 8 // Pin untuk LED Merah
#define LED_BLUE_PIN 9 // Pin untuk LED Biru
// Membuat objek untuk sensor DHT dan LCD
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C untuk LCD
void setup() {
// Mengatur mode pin
pinMode(RELAY_PIN, OUTPUT); // Menetapkan pin relay sebagai output
pinMode(LED_RED_PIN, OUTPUT); // Menetapkan pin LED Merah sebagai output
pinMode(LED_BLUE_PIN, OUTPUT); // Menetapkan pin LED Biru sebagai output
lcd.begin(16, 2); // Memulai LCD dengan ukuran 16x2
lcd.backlight(); // Menghidupkan lampu latar LCD
dht.begin(); // Memulai sensor DHT
// Menampilkan pesan awal di LCD
lcd.setCursor(0, 0);
lcd.print("Monitoring Suhu");
delay(2000); // Menunggu selama 2 detik
}
void loop() {
// Membaca suhu dan kelembapan dari sensor DHT
float suhu = dht.readTemperature();
float kelembapan = dht.readHumidity();
// Memeriksa apakah pembacaan sensor valid
if (isnan(suhu) || isnan(kelembapan)) {
lcd.setCursor(0, 0);
lcd.print("Error DHT22 "); // Menampilkan pesan error jika pembacaan gagal
return;
}
// Membersihkan LCD dan menampilkan data suhu dan kelembapan
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Kelembapan: ");
lcd.print(kelembapan);
lcd.print("%");
// Menghidupkan LED Merah dan relay jika suhu lebih dari 40 derajat
if (suhu > 40) {
digitalWrite(LED_RED_PIN, HIGH); // Menghidupkan LED Merah
digitalWrite(RELAY_PIN, HIGH); // Menghidupkan relay
} else {
digitalWrite(LED_RED_PIN, LOW); // Mematikan LED Merah
digitalWrite(RELAY_PIN, LOW); // Mematikan relay
}
// Menghidupkan LED Biru jika kelembapan lebih dari 60%
if (kelembapan > 60) {
digitalWrite(LED_BLUE_PIN, HIGH); // Menghidupkan LED Biru
} else {
digitalWrite(LED_BLUE_PIN, LOW); // Mematikan LED Biru
}
delay(2000); // Menunggu selama 2 detik sebelum pembacaan berikutnya
}