#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h> /
// Inisialisasi DHT22
#define DHTPIN 15 // Pin data DHT22 terhubung ke GPIO 15
#define DHTTYPE DHT22 // Jenis sensor DHT22
DHT dht(DHTPIN, DHTTYPE);
// Inisialisasi LCD I2C dengan alamat 0x27 atau 0x3F
LiquidCrystal_I2C lcd(0x27, 16, 2); // Coba ubah ke 0x3F jika tidak muncul teks
void setup() {
// Inisialisasi Serial Monitor
Serial.begin(115200);
Serial.println(F("DHT22 dan LCD Example"));
// Inisialisasi LCD
lcd.init(); // Pastikan LCD terinisialisasi dengan benar
lcd.backlight(); // Aktifkan backlight LCD
lcd.setCursor(0, 0);
lcd.print("Initializing...");
// Inisialisasi sensor DHT22
dht.begin();
delay(2000); // Tunggu agar sensor stabil
}
void loop() {
// Membaca suhu dan kelembaban
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Periksa apakah pembacaan berhasil
if (isnan(humidity) || isnan(temperature)) {
Serial.println(F("Gagal membaca data DHT!"));
lcd.setCursor(0, 0);
lcd.print("Sensor Error");
return; // Keluar dari loop jika pembacaan gagal
}
// Tampilkan hasil di Serial Monitor
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("% Temperature: "));
Serial.print(temperature);
Serial.println(F("°C"));
// Tampilkan hasil di LCD
lcd.clear(); // Bersihkan layar sebelum menampilkan data baru
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Hum: ");
lcd.print(humidity);
lcd.print(" %");
delay(2000); // Tunggu 2 detik sebelum pembacaan selanjutnya
}