Использование клавиатуры совместно с Arduino
Клавиатуры позволяют пользователям вводить данные во время выполнения программы. Данная статья показывает вам, как подключить к Arduino 12-кнопочную клавиатуру, и как использовать библиотеку Keypad.h.
Клавиатура часто требуется для обеспечения ввода данных в систему на Arduino, и мембранные клавиатуры являются экономичным решением для многих приложений. Они довольно тонкие и могут быть легко установлены везде, где они необходимы.
В данной статье мы покажем, как использовать 12-кнопочную цифровую клавиатуру, похожую на ту, что вы можете увидеть на телефоне. 12-кнопочная клавиатура имеет три столбца и четыре строки. Нажатие кнопки замыкает вывод одной из строк с выводом одного из столбцов. Из этой информации Arduino может определить, какая кнопка была нажата. Например, когда нажата кнопка 1, замкнуты столбец 1 и строка 1. Arduino определит это и введет в программу 1.
На рисунке ниже показано, как внутри клавиатуры расположены строки и столбцы.
Матричная клавиатура
Эксперимент
В данном эксперименте мы продемонстрируем работу с библиотекой » keypad.h » для Arduino. Когда пользователь нажимает на кнопку на клавиатуре, программа отображает соответствующее значение в мониторе последовательного порта.
Необходимые комплектующие
Схема соединений
Подключите клавиатуру к плате Arduino, как показано на рисунке ниже.
Схема подключения клавиатуры к Arduino
Заключение
Это очень простой пример, но я думаю, вы смогли увидеть, как легко получить в программе на Arduino данные ввода с клавиатуры. Вы можете использовать этот тип ввода во многих различных проектах, в том числе:
- дверной замок;
- управление ШИМ;
- будильник;
- система безопасности.
Еще один пример работы с клавиатурой можно увидеть в статье «Как сделать простой калькулятор на Arduino».
Ардуино и клавиатуры (полный гайд)
Привет, жители Хабра! Сегодня я решил сделать полный гайд по клавиатурам для Arduino.
Внимание! Статья ориентирована преимущественно на новичков!
Во многих проектах появляется необходимость создания возможности ввода данных пользователем. Если вам нужно реализовать большое количество кнопок(относительно), то подключать их по-отдельности становится и долго, и нерационально. Для этой цели лучше выбрать какую-нибудь клавиатуру, но как и к любому выбору, к нему нужно подходить осознано. Какие же бывают виды клавиатур и как с ними взаимодействовать?
Глобально, все модули данного типа можно поделить на две большие категории: матричные и аналоговые.
Матричные клавиатуры
Самый простой, дешёвый и популярный вид клавиатур. Он относительно прост в изготовлении и заполняет собой большую часть рынка модулей ардуино. Выглядит чаще всего следующим образом:
Принцип работы
Понять как устроена данная клавиатура можно изучив следующую схему:
Чтобы понять какая кнопка была нажата, нужно подавать сигнал на первые четыре контакта модуля и смотреть какой сигнал возвращается со второй. Но не стоит пугаться того, что вам придется писать алгоритмы обработки для восьми пинов вручную — в этом нам поможет готовая библиотека «keypad.h», благодаря которой нам не придется изобретать велосипед.
Подключение к плате
Подключение собственно модуля
В этой статье я воспользуюсь следующей схемой подключения:
У Вас наверное возникает вопрос: «Почему я решил использовать пины со второго по девятый, пропустив нулевой и первый?» — дело в том, что некоторые модули, используют их в качестве каналов RX и TX для получения и передачи данных соответственно. К примеру, блютуз модуль. Поэтому с учётом возможного дополнения проекта другими модулями, было решено оставить данные пины подключения свободными.
Написание скетча
Для начала, для того, чтобы получить возможность использовать библиотеку для подключения клавиатур в коде, нужно установить её на ваше устройство. Это можно сделать следующим образом: в самой Arduino IDE нажимаем Скетч -> Подключить библиотеку -> Управлять библиотеками… либо используем комбинацию горячих клавиш «Ctrl + Shift + I». В поиске вбиваем «keypad.h»(без скобочек) и нажимаем «Установка».
После установки приступаем к написанию скетча:
Плюсы и минусы
Минусы
Плюсы
Аналоговые клавиатуры
Принцип работы
В аналоговых клавиатурах для изменения уровня напряжения используются резисторы, а сигнал выходит по одному каналу, который подключается в, собственно, аналоговый пин на плате. Как всё устроено можно понять взглянув на следующую схему:
Подключение к плате
Подключение выполняется очень просто, но может изменятся в зависимости от конкретной клавиатуры. В этой статье я буду рассматривать пример использование этой китайской аналоговой клавиатуры с али.
Итак: аналоговый выход клавиатуры соединяем с любым аналоговым пином на плате, контакт VCC на плате соединяем с 3.3V(не смотрите на надпись на самой клавиатуре, которая гласит о 5V — это ошибка), а GND на плате с GND на модуле. Вы можете воспользоватся следующей схемой:
Написания скетча
Здесь не нужно использовать сторонние библиотеки, т.к. всё предельно просто и понятно. Вот собственно и сам код, который считывает нажатую кнопку и выводит её номер, от 1 до 16(слева на право, с верху в низ) либо 0 если ничего не нажато, в монитор порта.
Плюсы и минусы
Плюсы
Минусы
Итоги
Лично я рекомендую использовать именно аналоговые клавиатуры, так как они чаще-всего более качественные и подключать их проще-простого. Главное обращать внимание на таблицу значений нажатых кнопок, которую предоставляет производитель или же, если таковой нет, можно сделать эти замеры самостоятельно, выводя значения из аналогового порта в монитор порта, чтобы потом использовать их в коде. Но выбор, всегда остается за Вами: использовать стандартный дешёвый вариант либо переплатить ради значительных плюсов в некоторых ситуациях.
На этом у меня всё. Оставляйте свои вопросы в комментариях, пишите своё мнение и встретимся на просторах Хабра!
arduino-libraries/Keyboard
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.adoc
Keyboard Library for Arduino
This library allows an Arduino board with USB capabilities to act as a keyboard.
Copyright (c) Arduino LLC. All right reserved.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
GyverLibs/EasyHID
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Библиотека для программной реализации USB клавиатуры и мышки на некоторых МК AVR и платах на их основе
- Буквенные клавиши
- Мультимедийные клавиши
- Системные клавиши и сочетания
- Буферизация нажатий
- Движение мышки и нажатие её кнопок
. МК AVR с тактированием 16 МГц .
- ATmega328 (плата Nano, Uno, Mini)
- ATmega168/88/48/8
- ATtiny88 (плата MH-ET) работает через USB на плате!
- ATtiny167 (плата Digispark PRO) работает через USB на плате!
- ATtiny48
- БИБЛИОТЕКА НЕДОСТУПНА В МЕНЕДЖЕРЕ БИБЛИОТЕК из-за структуры проекта. Если кто то сможет запустить код из папки src — кидайте пулл реквест!
- Скачать библиотеку .zip архивом для ручной установки:
- Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
- Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
- Распаковать и положить в Документы/Arduino/libraries/
- (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
- Читай более подробную инструкцию по установке библиотек здесь
- Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
- Через менеджер библиотек IDE: найти библиотеку как при установке и нажать «Обновить»
- Вручную: удалить папку со старой версией, а затем положить на её место новую. «Замену» делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!
Схема на примере Arduino Nano
- Стабилитрон — любой маломощный на 3.6V
- Резистор 100 Ом — можно заменить на другой в диапазоне 47.. 200 Ом
- Резистор 1.5 кОм — можно заменить на другой в диапазоне 1.2.. 2.2 кОм
- Диод — любой обычный кремниевый (с падением 0.7V)
Если используется активная подтяжка при помощи пина, добавь #define EASYHID_SOFT_DETACH ПЕРЕД подключением EasyHID.h
Порт и пин можно задать в файле usbconfig.h. Стандартные:
ATtiny88 (плата MH-ET) — USB распаян на плате
- D- — пин 0 (PD1)
- D+ — пин 2 (PD2) (INT0)
ATtiny167 (плата Digispark PRO) — USB распаян на плате
- D- — пин 4 (PB3)
- D+ — пин 3 (PB6) (INT0)
- D- — (PD4)
- D+ — (PD2) (INT0)
- PULL — (PD5)
Смотри более расширенные примеры в папке examples!
- v1.0
- v2.0
- Добавлена буферизация клавиш (до 5 штук одновременно нажатых)
- Добавлен release(), от одной до 5 клавиш
- Работают системные клавиши и сочетания
- Добавлена поддержка платы Digispark PRO на базе ATtiny167
- Добавлена поддержка платы MH-ET на базе ATtiny88
- Теперь если в схеме задействована активная подтяжка (см. схему) надо перед подключением либы дописать #define EASYHID_SOFT_DETACH
- Добавлен метод end(): отключает USB, корректно воспринимается компом без ошибки только при использовании схемы с активным pullup
- Добавлены более удобные константы
- v2.1 — небольшая оптимизация
- v2.2 — пофикшен баг с ATmega328
- v2.2.1 — пофикшен баг
- v2.3 — добавлена поддержка ATmega8
- v2.4 — добавлена поддержка Arduino IDE 2.0
Баги и обратная связь
При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request‘ов!
При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:
- Версия библиотеки
- Какой используется МК
- Версия SDK (для ESP)
- Версия Arduino IDE
- Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
- Какой код загружался, какая работа от него ожидалась и как он работает в реальности
- В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код
About
Библиотека программного USB клавиатуры и мыши для Arduino Nano/UNO/Mega и прочих