lcd keypad shield 1602 скетч меню

Подключение LCD Keypad Shield к Arduino

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч менюСегодня я решил описать процесс подключения к контроллеру Arduino платы LCD Keypad Shield и пример работы с ним.

Разработчики этого шилда очень грамотно поступили, подключив все кнопки через резисторы разного сопротивления к аналоговому пину. Это позволило сэкономить 5 дискретных пинов для других нужд.

Схема LCD Keypad Shield

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч меню

Используемые пины

Проверочный скетч для LCD Keypad Shield

// include the library code:
#include

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() <
// set up the LCD’s number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(0,0);
lcd.print(«LCD Key Shield»);
lcd.setCursor(0,1);
lcd.print(«Press Key:»);
>

void loop() <
int x;
x = analogRead (0);
lcd.setCursor(10,1);
if (x lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч меню

Источник

arduinoLab

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч меню

LCD Keypad Shield для Arduino

Популярная плата расширения для Arduino, с не менее популярным текстовым экраном WH1602A и несколькими кнопками.

Характеристики:

Подключение:

Совместим со всеми arduino совместимыми платами,которые имеют стандартное для arduino подключение шилдов, за одним небольшим исключением, разъем ICSP на шилде не дублирует ICSP платы, а соединен с 11, 12 и 13 цифровыми выходами, работать он будет с платами серии UNO.

Резистивная клавиатура подключена к аналоговому входу А0, клавиатура представляет собой делитель напряжения с группой резисторов, сопротивление делителя и напряжение на входе А0 зависит от нажатой кнопки. Более подробно на схеме ниже.

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч менюРегулировка яркости подсветки экрана осуществляется ШИМ сигналом с 10 цифрового выхода ардуино, также можно полностью выключить подсветку подав на 10 выход логическую единицу.

Все задействованные выходы, включая выходы LCD экрана указаны в таблице ниже.

ПинФункция
A0Резистивная клавиатура, кнопки select, up, right, down and left
D4LCD 1602 — DB4
D5LCD 1602 — DB5
D6LCD 1602 — DB6
D7LCD 1602 — DB7
D8LCD 1602 — RS
D9LCD 1602 — Enable
D10Управление подсветкой LCD 1602

Основные элементы шилда:

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч меню

Дополнительные штырьки для подключения периферии, обычно не распаяны.

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч меню

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч меню

Пример для работы с шилдом от производителя:

Источник

Подключение модуля LCD Keypad Shield 1602 к Arduino

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

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

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

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

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

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч меню

Контакт дисплея 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 для перепрошивки встроенного микроконтроллера HD44780U
UARTКонтакты для UART соединения0, 1

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

Подключение платы LCD Shield к Arduino

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

Скетч для экрана на Arduino LCD shield

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

Последовательность аргументов конструктора:

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

Источник

Arduino.ru

Меню на LCD Keypad Shield

Точнее даже не 1-2 минуты, а 20 секунд постоянно, а потом скидываеь, как будето происходит рестарт.

Еще один вопрос: 3) Как можно вывести примерно такую конструкцию, вроде в c++ так работает, а тут нет:

Ну и еще один: 4) Можно ли среду ардуины подключить к MSVSC++? Существую ли отладчики, для прогонки кода ардуины на выявление косяков?

> 1) Почему выводит вместо «NaNaNaNaNa» 10 первых ячеек, весь дисплей заполняется этими буквами?

посмотрите на функцию printTimeToLCD(), там же этой проблемы нет. Сыграйте в игру «найди 10-ть отличий». Разберите построчно что происходит в этой функции.

Кстати ответ на этот вопрос поможет вам и с

> Как можно вывести примерно такую конструкцию

Только тут как раз наоборот нужно воспользоватся этим эффектом, а не устранять его.

> вроде в c++ так работает,

Нет у нас тут конкатенации сишных строк.

P.S. Отформатируйте код отступами, невозможно же читать где какой if начался, где закончился. Ну хотя-бы ctrl+T нажмите в ArdinoIDE

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

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

> А вот почему выкидывает обратно на часы

А хрен его знает. Может действитель перегружается.

Добавте в loop() что-то такое:

Можете еще попробовать

закоментить. возможно этот беконечный print сносит башню библиотеке, она где-то выскакивает за границу памяти своей и перетирает вам значение key_menu

Прикол получается в том, что добавив действие в loop (например, ваш счетчик выше) из меню перестает выкидывать. Возможно дело в том, что если в loop ничего не меняется, ардуина думает что повисла и перезагружается? Хотя бред..

