#include <LiquidCrystal_I2C.h> // Library untuk LCD I2C
#include <DHT.h> // Library untuk sensor DHT22
// Konfigurasi sensor DHT22
#define DHTPIN 8 // Pin data sensor DHT22 terhubung ke pin 8 Arduino
#define DHTTYPE DHT22 // Jenis sensor DHT yang digunakan
// Inisialisasi objek sensor DHT
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi LCD I2C dan LED
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C: 0x27, ukuran 16x2
#define LED_PIN 7 // LED terhubung ke pin 7 Arduino
// Variabel untuk simulasi suhu
int suhu[] = {10, 20, 30}; // Array suhu yang berulang
int indexSuhu = 0; // Indeks untuk melacak suhu saat ini
void setup() {
// Inisialisasi LCD, DHT22, dan LED
Serial.begin(9600); // Serial monitor untuk debugging
lcd.begin(16, 2); // Mulai LCD 16x2
lcd.backlight(); // Nyalakan backlight LCD
dht.begin(); // Mulai sensor DHT22
pinMode(LED_PIN, OUTPUT); // Set pin 7 sebagai output (untuk LED)
// Tampilkan pesan awal di LCD
lcd.setCursor(0, 0);
lcd.print("Suhu & Lembab");
delay(2000); // Tunda 2 detik untuk tampilan awal
lcd.clear(); // Bersihkan LCD sebelum menampilkan data
}
void loop() {
// Ambil nilai suhu dari array secara berulang
float currentSuhu = suhu[indexSuhu];
float kelembaban = dht.readHumidity();
// Cek apakah pembacaan kelembaban berhasil
if (isnan(kelembaban)) {
Serial.println("Gagal membaca kelembaban!");
lcd.clear(); // Bersihkan layar LCD
lcd.setCursor(0, 0);
lcd.print("Sensor Error");
return; // Keluar dari loop jika pembacaan gagal
}
// Tampilkan suhu dan kelembaban di LCD
lcd.clear(); // Bersihkan LCD sebelum menampilkan data baru
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(currentSuhu);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Lembab: ");
lcd.print(kelembaban);
lcd.print(" %");
// Tampilkan data di Serial Monitor
Serial.print("Suhu: ");
Serial.print(currentSuhu);
Serial.println(" C");
Serial.print("Kelembaban: ");
Serial.print(kelembaban);
Serial.println(" %");
// Nyalakan LED jika suhu > 25°C
if (currentSuhu > 25) {
digitalWrite(LED_PIN, HIGH); // LED ON
Serial.println("LED ON - Suhu tinggi!");
} else {
digitalWrite(LED_PIN, LOW); // LED OFF
Serial.println("LED OFF - Suhu normal.");
}
// Pindah ke suhu berikutnya dalam array
indexSuhu = (indexSuhu + 1) % 3; // Berulang antara 0, 1, 2
delay(2000); // Tunggu 2 detik sebelum loop berikutnya
}