Матричная клавиатура и Arduino Часть I

Привет всем! Сегодня расскажу про матричную клавиатуру, ее подключение к Ардуино и еще рассмотрим несколько интересных схем с ее участием.


Если вам неудобно читать, то можете посмотреть закрепленное видео, я там говорю все то же самое и все показываю:)


Внимание! Warning!  Большая часть текста содержит объяснение программного кода, поэтому напоминаю, что их вы можете скачать вот здесь: https://yadi.sk/d/jYwdwS3U3EZ7bG либо посмотреть полноценное видео, закрепленное под статьей.


Сделать такую клавиатуру можно и самому, для этого понадобится печатная плата, 12 или 16 обычных кнопок и соединительные провода. Я же буду использовать готовую ( на первом фото ) Для чего она нужна? Для примера возьмем обычную кнопку. Как вы знаете, это простейшее электромеханическое устройство. Чтобы подключить ее к плате, нужно использовать стягивающий резистор, а также задействовать по одному контакту питания и "земли". Нажатием такой кнопки можно выполнить определенное действие, например можно управлять светодиодом, различными приводами, механизмами и так далее. А что, если нам необходимо подключить несколько кнопок? Тогда придется задействовать больше контактов и большее число проводов, да и без макетной платы здесь уже не обойтись, плюс еще резисторы придется использовать в большем количестве.


Для этого и придумали такую клавиатуру, чтобы упростить подключение большего числа кнопок, Такие устройства встречаются везде, в клавиатурах компьютеров, калькуляторах и так далее.


Подключать ее к плате следует 8 выводами, каждый из них считывает значения с определенных строк и столбцов. Подключать их следует к выводам на панели Digital. Я подключу например к выводам от 2 до 9 включительно. Нулевой и первый трогать лучше не стоит, поскольку они предназначены для UART интерфейса, например, подключить блютуз модуль, и рациональнее будет их оставить свободными, на всякий случай.


На втором фото можно посмотреть, как выглядит самая простая схема с использованием клавиатуры. Для более удобной работы с ней была написана библиотека Кейпад, скачать ее, а также другие скетчи можно вот здесь: https://yadi.sk/d/jYwdwS3U3EZ7bG


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


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


Скетч здесь по сути очень простой. Единственное, что стоит отметить, это первые строчки кода. Сначала мы подключаем нашу библиотеку, затем указываем сколько строк и столбцов у нашей клавиатуре, а потом нужно правильно расположить названия наших клавиш, чтобы было удобнее работать. Если вы это сделаете неправильно, то например при нажатии цифры 4, у вас в порт выйдет цифра 6 или любой другой символ. Собственно, это лучше определять опытным путем, что я и сделал и все символы расположил, так как они расположены на моей клавиатуре. Далее нужно также указать к каким выводам на плате мы подключаем управление строками и столбцами. А далее в функции void setup мы указываем скорость последовательного соединения с монитором порта, как 9600 бод, по сути функция нужна только для подачи питания на модули. В функции Void Loop прописываем условие, переменная Char используется для хранения только одного символа, например 1 или А или 5, что соответственно подходит к нашей ситуации, Соответственно, если нажатие было зафиксировано, то происходит вывод символа в монитор порта, с помощью функции Serial Print, в скобках нужно обязательно указывать какую переменную выводим в порт. Если все сделали верно, то в мониторе порта получим тот символ, на который мы нажимали. Также не забудьте в мониторе порта внизу справа указать скорость передачи данных такую же, как в скетче.



Допустим, мы не хотим подключать плату к компьютеру, чтобы видеть эти данные. Давайте выведем тогда их на дисплей. Я использую дисплей, сопряженный с модулем i2c, который также упрощает подключение. Дак вот, для работы с дисплеем с шиной i2c необходимо установить еще одну библиотеку, ссылка на нее тоже вот здесь: https://yadi.sk/d/jYwdwS3U3EZ7bG


Поэтому в скетче мы также указываем ее, далее нужно указать размерность дисплея, у меня дисплей вмещает по 16 символов в каждой из 2х строк, я это и указываю. В функции Void Setup нужно подать питание на дисплей, и включить подсветку. Делается это с помощью двух функций: lcd.begin и lcd.backlight


