#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Konfigurasi DHT22
#define DHTPIN 4 // Gunakan GPIO4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Konfigurasi LED
#define LED_BIRU 18 // NIEBIESKA
#define LED_MERAH 19 // CZERWONA
void setup() {
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(LED_BIRU, OUTPUT);
pinMode(LED_MERAH, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("Mengukur...");
delay(1000); // Tunggu sensor siap
}
void loop() {
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
if (isnan(suhu) || isnan(kelembaban)) {
Serial.println("Gagal membaca DHT22! Periksa kabel.");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Error!");
lcd.setCursor(0, 1);
lcd.print("Periksa kabel!");
digitalWrite(LED_BIRU, LOW);
digitalWrite(LED_MERAH, LOW);
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu");
lcd.print(suhu);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humid: ");
lcd.print(kelembaban);
lcd.print("%");
// LED niebieska reaguje na temperaturę
if (suhu > 30.0) {
digitalWrite(LED_BIRU, HIGH);
} else {
digitalWrite(LED_BIRU, LOW);
}
// LED czerwona reaguje na wilgotność
if (kelembaban > 70.0) {
digitalWrite(LED_MERAH, HIGH);
} else {
digitalWrite(LED_MERAH, LOW);
}
}
delay(2000); // Update setiap 2 detik
}