#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
// Konfigurasi LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ganti 0x27 dengan alamat I2C LCD Anda jika berbeda
// Konfigurasi Keypad
const byte ROWS = 4; // Jumlah baris
const byte COLS = 4; // Jumlah kolom
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // Pin baris keypad
byte colPins[COLS] = {A0, A1, A2, A3}; // Pin kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Konfigurasi PIR Sensor, Buzzer, dan LED
const int pirPin = 10; // Pin PIR Sensor
const int buzzerPin = 11; // Pin Buzzer
const int ledPin = 13; // Pin LED
bool motionSystemOn = false; // Status sistem gerakan
int motionCount = 0; // Jumlah gerakan terdeteksi
void setup() {
pinMode(pirPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
lcd.init(); // Inisialisasi LCD I2C
lcd.backlight();
lcd.clear();
lcd.print("Press A to Start");
}
void loop() {
char key = keypad.getKey();
// Memeriksa tombol pada keypad
if (key == 'A') {
motionSystemOn = true;
lcd.clear();
lcd.print("Motion System On");
digitalWrite(ledPin, HIGH);
delay(2000);
lcd.clear();
} else if (key == 'B') {
motionSystemOn = false;
lcd.clear();
lcd.print("Motion System Off");
digitalWrite(ledPin, LOW);
delay(2000);
lcd.clear();
}
// Sistem gerakan aktif
if (motionSystemOn) {
int pirState = digitalRead(pirPin);
if (pirState == HIGH) {
// Jika ada pergerakan
digitalWrite(buzzerPin, HIGH);
digitalWrite(ledPin, LOW);
motionCount++;
lcd.setCursor(0, 0);
lcd.print("Motion Detected ");
lcd.setCursor(0, 1);
lcd.print("Count: ");
lcd.print(motionCount);
delay(1000); // Delay untuk menghindari pembacaan berulang
} else {
// Jika tidak ada pergerakan
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, HIGH);
lcd.setCursor(0, 0);
lcd.print("No Motion ");
lcd.setCursor(0, 1);
lcd.print("Count: ");
lcd.print(motionCount);
}
} else {
// Sistem gerakan mati
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, LOW);
lcd.clear();
lcd.print("System Disabled");
}
delay(200); // Debounce delay
}