#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 15 // Pin untuk DHT22
#define DHTTYPE DHT22 // Tipe sensor DHT22
#define RED_LED 19 // Pin untuk LED Merah
#define PURPLE_LED 18 // Pin untuk LED Ungu
#define BLUE_LED 33 // Pin untuk LED Biru
#define YELLOW_LED 12 // Pin untuk LED Kuning
#define BUTTON_1 32 // Pin untuk Tombol 1
#define BUTTON_2 27 // Pin untuk Tombol 2
// Inisialisasi objek LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ganti 0x27 jika alamat berbeda
DHT dht(DHTPIN, DHTTYPE); // Inisialisasi sensor DHT22
void setup() {
Serial.begin(115200); // Mulai komunikasi serial
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Hidupkan backlight LCD
dht.begin(); // Mulai sensor DHT
// Inisialisasi pin LED sebagai output
pinMode(RED_LED, OUTPUT);
pinMode(PURPLE_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
// Inisialisasi tombol sebagai input dengan pull-up
pinMode(BUTTON_1, INPUT_PULLUP);
pinMode(BUTTON_2, INPUT_PULLUP);
// Tampilkan pesan awal di LCD
lcd.setCursor(2, 0);
lcd.print("HALO TIARA!!");
delay(2000);
}
void loop() {
Serial.println("Mengambil data dari DHT22..."); // Debugging line
// Membaca kelembapan dan suhu dari sensor
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Cek apakah pembacaan gagal dan keluar jika gagal
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Gagal membaca dari sensor DHT!");
return;
}
// Menampilkan data di Serial Monitor untuk debugging
Serial.print("Kelembaban: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.println(" *C");
// Menampilkan data pada LCD
lcd.clear();
lcd.setCursor(0, 0); // Set cursor ke baris pertama
lcd.print("Kelembaban: ");
lcd.print(humidity);
lcd.print(" %");
lcd.setCursor(0, 1); // Set cursor ke baris kedua
lcd.print("Suhu: ");
lcd.print(temperature);
lcd.print(" C");
// Kontrol LED berdasarkan suhu
if (temperature > 30) {
digitalWrite(RED_LED, HIGH); // Hidupkan LED Merah jika suhu > 30°C
digitalWrite(PURPLE_LED, LOW); // Matikan LED Ungu
} else {
digitalWrite(RED_LED, LOW); // Matikan LED Merah
digitalWrite(PURPLE_LED, HIGH); // Hidupkan LED Ungu jika suhu <= 30°C
}
// Kontrol LED berdasarkan tombol
if (digitalRead(BUTTON_1) == LOW) { // Tombol ditekan
digitalWrite(BLUE_LED, HIGH); // Nyalakan LED Biru
} else {
digitalWrite(BLUE_LED, LOW); // Matikan LED Biru
}
// Kontrol LED Kuning berdasarkan Tombol 2
if (digitalRead(BUTTON_2) == LOW) { // Tombol ditekan
digitalWrite(YELLOW_LED, HIGH); // Nyalakan LED Kuning
} else {
digitalWrite(YELLOW_LED, LOW); // Matikan LED Kuning
}
// Tunggu beberapa detik sebelum membaca data lagi
delay(2000);
}