В функции Voil Loop нужно в самом условии прописать строчку lcd.print для вывода данных на дисплей. И еще нужно предварительно установить положение курсора, здесь в скобках идут 2 цифры, первая это номер символа, а вторая это номер строки. Нужно помнить, что у этого дисплея отсчет строк и столбцов начинается не с единицы, а с нуля. То есть здесь имеются строчки под номерами 0 и 1, а не 1 и 2, как может показаться сначала. Затем загрузим код в плату и посмотрим что будет.


Схема с дисплеем видна на фото 3. Кстати, так как у нас при подключении дисплея используется интерфейс i2c, то подключать будем его к аналоговым выводам. Выходы SDA и SCL соответственно подключаем к А4 и А5, а остальные два это уже питание и "земля".


Как мы видим, нажимая на любой символ, мы увидим его отображение на нашем дисплее.


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


Как мы видим, все отлично получается. Чтобы стереть строчку, вспомним калькулятор. Когда нам нужно было удалить значение, мы нажимали на … кнопку сброса. Нажмем на такую кнопку в плате и можем заново набирать символы:)



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


Попробуем при нажатии определенной клавиши включать светодиод, или выключать. Для этого подключим к нашей плате светодиод. Я буду использовать макетную плату и резистор ( желательно использовать от 150 до 220 вольт), ну и двумя перемычками замкну схему, подключив их к пинам питания и земли на нашей плате Ардуино. Вот так будет работать данная схема: нажимаю на 1 и включается светодиод, нажимаю на 2 и он выключается.

Светодиод  я кстати буду подключать к пину 12 на плате Ардуино.


Схема со светодиодом на фото 4


Теперь давайте разберем скетч.


Мы возьмем наш самый первый скетч и просто его дополним. В начале с помощью очень полезной функции Define присвоим название подключенному к пину 12 светодиоду, как ledpin. В функции Void setup указываем сигнал со светодиода, как выход. Кстати, если бы не наша библиотека Кейпад ( для нашей клавиатуры ), то нам бы пришлось прописывать все то же самое для наших 8 пинов, с которыми связана наша клавиатура. В функции void loop идет условие, здесь нажатие определенной клавиши у нас приравнивается к значению переменной key, Далее мы должны прописать оператор Switch, который будет сравнивать значения переменной key и давать определенные команды в зависимости от этого значения. Состоит он из двух вспомогательных операторов Case и Break. Проще говоря, если будет найдено значение переменной, равное 1 , то будет выполняться действие. Оператор break служит командой выхода из оператора Case.


Соответственно при нажатии на 1, будет выполняться максимальная подача напряжения на светодиод и он будет гореть. При нажатии на 1 , он гореть не будет. Это указывается в функции Digitat write , где в скобках задается название переменной и указание ей. Можно таким образом написать определенные команды для каждой кнопки и управлять большим числом светодиодов или создать одну команду для включения всех светодиодов сразу. На этом скетч заканчивается, он довольно простой.


На сегодня это все, советую также посмотреть видео и подписаться на нас:)


Во второй части статьи будут еще интересные схемы, причем более сложные.

Матричная клавиатура и Arduino Часть I Arduino, Электроника, Радиоэлектроника, Микроконтроллеры, Матричная клавиатура, Кнопка, Видео, Длиннопост
Матричная клавиатура и Arduino Часть I Arduino, Электроника, Радиоэлектроника, Микроконтроллеры, Матричная клавиатура, Кнопка, Видео, Длиннопост
Матричная клавиатура и Arduino Часть I Arduino, Электроника, Радиоэлектроника, Микроконтроллеры, Матричная клавиатура, Кнопка, Видео, Длиннопост
Матричная клавиатура и Arduino Часть I Arduino, Электроника, Радиоэлектроника, Микроконтроллеры, Матричная клавиатура, Кнопка, Видео, Длиннопост

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

ArturosTV, ты я вижу неплох в ардуино, у меня есть чеко-притер с ком портом в виде rj45, как его подключить к ардуино?

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку