#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
// Definisikan pin sensor DHT dan tipenya
#define DHTPIN 2 // Pin digital 2 terhubung ke data sensor DHT
#define DHTTYPE DHT22 // Sesuaikan jika menggunakan DHT11
// Inisialisasi sensor DHT
DHT dht(DHTPIN, DHTTYPE);
// Inisialisasi LCD: atur alamat I2C (0x27 adalah yang paling umum), jumlah kolom (16), dan baris (2)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Memulai komunikasi serial untuk debugging (opsional, lihat di Serial Monitor Wokwi)
Serial.begin(9600);
Serial.println("Monitoring Suhu & Kelembapan!");
// Memulai LCD dan menyalakan backlight
lcd.init();
lcd.backlight();
// Memulai sensor DHT
dht.begin();
}
void loop() {
// Tunggu beberapa detik di antara pengukuran (DHT22 membutuhkan setidaknya 2 detik)
delay(2000);
// Membaca kelembapan dan suhu
float kelembapan = dht.readHumidity();
float suhu_c = dht.readTemperature();
// Memeriksa apakah pembacaan gagal
if (isnan(kelembapan) || isnan(suhu_c)) {
Serial.println("Gagal membaca dari sensor DHT!");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Error!");
return;
}
// Menampilkan data di Serial Monitor
Serial.print("Kelembapan: ");
Serial.print(kelembapan);
Serial.print(" %\t");
Serial.print("Suhu: ");
Serial.print(suhu_c);
Serial.println(" *C");
// Menampilkan data di LCD
lcd.clear(); // Bersihkan layar sebelum update
// Baris 1: Suhu
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu_c);
lcd.print(" C");
// Baris 2: Kelembapan
lcd.setCursor(0, 1);
lcd.print("Kelembapan: ");
lcd.print(kelembapan);
lcd.print(" %");
}