#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Konfigurasi Sensor DHT22
#define DHTPIN 2 // Pin data DHT22 dihubungkan ke pin 2
#define DHTTYPE DHT22 // Tipe sensor DHT22
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi LCD I2C
// Alamat I2C umumnya 0x27 atau 0x3F, ukuran 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan lampu latar LCD
lcd.setCursor(0, 0);
lcd.print("Temp & Humidity");
lcd.setCursor(0, 1);
lcd.print(" Monitoring ");
delay(2000); // Tampil pesan awal selama 2 detik
lcd.clear();
}
void loop() {
// Tunggu beberapa detik di antara pembacaan (jeda wajib untuk DHT)
delay(2000);
// Membaca kelembaban (Humidity)
float h = dht.readHumidity();
// Membaca suhu dalam Celcius (default)
float t = dht.readTemperature();
// Cek jika pembacaan gagal dan keluar lebih awal (untuk mencoba kembali)
if (isnan(h) || isnan(t)) {
lcd.setCursor(0, 0);
lcd.print("Gagal membaca ");
lcd.setCursor(0, 1);
lcd.print("sensor DHT22 ");
return;
}
// Tampilkan data ke Serial Monitor
Serial.print("Temp: ");
Serial.print(t);
Serial.print(" *C\t");
Serial.print("Humidity: ");
Serial.print(h);
Serial.println(" %");
// Tampilkan data ke LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(t, 1); // Tampilkan 1 angka di belakang koma
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Hum: ");
lcd.print(h, 1);
lcd.print(" %");
}