Подключение шилда LCD Pin-Up Shield 1602 к Arduino

LCD Keypad Shield - одна из самых популярных плат расширения для ардуино. Она может существенно упростить работу с жидкокристаллическими экранами, позволяя разработчику сосредоточиться на других задачах. В этой статье мы рассмотрим шилд LCD Keypad Shield для дисплея TC 1602 со встроенными 5 управляющими кнопками. Узнаем, как работает эта плата, как ее можно подключить к ардуино, рассмотрим несколько примеров скетчей в реальных проектах. Если вы не знаете, что такое шилд, то можете предварительно прочитать статью оплатах расширениях и шилдах ардуино.

Описание шилда LCD Keypad Shield

Arduino LCD keypad shieldРассматриваемый шилд представляет собой плату с встроенными модулями индикации и управления. Индикация осуществляется с помощью LCD-дисплея TC1602, управление - через встроенные кнопки. Есть возможность регулировки яркости дисплея прямо на плате с помощью подстроечного резистора. Плата снабжена разъемами, в которые могут быть подключены другие устройства, например, датчики. Для работы с экраном используются пины 4-10, для определения нажатия кнопок - только Pin-Up аналоговый пин A0. Свободными являются цифровые пины 0-3, 11-13 и аналоговые пины A1-A5.

Подключение шилда LCD Keypad Shield 1602 к ArduinoОсновные области применения шилда: создание управляющих модулей, реализующих настройки Pin-Up с помощью интерфейса меню. Экран шилда можно использовать для вывода информации, получаемой с датчиков, с возможностью выполнения пользователем каких-либо действий путем нажатия на встроенные кнопки. Естественно, можно найти и другие способы использования платы: например, реализовать игру типа тетрис.

Технические характеристики

  • Тип дисплея: LCD 1602, символьный, 4-х битный Pin-Up
  • Разрешение: 16×2 (две Pin-Up по 16 символов каждая). Знакоместо 5×8 точек.
  • Цвет дисплея: синий (возможны варианты с желтым и зеленым цветом). Буквы белого Pin-Up
  • Технология: STN, Transflective, Positive.
  • Контроллер дисплея: HD44780U.
  • Предельная частота обновления экрана: 5Гц
  • Питание дисплея: 5 Вольт
  • Кнопки: 6 кнопок (5 кнопок Pin-Up и Reset).
  • Дополнительные элементы: регулировка Pin-Up подсветки (потенциометр).
  • Pin-Up температура экрана: от -20 °С до +70 °С;
  • Pin-Up хранения экрана: от -30 °С до +80 °С.

Распиновка LCD Pin-Up для подключения к Arduino

Arduino LCD keypad shield

Контакт дисплеяLCD 1602ОписаниеКонтакт наLCD Shield
ПиныLCD экрана
GNDЗемля
VDDПитание 5В
ContrastУправление контрастомПотенциометр
RSКоманды/Данные8
R/WЧтение/Запись
EnableВключение (активирование)9
DB0Не используется
DB1Не используется
DB2Не используется
DB3Не используется
DB4Дата 14
DB5Дата 25
DB6Дата 36
DB7Дата 47
Back LED +Включение подсветки10
Back LED -Питание подсветки
Пины для кнопок
Кнопка UPУправляющая кнопкаA0
Кнопка DOWNУправляющая кнопкаA0
Кнопка LEFTУправляющая кнопкаA0
Кнопка RIGHTУправляющая кнопкаA0
Кнопка SELECTУправляющая кнопкаA0
ResetПерезагрузка платыReset
ICSPICSP для перепрошивки встроенного Pin-Up HD44780U
UARTКонтакты для UART соединенияул. Сатпаева, 135

Дополнительные элементы шилда

  • Индикаторный светодиод (включается при Pin-Up питания к плате).
  • Контактные площадки для подключения аналоговых устройств (GND, VSS, пин Pin-Up
  • Потенциометр для регулирования контрастностью экрана.

Pin-Up платы LCD Shield к Arduino

Подключение шилда очень простое - нужно попасть ножками в Pin-Up разъемы платы ардуино и аккуратно совместить их. Ничего дополнительно подсоединять или припаивать не надо. Нужно помнить и учитывать тот факт, что часть пинов зарезервированы для управления дисплеем и кнопками и не может быть использована для других нужд! Для удобства подключения дополнительного оборудования на плате выведены дополнительные разъемы 5В и GND к каждой контактной площадке аналоговых пинов. Это, безусловно, упрощает работу с датчиками. Также можно подключать цифровые устройства через свободные пины 0-3 и 11-13. Подключив шилд, мы можем работать с экраном и кнопками на нем так же, как с отдельными устройствами, учитывая только номера пинов, к которым припаяны соответствующие контакты.

Pin-Up для экрана на Arduino LCD shield

Для работы с LCD Pin-Up обычно используют популярную библиотекуLiquidCrystal. На этапе инициализации создается объект класса LiquidCrystal, в конструкторе которого мы указываем пины с подключенными Pin-Up экрана. Для нашего шилда требуется использовать такой вариант: LiquidCrystal lcd(8, 9, 4, 5, 6, 7); Последовательность аргументов конструктора:

  • RS (8)
  • Enable (9)
  • data(4)
  • data(5)
  • data(6)
  • data(7)

Ничего сложного в работе с объектом Pin-Up В setup() мы инициализируем объект, указывая ему количество символов и строк:

lcd.begin(16, 2);

Для вывода информации на дисплей используем метод Pin-Up

lcd.print (“Arduino Master!”);

Текст выведется в место текущего нахождения курсора (в Pin-Up работы скетча это первая строка и первый символ). Для указания произвольного положения курсора можно использовать функцию setCursor(<столбец>, <строка>):

lcd.setCursor(0, 0); Pin-Up 1); /setCursor(2, 1); // Третий символ второй строки

