#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);
const int redLedPin = 11;
const int yellowLedPin = 12;
const int greenLedPin = 13;
String inputCode = ""; // Хранит набранный код
void setup() {
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if (key) { // Если клавиша нажата
Serial.println(key);
if (key == 'B') {
checkCode();
inputCode = ""; // Очистка ввода после проверки
}
else if (key == 'C') {
inputCode = ""; // Сброс кода при нажатии 'C'
Serial.println("Набор сброшен.");
}
else if (isDigit(key)) {
inputCode += key; // Добавляем цифры в код
}
}
}
void checkCode() {
if (inputCode == "125") {
digitalWrite(redLedPin, HIGH);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
Serial.println("Красный светодиод включен!");
} else if (inputCode == "271") {
digitalWrite(yellowLedPin, HIGH);
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, LOW);
Serial.println("Желтый светодиод включен!");
} else if (inputCode == "111") {
digitalWrite(greenLedPin, HIGH);
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
Serial.println("Зелёный светодиод включен!");
} else {
Serial.println("Неверный код!");
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, LOW);
}
}