#include <Keypad.h>
const int passwordLength = 4; // Panjang password
const long int correctPassword = 1234; // Password yang benar
long int enteredPassword = 0; // Password yang telah dimasukkan
bool isLocked = true; // Menyimpan status terkunci atau tidak
unsigned long unlockTime = 0; // Waktu terakhir kotak aman terbuka
const byte KEYPAD_ROWS = 4;
const byte KEYPAD_COLS = 4;
byte rowPins[KEYPAD_ROWS] = {9, 8, 7, 6};
byte colPins[KEYPAD_COLS] = {5, 4, 3, 2};
char keys[KEYPAD_ROWS][KEYPAD_COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS);
void setup() {
Serial.begin(9600);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
digitalWrite(11, isLocked ? HIGH : LOW); // Nyalakan LED pada Pin 11 jika terkunci
}
void loop() {
char key = keypad.getKey();
unsigned long currentTime = millis();
if (key) {
if (key >= '0' && key <= '9') {
int digit = key - '0'; // Konversi karakter ke angka
enteredPassword = enteredPassword * 10 + digit; // Tambahkan digit ke password yang telah dimasukkan
Serial.println(enteredPassword); // Tampilkan password yang telah dimasukkan
if (enteredPassword == correctPassword) { // Cek apakah password yang dimasukkan sudah benar
if (isLocked) {
digitalWrite(10, HIGH); // Nyalakan LED pada Pin 10 jika masih terkunci
digitalWrite(11, LOW); // Matikan LED pada Pin 11
isLocked = false; // Ganti status menjadi tidak terkunci
unlockTime = currentTime; // Catat waktu terbuka
}
enteredPassword = 0; // Reset password yang telah dimasukkan
} else if (enteredPassword > 9999) { // Jika password yang dimasukkan terlalu panjang
enteredPassword = 0; // Reset password yang telah dimasukkan
if (isLocked) {
digitalWrite(10, LOW); // Matikan LED pada Pin 10 jika masih terkunci
}
}
}
}
// Cek apakah sudah lebih dari 5 detik sejak terbuka untuk mengunci kembali
if (!isLocked && currentTime - unlockTime > 5000) {
digitalWrite(10, LOW); // Matikan LED pada Pin 10 untuk mengunci kembali
digitalWrite(11, HIGH); // Nyalakan LED pada Pin 11
isLocked = true; // Ganti status menjadi terkunci
}
}