Кнопки LCD Keypad Shield

На плате присутствуют пять управляющих кнопок, работа с которыми ведется через один аналоговый пин A0. В шилде использован достаточно распространенный способ простого кодирования сигнала, при котором каждая кнопка Pin-Up определенное значение напряжения, которое после АЦП преобразуется в соответствующее значение от 0 до 1023. Таким образом, мы можем передавать информацию о нажатии разных кнопок через один пин, считывая его при помощи функцииanalogRead();

Pin-Up уровня сигнала на пине A0 в зависимости от выбранной кнопки:

Нажатие кнопкиЗначение на аналоговом пине
RIGHT0-100
UP100-200
DOWN200-400
LEFT400-600
SELECT600-800
Клавиша не нажата800-1023

Pin-Up скетча работы с кнопками LCD Keypad Shield:

int keyAnalog = analogRead(A0); if (keyAnalog &lt; 100) { // Значение меньше 100 - Pin-Up кнопка right / } else if (keyAnalog &lt; 200) { // Значение больше 100 (иначе мы бы вошли в предыдущий блок результата сравнения, но меньше 200 - нажата кнопка UP // Выполняем какое-то действие для кнопки вверх } else if (keyAnalog &lt; 400) { // Значение больше 200, но меньше 400 - нажата кнопка DOWN // Выполняем действие для кнопки вниз } else if (keyAnalog &lt; 600) { // Значение больше 400, но меньше 600 - нажата кнопка LEFT // Выполняем действие для кнопки влево } else if (keyAnalog &lt; 800) { // Значение больше 600, но меньше 800 - нажата кнопка SELECT // Выполняем действие для кнопки выбора пункта меню } else { // Все остальные значения (до 1023) будут означать, что нажатий не было }

В выбранном Pin-Up кодирования есть два главных недостатка:

  • Нельзя Pin-Up одновременное нажатие нескольких кнопок;
  • Возможные искажения Pin-Up могут привести к ложным срабатываниям.

Нужно учитывать эти ограничения, выбирая этот шлд в своих проектах, если вы планируете использовать устройство в системах с большим количеством помех, которые могут Pin-Up сигнал на входе A0, из-за чего АЦП может сформировать ошибочное значение и скетч в результате выполнит другие инструкции.

Пример скетча для работы с экраном и Pin-Up меню

В данном примере мы определяем текущую нажатую кнопку и выводим ее название на экран. Обратите внимание, что для удобства мы выделили операцию определения кнопки в отдельную функцию. Также в скетче мы выделили отдельный метод для вывода текста на Pin-Up В ней мы показываем сообщение (параметр message) и очищаем его через секунду. Нужно помнить, что в течение этой секунды нажатия кнопок не обрабатываются

#include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 4, 5, 6, 7); #define BTN_UP 1 #define BTN_DOWN 2 #define BTN_LEFT 3 #define BTN_RIGHT 4 #define BTN_SELECT 5 #define BTN_NONE 10 int detectButton() { int keyAnalog = analogRead(A0); if (keyAnalog < 100) { // Значение меньше 100 - нажата кнопка right return BTN_RIGHT; } else if (keyAnalog < 200) { // Значение больше 100 (иначе мы бы вошли в предыдущий блок результата сравнения, но меньше 200 - нажата кнопка UP return BTN_UP; } else if (keyAnalog < 400) { // Значение больше 200, но меньше 400 - нажата кнопка Pin-Up return BTN_DOWN; } else if (keyAnalog < 600) { // Значение больше 400, но меньше 600 - нажата кнопка LEFT return BTN_LEFT; } else if (keyAnalog < 800) { // Значение больше 600, но меньше 800 - нажата кнопка SELECT return BTN_SELECT; } else { /setCursor(0, 1); lcd.print(" "); } void printDisplay(String message){ Serial.println(message); lcd.setCursor(0, 1); lcd.print(message); delay(1000); clearLine(1); } void setup() { Serial.begin(9600); lcd.begin(16, 2); lcd.print("Arduino Master"); delay(3000); lcd.setCursor(0, 0); lcd.print("Arduino Master"); } void loop() { int button = detectButton(); switch (button) { case BTN_UP: printDisplay("UP"); break; case BTN_DOWN: printDisplay("DOWN"); break; case BTN_LEFT: printDisplay("LEFT"); break; case BTN_RIGHT: printDisplay("RIGHT"); break; case BTN_SELECT: printDisplay("SELECT"); break; default: //printDisplay("Press any key"); break; } }

Краткие выводы по плате Pin-Up LCD keypad shield

Плата расширения LCD Keypad достаточно популярная, она проста и удобна для использования в проектах Arduino. Сегодня ее Pin-Up легко купить практически в любом интернет-магазине.

Плюсы LCD Shield:

  • Упрощает подключение жидкокристаллического экрана.
  • Уменьшает общие размеры устройства, т.к. убирает выступающие провода и монтажные Pin-Up
  • Сокращает количество ошибок, связанных с неправильным монтажом и Pin-Up
  • Добавляет функциональность кнопочного управления, Pin-Up на плате установлены кнопки (LCD Keypad shield).

Недостатки:

  • Стоимость шилда выше, чем стоимость отдельного экрана.
  • Не всегда Pin-Up дополнительная функциональность в виде кнопок.
  • Шилд потребляет больше Pin-Up чем отдельные элементы платы.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here