Skip to contentSkip to main navigation Skip to footer

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’ ломал отображение кода на сайте =)

  • Хотелось бы увидеть код работы с клавиатурой без библиотек, но увы… Везде одно и то – же: подключаем библиотеку и радуемся жизни.

    • Подаешь напряжение на столбики по очереди, затем считываешь напряжение на строчках и определяешь в каком столбике и какой строчке нажата кнопка, все просто, я использовал прерывание для того что бы не вертеть проверку кнопок в лупе

    • Открываешь библиотеку, там весь код предельно понятный. Городить такое в основной программе – неправильно, обработку клавиатуры в любом случае будет удобно и правильно вынести в класс, читай – в библиотеку

Оставить комментарий

Ваш адрес email не будет опубликован.