#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 4;
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};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
int password[4];
int count = 0;
int redLED = 12;
int greenLED = 13;
int buzzer = 11;
bool setPassword() {
Serial.println("Введіть пароль:");
String inputPassword = "";
while (inputPassword.length() < 4) {
char key = keypad.getKey();
if (key != NO_KEY && key != '#') {
inputPassword += key;
digitalWrite(greenLED, HIGH);
delay(100);
digitalWrite(greenLED, LOW);
}
}
for (int i = 0; i < 4; i++) {
password[i] = inputPassword.charAt(i) - '0';
}
Serial.println("Пароль встановлений");
return true;
}
void setup()
{
Serial.begin(9600);
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(greenLED, HIGH);
setPassword();
digitalWrite(greenLED, LOW);
while (1) {
loop();
}
}
void blinkLed(int ledPin);
void loop() {
char key = keypad.getKey();
if (key == '#')
{
String inputPassword = "";
while (inputPassword.length() < 4)
{
char key = keypad.getKey();
if (key != NO_KEY && key != '#')
{
inputPassword += key;
blinkLed(greenLED);
}
}
int enteredPassword[4];
for (int i = 0; i < 4; i++)
{
enteredPassword[i] = inputPassword.charAt(i) - '0';
}
bool passwordCorrect = checkPassword(enteredPassword);
if (passwordCorrect)
{
Serial.println("Пароль введено вірно");
blinkLed(greenLED); // Доданий виклик функції blinkLed()
playTone(buzzer, 1000, 100, 2);
Serial.println("Ви можете задати новий пароль натиснувши * та ввести новий пароль");
}
else
{
Serial.println("Пароль не вірний");
blinkLed(redLED);
playTone(buzzer, 2000, 3000, 1);
Serial.println("Щоб створити новий пароль потрібно натиснути * та ввести пароль");
}
}
else if (key == '*')
{
setPassword();
}
}
bool checkPassword(int enteredPassword[])
{
for (int i = 0; i < 4; i++) {
if (enteredPassword[i] != password[i])
{
return false;
}
}
return true;
}
void blinkLed(int ledPin)
{
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
}
void playTone(int buzzerPin, int frequency, int duration, int repeats)
{
for (int i = 0; i < repeats; i++)
{
tone(buzzerPin, frequency, duration);
delay(200);
}
}