#include <Keypad.h>
#include <LiquidCrystal.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] = {PB12, PB13, PB14, PB15};
byte colPins[COLS] = {PB0, PB1, PB2, PB3};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// ========== НАСТРОЙКА ЖК-ДИСПЛЕЯ ==========
// Подключение: RS->PA0, EN->PA1, D4->PA4, D5->PA5, D6->PA6, D7->PA7
LiquidCrystal lcd(PA0, PA1, PA4, PA5, PA6, PA7);
void setup() {
// Инициализируем LCD 16x2
lcd.begin(16, 2);
// Очищаем экран
lcd.clear();
// Устанавливаем курсор на вторую строку
lcd.setCursor(0, 1);
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if (key) {
// Определяем, что делать с нажатой клавишей
if ((key >= '0' && key <= '9') || (key >= 'A' && key <= 'F')) {
// Для цифр 0-9 и букв A-F выводим на экран
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(key);
}
else if (key == '*' || key == '#' || key == 'B' || key == 'C' || key == 'D') {
// Для этих символов очищаем экран
lcd.clear();
}
// Для остальных символов ничего не делаем
}
}