Библиотека keypad для работы с клавиатурой на arduino
Содержание
- 1 Пример работы
- 2 Программирование мембранной клавиатуры в среде IDE Arduino
- 3 Схема подключения матричной клавиатуры к Arduino
- 4 Загрузка кода
- 5 Описание
- 6 Технические характеристики
- 7 Introduction: Connect Arduino UNO to USB Keyboard
- 8 Библиотеки Mouse и Keyboard
- 9 Aula Excalibur
- 10 Программирование клавиш
- 11 Примеры
- 12 Using an LCD with the Keypad
- 13 Схема с дисплеем и матричной клавиатурой
- 14 Загрузка, установка и импорт
- 15 Библиотека Password
- 16 Use a Password to Activate a Relay
- 17 Элементы платы
- 18 FAQ
- 19 GameSir GK100
- 20 Пример работы
Пример работы
В качестве примера подключим клавиатуру к платформе Iskra Neo к пинам — и будем выводить нажатую клавишу в Serial-порт.
Прошейте плату скетчем, приведённым ниже.
- KB_4x4.ino
-
// подключаем библиотеку для работы с матричной клавиатурой #include <AmperkaKB.h> // создаём объект для работы с матричной клавиатурой // указывая номера arduino подключенные к шлейфу клавиатуры // начиная с первого вывода шлейфа AmperkaKB KB(7, 6, 5, 4, 3, 2, 1, ); void setup() { // открываем монитор Serial порта Serial.begin(9600); // указываем тип клавиатуры KB.begin(KB4x4); // второй необзятельный параметр: // время длительного зажатия кнопки // по умолчанию 2000, изменим на 5000 мс // KB.begin(KB4x4, 5000); } void loop() { // считывание данных с клавиатуры KB.read(); // опеределяем клик кнопки if (KB.justPressed()) { // печатаем номер кнопки и её символ в последовательный порт Serial.print("Key is press "); Serial.print(KB.getNum); Serial.print(" = \""); Serial.print(KB.getChar); Serial.println("\""); } // определяем отжатие кнопки if (KB.justReleased()) { // печатаем номер кнопки и её символ в последовательный порт Serial.print("Key is release "); Serial.print(KB.getNum); Serial.print(" = \""); Serial.print(KB.getChar); Serial.println("\""); } // определяем зажатие кнопки на 3 секунды if (KB.isHold()) { // печатаем номер кнопки и её символ в последовательный порт Serial.print("Key on long press "); Serial.print(KB.getNum); Serial.print(" = \""); Serial.print(KB.getChar); Serial.println("\""); } }
Iskra JS
Подключим клавиатуру к платформе Iskra JS к пинам — и будем выводить нажатую клавишу в последовательный порт.
- keyPad1x4.js
-
require("KeyPad").connect(P0, P1, P2, P3, P4, P5, P6, P7, function(e) { print("123A456B789C*0#D"e); });
Программирование мембранной клавиатуры в среде IDE Arduino
Для того чтобы считывать информацию в программе IDE Arduino необходимо подключить библиотеку.#include <Keypad.h>
Подробнее о работе с библиотеками можно ознакомится на уроке
Соответствие символов на клавиатуре и выводимых символов в ком порт задается с помощью матрицыchar hexaKeys = {
{‘1′,’2′,’3′,’A’},
{‘4′,’5′,’6′,’B’},
{‘7′,’8′,’9′,’C’},
{‘*’,’0′,’#’,’D’}
Для то чтобы задать соответствие между клавиатурой и символами используется команда.Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
Для того чтобы записать символ с клавиатуры в переменную, используется команда.char переменная = customKeypad.getKey();Пример программы в среде IDE Arduino вывод символов с клавиатуры в компорт// подключение библиотеки работы с клавиатурой
#include <Keypad.h>
const byte ROWS = 4; // количество строк
const byte COLS = 4; //количество столбцов
// задание матрицы символов клавиатуры
char hexaKeys = {
{‘1′,’2′,’3′,’A’},
{‘4′,’5′,’6′,’B’},
{‘7′,’8′,’9′,’C’},
{‘*’,’0′,’#’,’D’}
};
byte rowPins = {13,12,11,10}; //пины для строк
byte colPins = {9,8,7,6}; // пины для столбцов
//соответствие символов клавиатуры и символов выводимых в ком порт
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop(){
// запись символа при нажатие с клавиатуры в переменную
char customKey = customKeypad.getKey();
if (customKey){
//вывод символа из переменной в ком порт
Serial.println(customKey);
}
}Вернуться к содержанию
Схема подключения матричной клавиатуры к Arduino
Подключать ее к плате следует 8 выводами, каждый из них считывает значения с определенных строк и столбцов. Подключать их следует к выводам на панели Digital. Я подключу, например, к выводам от 2 до 9 включительно. Нулевой и первый трогать не желательно, поскольку они предназначены для UART интерфейса (например, для подключения блютуз-модуля). Рациональнее оставить их свободными.
Схема подключения матричной клавиатуры к Arduino
Так выглядит самая простая схема с использованием клавиатуры. Для более удобной работы с ней была написана библиотека Кейпад. Скачать ее, а также другие скетчи можно здесь.
После того, как вы установили в библиотеку, можно зайти в Ардуино IDE (программа с ) и посмотреть примеры скетчей.
Возьмем самый простой скетч для ознакомления. Он позволяет считывать значение с клавиатуры при нажатии определенной клавиши и выводить их в порт. В данном случае это монитор порта на компьютере.
Скетч очень простой. Стоит отметить первые строчки кода. Сначала подключаем библиотеку, затем указываем сколько строк и столбцов у клавиатуры, а потом нужно правильно расположить названия клавиш, чтобы было удобнее работать.
Если это сделать неправильно, то, например, при нажатии цифры 4, в порт выйдет цифра 6 или любой другой символ. Это можно определить опытным путем и расположить символы, как они расположены на клавиатуре.
Далее нужно указать к каким выводам на плате подключаем управление строками и столбцами.
В функции void setup указываем скорость последовательного соединения с монитором порта 9600 бод. Функция нужна только для подачи питания на модули. В функции Void Loop прописываем условие. Переменная Char используется для хранения только одного символа, например, 1, А или 5, что подходит к ситуации. Если нажатие зафиксировано, то происходит вывод символа в монитор порта с помощью функции Serial Print. В скобках нужно указывать, какую переменную выводим в порт. Если все сделано верно, в мониторе порта получим символ, на который нажимали. Не забудьте в мониторе порта внизу справа указать скорость передачи данных такую же, как в скетче.
Загрузка кода
Если ваша клавиатура не работает с кодом ниже, то ее нужно подключить не так, как на картинке выше, а в соответствии с даташитом. Даташит можно найти в сети или спросить у продавца, у которого вы купили свою клавиатуру.
Примечание: Если у вашей клавиатуры другое количество клавиш, вам нужно будет поменять значения во 3-ей и 4-ой строчках кода. Кроме того, после этого нужно будет поменять значения в массиве, который расположен на строчках с 5-ой по 10-ую.
1 #include "Keypad.h" 2 3 const byte ROWS = 4; // количество рядов 4 const byte COLS = 3; // количество столбцов 5 char keysROWS][COLS = { 6 {'1','2','3'}, 7 {'4','5','6'}, 8 {'7','8','9'}, 9 {'#','0','*'} 10 }; 11 12 byte rowPinsROWS = {8, 7, 6, 5}; // контакты для рядов: 13 // R1 = D8, R2 = D7, 14 // R3 = D6, R4 = D5 15 byte colPinsCOLS = {4, 3, 2}; // контакты для столбцов: 16 // C1 = D4, C2 = D3, C3 = D2 17 Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); 18 19 void setup() 20 { 21 Serial.begin(9600); 22 } 23 24 void loop() 25 { 26 char key = keypad.getKey(); 27 if (key != NO_KEY) 28 Serial.println(key); 29 }
Описание
Матричная клавиатура
Библиотека служит для использования совместно с Arduino клавиатур матричного типа. Текущая версия библиотеки (3.1) поддерживает множественные нажатия.
Данная библиотека была создана для создания уровня абстракции для аппаратного обеспечения. Она улучшает читаемость кода, скрывая от пользователя вызовы функций и .
Версия 3.0 (опубликована 19 июля 2012) была переписана для поддержки по умолчанию множественных нажатий. Но для тех, кому всё еще изначальная функциональность с одиночными нажатиями, библиотека обеспечивает полную обратную совместимость.
Вам нет необходимости использовать внешние резисторы или диоды, так как библиотека использует внутренние подтягивающие резисторы в микроконтроллере на Arduino и дополнительно обеспечивает высокое входное сопротивление на всех неиспользуемых выводах столбцов.
Технические характеристики
- Размеры: 68×77×0,8 мм
- Рабочее напряжение: до 12 В
- Максимальный ток: 100 мА
- Сопротивление изоляции: >100 МОм
- Сопротивление контактов: <200 Ом
- Дребезг контактов: <5мсек
- Ресурс: 1 миллион нажатий
- Рабочая температура: от 0 до +70 градусов Цельсия
- Допустимая влажность: 90%-95%, 240 часов
- Вес: 10 г
Для удобства установим готовую библиотеку Keypad. Устанавливайте через менеджер библиотек в Arduino IDE.
Исходники для просмотра кода библиотеки.
Само подключение не должно вызвать трудностей. У клавиатуры восемь выводов в виде шлейфа, который нужно подключить к цифровым выводам платы от 9 до 2. Шлейф имеет мама-разъём с шагом 2,54 мм — можно легко установить с помощью макетной платы и линейки штырьковых соединителей. Также можно использовать перемычки папа-папа.
Introduction: Connect Arduino UNO to USB Keyboard
By ahmedebeed555AeroArduinoFollow
More by the author:
About: DIY my way through life. For me, Instructales is a way of living. It’s my making log. My life is counted with the instructables I make.
More About ahmedebeed555 »
The actual sit and write is the essence of being a writer. Just as in any other discipline, if you do not invest time, mind and effort in doing it, you are treating it to be just a hobby.
The mind you give to the process of writing comes back to you in a form of the Flow. The process of effortlessly create something valuable with ease and timelessness. It’s well known that whatever habit that you devote yourself to is what you can be finally rewarded for.
That’s why I’ve wanted to make this project to concentrate on the process of writing itself.
https://youtube.com/watch?v=vkdiyJ2i39c
Here is my Channel on Youtube:
Библиотеки Mouse и Keyboard
Эти базовые библиотеки позволяют платам Arduino Leonardo, Micro или Due при подключении к компьютеру определяться как обычная мышь и/или клавиатура.
Предосторожности при использовании библиотек Mouse и Keyboard: при постоянной работе библиотек Mouse или Keyborad могут возникнуть сложности во время программирования вашего устройства. Функции, подобные Mouse.move() или Keyboard.print() могут перемещать курсор и сигнализировать о нажатии клавиш подключенному компьютеру, поэтому должны вызываться только тогда, когда вы готовы контролировать их работу
Рекомендуется использовать какую-нибудь систему управления, позволяющую выключать подобную функциональность, например, в зависимости от положения переключателя или сигнала на выводе, состояние которого вы можете контролировать.
Перед использованием функций библиотек Mouse или Keyboard непосредственно с компьютером, лучше всего протестировать их возвращаемые значения с помощью функции Serial.print(). Так вы сможете удостовериться в правильности отправляемых значений. Подробнее см. примеры работы с библиотеками Mouse и Keyboard ниже.
Мышь (библиотека Mouse)
Функции для работы с мышью позволяют Leonardo, Micro или Due контролировать движение курсора на подключенном компьютере. Обновление позиции курсора всегда осущетсвляется относительно его предыдущего положения.
- Mouse.begin()
- Mouse.click()
- Mouse.end()
- Mouse.move()
- Mouse.press()
- Mouse.release()
- Mouse.isPressed()
Клавиатура (библиотека Keyboard)
Функции для работы с клавиатурой позволяют Leonardo, Micro или Due отправлять подключенному компьютеру сигналы о нажатии клавиш.
Примечание: Библиотека Keyboard позволяет отправлять не все ASCII-символы, в частности она не позволяет отправлять непечатаемые символы. Библиотека также поддерживает использование клавиш-модификаторов, которые при одновременном нажатии с другой клавишей изменяют ее поведение. Дополнительную информацию о поддерживаемых клавишах и их применении см. здесь.
- Keyboard.begin()
- Keyboard.end()
- Keyboard.press()
- Keyboard.print()
- Keyboard.println()
- Keyboard.release()
- Keyboard.releaseAll()
- Keyboard.write()
Примеры
- KeybaordAndMouseControl: Демонстрация команд Mouse и Keyboard в одной программе.
- KeyboardMessage: Отправка текстовой строки при нажатии кнопки.
- KeyboardLogout : Завершение сеанса текущего пользователя командой сочетания клавиш
- KeyboardSerial: Считывание байта из последовательного порта и обратная отправка сигнала нажатия клавиши.
- KeyboardReprogram : Открытие нового окна в Arduino IDE и перепрограммирование платы простой программой мигания светодиодом
- ButtonMouseControl: Управление движением курсора 5 кнопками.
- JoystickMouseControl: Управление движением курсора компьютера с помощью джойстика при нажатии кнопки.
Aula Excalibur
Далее следует игровая мини-клавиатура Excalibur от Aula. Этот кейпад больше по размеру и сочетает в себе часть традиционной раскладки QWERTY с массивом функциональных клавиш и программируемых макроклавиш. Также устройство может похвастаться интересным дизайном и светодиодной подсветкой.
Функции
Как вы можете видеть, большое количество клавиш делает этот кейпад достойной альтернативой полноценной клавиатуры, когда дело доходит до игр, в то время как функциональные клавиши дают устройству некоторые преимущества даже в повседневном использовании. Клавиши также механические, и имеют щелкающие синие переключатели.
Когда дело доходит до дизайна, мини-клавиатура определенно выглядит слишком ярко – очень детально, плюс присутствует светодиодная подсветка с пятью пресетами
Обратите внимание, что производитель также выпускает Excalibur с подсветкой RGB
Мини-клавиатура довольно удобна в использовании, хотя съемная подставка для запястий оказывается несколько бесполезной, поскольку из-за большого размера девайса вам потребуется много двигать рукой.
Недостатки
У продукта есть два основных недостатка. Во-первых, устройство огромное, поэтому может быть не слишком комфортным, когда речь заходит о людях с меньшими руками
Что еще более важно, кейпад довольно дорогой, особенно как для продукта от менее известного бренда и без освещения RGB. Помимо этого, он также поставляется только с синими переключателями, при этом некоторые пользователи могут найти девайс слишком громким
Плюсы:
- Механические клавиши;
- Большое количество клавиш.
Минусы:
- Дорогой;
- Отсутствие RGB подсветки;
- Может быть слишком большим для пользователей с маленькими руками;
- Поставляется только с синими переключателями.
Программирование клавиш
- запускаем ранее установленную программу MPOSMaster;
- создаем новый проект, и указываем наш тип оборудования (на данный момент я использую USB версию на 64 копки, купленную все так-же на доске объявлений);
- мы можем задать любую последовательность или комбинацию символов для 4-х слоев, но не более 42 символов в одном слое (ограничение памяти контроллера);
- задать макрос можно или вводом с клавиатуры при помощи окна “захвата”, или вставляя коды нажатия, отпускания или клика клавиши вручную. При помощи ручного ввода есть возможность задать комбинации клавиш такого вида Ctrl+Alt+Shift+Win+”x”;
- также есть возможность в любом месте макроса вставить паузу от 0,1s до 1,6s. Если нужна большая пауза или не стандартная, можно вставлять несколько пауз подряд;
- мы можем задать звуковой сигнал нажатия: короткий, средний или длинный;
- мы можем включить “Автоповтор” для клавиши. Если он отключен, макрос выполняется только один раз, вне зависимости от того, как долго мы держим клавишу;
Примеры
Библиотека снабжена несколькими примерами. Немного видоизменённые примеры представлены ниже.
HelloKeypad
Пример рассчитан на клавиатуру 4х3, поэтому необходимо внести небольшие изменения в коде (выделено жирным).
Залейте прошивку, запустите Serial Monitor и нажимайте на клавиши. Символ нажатой клавиши должен отображаться на экране.
MultiKey
Пример позволяет обрабатывать одновременные нажатия клавиш. Он также предназначен для клавиатуры 4х3, поэтому внесём аналогичные изменения в код.
Для демонстрации сначала была нажата клавиша «А». Удерживая её, нажал на клавишу «2», которую затем отпустил.
Using an LCD with the Keypad
Now let’s see how to print the key presses on an LCD. 4X4 keypads use 8 pins and 3X4 keypads use 7 pins. That takes up a lot of pins, so I’m going to use an I2C enabled LCD because it only needs 4 wires to connect to the Arduino.
Install the LiquidCrystal_I2C Library
To use an I2C enabled LCD on the Arduino, you’ll need to install the LiquidCrystal I2C library by Marco Schwartz. This library is nice because it includes most of the functions available in the standard LiquidCrystal library. To install it, download the ZIP file below, then go to Sketch > Include Library > Add .ZIP Library:
The Wire Library
The Wire library is needed to add support for I2C communication. It comes packaged with the Arduino IDE, so there’s no need to install it. But if for some reason it’s not installed on your system, go to Sketch > Include Library > Manage Libraries and search for “wire” to install it.
Connect the Keypad and LCD
Once the libraries are installed, connect the ground and Vcc pins of the LCD to the Arduino, then connect the LCD’s SDA and SCL pins according to the table below for the different Arduino boards:
Then connect the keypad to the Arduino. It should look something like this (for an Arduino Uno):
Code for Output to an LCD
Once everything is connected, upload this code to the Arduino:
You’ll need to add the I2C address of your LCD on line 20:
The I2C address of my LCD is 0x21, but your’s will probably be different. The I2C address of your LCD should be provided in the datasheet, but if not, you can find it by running this I2C_Scanner sketch.
Схема с дисплеем и матричной клавиатурой
Давайте выведем данные на дисплей.
Схема подключения сопряженного с модулем I2C дисплея к Arduino
Я использую дисплей, сопряженный с модулем I2C, который упрощает подключение. Для работы с дисплеем с шиной I2C необходимо установить еще одну библиотеку. Скачать ее можно здесь.
Далее нужно указать размерность дисплея. Используемый в примере дисплей вмещает по 16 символов в каждой из 2-ух строк, это я и указываю. В функции Void Setup нужно подать питание на дисплей и включить подсветку. Делается это с помощью двух функций: lcd.begin и lcd.backlight.
В функции Voil Loop нужно в самом условии прописать строчку lcd.print для вывода данных на дисплей. И еще нужно предварительно установить положение курсора. В скобках идут 2 цифры: первая — это номер символа, а вторая — номер строки. Нужно помнить, что у этого дисплея отсчет строк и столбцов начинается не с единицы, а с нуля. То есть здесь имеются строчки под номерами 0 и 1, а не 1 и 2, как может показаться сначала. Затем загрузим код в плату и посмотрим, что будет.
Так как дисплей работает по интерфейсу I2C, подключаем к аналоговым выводам. Выходы SDA и SCL соответственно подключаем к А4 и А5, а остальные два — это уже питание и «земля».
Как видим, нажимая на любой символ, видим его отображение на дисплее.
Подключение дисплея и матричной клавиатуры к Arduino
Можно заметить, если вводить символы дальше, то каждый предыдущий будет стираться, а на его месте появляться новый. Поэтому, если вы хотите вводить символы подряд, то просто удалите строчку, где указано положение курсора.
Чтобы стереть строчку, вспомним калькулятор. Когда нужно было удалить значение, мы нажимали на кнопку сброса. Нажмем на такую кнопку в плате и можем заново набирать символы.
Загрузка, установка и импорт
Данная библиотека сейчас доступна через менеджер библиотека в Arduino IDE. Если вы используете современную IDE (версия 1.6.2 и выше), то можете просто использовать меню:
Скетч → Подключить библиотеку → Управлять библиотеками… А затем найти Keypad.
Когда найдете, нажмите на записи, и появится кнопка «Установка». ZIP файл приведен ниже для старых версий IDE.
Поместите каталок Keypad в «arduino\libraries\«.
В Arduino IDE создайте новый скетч (или откройте существующий) и выберите в меню «Скетч → Импорт библиотеки → Keypad».
Когда библиотека импортирована, строка «» появится в начале вашего скетча.
Библиотека Password
Клавиатуру логично использовать в качестве ввода пароля для доступа к каким-то возможностям. Для удобной обработки вводимых символов можно использовать готовую библиотеку Password. К сожалению, её нельзя установить через менеджер библиотек, поэтому придётся скачать архив и разместить папку в папке libraries самостоятельно.
У библиотеки несколько функций.
- set(password)
- Устанавливает пароль
- is(password)
- Совпадает ли текущий набор пароля с установленным паролем
- append(character)
- Добавляет символ к текущему вводу пароля
- reset()
- Сбрасывает набранный ввод пароля
- evaluate()
- Совпадает ли текущий набор пароля с установленным паролем
Скетч для ввода пароля
В скетче устанавливается пароль «1234». Максимальное число ввода символов — 6. Если это число будет превышено, то автоматически сравниваем введённый набор с паролем и выдаём результат, сбрасывая ввод. Это избавит нас от бесконечного ввода.
Клавиши «A», «B», «C» ничего не делают, их можно не трогать. Для проверки пароля нужно нажать набор чисел и затем кнопку # (решётку). В успешном случае выводится сообщение OK, в противном случае появится сообщение о неправильном пароле.
Остальные кнопки меняют пароль (на 123), сбрасывают введённый пароль для повторного набора (если заметил ошибку при наборе).
На основе этого скетча можно написать свою логику. Также можно добавить запоминание нового пароля в долговременную память и т.д.
Если вам нужные несколько паролей, то создавайте разные экземпляры.
Use a Password to Activate a Relay
One of the most useful applications of a keypad is to use it for keyed entry. You can set up a password and have the Arduino activate a relay or some other module if the password is correct. The following code will activate a 5V relay when the password is entered correctly:
You can change the password on line 10 by replacing the text with your own password:
The length of the password needs to be set on line 5:
The password in the example above is only 7 characters long, but the password length is actually one greater than 7 because there is a null character added to the end of the string. For example, if your password is 5 characters long, you would enter 6 for the password length.
The output pin that activates the relay is defined on line 7:
After connecting everything to the Arduino, you should have something that looks like this:
Well that’s about it. It’s not hard to set up a keypad at all. I think with a little trial and error you should be able to modify the code above to work with most of the projects you’d want to use a keypad for. But if you run into problems, just let us know in the comments and we’ll try to help you out.
Krishna Pattabiraman is a frequent guest writer on Circuit Basics and the founder of www.codelectron.com.
JLCPCB — Only $2 for PCB Prototype (Any Color)
Great Quality Approved by 600,000+ Customers, 10,000+ PCB Orders Per Day. Sign Up & Get at Least Two $5 Coupons Now: https://jlcpcb.com/quote
Элементы платы
Подтягивающий резистор
В модуль входят четыре независимые кнопки подключённые по одной схеме.
Пока кнопка нажата, выходное напряжение на сигнальном пине = . Когда кнопка отпущена, провода работают как антенна и набирают наведённый сигнал — на пине появляются «шумы». Эти шумы легко устранить, добавив в цепь резистор на .
Контакты подключения 3-проводных шлейфов
1 группа
- Земля (G) — соедините с землёй микроконтроллера.
- Питание (V) — соедините с питанием микроконтроллера.
- Сигнальный (S1) — цифровой выход кнопки . Подключите к любому цифровому пину микроконтроллера.
2 группа
- Сигнальный (S2) — цифровой выход кнопки . Подключите к любому цифровому пину микроконтроллера.
- Сигнальный (S3) — цифровой выход кнопки . Подключите к любому цифровому пину микроконтроллера.
- Сигнальный (S4) — цифровой выход кнопки . Подключите к любому цифровому пину микроконтроллера.
FAQ
- Как я могу использовать несколько клавиатур?
-
это класс. Следовательно, для использования нескольких клавиатур вы должны создать объект класса для каждой из них. В примере выше экземпляр класса Keypad keypad был связан с цифровыми выводами 2, 3, 4, 5, 6, 7 и 8. Чтобы добавить клавиатуру, подключенную к цифровым выводам 9, 10, 11, 12, 13, 14, 15 и 16, вы можете создать следующий объект keypad2:
И теперь просто используйте нужные методы любой из клавиатур:
- Как я могу использовать ?
- В Arduino IDE проследуйте по меню «Файл → Примеры → Keypad → DynamicKeypad». Когда скетч откроется, найдите функцию setup():
Здесь показано, что время устранения дребезга контактов при нажатии кнопки устанавливается равным 250 миллисекунд. Если за это время происходит несколько нажатий на кнопку (что и происходит при дребезге контактов кнопки), то дополнительные нажатия просто игнорируются.
GameSir GK100
GameSir – еще одна менее известная компания, с которой вы, возможно, уже сталкивались, если предпочитаете покупать доступные игровые периферийные устройства и аксессуары. Сегодня мы рассмотрим GK100, игровой кейпад от данной компании, который предлагает удивительно хорошее соотношение цены и качества.
Функции
GameSir GK100 немного компактнее, чем вышеуказанный продукт от Koolerton, с 34 клавишами и четырьмя макроклавишами сбоку. Клавиши здесь также механические, с использованием шумных и тактильных синих переключателей.
Кейпад выглядит очень элегантно. Сам пластик чувствуется довольно неплохо, девайс имеет съемную подставку для запястий, а также светодиодную подсветку с 8 различными пресетами.
Недостатки
Поскольку GK100 поставляется только с синими переключателями, те, кто привык к другим, более тихим типам механических переключателей (или просто к мембранным клавиатурам), могут найти их немного отвлекающими. К сожалению, альтернативы нет, по крайней мере пока. Кроме того, упор для запястий не является достаточно устойчивым и сделан исключительно из пластика и не имеет какой-либо амортизации, что может в конечном итоге сделать его неудобным для использования в течение длительных периодов времени.
Плюсы:
- Механические клавиши;
- Относительно доступный;
- Полностью программируемый.
Минусы:
- Только синие переключатели;
- Неудобная подставка для запястья.
Пример работы
Iskra Neo
В качестве примера подключим клавиатуру к платформе Iskra Neo к пинам — и будем выводить нажатую клавишу в Serial-порт.
Прошейте плату скетчем, приведённым ниже.
- KB_1x4.ino
-
// подключаем библиотеку для работы с матричной клавиатурой #include <AmperkaKB.h> // создаём объект для работы с матричной клавиатурой // указывая номера arduino подключенные к шлейфу клавиатуры // начиная с первого вывода шлейфа AmperkaKB KB(4, 3, 2, 1, ); void setup() { // открываем монитор Serial порта Serial.begin(9600); // указываем тип клавиатуры KB.begin(KB1x4); // второй необзятельный параметр: // время длительного зажатия кнопки // по умолчанию 2000, изменим на 5000 мс // KB.begin(KB4x3, 5000); } void loop() { // считывание данных с клавиатуры KB.read(); // опеределяем клик кнопки if (KB.justPressed()) { // печатаем номер кнопки и её символ в последовательный порт Serial.print("Key is press "); Serial.print(KB.getNum); Serial.print(" = \""); Serial.print(KB.getChar); Serial.println("\""); } // определяем отжатие кнопки if (KB.justReleased()) { // печатаем номер кнопки и её символ в последовательный порт Serial.print("Key is release "); Serial.print(KB.getNum); Serial.print(" = \""); Serial.print(KB.getChar); Serial.println("\""); } // определяем зажатие кнопки на 3 секунды if (KB.isHold()) { // печатаем номер кнопки и её символ в последовательный порт Serial.print("Key on long press "); Serial.print(KB.getNum); Serial.print(" = \""); Serial.print(KB.getChar); Serial.println("\""); } }
Iskra JS
Подключим клавиатуру к платформе Iskra JS к пинам — и будем выводить нажатую клавишу в последовательный порт.
- keyPad1x4.js
-
require("KeyPad").connect(P4, P3, P2, P1, P0, function(e) { print("3412"e); });