#include <Keypad.h>
const int pirPin = 2; // Pin sensor PIR
const int buzzerPin = 12; // Pin buzzer
const int ledPin = 13; // Pin LED indikator
bool alarmActive = true; // Alarm awalnya aktif
// Set konfigurasi keypad
const byte ROWS = 4; // Jumlah baris pada keypad 4x4
const byte COLS = 4; // Jumlah kolom pada keypad 4x4
char keys[ROWS][COLS] = { // Konfigurasi tombol keypad
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {3, 4, 5, 6}; // Pin baris keypad
byte colPins[COLS] = {7, 8, 9, 10}; // Pin kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
String code = "1205"; // Kode rahasia
String inputCode = ""; // Input kode pengguna
void setup() {
pinMode(pirPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
digitalWrite(ledPin, LOW); // Matikan LED di awal
}
void loop() {
// Baca input keypad
char key = keypad.getKey();
if (key) {
inputCode += key;
Serial.println(key);
if (inputCode.length() == 4) {
if (inputCode == code) {
alarmActive = false; // Nonaktifkan alarm jika kode benar
digitalWrite(ledPin, LOW); // Matikan LED indikator
noTone(buzzerPin); // Matikan buzzer
Serial.println("Alarm deactivated.");
} else {
Serial.println("Wrong code! Alarm still active.");
// Jika kode salah, aktifkan alarm, buzzer, dan LED
alarmActive = true; // Pastikan alarm tetap aktif
digitalWrite(ledPin, HIGH); // Nyalakan LED
tone(buzzerPin, 1000); // Aktifkan buzzer
delay(2000); // Delay untuk memberi waktu sebelum mencoba lagi
}
inputCode = ""; // Reset input kode setelah 4 digit
}
}
// Periksa sensor PIR jika alarm aktif dan ada pergerakan
if (alarmActive) {
int pirState = digitalRead(pirPin);
if (pirState == HIGH) { // Jika gerakan terdeteksi
digitalWrite(ledPin, HIGH); // Nyalakan LED
tone(buzzerPin, 1000); // Aktifkan buzzer
Serial.println("Intruder detected!");
} else {
// Tidak ada gerakan, matikan LED dan buzzer
digitalWrite(ledPin, LOW); // Matikan LED jika tidak ada gerakan
noTone(buzzerPin); // Matikan buzzer
}
}
}