Arduino и мембранная клавиатура
Описание
В наборе GyverKIT можно найти мембранную клавиатуру 4х4 кнопки. В продаже существует также версия 3х4:
Подключение
Клавиатура подключается очень просто: к любым цифровым пинам платы:
Библиотеки
Для работы с клавиатурой можно использовать:
- Библиотеку Keypad, устанавливается вручную или через менеджер библиотек по поиску Keypad
- Библиотеку SimpleKeypad, устанавливается вручную или через менеджер библиотек по поиску SimpleKeypad. Основана на Keypad, но имеет меньше возможностей, быстрее работает и занимает меньше памяти. Работа с ней практически не отличается от Keypad
Примеры
“Минимальный” пример с библиотекой SimpleKeypad:
// размеры клавиатуры #define KP_ROWS 4 #define KP_COLS 4 // пины подключения (по порядку штекера) byte colPins[KP_COLS] = {7, 6, 5, 4}; byte rowPins[KP_ROWS] = {11, 10, 9, 8}; // массив имён кнопок char keys[KP_ROWS][KP_COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; // подключаем либу #include <SimpleKeypad.h> // создаём клавиатуру SimpleKeypad pad((char*)keys, rowPins, colPins, KP_ROWS, KP_COLS); void setup() { Serial.begin(9600); } void loop() { // получить текущую нажатую клавишу // вернёт 0 символ если ничего не нажато char key = pad.getKey(); // если кнопка нажата (не 0 символ) if (key) { // выводим в порт Serial.println(key); // можно разобрать через // switch (key) { // case '1': // ... } }
Домашнее задание
- Сравнить вес в памяти МК минимального примера для библиотек Keypad и SimpleKeypad (примеры будут отличаться только строкой создания объекта клавиатуры)
7 Комментариев
Вроде норм стало, кажется проблемы на моей стороне.
Скетч исправил, прошу прощения за косяк. Оказалось что нулевой символ ‘\0’ ломал отображение кода на сайте =)
Отдельно 4х4 найти с быстрой доставкой не могу, может кто помочь?
Если нет на алике то поищи на озоне или в радиодиталях
Хотелось бы увидеть код работы с клавиатурой без библиотек, но увы… Везде одно и то – же: подключаем библиотеку и радуемся жизни.
Подаешь напряжение на столбики по очереди, затем считываешь напряжение на строчках и определяешь в каком столбике и какой строчке нажата кнопка, все просто, я использовал прерывание для того что бы не вертеть проверку кнопок в лупе
Открываешь библиотеку, там весь код предельно понятный. Городить такое в основной программе – неправильно, обработку клавиатуры в любом случае будет удобно и правильно вынести в класс, читай – в библиотеку