Матричная клавиатура используется как устройство ввода для считывания нажатой пользователем клавиши и ее обработки.
Клавиатура 4×4 состоит из 4 строк и 4 столбцов. Переключатели размещаются между строками и столбцами.
Нажатие клавиши устанавливает связь между соответствующей строкой и столбцом, между которыми находится переключатель.
Для получения дополнительной информации о клавиатуре и о том, как ее использовать, обратитесь к статье Клавиатура 4×4 в разделе Датчики и модули.
Схема подключение клавиатуры 4×4 к Arduino UNO
Для примера напишем программу, которая будет производить чтение клавиши, нажатой на клавиатуре 4×4, и ее отображение на последовательном терминале Arduino.
Здесь мы будем использовать библиотеку Keypad Марка Стэнли и Александра Бревига.
Загрузите эту библиотеку отсюда.
Добавьте библиотеку в проект одним из описанных способов.
Вы можете найти больше информации о библиотеке Keypad и о том, как работать с этой библиотеку непосредственно в Arduino IDE здесь.
После добавления библиотеки в IDE Arduino, откройте IDE и откройте пример CustomKeypad из добавленной библиотеки.
ВНИМАНИЕ
В примере скетча Custom Keypad, включенного в библиотеку Keypad, цифровые контакты 0 и 1 используются для соединения строк. Это приведет к тому, что эти строки не будут работать для некоторых клавишей клавиатуры.
Плата Arduino UNO имеет цифровые контакты 0 и 1, подключенные к контактам Tx и Rx, которые используются для последовательной связи. Поскольку скетч использует последовательную связь для отображения нажатия клавиши на последовательном терминале, это приведет к ошибочному поведению.
Чтобы избежать этого, используйте контакты, отличные от контактов 0 и 1. Вы можете обратиться к приведенному ниже скетчу, чтобы получить представление о том, как это сделать.
Примечание
byte rowPins[ROWS] = {R1, R2, R3, R4}; /* подключаемся к распиновке ряда клавиатуры */
byte colPins[COLS] = {C1, C2, C3, C4}; /* подключаемся к распиновке колонки клавиатуры */
Если вы не подключите контакты в соответствии с этой функцией, идентификация нажатия клавиши не даст результатов в соответствии с определенной вами клавиатурой.
Пример скетча клавиатуры 4×4
#include <Keypad.h> const byte ROWS = 4; /* 4 ряда */ const byte COLS = 4; /* 4 столбца */ /* Определение символов на кнопках клавиатуры */ char hexaKeys[ROWS][COLS] = { {'0','1','2','3'}, {'4','5','6','7'}, {'8','9','A','B'}, {'C','D','E','F'} }; byte rowPins[ROWS] = {10, 11, 12, 13}; /* Контакты, подключенные к строкам клавиатуры */ byte colPins[COLS] = {6, 7, 8, 9}; /* Контакты, подключенные к столбцам клавиатуры */ /* Инициализация экземпляра класса Keypad */ Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600); } void loop(){ char customKey = customKeypad.getKey(); if (customKey){ Serial.println(customKey); } }