Матричная клавиатура 4×4 – это устройство ввода, которое использует уникальную комбинацию рядов и столбцов для обнаружения нажатия кнопки. Она состоит из 16 кнопок, расположенных в 4 рядах и 4 столбцах. Основными преимуществами матричной клавиатуры являются ее компактность, низкая стоимость и возможность легко интегрироваться с микроконтроллерами для создания интерактивных проектов.
NodeMCU 32S – это мощная плата разработки на основе ESP32. Она имеет два ядра, работающих на частоте до 240 МГц, и включает в себя Wi-Fi и Bluetooth. NodeMCU 32S также имеет большое количество GPIO-пинов, что делает ее идеальной для сложных проектов. Она поддерживает различные режимы питания и имеет низкое энергопотребление в режиме ожидания.
Схема подключения
Для подключения матричной клавиатуры 4×4 к NodeMCU 32S вам потребуется 8 свободных GPIO-пинов. Четыре из них подключаются к рядам клавиатуры, а остальные четыре – к столбцам. Например, вы можете подключить ряды к пинам D1, D2, D3, D4, а столбцы – к пинам D5, D6, D7, D8.
Библиотеки
Для работы с матричной клавиатурой в Arduino IDE вам потребуется библиотека Keypad. Она доступна для установки через Менеджер библиотек Arduino IDE. Просто откройте Менеджер библиотек и введите “Keypad” в поле поиска.
Пример кода
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <Keypad.h> const byte D1 = 26; // Пин, к которому подключена первая строка клавиатуры const byte D2 = 25; // Пин, к которому подключена вторая строка клавиатуры const byte D3 = 33; // Пин, к которому подключена третья строка клавиатуры const byte D4 = 23; // Пин, к которому подключена четвертая строка клавиатуры const byte D5 = 23; // Пин, к которому подключен первый столбец клавиатуры const byte D6 = 22; // Пин, к которому подключен второй столбец клавиатуры const byte D7 = 21; // Пин, к которому подключен третий столбец клавиатуры const byte D8 = 19; // Пин, к которому подключен четвертый столбец клавиатуры const byte ROW_NUM = 4; // Количество строк клавиатуры (4 строки) const byte COL_NUM = 4; // Количество столбцов клавиатуры (4 столбца) char keys[ROW_NUM][COL_NUM] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte pin_rows[ROW_NUM] = {D1, D2, D3, D4}; // Пины, к которым подключены строки клавиатуры byte pin_column[COL_NUM] = {D5, D6, D7, D8}; // Пины, к которым подключены столбцы клавиатуры Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COL_NUM ); void setup(){ Serial.begin(9600); // Инициализация последовательного порта для вывода результатов } void loop(){ char key = keypad.getKey(); // Получение нажатой клавиши if (key){ Serial.println(key); // Вывод нажатой клавиши в последовательный порт } } |
Этот код сначала инициализирует матрицу клавиатуры и пины GPIO, к которым она подключена. Затем в цикле loop() он непрерывно проверяет, была ли нажата какая-либо кнопка, и если да, то выводит ее на серийный порт.