Использование клавиатуры совместно с Arduino

Добавлено 19 ноября 2016 в 10:25

Клавиатуры позволяют пользователям вводить данные во время выполнения программы. Данная статья показывает вам, как подключить к Arduino 12-кнопочную клавиатуру, и как использовать библиотеку Keypad.h.

Клавиатура часто требуется для обеспечения ввода данных в систему на Arduino, и мембранные клавиатуры являются экономичным решением для многих приложений. Они довольно тонкие и могут быть легко установлены везде, где они необходимы.

В данной статье мы покажем, как использовать 12-кнопочную цифровую клавиатуру, похожую на ту, что вы можете увидеть на телефоне. 12-кнопочная клавиатура имеет три столбца и четыре строки. Нажатие кнопки замыкает вывод одной из строк с выводом одного из столбцов. Из этой информации Arduino может определить, какая кнопка была нажата. Например, когда нажата кнопка 1, замкнуты столбец 1 и строка 1. Arduino определит это и введет в программу 1.

На рисунке ниже показано, как внутри клавиатуры расположены строки и столбцы.

Матричная клавиатура
Матричная клавиатура

Эксперимент

В данном эксперименте мы продемонстрируем работу с библиотекой "keypad.h" для Arduino. Когда пользователь нажимает на кнопку на клавиатуре, программа отображает соответствующее значение в мониторе последовательного порта.

Необходимые комплектующие

Схема соединений

Подключите клавиатуру к плате Arduino, как показано на рисунке ниже.

Схема подключения клавиатуры к Arduino
Схема подключения клавиатуры к 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».

Теги

ArduinoКлавиатура

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.