Вот таким образом из меню не выкидывает, а надпись чуть заметно мерцает (добавил lcd.clear()):

А вот если без вашего кода, которые вызывает большую задержку (или я хз), надпись начинает мерцать очень сильно (что понятно из-за lcd.clear) и выкидыват на время:

Если например добавить задержку delay(100), то мерцание становится не таким сильным (почти как в первом случае, еле заметное), но из меню попрежнему выкидывает спустя 25 секунд.

надпись начинает мерцать очень сильно (что понятно из-за lcd.clear) и выкидыват на время:

Дак я например могу вообще заменять clear на допустим lcd.setCursor(0,0). Мерцать перестает. А вот из меню выкидыват точно также.

смысл лупить в индикатор одно и то же значение?

В этом смысла нету, но как иначе? Мне надо выводить на экран строки меню и ждать нжатий кнопки.

Дак я например могу вообще заменять clear на допустим lcd.setCursor(0,0). Мерцать перестает. А вот из меню выкидыват точно также.

В этом смысла нету, но как иначе? Мне надо выводить на экран строки меню и ждать нжатий кнопки.

Можно сказать хочу сделать часы с настройками. По дефолту на экране отображается только время. При нажатии на кнопку Select открывается текстовое меню. В нём хочу переключаться между пунктами и заходить в нужный.. Это цель.

Время выводит нормльно. Когда я жму кнопку Select меня как бы забрасывает в меню (в примере выше, просто на текстовое поле «Na..»), дальше мне нужно ждать дальнейших нажатий клавишь, попросту ничего не делать. Дак вот, отсюда меня и выкидывает обратно на время (по видемому рестартится ардуина).

А существуют ли функции ожидания ответа (нажатия клавиши)? т.е. цикл останавливается и ждет пока на пин придет заданное значение.

Возможно с помощью прерываний это делается?

Кнопы DOWN, UP и прочие навигационные изменять переменную, допустим, «menu» с «0» до «5»(если у вас шесть строк меню)

Это типо концептуальный набросок логики.

Вопрос не в логике (с ней думаю сам разберусь), а совсем в другом. Посмотрите повнимательнее.

А существуют ли функции ожидания ответа (нажатия клавиши)? т.е. цикл останавливается и ждет пока на пин придет заданное значение.

*Лешак раскритикует, но я это так понимаю.

> *Лешак раскритикует, но я это так понимаю.

> А существуют ли функции ожидания ответа (нажатия клавиши)?

Не существует. Зато существует прикрепленная ветка Работа с кнопками. В помощь новичку.

> А вот если без вашего кода, которые вызывает большую задержку

Не вызывает он большой задержки. Ну несколько микросекунд на вызов millis() и раз в секунду на выполенение println

Можете попробовыть выкинуть мой код еще сделать lcd.print(«RESET»); delaa(2000) в самом setup(). Тогда никаких «задержке» не будет, зато будет видно когда контроллер перегрузился.

> Можно сказать хочу сделать часы с настройками.

Хе-хе. я тоже тем же занимаюсь. с описанием процесса в блоге. Только ОЧЕНЬ медленно. Только по выходным, да и то не каждым удается продвинутся по чуть-чуть. 🙁 Мне вообще-то даже что-то знакомое/родное почудилось в функции printTimeToLCD() 😉

Вот кусок дальнейшей моей логики прикинул:

Имелось ввиду вот так:

Точно также рестарт происходит, раз в 20-30 секунд.. я так понимаю от бездействия..

Так и есть, у меня второй день знакомства с ардуиной пошел)

>Имелось ввиду вот так:

Нет. Смысл в таком коде? Что вы сделали: при включении задержку (вместо того что-бы запустить библиотеку). Вывели надпись. и все.

Какую дополнительную информацию, для размышления вы получили в результате этого кода? А никакой.

Что всётаки ардуина точно также рестартится, если ничего не происходит в лупе.

А вот как решить такую проблему, я хз.

Точно также рестарт происходит, раз в 20-30 секунд.. я так понимаю от бездействия..

Так и есть, у меня второй день знакомства с ардуиной пошел)

Ну значит «я не ошибся» 🙂 Но явно «чуток под себя подпилии» ее 😉

Я тоже буду делать (возможно сегодня) выставление времени с помощью кнопок.

Что всётаки ардуина точно также рестартится, если ничего не происходит в лупе.

