Использование клавиатуры совместно с Arduino
Клавиатуры позволяют пользователям вводить данные во время выполнения программы. Данная статья показывает вам, как подключить к Arduino 12-кнопочную клавиатуру, и как использовать библиотеку Keypad.h.
Клавиатура часто требуется для обеспечения ввода данных в систему на Arduino, и мембранные клавиатуры являются экономичным решением для многих приложений. Они довольно тонкие и могут быть легко установлены везде, где они необходимы.
В данной статье мы покажем, как использовать 12-кнопочную цифровую клавиатуру, похожую на ту, что вы можете увидеть на телефоне. 12-кнопочная клавиатура имеет три столбца и четыре строки. Нажатие кнопки замыкает вывод одной из строк с выводом одного из столбцов. Из этой информации Arduino может определить, какая кнопка была нажата. Например, когда нажата кнопка 1, замкнуты столбец 1 и строка 1. Arduino определит это и введет в программу 1.
На рисунке ниже показано, как внутри клавиатуры расположены строки и столбцы.
Эксперимент
В данном эксперименте мы продемонстрируем работу с библиотекой "keypad.h
" для Arduino. Когда пользователь нажимает на кнопку на клавиатуре, программа отображает соответствующее значение в мониторе последовательного порта.
Необходимые комплектующие
- Arduino Mega 2560;
- матричная клавиатура 3x4;
- перемычки (необязательно);
- макетная плата (необязательно).
Схема соединений
Подключите клавиатуру к плате Arduino, как показано на рисунке ниже.
Код
/* Пример кода для руководства по работе с матричной клавиатурой 3x4
совместно с платой Arduino.
Данный код выводит значение нажатой на клавиатуре кнопки в
монитор последовательного порта.
*/
#include "Keypad.h"
const byte Rows= 4; // количество строк на клавиатуре, 4
const byte Cols= 3; // количество столбцов на клавиатуре, 3
// определяем массив символов соответствующий распределению кнопок на клавиатуре:
char keymap[Rows][Cols]=
{
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
// соединения клавиатуры с выводами Arduino задаются так:
byte rPins[Rows]= {A6,A5,A4,A3}; // строки с 0 по 3
byte cPins[Cols]= {A2,A1,A0}; // столбцы с 0 по 2
// команда для библиотеки клавиатуры
// инициализирует экземпляр класса Keypad
Keypad kpd= Keypad(makeKeymap(keymap), rPins, cPins, Rows, Cols);
void setup()
{
Serial.begin(9600); // инициализация монитора последовательного порта
}
// Если кнопка нажата, эта кнопка сохраняется в переменной keypressed.
// Если keypressed не равна NO_KEY, то выводим значение в последовательный порт.
void loop()
{
char keypressed = kpd.getKey();
if (keypressed != NO_KEY)
{
Serial.println(keypressed);
}
}
Заключение
Это очень простой пример, но я думаю, вы смогли увидеть, как легко получить в программе на Arduino данные ввода с клавиатуры. Вы можете использовать этот тип ввода во многих различных проектах, в том числе:
- дверной замок;
- управление ШИМ;
- будильник;
- система безопасности.
Еще один пример работы с клавиатурой можно увидеть в статье «Как сделать простой калькулятор на Arduino».