Клавиатура. Урок 22. Ардуино

keypad
Подключение клавиатуры к ардуино
Подключение клавиатуры к ардуино

Привет! Сегодня посмотрим как с Ардуино работает матричная клавиатура. Подключим клавиатуру, напишем небольшую программу и выведем данные на экран.

В прошлый раз мы рассмотрели подключение дисплея для вывода информации. Посмотрите тот пост если уже забыли или пропустили. Сегодня мы используем экран в новом уроке.

Для того, чтобы выполнить этот урок нам понадобиться.

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • 0.91 Oled дисплей
  • Матричная клавиатура 4 на 4 кнопки
  • Кабель USB

Клавиатура

Матричная клавиатура — это набор кнопок. Подключается она к 8 контактам Ардуино. Каждый контакт считывает значения с определенных строк и столбцов. Используем цифровые контакты с 3 по 10.

Принципиальная схема подключения клавиатуры
Принципиальная схема подключения клавиатуры

Также нам нужна библиотека для использования клавиатуры. Найти ее можно на странице разработчика на официальном сайте arduino.cc

Откроем пример HelloKeypad.ino из библиотеки. Нам придется его немного изменить. Так как наша клавиатура имеет 4 строки и 4 столбца.

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
  {'D','#','0','*'},
  {'C','9','8','7'},
  {'B','6','5','4'},
  {'A','3','2','1'}
};
byte rowPins[ROWS] = {6, 5, 4, 3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {10, 9, 8, 7}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char key = keypad.getKey();
  
  if (key){
    Serial.println(key);
  }
}

Не забудьте поставить 9600 бод в мониторе последовательного порта.

После загрузки кода на плату в мониторе можно увидеть нажатые клавиши.

Вывод с клавиатуры в монитор последовательного порта
Вывод с клавиатуры в монитор последовательного порта

Экран

Теперь добавим в схему экран и будем выводить символы на него.

Принципиальная схема подключения клавиатуры и дисплея
Принципиальная схема подключения клавиатуры и дисплея

Чтобы символы отображались корректно используем функцию print из класса u8g2. Подробнее про доступные функции этого класса можно прочитать на странице в github.

void loop(){
  char key = keypad.getKey();
  
  if (key){
   u8g2.clearBuffer();
   u8g2.setFont(u8g2_font_ncenB14_tr);
   u8g2.setCursor(0, 15);
   u8g2.print(key);
   u8g2.sendBuffer();
   Serial.println(key);
  }
}
Вывод информации с клавиатуры на экран
Вывод информации с клавиатуры на экран

Полный текст программы

#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>
#include <Keypad.h>

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0);

const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
  {'D','#','0','*'},
  {'C','9','8','7'},
  {'B','6','5','4'},
  {'A','3','2','1'}
};
byte rowPins[ROWS] = {6, 5, 4, 3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {10, 9, 8, 7}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
  u8g2.begin();
}
  
void loop(){
  char key = keypad.getKey();
  
  if (key){
   u8g2.clearBuffer();
   u8g2.setFont(u8g2_font_ncenB14_tr);
   u8g2.setCursor(0, 15);
   u8g2.print(key);
   u8g2.sendBuffer();
   Serial.println(key);
  }
}

Заключение

Таким образом мы можем подключить к нашим проектам на Ардуино клавиатуру и выводить информацию с нее на экран. Естественно, существует очень много вариантов проектов и устройств для реализации такой схемы. Мы попробуем использовать ее в будущем.

Где купить

Добавить комментарий

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