#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2 // Pin data DHT22 terhubung ke pin 2 pada Arduino
#define DHTTYPE DHT22 // Jenis sensor DHT22
DHT dht(DHTPIN, DHTTYPE); // Membuat objek DHT dengan pin dan jenis yang telah ditentukan
#define RELAY_PIN 9 // Pin relay terhubung ke pin 9 pada Arduino
LiquidCrystal_I2C lcd(0x27, 16, 2); // Membuat objek LCD 2x16 dengan alamat I2C 0x27
int powerPin = 3; // Pin yang digunakan untuk menghidupkan sensor DHT22 dan Relay
void setup() {
lcd.init(); // Menginisialisasi LCD
lcd.backlight(); // Mengaktifkan pencahayaan belakang LCD
pinMode(powerPin, OUTPUT); // Menjadikan pin powerPin sebagai output
digitalWrite(powerPin, LOW); // Mengatur powerPin ke LOW (mati) awalnya
pinMode(RELAY_PIN, OUTPUT); // Menjadikan pin relay sebagai output
digitalWrite(RELAY_PIN, LOW); // Mengatur relay ke LOW (mati) awalnya
Serial.begin(9600); // Inisialisasi komunikasi serial dengan kecepatan 9600 bps
dht.begin(); // Inisialisasi sensor DHT
lcd.print("Pendeteksi Suhu");
lcd.setCursor(0, 1);
lcd.print("Siap...");
delay(2000);
}
void loop() {
digitalWrite(powerPin, HIGH); // Mengaktifkan sensor DHT22 dan Relay
// Membaca kelembaban dan suhu dari sensor DHT22
float kelembaban = dht.readHumidity();
float suhu = dht.readTemperature();
// Menampilkan data kelembaban dan suhu di Serial Monitor
Serial.print("Kelembaban: ");
Serial.print(kelembaban);
Serial.print("%"); // Menambahkan tanda persen untuk kelembaban
Serial.print(" Suhu: ");
Serial.print(suhu);
Serial.print("°C"); // Menambahkan tanda derajat Celsius untuk suhu
Serial.println();
// Menampilkan data kelembaban dan suhu di LCD
lcd.clear(); // Menghapus tampilan sebelumnya di LCD
lcd.setCursor(0, 0);
lcd.print("Kelembaban: ");
lcd.setCursor(13, 0); // Sesuaikan posisi cursor dengan teks
lcd.print(kelembaban);
lcd.print("%"); // Menambahkan tanda persen untuk kelembaban
lcd.setCursor(0, 1);
lcd.print("Suhu: ");
lcd.setCursor(7, 1); // Sesuaikan posisi cursor dengan teks
lcd.print(suhu);
lcd.print(" C"); // Menambahkan tanda derajat Celsius untuk suhu
// Kontrol Relay berdasarkan suhu
if (suhu > 25.0) {
digitalWrite(RELAY_PIN, HIGH); // Nyalakan relay jika suhu di atas 25°C
} else {
digitalWrite(RELAY_PIN, LOW); // Matikan relay jika suhu di bawah atau sama dengan 25°C
}
delay(1000); // Membaca data setiap 1 detik
}