#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C modul LCD dan ukuran (16 kolom, 2 baris)
int pirSensor = 2; // Pin sensor PIR
int buzzerPin = 3; // Pin buzzer
int led1Pin = 4; // Pin LED 1
int led2Pin = 5; // Pin LED 2
int led3Pin = 6; // Pin LED 3
void setup() {
pinMode(pirSensor, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
Serial.begin(9600); // Mulai komunikasi serial dengan kecepatan 9600 baud
Serial.println("Sistem pendeteksi gerak");
pinMode(pirSensor, INPUT);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Reza Fahlevy");
}
void loop() {
int motion = digitalRead(pirSensor);
if (motion == HIGH) {
Serial.println("Ada Gerakan");
} else {
Serial.println("Non Gerakan");
}
// Tampilkan status pada LCD
lcd.setCursor(0, 1);
if (motion == HIGH) {
lcd.print("Ada Gerakan ");
digitalWrite(led1Pin, LOW); // Hidupkan LED 1 jika ada gerakan
digitalWrite(led2Pin, HIGH); // Hidupkan LED 2 jika ada gerakan
digitalWrite(led3Pin, HIGH); // Hidupkan LED 3 jika ada gerakan
tone(buzzerPin, 800); // Bunyikan buzzer dengan frekuensi 800 Hz (sirene)
delay(100); // Tunda untuk stabilitas tampilan
// Kedipkan LED 2 dan LED 3 bergantian selama 4 detik
for (int i = 0; i < 20; i++) { // 20 iterasi untuk 2.0 detik
digitalWrite(led2Pin, HIGH);
digitalWrite(led3Pin, LOW);
delay(100); // Tunda 100 ms untuk LED 2 menyala
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, HIGH);
delay(100); // Tunda 100 ms untuk LED 3 menyala
}
} else {
lcd.print("Non Gerakan ");
digitalWrite(led1Pin, HIGH); // Matikan LED 1 jika tidak ada gerakan
digitalWrite(led2Pin, LOW); // Matikan LED 2 jika tidak ada gerakan
digitalWrite(led3Pin, LOW); // Matikan LED 3 jika tidak ada gerakan
noTone(buzzerPin); // Matikan bunyi buzzer jika tidak ada gerakan
}
delay(500); // Tunda selama 500 ms untuk stabilitas tampilan
}