#include <Keypad.h>
#define PASS_LENGTH 8
char password[PASS_LENGTH] = {'1', '2', '3', '4', '5', '6', '7', '8'};
char passwordInput[PASS_LENGTH];
bool match;
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
#define buzzer_pin 10
void setup()
{
Serial.begin(9600);
pinMode(buzzer_pin, OUTPUT);
}
void loop()
{
char key = keypad.getKey();
if (key != NO_KEY)
{
for (int i = 0; i < PASS_LENGTH - 1; i++)
{
passwordInput[i] = passwordInput[i + 1];
}
passwordInput[PASS_LENGTH - 1] = key;
for (int i = 0; i < PASS_LENGTH; i++)
{
Serial.print(passwordInput[i]);
}
Serial.println();
match = true;
for (int i = 0; i < PASS_LENGTH - 1; i++)
{
if (passwordInput[i] != password[i])
{
match = false;
break;
}
}
if (match)
{
Serial.println("Password matched!");
for(int i = 0; i < 3;i++)
{
beep(50);
delay(200);
beep(0);
delay(200);
}
}
}
}
void beep(unsigned char delayms)
{
analogWrite(buzzer_pin, 200);
delay(delayms);
analogWrite(buzzer_pin, 0);
delay(delayms);
}