Eurotehnik.ru

Бытовая Техника "Евротехник"
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Матричная мембранная клавиатура

Матричная мембранная клавиатура

Keypad

Разберём работу с матричной клавиатурой. В моём распоряжении клавиатура размером 4х4, поэтому код будет писаться под неё.

Также могут попадаться клавиатуры с матрицей 4х3 и 4х1 и другие.

Клавиатура состоит из кнопок в виде герметичной панельки из прорезиненного материала. Задняя сторона сделана на самоклеящейся основе, что позволяет легко закрепить панель. Причём, панель гнётся, поэтому её можно прилепить даже на кружку. Клавиатуры герметичны, гибки и долговечны. Они не боятся воды, жары и выдерживают миллион нажатий.

Клавиатура выполнена в виде матрицы 4х4, каждая кнопка является областью воздушного зазора между двумя диэлектрическими слоями с нанесёнными на них токопроводящими покрытиями. Дорожки токопроводящего покрытия одного слоя нанесены горизонтально (выводы 1-4), а другого вертикально (выводы 5-8). Нажатие на кнопку приводит к соединению дорожки одного слоя с дорожкой другого, и как следствие, к замыканию одного из выводов 1-4 с одним из выводов 5-8.

Перед тем, как начать

Чтобы иметь возможность скомпилировать программу, необходимо, чтобы в Arduino IDE были установлены библиотеки LiquidCrystal.h и Keypad.h . Это можно сделать одним из двух способов. Если у вас установлена Arduino IDE версии 1.6.2 и выше, просто используйте менеджер библиотек. Если вы используете более раннюю версию, то вам необходимо скопировать эти библиотеки в каталог библиотек в месте установки Arduino IDE. Ссылка на руководство, как устанавливать библиотеки.

Arduino Uno Arduino Uno

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

Для экономии выводов микроконтроллера нам нужно правильно соединить кнопки между собой. Идея состоит в том, чтобы расположить их в виде матрицы, создавая строки и столбцы, как на схеме ниже:

Благодаря такому расположению мы можем подключить 16 кнопок, используя всего 8 контактов GPIO.

Читайте так же:
Можно ли отследить ip адрес компьютера

Принцип действия

Чтобы прочитать состояние каждой кнопки, все контакты, к которым подключены столбцы, должны быть установлены в состояние INPUT_PULLUP.

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

Реализация

Ниже приводим код который обрабатывает нажатие кнопки клавиатуры:

Рассмотрим код подробнее.

Для начала объявим несколько констант, чтобы код был легко читаемым:

ROWS и COLS — это выводы Ардуино, к которым подключены контакты клавиатуры (строки и столбцы соответственно).

NUM_ROWS и NUM_COLS вычисляются автоматически на основе ROWS и COLS и обозначают количество строк и столбцов.

Последняя константа — это KEYS, двумерный массив, содержащий односимвольное представление нажатой клавиши.

Пришло время инициализировать клавиатуру:

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

Затем мы устанавливаем все строки как выходы с состоянием LOW (хотя на этом этапе не имеет значения, высокое или низкое состояние), а столбцы как входы, подтянутые к источнику питания (INPUT_PULLUP). Наконец, мы просто печатаем в последовательный порт, что клавиатура была успешно инициализирована, и отображаем раскладку клавиатуры.

В основном цикле программы мы просто вызываем функцию readKey(), которая возвращает символ, соответствующий нажатой клавише:

Итак, давайте посмотрим, что стоит за этой функцией:

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

Читайте так же:
Игры на компьютер для бабушек

На каждой итерации x является неизменным, а переменная row изменяется с 0 на NUM_ROWS — 1. По этой причине после завершения всех итераций этого цикла логическое условие x! = Row будет ложным только один раз (когда x равно row), поэтому только одна строка перейдет в состояние LOW.

Теперь мы можем приступить к проверке столбцов. Как видите, сразу после обнаружения нажатой кнопки мы выходим из функции, возвращая первую нажатую кнопку.

Вы можете задать вопрос, зачем писать свой код, если имеется готовая библиотека для поддержки таких клавиатур. На то есть две простые причины:

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

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

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

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

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector