#include <DHTesp.h>
#include <LiquidCrystal_I2C.h>
const int DHT_PIN = 15; // Pin tempat sensor DHT terhubung
const int BUZZER = 18; // speker, menyalakan bunyi alarm
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD 16x2, ubah sesuai kebutuhan
void setup() {
Serial.begin(115200); // Mulai komunikasi serial dengan baud rate 115200
pinMode(BUZZER, OUTPUT); // Mengatur pin buzzer sebagai output
pinMode(5,OUTPUT); // Mengatur pin 5 sebagai output (digunakan untuk mengendalikan LED merah)
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // Inisialisasi sensor DHT dengan tipe DHT22
lcd.init(); // Menginisialisasi LCD
lcd.backlight();// Nyalakan backlight LCD
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity(); // Membaca data suhu dan kelembaban dari sensor DHT
Serial.println("Temp: " + String(data.temperature, 2) + "°C");// Cetak suhu ke Serial Monitor
Serial.println("Humidity: " + String(data.humidity, 1) + "%"); // Cetak kelembaban ke Serial Monitor
Serial.println("---");
digitalWrite(BUZZER,HIGH) ; // Nyalakan buzzer
delay(1000); // Tunda selama 1 detik
lcd.setCursor(0, 0); // Posisi kursor di baris 1, kolom 1
lcd.print("Temp: "); // Cetak teks "Temp: " di LCD
delay(1000); // Tunda selama 1 detik
lcd.clear(); // Hapus layar LCD
lcd.setCursor(0, 1); // Posisi kursor di baris 2, kolom 1
delay(1000); // Tunda selama 1 detik
lcd.clear(); // Hapus layar LCD
if (data.temperature < 20){ // Jika suhu kurang dari 20 derajat Celsius
lcd.print("AMAN"); // Cetak "AMAN" di LCD
digitalWrite(5, LOW); // Matikan LED merah
noTone(BUZZER); // Matikan bunyi buzzer
}
else if (data.temperature > 40){ // Jika suhu naik di atas 40 derajat Celsius
lcd.print("BAHAYA API!!!"); // Cetak "BAHAYA API!!!" di LCD
digitalWrite(5, HIGH); // Nyalakan LED merah
tone(BUZZER,165); // Nyalakan bunyi buzzer dengan frekuensi 165 Hz
}
else if (data.temperature > 20 < 40){
lcd.print("TIDAK ADA API"); // Cetak "TIDAK ADA API" di LCD
digitalWrite(5, LOW); // Matikan LED merah
noTone(BUZZER); // Matikan bunyi buzzer
}
}