Подключение матричной клавиатуры 4×4 к Arduino

Клавиатуры — отличный способ позволить пользователям взаимодействовать с вашим проектом. Можно использовать их для навигации по меню, ввода  паролей,  управления играми и роботами.

В  этой статье будет использована матричная мембранная клавиатура 4×4 —  тонкая и c клейкой подложкой — приклеивается к большинству плоских поверхностей. Можно приобрести  клавиатуры телефонного типа  с более толстыми кнопками, если нравится такой стиль,  клавиатуры от старых кнопочных телефонов тоже будут работать с Arduino.

Как работает клавиатура

Кнопки на клавиатуре расположены в ряды и столбцы. Клавиатура  4×4 имеет 4 строки и 4 столбца.  Каждая строка (выводы 1-4) и столбец (выводы 5-8) выведены на один контакт,  всего 8 контактов.

Схема клавиатуры 4×4 показывает, как соединяются строки и столбцы:

 

Схема клавиатуры 4х4
Схема матричной клавиатуры 4х4

 

Нажатие на кнопку приводит к замыканию одного из выводов 1-4 с одним из выводов 5-8. Например, из схемы выше можно увидеть, что комбинация строки 3 и столбца 3 означает  только то, что была нажата кнопка с номером 9.

Подключение клавиатуры к Arduino

Расположение выводов для большинства мембранных клавиатур выглядит следующим образом:

 

4x4 and 3x4 keypad pinout diagram
Выводы матричных клавиатур 3×4 и 4×4

 

Схема подключения матричной клавиатуры 4×4 к Arduino Uno:

 

Подключение клавиатуры 4x4
Подключение клавиатуры 4×4 к Arduino

Как найти контакты при нестандартном расположении

Если расположение контактов клавиатуры не совпадает с указанным выше, можно найти контакты программным путём.  Для этого нужно будет собрать тестовую схему, подключив светодиод через токоограничивающий резистор к Arduino (или любому источнику питания 5 В) следующим образом:

 

 Как найти выводы матричной клавиатуры 4x4
Тестовая схема для поиска контактов

 

Сначала выясните, какие контакты клавиатуры подключены к рядам кнопок. Вставьте заземляющий (черный) провод в первый контакт слева. Нажмите любую кнопку в строке 1 и удерживайте ее. Вставьте положительный (красный) провод в каждый из других контактов. Если светодиод загорается на одном из контактов, нажмите и удерживайте другую кнопку в строке 1, затем снова вставьте положительный провод в каждый из других контактов. Если светодиод загорается на другом контакте, это означает, что провод заземления вставлен в контакт ряда 1. Если ни одна из кнопок в ряду 1 не загорается, значит провод заземления не подключен к ряду 1. Теперь переместите провод заземления к следующему контакту, нажмите кнопку в другом ряду и повторяйте описанный выше процесс до тех пор, пока не увидите  найденный контакт для каждой строки.



Чтобы выяснить, к каким контактам подключены столбцы, вставьте заземляющий провод в контакт, который, как вы узнали, является строкой 1. Теперь нажмите и удерживайте любую из кнопок в этом ряду. Вставьте положительный провод в каждый из оставшихся контактов. Контакт, который заставляет светиться светодиод  — это контакт,  подключенный к столбцу этой кнопки. Нажмите еще одну кнопку в том же ряду и вставьте положительный провод в каждый из других контактов. Повторите этот процесс для всех других столбцов, пока не будет найден каждый из них.

Программа для работы с клавиатурой

Для демонстрации работы напечатаем каждое нажатие клавиши на зкране Монитора последовательного порта Arduino IDE. В скетче будет использоваться библиотека keypad, написанная  Марком Стэнли и Александром Бревигом. Функции библиотеки —  следить за настройкой контактов и результатами опроса столбцов и строк. Чтобы установить библиотеку  клавиатуры, перейдите в  «Управление библиотеками» и в строке поиска наберите «keypad».

 

Библиотека Keypad для матричной клавиатуры
Загрузка библиотеки Keypad для матричной клавиатуры

 

После установки библиотеки клавиатуры можно загрузить скетч в Arduino IDE:

 

 

Строки 3 и 4 в приведенном выше коде устанавливают количество строк и столбцов на клавиатуре. Строки 6-11 определяют, какие символы печатаются при нажатии определенной кнопки на клавиатуре. Символы располагаются так же, как и на клавиатуре. Если ваша клавиатура имеет другую раскладку, вы можете определить, какие символы печатаются при нажатии кнопки. Например, предположим, что на вашей клавиатуре столбец букв слева, а не справа. Вы можете просто изменить его на следующий код:

 

 

После загрузки кода откройте монитор последовательного порта. Когда вы нажмёте клавишу,  её значение будет напечатано:

 

Вывод на Монитор значений нажатых клавиш
Вывод на Монитор порта значений нажатых клавиш