" title="Написать письмо">Написать письмо

Статистика

Пользователи : 1
Статьи : 1933
Просмотры материалов : 7031925
 
Подключение ЖК-дисплея к Arduino (29.10.2018). Печать E-mail
2018 - Октябрь
29.10.2018 19:08
Save & Share
В рамках задачи "измерение температуры на улице до перегрева термометра солнцем" было написано ПО, используемое в Arduino UNO. С учетом, что все делалось в первый раз, - все шло удивительно ровно. До тех пор, пока не пришла последняя подзадача: вывод информации на ЖК-дисплей. И заняла она несколько дней; т.к. и в интернете описание подключения не очень грамотное, и даже в грамотно написанных книгах.


Используемый ЖК: QAPASS 1602A с интерфейсом I2C; сам дисплей стоит рублей 80, плата интерфейса I2C - рублей 50. До I2C пока не дорос (в лоб запустить не вышло) - стояла задача выдать информацию по стандартному интерфейсу ЖК. В лоб запустить так же не вышло, и было связано это именно с физическим подключением к плате Arduino. Поэтому описываются каждый контакт: куда подключать и зачем нужен. При этом указываются именно названия контактов, а не номера. На разных ЖК и нумерация может начинаться с 3/4 ряда, и контакты могут быть даже не подписаны:
- питание знакосинтезатора - самое первое и простое к подключению. Vdd подсоединяется к 5В, Vcc подсоединяется к общему. Проверка: при выполнении функции cursor() на дисплее должен отображаться курсор как нижнее подчеркивание (может и не отобразиться, см. ниже);
- питание подсветки ЖК. В плате с интерфейсом I2C разводка сделана так, что Vdd и Vcc - общие для знакосинтезатора и подсветки; подсветка включается перемычкой в комплекте с дисплеем, устанавливается на плату интерфейса I2C. Если такой платы нет - подсветка загорится сразу после подключения проводов. Собственно, горящая подсветка - правильный итог действий. Однако стоит сделать акцент на том, что контакт A это плюс подсветки, контакт K - минус подсветки. Поэтому если требуется управление подсветкой без участия платы I2C - эти контакты очень пригодятся. Не исключено, что контакт на перемычке I2C и контакт дисплея A - одно и то же. Однако, вспоминая, что светодиоды работают при 5В через резистор 220Ом - тут 2 варианта: либо этот резистор есть на схеме дисплея, либо нужно припаять отдельно;
- регулировка контрастности знакосинтезатора. Vo (китайцы могут писать как V0) должен быть подключен через маломощный потенциометр. На данном ЖК - уже установлен серии 3362 на 2кОм, стоит на плате I2C (по книгам - надо 10кОм). Контрастность - камень преткновения, т.к. при подвешенном в воздухе состоянии на табло не горят знакоместа и символы (как и при присоединении к 5В), при присоединении к общему - знакоместа скрывают символы (их еле видно, если смотреть на табло под углом 45 градусов - дисплей работает, но глаз этого не видит). То есть, сначала нужно сделать контраст на общий, потом подать питание на знакосинтезатор (убедиться в видимости знакомест), потом на подсветку (убедиться, что горит) - и только потом припаивать резистор и регулировать контраст;
- выбор режима обмена данными с дисплеем. Rw при присоединении к 5В позволяет читать данные с дисплея, к общему - посылать в дисплей. По сути, всегда требуется Rw с нулевым сигналом, к общему;
- пины передачи данных на дисплей. Напряжение на Rs - булевый флаг либо передачи команды (0), либо отображения символы (1). Напряжение на D4...D7 (DB4...DB7) - коды передачи того или иного символа (линии данных). Можно использовать 8 линий данных D0...D7, однако есть более укороченный вариант, с целью уменьшения количества проводов;
- контакт E - разрешение чтения/записи. В функциях работы с дисплеем на него постоянно подается 255. Попробуйте припаять его к 5В: если все будет работать - нет смысла забивать лишний цифровой порт.

Программная часть, библиотека LiquidCrystal, описана корректно в книге Петина В.А. "Проекты с использованием контроллера Arduino". При этом библиотека LiquidCrystalRus полностью подобна LiquidCrystal - однако умеет корректно выводить русские символы.

Технические особенности:
- функция begin(), в зависимости от входных параметров, способна влиять на контрастность изображения. При (1,1) контрастность норма, при (1,16) тускло. Даже если в begin() четко определено количество символов в длину (16) - строка имеет длину 48, и можно выйти за пределы ширины экрана;
- если вместо текста идут кракозябры - отошел один из пинов информации, или используются не необходимые пины. Есть и иной вариант: отсутствие в самом дисплее поддержки русских букв. В этом случае, если сравнивать кракозябры с объекта LiquidCrystal и LiquidCrystalRus, кракозябры будут различаться. Это - повод возврата средств на алиэкспрессе. Дисплей QAPASS 1602A русской поддержки не имеет;
- noDisplay выключает знакосинтезатор, но не подсветку - что является адским минусом. Поэтому подсветкой лучше управлять через аналоговый выход. Не Vdd сажать на аналоговый выход вместо 5В (глючит) - а именно ножку подсветки на плате I2C или контакт A на плате дисплея;
- создание объекта LiquidCrystalRus определяет, в каком режиме будет работать дисплей. Если параметров 6 - указываются пины цифровых выходов Rs, E, D4, D5, D6, D7. При этом пусть не путает LiquidCrystalRus.h со своими входными параметрами "d0, d1, d2, d3": контакты на плате ЖК - именно с D4 по D7;
- лучше покупать не универсальный ЖК, а именно под задачу. Плата I2C мешает своими габаритами, если не использовать I2C. Запаянные отверстия в плате ЖК не позволяют использовать съемные проводки Arduino (dupont cable) - только пайка. Из-за платы I2C дисплей невозможно ровно прикрутить винтами к поверхности. Хорошим подспорьем может быть модуль Arduino "LCD Keypad Shield" за 200руб с дополнительным ручным управлением: плату дисплея за 80руб засунули в плату с кнопочками за 120руб. Но непонятно, поддерживает ли I2C (за такие деньги, вообще-то, должен);
- несмотря на реализацию макетного образца именно на Arduino UNO, оптимальным решением для ЖК является использование Arduino Nano v3, если количество датчиков не более 5;
- расшифровка названия дисплея: 1602 есть 16 символов в строке и 02 строки.

(добавлено 30.10.2018) E на +5В приводит к неработоспособности дисплея. Проблема локализуется в создании объекта дисплея.

(добавлено 26.11.2018) I2C пишется через квадрат (не "IIC").
Обновлено ( 28.05.2019 20:14 )
 
 

Последние новости


©2008-2024. All Rights Reserved. Разработчик - " title="Сергей Белов">Сергей Белов. Материалы сайта предоставляются по принципу "как есть". Автор не несет никакой ответственности и не гарантирует отсутствие неправильных сведений и ошибок. Вся ответственность за использование материалов лежит полностью на читателях. Размещение материалов данного сайта на иных сайтах запрещено без указания активной ссылки на данный сайт-первоисточник (ГК РФ: ст.1259 п.1 + ст.1274 п.1-3).

Много статей не имеет срока устаревания. Есть смысл смотреть и 2011, и даже 2008 год. Политика сайта: написать статью, а потом обновлять ее много лет.
Открыта карта ВТБ для донатов на дорогостоящие эксперименты: 5368 2902 0040 0838.

Рекламодателям! Перестаньте спамить мне на почту с предложениями о размещении рекламы на этом сайте. Я никогда спамером/рекламщиком не был и не буду!
Top.Mail.Ru