#include <Wire.h> // Библиотека для I2C (если используется I2C LCD)
#include <LiquidCrystal_I2C.h> // Библиотека для I2C LCD
#include <Keypad.h> // Библиотека для работы с матричной клавиатурой
// Настройка I2C LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Адрес 0x27, если другой адрес - измените
// Настройка матричной клавиатуры
const byte ROWS = 4; // 4 строки
const byte COLS = 4; // 4 столбца
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; // Пины строк, к которым подключена клавиатура
byte colPins[COLS] = {A5, A4, A3, A2}; // Пины столбцов, к которым подключена клавиатура
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
lcd.init(); // Инициализация LCD
lcd.backlight(); // Включение подсветки (если используется I2C LCD)
lcd.clear(); // Очистка экрана
}
void loop() {
char key = keypad.getKey();
if (key) {
static int col = 0; // Текущая колонка для записи
static int row = 0; // Текущая строка для записи
lcd.setCursor(col, row);
lcd.print(key);
col++; // Переход к следующей колонке
if (col >= 16) { // Если дошли до конца строки
col = 0;
row++; // Переход к следующей строке
}
if (row >= 2) { // Если дошли до конца экрана
row = 0;
lcd.clear();
}
}
}