А вот как решить такую проблему, я хз.

Учитывая что «рестартится» вы диагностировали не верно. Сделайте две вещи:

1. Дайте код с моей добавкой которую вы запускали
2. Постарайтесь детально описать «что вы видите/делаете»: «вывелась надпись. повисела 2 сек. исчезла. нажал кнопку. увидел то-то. через какое-то время. увидел то-то. «.

Постарайтесь ничего не упускать, типа «открыл сериал монитор» и т.п.

Будет пропадать надпись на 2 секунды)) она это и делает.

3) Жду 20-30 сек и рестарт происходит (на время выкидывает)

Кароче, рестарт происходит даже когда время на экране идет.. не заходя в меню..

А вот при просмотре порта перезагрузка не происходит (об этом я уже писал выше):

Ахаха, да просто не допонимаем друг друга. Залей скетч этот и посмотри что будет.

ps: в 17 посте просмотрел строчку lcd.clear().. но даже так видно будет там..

Ахаха, да просто не допонимаем друг друга. Залей скетч этот и посмотри что будет.

Ну так это же еще модуль часов нужно подключать. лениво. эх, ну ладно.

Залил. Вообще в меню не выходит. Как выяснилось неправильно детектится кнопка SELECT. Опознается как LEFT.

Кароче, я вроде понял в чём у меня баг был. В питании, походу не хватает от usb. От внешнего блока запитал и перестало ресетится. Так что надо взять на заметку это дело.

Вообщем дайте не свою умозаключение «происходит рестарт», а симптомы дайте (у меня они не воспроизводятся).

Происходит у вас повторый вывод RST перед тем как «выкидывает на время» или нет?

100% это были рестарты и на 90% уверен что из-за питания. Т.к. переключил на чуть мощнее блок, чем usb и всё гладко. Так что вопрос снимается. Думаю стоит взять это на заметку, кто собирается работать на этом шилде.

Еслиб можно было залить видео для примера, показал бы.

Что там такого с плывущими параметрами интересно?

Что там такого с плывущими параметрами интересно?

Ну вот набросал часть меню, еще таймер доделать надо.. Жду советов, багов..

ps: кнопки конечно не очень мягко говоря, поэтому приходится нажимать четко, не торопясь.

Рулетка какая-то получается с кнопками на analogRead.

Ведь кнопка при таком подключении может отработать все значения в диапазоне подтяжки, заставляя срабатывать другие кнопки, попадающие в этот диапазон. даже, если считать, что ничего не плывёт.

Просто из-за неидеальности механического контакта, т.е.:

*может чего не понимаю, но не могу себе представить мгновенной телепортации из adc_key_in > 1000 в adc_key_in

*может чего не понимаю, но не могу себе представить мгновенной телепортации из adc_key_in > 1000 в adc_key_in

Как выяснилось неправильно детектится кнопка SELECT. Опознается как LEFT.

Кстати, возможно будет интерестно. Я тут нагрофоманил как эти кнопки работают, почему именно такие цифры в коде Леший в мире Ардуины: Читаем аналоговые кнопки. Часть 1, свои танцы с выяснением какая версия шилда, ну и описание альтернативного подхода к чтению этих кнопок. Не как «в примере от производителя», а максимально близко к тому как мы читаем обычные цифровые кнопки с помощью digitalRead()

Источник

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

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

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

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

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч менюОсновные области применения шилда: создание управляющих модулей, реализующих настройки устройства с помощью интерфейса меню. Экран шилда можно использовать для вывода информации, получаемой с датчиков, с возможностью выполнения пользователем каких-либо действий путем нажатия на встроенные кнопки. Естественно, можно найти и другие способы использования платы: например, реализовать игру типа тетрис.

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

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

lcd keypad shield 1602 скетч меню. Смотреть фото lcd keypad shield 1602 скетч меню. Смотреть картинку lcd keypad shield 1602 скетч меню. Картинка про lcd keypad shield 1602 скетч меню. Фото lcd keypad shield 1602 скетч меню

Контакт дисплея 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 для перепрошивки встроенного микроконтроллера HD44780U
UARTКонтакты для UART соединения0, 1

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

Подключение платы LCD Shield к Arduino

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

Скетч для экрана на Arduino LCD shield

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

Для вывода информации на дисплей используем метод print():

Кнопки LCD Keypad Shield

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

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

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

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

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

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

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

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

Краткие выводы по плате расширения LCD keypad shield

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

Источник

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

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