
Скачать библиотеку для работы с клавиатурой 4 на 4 можно по ссылке с нашего сайта.
Как установить библиотеку arduino вы можете прочитать здесь.
Для того что бы воспользоваться установленной библиотекой в начале скетча пропишите следующую директиву:
#include <Keypad.h>
Далее необходимо воспользоваться конструктором библиотеки:
Keypad(makeKeymap(userKeymap), row[], col[], rows, cols)
const byte rows = 4; //четыре строки const byte cols = 3; //три столбца char keys[rows][cols] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'#','0','*'} }; byte rowPins[rows] = {5, 4, 3, 2}; //пины подключенных строк клавиатуры byte colPins[cols] = {8, 7, 6}; //пины подключенных столбцов клавиатуры Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, rows, cols );
Данный пример создает экземпляр класса Keypad, который работает с клавиатурой 4 на 4, которая подключена к контактам 5, 4, 3, 2 в качестве контактов строки и 8, 7, 6 в качестве контактов столбца. Данная клавиатура состоит из 4 строк и 3 столбцов, что дает 12 клавиш.
Описание функций библиотеки
void begin(makeKeymap(userKeymap))
Данная функция инициализирует внутреннюю карту ключей (клавиш), переданную массивом userKeymap
.
[См. Файл ⇒ Примеры ⇒ Keypad ⇒ CustomKeypad]
char waitForKey()
Эта функция в бесконечном цикле ждет нажатия какой либо клавиши.
Внимание! Во время использования данной функции, весь остальной пользовательский код блокируется до момента нажатия какой либо клавиши. Простыми словами, в программе перестанут мигать светодиоды, обновление экрана также будет приостановлено. Только прерывания будут работать в штатном режиме.
char getKey()
Возвращает нажатую клавишу, если она есть. Эта функция не блокируется.
KeyState getState()
Возвращает текущее состояние любого из ключей. Четыре состояния: IDLE, PRESSED, RELEASED и HOLD.
boolean keyStateChanged()
Новая функция в версии 2.0: Позволяет узнать, когда ключ изменился из одного состояния в другое. Например, вместо того, чтобы просто проверять каждую клавишу, вы можете проверить ее, когда она была нажата.
setHoldTime(unsigned int time)
Устанавливает количество миллисекунд, которые необходимо удерживать кнопку в нажатом состоянии, чтобы состояние изменилось на HOLD.
setDebounceTime(unsigned int time)
Устанавливает количество миллисекунд, в течение которых клавиатура будет ждать, пока не примет следующее нажатие клавиши. Это метод устранения дребезга с «временной задержкой».
addEventListener(keypadEvent)
Инициирует событие (вызов переданной функции keypadEvent), если нажата кнопка на клавиатуре. Вы можете загрузить пример в Arduino IDE.
[См. Файл ⇒ Примеры ⇒ Keypad ⇒ KeypadEvent]
Часто задаваемые вопросы
Как использовать больше одной клавиатуры?
Библиотека клавиатуры это класс. Поэтому, чтобы использовать в приложении больше одной клавиатуры, вы должны создать экземпляр класса для каждой из них, указав для каждого экземпляра контакты к которым подключена вторая клавиатура.
Как использовать функцию setDebounceTime(unsigned int time)?
В Arduino IDE откройте Файл ⇒ Примеры ⇒ Keypad ⇒ DynamicKeypad, найдите setup()
и там вы увидите:
void setup() { Serial.begin(9600); digitalWrite(ledPin, HIGH); // Включаем светодиод. keypad.addEventListener(keypadEvent); // Добавляем событие keypad.setHoldTime(500); // По умолчанию 1000 мс keypad.setDebounceTime(250); // По умолчанию 50 мс }
Этот пример показывает, что время проверки дребезга дает возможность нажимать одну клавишу каждые 250 миллисекунд. Если в течение этого промежутка времени пользователь нажимает несколько раз клавишу, то эти нажатия просто игнорируются.