#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2 // Pin data sensor DHT11 terhubung ke pin 2 pada Arduino
#define DHTTYPE DHT22 // Jenis sensor DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD 0x27, 16x2 karakter
void setup() {
//
dht.begin();
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan latar belakang LCD
}
void loop() {
delay(2000); // Tunggu 2 detik antara pembacaan
float temperature = dht.readTemperature();
float kelembaban = dht.readHumidity();
// Periksa apakah pembacaan sukses
if (isnan(temperature)) {
Serial.println("Gagal membaca sensor DHT22!");
lcd.setCursor(0, 0);
lcd.print("Error");
return;
}
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Termometer");
lcd.setCursor(4,1);
lcd.print("Ruangan");
delay(5000); // Transisi tampilan akan berpindah setiap 5 detik
// satuan milidetik Jika dikonversi (1000 Milidetik = 1 Detik)
// // Menampilkan suhu di LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Suhu: "); // menampilkan informasi static berdasarkan keterangan ditulis
lcd.print(temperature,1);
lcd.print((char)223);
lcd.print("C"); // satuan celcius
// Menampilkan informasi kondisi Ruangan berdasarkan suhu di LCD
lcd.setCursor(0,1);
if (temperature < 21) {
lcd.print("Dingin");
} else if (temperature >= 21 && temperature <= 24) {
lcd.print("Nyaman");
} else if (temperature >= 25 && temperature < 27) {
lcd.print("Sebagian Nyaman");
} else {
lcd.print("Tidak Nyaman");
}
delay(5000);
// Menampilkan Kelembaban di LCD berdasarkan rentang Persentase
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Lembab: ");
lcd.print(kelembaban,1);
lcd.print("% ");
// Menampilkan informasi kondisi Ruangan berdasarkan prosentase kelembaban di LCD
lcd.setCursor(0,1);
if (kelembaban < 20) {
lcd.print("Sangat Kering");
} else if (kelembaban >= 20 && kelembaban < 40) {
lcd.print("Ruangan Kering");
} else if (kelembaban >= 40 && kelembaban < 60) {
lcd.print("Ruangan Nyaman");
} else {
lcd.print("Ruangan Lembab");
}
delay(5000);
}