#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2 // Pin digital yang terhubung ke sensor DHT11/DHT22
#define DHTTYPE DHT22 // Ganti dengan DHT22 jika menggunakan sensor DHT22
#define BUZZERPIN 9 // Pin digital yang terhubung ke buzzer
#define PIRPIN 7 // Pin digital yang terhubung ke sensor PIR
#define LEDPIN 13 // Pin digital yang terhubung ke LED
#define LCD_ADDRESS 0x27 // Alamat I2C LCD 16x4
LiquidCrystal_I2C lcd(LCD_ADDRESS, 16, 4); // Inisialisasi library LCD
DHT dht(DHTPIN, DHTTYPE); // Inisialisasi library DHT
void setup() {
Serial.begin(9600); // Inisialisasi komunikasi serial
dht.begin(); // Inisialisasi sensor DHT
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
lcd.setCursor(2, 0); // Pindahkan kursor ke baris 2, kolom 0
lcd.print("Andra Matarisman"); // Tampilkan nama author
pinMode(BUZZERPIN, OUTPUT); // Inisialisasi pin buzzer sebagai output
pinMode(PIRPIN, INPUT); // Inisialisasi pin PIR sebagai input
pinMode(LEDPIN, OUTPUT); // Inisialisasi pin LED sebagai output
}
void loop() {
// Baca data suhu dan kelembaban dari sensor DHT
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Baca status PIR
bool motionDetected = digitalRead(PIRPIN);
// Reset buzzer
digitalWrite(BUZZERPIN, LOW);
// Periksa kondisi suhu
if (temperature < 16 || temperature > 24) {
// Nyalakan buzzer dengan volume setengah (PWM)
analogWrite(BUZZERPIN, 128);
}
// Periksa kondisi kelembaban
if (humidity < 45 || humidity > 65) {
// Nyalakan buzzer dengan volume setengah (PWM)
analogWrite(BUZZERPIN, 128);
}
// Periksa gerakan
if (motionDetected) {
// Nyalakan LED
digitalWrite(LEDPIN, HIGH);
// Tampilkan pesan pada LCD
lcd.setCursor(0, 3);
lcd.print("Gerakan Terdeteksi");
} else {
// Matikan LED
digitalWrite(LEDPIN, LOW);
// Hapus pesan pada LCD
lcd.setCursor(0, 3);
lcd.print(" "); // Menghapus pesan dengan spasi
}
// Tampilkan data suhu dan kelembaban pada LCD
lcd.setCursor(0, 1); // Pindahkan kursor ke baris 1, kolom 0
lcd.print("Suhu: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 2); // Pindahkan kursor ke baris 2, kolom 0
lcd.print("Kelembaban: ");
lcd.print(humidity);
lcd.print("%");
delay(2000); // Tunggu 2 detik
}