#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
// Konfigurasi pin dan tipe sensor DHT
#define DHTPIN 2 // Pin untuk DHT22
#define DHTTYPE DHT22 // Tipe sensor DHT22
#define LEDPIN 4
DHT dht(DHTPIN, DHTTYPE);
// Inisialisasi LCD I2C dengan alamat 0x27 (alamat default)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Membuat ikon kelelembaban //
// byte suhu[8] =
// {
// B00100,
// B01010,
// B01010,
// B01110,
// B11111,
// B11111,
// B01110,
// B00000
// };
// // Membuat ikon kelelembaban //
// byte kelembaban[8] =
// {
// B00100,
// B01010,
// B01010,
// B10001,
// B10001,
// B10001,
// B01110,
// B00000
// };
void setup() {
// Memulai komunikasi serial untuk debugging (opsional)
Serial.begin(9600);
// Memulai DHT dan LCD
pinMode(LEDPIN, OUTPUT);
dht.begin();
lcd.begin(16, 2);
lcd.backlight(); // Mengaktifkan lampu latar LCD
// lcd.createChar(1, kelembaban);
// lcd.createChar(2, suhu);
// Menampilkan pesan awal pada LCD
lcd.setCursor(0, 0);
lcd.print("Mengukur...");
}
void loop() {
// Membaca suhu dan kelembaban dari DHT22
float kelembaban = dht.readHumidity();
float suhu = dht.readTemperature();
// Mengecek apakah pembacaan gagal
if (isnan(kelembaban) || isnan(suhu)) {
digitalWrite(LEDPIN, LOW);
lcd.setCursor(0, 0);
lcd.print("Error membaca");
lcd.setCursor(0, 1);
lcd.print("sensor DHT22!");
delay(2000);
return;
}
// Menampilkan suhu dan kelembaban pada LCD
digitalWrite(LEDPIN, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Kelembaban: ");
lcd.print(kelembaban);
lcd.print(" %");
// Menunggu sebelum pembaruan berikutnya
delay(2000);
}