#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);
int ledPins[] = {3, 4, 5, 6, 7}; // Pin-pin digital untuk LED
int numLeds = 5;
void setup() {
Serial.begin(9600); // Memulai komunikasi serial
dht.begin(); // Inisialisasi sensor DHT22
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.backlight(); // Menyalakan backlight LCD
lcd.print("Suhu & Kelembapan");
delay(2000);
lcd.clear();
// Mengatur semua pin LED sebagai OUTPUT
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
delay(1000); // Delay 1 detik sebelum pembacaan
// 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!");
delay(2000);
return;
}
// Menampilkan hasil di Serial Monitor
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print(" °C\t");
Serial.print("Kelembapan: ");
Serial.print(humidity);
Serial.println(" %");
// Menampilkan hasil di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(temperature, 1);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Kelembapan: ");
lcd.print(humidity, 1);
lcd.print("%");
// LED berjalan dari kiri ke kanan
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
delay(200);
digitalWrite(ledPins[i], LOW);
}
delay(500); // jeda sebelum arah balik
// LED berjalan dari kanan ke kiri
for (int i = numLeds - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(200);
digitalWrite(ledPins[i], LOW);
}
delay(500); // jeda sebelum pengulangan loop
}