LCD Keypad Shield — одна из самых популярных плат расширения для ардуино. Она может существенно упростить работу с жидкокристаллическими экранами, позволяя разработчику сосредоточиться на других задачах. В этой статье мы рассмотрим шилд LCD Keypad Shield для дисплея TC 1602 со встроенными 5 управляющими кнопками. Узнаем, как работает эта плата, как ее можно подключить к ардуино, рассмотрим несколько примеров скетчей в реальных проектах.
Рассматриваемый шилд представляет собой плату с встроенными модулями индикации и управления. Индикация осуществляется с помощью LCD-дисплея TC1602, управление – через встроенные кнопки. Есть возможность регулировки яркости дисплея прямо на плате с помощью подстроечного резистора. Плата снабжена разъемами, в которые могут быть подключены другие устройства, например, датчики. Для работы с экраном используются пины 4-10, для определения нажатия кнопок — только один аналоговый пин A0. Свободными являются цифровые пины 0-3, 11-13 и аналоговые пины A1-A5.
Основные области применения шилда: создание управляющих модулей, реализующих настройки устройства с помощью интерфейса меню. Экран шилда можно использовать для вывода информации, получаемой с датчиков, с возможностью выполнения пользователем каких-либо действий путем нажатия на встроенные кнопки. Естественно, можно найти и другие способы использования платы: например, реализовать игру типа тетрис.
Технические характеристики
- Тип дисплея: LCD 1602, символьный, 4-х битный режим.
- Разрешение: 16×2 (две строки по 16 символов каждая). Знакоместо 5×8 точек.
- Цвет дисплея: синий (возможны варианты с желтым и зеленым цветом). Буквы белого цвета.
- Технология: STN, Transflective, Positive.
- Контроллер дисплея: HD44780U.
- Предельная частота обновления экрана: 5Гц
- Питание дисплея: 5 Вольт
- Кнопки: 6 кнопок (5 кнопок управления и Reset).
- Дополнительные элементы: регулировка яркости подсветки (потенциометр).
- Рабочая температура экрана: от -20 °С до +70 °С;
- Температура хранения экрана: от -30 °С до +80 °С.
Распиновка LCD shield для подключения к Arduino
Контакт дисплея LCD 1602 | Описание | Контакт на LCD Shield |
Пины LCD экрана | ||
GND | Земля | |
VDD | Питание 5В | |
Contrast | Управление контрастом | Потенциометр |
RS | Команды/Данные | 8 |
R/W | Чтение/Запись | |
Enable | Включение (активирование) | 9 |
DB0 | Не используется | |
DB1 | Не используется | |
DB2 | Не используется | |
DB3 | Не используется | |
DB4 | Дата 1 | 4 |
DB5 | Дата 2 | 5 |
DB6 | Дата 3 | 6 |
DB7 | Дата 4 | 7 |
Back LED + | Включение подсветки | 10 |
Back LED — | Питание подсветки | |
Пины для кнопок | ||
Кнопка UP | Управляющая кнопка | A0 |
Кнопка DOWN | Управляющая кнопка | A0 |
Кнопка LEFT | Управляющая кнопка | A0 |
Кнопка RIGHT | Управляющая кнопка | A0 |
Кнопка SELECT | Управляющая кнопка | A0 |
Reset | Перезагрузка платы | Reset |
ICSP | ICSP для перепрошивки встроенного микроконтроллера HD44780U | |
UART | Контакты для UART соединения | 0, 1 |
Дополнительные элементы шилда
- Индикаторный светодиод (включается при подключении питания к плате).
- Контактные площадки для подключения аналоговых устройств (GND, VSS, пин данных).
- Потенциометр для регулирования контрастностью экрана.
Подключение платы LCD Shield к Arduino
Подключение шилда очень простое – нужно попасть ножками в соответствующие разъемы платы ардуино и аккуратно совместить их. Ничего дополнительно подсоединять или припаивать не надо. Нужно помнить и учитывать тот факт, что часть пинов зарезервированы для управления дисплеем и кнопками и не может быть использована для других нужд! Для удобства подключения дополнительного оборудования на плате выведены дополнительные разъемы 5В и GND к каждой контактной площадке аналоговых пинов. Это, безусловно, упрощает работу с датчиками. Также можно подключать цифровые устройства через свободные пины 0-3 и 11-13. Подключив шилд, мы можем работать с экраном и кнопками на нем так же, как с отдельными устройствами, учитывая только номера пинов, к которым припаяны соответствующие контакты.
Скетч для экрана на Arduino LCD shield
Для работы с LCD экранами обычно используют популярную библиотеку LiquidCrystal. На этапе инициализации создается объект класса LiquidCrystal, в конструкторе которого мы указываем пины с подключенными контактами экрана. Для нашего шилда требуется использовать такой вариант: LiquidCrystal lcd(8, 9, 4, 5, 6, 7).
Последовательность аргументов конструктора:
- RS (8)
- Enable (9)
- data(4)
- data(5)
- data(6)
- data(7)
Ничего сложного в работе с объектом нет. В setup() мы инициализируем объект, указывая ему количество символов и строк:
1 | lcd.begin(16, 2); |
Для вывода информации на дисплей используем метод print():
1 | lcd.print (“Arduino Master!”); |
Текст выведется в место текущего нахождения курсора (в начале работы скетча это первая строка и первый символ). Для указания произвольного положения курсора можно использовать функцию setCursor(<столбец>, <строка>):
1 2 3 4 5 | lcd.setCursor(0, 0); // Первый символ первой строки lcd.setCursor(0, 1); // Первый символ второй строки lcd.setCursor(2, 1); // Третий символ второй строки |
На плате присутствуют пять управляющих кнопок, работа с которыми ведется через один аналоговый пин A0. В шилде использован достаточно распространенный способ простого кодирования сигнала, при котором каждая кнопка формирует определенное значение напряжения, которое после АЦП преобразуется в соответствующее значение от 0 до 1023. Таким образом, мы можем передавать информацию о нажатии разных кнопок через один пин, считывая его при помощи функции analogRead().
Значения уровня сигнала на пине A0 в зависимости от выбранной кнопки:
Нажатие кнопки | Значение на аналоговом пине |
RIGHT | 0-100 |
UP | 100-200 |
DOWN | 200-400 |
LEFT | 400-600 |
SELECT | 600-800 |
Клавиша не нажата | 800-1023 |
Пример скетча работы с кнопками LCD Keypad Shield:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | int keyAnalog = analogRead(A0); if (keyAnalog < 100) { // Значение меньше 100 – нажата кнопка right // Выполняем какое-то действие для кнопки вправо. } else if (keyAnalog < 200) { // Значение больше 100 (иначе мы бы вошли в предыдущий блок // результата сравнения, но меньше 200 – нажата кнопка UP // Выполняем какое-то действие для кнопки вверх } else if (keyAnalog < 400) { // Значение больше 200, но меньше 400 – нажата кнопка DOWN // Выполняем действие для кнопки вниз } else if (keyAnalog < 600) { // Значение больше 400, но меньше 600 – нажата кнопка LEFT // Выполняем действие для кнопки влево } else if (keyAnalog < 800) { // Значение больше 600, но меньше 800 – нажата кнопка SELECT // Выполняем действие для кнопки выбора пункта меню } else { // Все остальные значения (до 1023) будут означать, что нажатий // не было } |
Оригинал статьи на сайте ArduinoMaster.Ru.
Купить LCD Keypad Shield в интернет-магазине Arduinka.Pro