#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Include the LiquidCrystal I2C library
#define DHTPIN 2 // Pin yang terhubung dengan Data DHT22
#define DHTTYPE DHT22 // Menentukan tipe sensor DHT22
// Inisialisasi objek LCD I2C (alamat 0x27, 16 kolom, 2 baris)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Membuat objek DHT
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600); // Memulai komunikasi serial
dht.begin(); // Inisialisasi sensor DHT22
// Inisialisasi LCD
lcd.begin(16, 2); // Menentukan ukuran LCD (16 kolom x 2 baris)
lcd.print("Suhu & Kelembapan");
delay(2000); // Menunggu 2 detik
lcd.clear(); // Bersihkan layar LCD
}
void loop() {
delay(1000); // Delay 1 detik untuk pembacaan berikutnya
// Membaca suhu dan kelembapan
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Mengecek apakah pembacaan gagal
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Gagal membaca sensor DHT!");
lcd.clear();
lcd.print("Gagal membaca");
lcd.setCursor(0, 1);
lcd.print("sensor DHT!");
return;
}
// Menampilkan hasil pembacaan suhu dan kelembapan di Serial Monitor
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print(" °C\t");
Serial.print("Kelembapan: ");
Serial.print(humidity);
Serial.println(" %");
// Menampilkan hasil pembacaan suhu dan kelembapan di LCD
lcd.clear(); // Bersihkan layar LCD
lcd.setCursor(0, 0); // Set posisi pada baris pertama
lcd.print("Suhu: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1); // Set posisi pada baris kedua
lcd.print("Kelembapan: ");
lcd.print(humidity);
lcd.print("%");
}