Интернет-магазин «Неглупый Дом»
Клавиатура 4×4 принимает код, при совпадении Arduino на пару секунд открывает реле замка, при ошибке коротко пищит зуммером.
Мембранная клавиатура 4×4 — это матрица 16 кнопок на пересечении 4 строк и 4 столбцов, наружу выведено всего 8 проводов. Библиотека Keypad поочерёдно опрашивает строки и определяет, на каком столбце "отозвался" сигнал — так узнаётся нажатая кнопка без отдельного пина на каждую из них.
Arduino копит нажатые цифры в строку `input` до нажатия `#` — тогда строка сравнивается с эталонным кодом. При совпадении реле на пару секунд встаёт в положение "открыто" (к нему подключается реальная защёлка/соленоид от отдельного питания), при ошибке — короткий сигнал зуммером.
Так как реализации модуля бывают разные, если у вас нет тех контактов, что указаны ниже — сориентируйтесь по маркировке на шлейфе клавиатуры.
// ВНИМАНИЕ: лучше отладить код через монитор порта, я языковая модель,
// а не специализированный кодер, могу что-то упустить.
#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 String correctCode = "1234"; // обязательно смените перед использованием!
String input = "";
const int relayPin = 10;
const int buzzerPin = 11;
void setup() {
pinMode(relayPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey(); // опрашиваем клавиатуру
if (key) {
Serial.println(key);
if (key == '#') { // подтверждение ввода
if (input == correctCode) {
digitalWrite(relayPin, HIGH);
delay(2000);
digitalWrite(relayPin, LOW);
} else {
digitalWrite(buzzerPin, HIGH);
delay(500);
digitalWrite(buzzerPin, LOW);
}
input = "";
} else if (key == '*') { // сброс ввода вручную
input = "";
} else {
input += key;
}
}
}
Библиотека Keypad (автор Mark Stanley/Alexander Brevig) ставится через Менеджер библиотек. `#` подтверждает ввод, `*` сбрасывает набранный код.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 3 товара сразу: 237 ₽ 213 ₽ (экономия 24 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.