Подключение клавишной панели (клавиатуры) к Arduino Uno


В этой статье мы будем подключать клавишную панель 4x4 (16 клавиш) к плате Arduino Uno. Клавишная панель (клавиатура) – одно из самых распространенных устройств ввода информации в разнообразных электронных устройствах. Зачастую это самый простой способ обеспечить передачу каких-нибудь инструкций. В данном проекте при нажатии какой-нибудь клавиши на клавишной панели плата Arduino будет обнаруживать это нажатие и показывать эту клавишу на экране жидкокристаллического (ЖК) дисплея 16x2.

Подключение клавишной панели к Arduino Uno: внешний вид конструкции

Более подробно о принципах работы клавишной панели (с поясняющими рисунками логики ее работы) можно прочитать в статье про подключение клавишной панели к микроконтроллеру AVR.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. ЖК дисплей JHD_162ALCD (16x2) (купить на AliExpress).
  3. Клавишная панель (клавиатура) 4x4 (купить на AliExpress).
  4. Конденсатор 100 мкФ (купить на AliExpress).
  5. Резистор 1 кОм (2 шт.) (купить на AliExpress).
  6. Светодиод (купить на AliExpress).
  7. Кнопка (2 шт.).
  8. Источник питания с напряжением 5 В.

Работа схемы

Схема подключения клавишной панели к плате Arduino Uno представлена на следующем рисунке.

Схема подключения клавишной панели к Arduino UnoЖидкокристаллический (ЖК) дисплей 16x2 использует 16 контактов для своей работы в случае если нужен черный цвет. Если черный цвет не нужен, то достаточно 14 контактов. В этом случае контакты черного цвета можно либо запитать, либо оставить их как есть. То есть из 14 контактов ЖК дисплея мы имеем 8 контактов для данных (7-14 или D0-D7), 2 контакта для подачи питания (1&2 или VSS&VDD или GND&+5v), 3-й контакт для управления контрастностью (VEE) – определяет насколько "толстыми" будут выглядеть символы на экране, и 3 управляющих контакта (RS&RW&E).

В представленной схеме подключения клавишной панели к плате Arduino Uno мы использовали только два управляющих контакта ЖК дисплея – это позволяет лучше понять логику работы схемы начинающим. Контакт для управления контрастностью и READ/WRITE сравнительно редко используются и в нашем случае их можно замкнуть на землю. Это переводит ЖК дисплей в режим чтения и обеспечивает ему максимальную контрастность. Поэтому нам нужно только управлять состоянием контактов ENABLE и RS чтобы передавать символы и данные на ЖК дисплей. Более подробно об этих процессах можно прочитать в статье о подключении ЖК дисплея к плате Arduino.

В схеме необходимо сделать следующие соединения с ЖК дисплеем:
PIN1 или VSS – на землю
PIN2 или VDD или VCC – к источнику питания +5 В
PIN3 или VEE – на землю (обеспечивает наилучшую контрастность – лучше для начинающих)
PIN4 или RS (выбор регистра) – к контакту PIN8 ARDUINO UNO
PIN5 или RW (Read/Write) – на землю (переводит ЖК дисплей в режим чтения, что упрощает взаимодействие с ним для начинающих)
PIN6 или E (Enable - доступность) к контакту PIN9 ARDUINO UNO
PIN11 или D4 – к контакту PIN10 ARDUINO UNO
PIN12 или D5 – к контакту PIN11 ARDUINO UNO
PIN13 или D6 – к контакту PIN12 ARDUINO UNO
PIN14 или D7 – к контакту PIN13 ARDUINO UNO

Клавишная панель подключена к контактам 0-7 Arduino Uno.

Исходный код программы

Для взаимодействия Arduino Uno с клавишной панелью необходимо подключить библиотеку для работы с ней <Keypad.h>. Если ее нет в вашем Arduino IDE, то ее необходимо скачать с официального сайта Arduino и установить. Далее объяснены наиболее сложные участки кода программы для работы с клавишной панелью.

1. #include <Keypad.h>
2. const byte ROWS = 4; // 4 строки
3. const byte COLS = 4; // 4 столбца
// Define the Keymap (присвоим соответствующий символ каждой клавише)
1. char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'#','0','*','D'}
};
// подсоединим выводы ROW0, ROW1, ROW2 и ROW3 клавишной панели к соответствующим контактам Arduino
byte rowPins[ROWS] = { 0, 1, 2, 3 };
// подсоединим выводы COL0, COL1, COL2 и COL3 клавишной панели к соответствующим контактам Arduino
byte colPins[COLS] = { 4, 5, 6, 7 };
// Create the Keypad (создадим клавишную панель в программе)
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
char key = kpd.getKey();

Фактически, все взаимодействие программы с клавишной панелью сводится к следующей последовательности операций:

  1. Подключаем соответствующий заголовочный файл для работы с клавишной панелью.
  2. Сообщаем плате Arduino к каким ее контактам подключена клавишная панель.
  3. Записываем нажатую клавишу в память.
  4. Отображаем на экране ЖК дисплея символ соответствующий нажатой клавише.

Далее представлен полный текст программы.

#include <LiquidCrystal.h> // подключаем библиотеку для работы с ЖК дисплеем
LiquidCrystal lcd(8, 9, 10, 11, 12, 13); // контакты Arduino, к которым подключен ЖК дисплей
#include <Keypad.h> // подключаем библиотеку для работы с клавишной панелью
const byte ROWS = 4; // 4 строки
const byte COLS = 4; // 4 столбца
// Define the Keymap (присвоим соответствующий символ каждой клавише)
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'#','0','*','D'}
};
byte rowPins[ROWS] = { 0, 1, 2, 3 };
byte colPins[COLS] = { 4, 5, 6, 7 };
// Create the Keypad (создадим клавишную панель в программе)
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup()
{
 for(int k=8;k<14;k++)
 {
   pinMode(k,OUTPUT); // контакты 8-14 устанавливаем в режим работы на вывод данных
 }
 lcd.begin(16, 2); // инициализируем ЖК дисплей
}

void loop()
{
  char key = kpd.getKey(); // сохраняем нажатую клавишу в переменной символьного типа
  if (key != NO_KEY)
  {
   lcd.print(key); // показываем нажатую клавишу на ЖК дисплее
  }
}

Видео, демонстрирующее работу схемы

И можете еще посмотреть, если интересно, очень подробное обучающее видео (на английском языке) про подключение клавишной панели к Arduino Uno.

(2 голосов, оценка: 5,00 из 5)
Загрузка...
2 232 просмотров

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *