#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Setup LCD I2C 16x2, alamat default 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Definisi pin sensor dan LED
#define DHTPIN 4 // Pin data sensor DHT22
#define DHTTYPE DHT22 // Tipe sensor DHT
#define SENSOR_PIN 2 // Pin input sensor digital
#define LED_PIN 3 // Pin output LED
DHT dht(DHTPIN, DHTTYPE);
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600);
dht.begin();
pinMode(SENSOR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Inisialisasi...");
delay(1000);
}
void loop() {
// Membaca suhu dan kelembapan
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Membaca status sensor digital
int sensorState = digitalRead(SENSOR_PIN);
// Menyalakan LED jika sensor HIGH, matikan jika LOW
digitalWrite(LED_PIN, sensorState);
// Menampilkan ke LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Suhu:");
if (isnan(temperature)) {
lcd.print("Err");
} else {
lcd.print(temperature);
lcd.print("C");
}
lcd.setCursor(0,1);
lcd.print("Hum:");
if (isnan(humidity)) {
lcd.print("Err");
} else {
lcd.print(humidity);
lcd.print("% ");
}
lcd.print(sensorState == HIGH ? "LED ON" : "LED OFF");
// Tampilkan juga di serial monitor
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print(" C, Hum: ");
Serial.print(humidity);
Serial.print("%, Sensor: ");
Serial.println(sensorState == HIGH ? "ON" : "OFF");
delay(2000); // Delay 2 detik sebelum pembacaan berikutnya
}