Начало:
1.
Начали курс по работе с платформой Arduino2.
Подключение платы Arduino к компьютеру3.
Как мы работаем с платой Arduino, часть 1 (моделирование)4.
Работа с платой Arduino, часть 2 (макетная плата) Напомню, мы используем аналог платы «Arduino Uno R3». Эту плату мы закупили в составе набора-конструктора «
Starter Kit №7». На наших настольных компьютерах установлена операционная система «Windows 10».
Вообще, жидкокристаллических дисплеев (сокращенно «ЖКД», по-английски - «LCD» [liquid-crystal display]) существует много разных видов. В наш набор-конструктор включен ЖК-дисплей, который часто обозначают числом 1602. В этом обозначении «16» означает количество мест для символов в ширину, а «02» - количество строк. То есть это дисплей в 2 строки по 16 символов. Но это обозначение еще не дает полной информации о конкретном ЖК-дисплее такого вида. Существует ряд разных ЖК-дисплеев, которые обозначают числом 1602.
Главное, что нужно знать программисту про ЖК-дисплей 1602 - имеет ли он модуль с шиной I2C (еще ее обозначают
I2C или IIC, что расшифровывается как «Inter-Integrated Circuit») или нет. Это такая небольшая плата с микросхемами, которая имеет 4 контакта. Эта плата обычно припаяна снизу на ЖК-дисплее, контакты торчат сбоку. Без этого модуля ЖК-дисплей 1602 управляется через 16 контактов, что сильно затрудняет работу с ним по нескольким причинам (нужна куча проводков, нужно обеспечить хороший контакт каждого проводка, на плате Arduino соединение с ЖК-дисплеем займет слишком много пинов и так далее). Модуль с шиной I2C призван заменить 16 контактов ЖК-дисплея четырьмя. При этом работа с ЖК-дисплеем 1602 с модулем I2C и без него потребует использования разных библиотек функций.
У нас в наборе-конструкторе оказался ЖК-дисплей 1602 без модуля I2C. Поэтому в этом посте речь пойдет именно о работе с таким ЖК-дисплеем. Библиотека функций для этого дисплея называется «LiquidCrystal.h». Она входит в состав официальных библиотек Arduino и включена в дистрибутив официальной среды разработки, то есть ее не понадобится устанавливать отдельно. В любой момент можно обратиться к
справочнику по работе с этой библиотекой на официальном сайте Arduino.
Главная наша проблема при работе с этим ЖК-дисплеем
Я не знаю, почему этот ЖК-дисплей вызывает в интернетах столько вопросов в части программирования или порядка подключения контактов. У нас с этим особых проблем не возникло.
Главный мой вопрос при работе с этим ЖК-дисплеем - каким именно образом надежно подсоединить проводки к контактам ЖК-дисплея при условии, что мы решили при изучении работы с платой Arduino обойтись без пайки. Про такое в интернете очень сложно найти, так как большинство коллег просто припаивает проводки к контактам ЖК-дисплея и всё, это почти не обсуждается. Я две недели искал ответ и в конце концов нашел.
Сначала мы пытались использовать контактную «расчёску», которая была в комплекте с платой Arduino. В принципе, как раз ее часто припаивают к контактам ЖК-дисплея, чтобы потом этой припаянной «расчёской» можно было вставлять ЖК-дисплей в макетную плату. Вот как выглядят такие контакты у меня:
Изначально это одна «расчёска», но ее можно разламывать на кусочки. Я сначала отломил кусок с 16 контактами, но он не полез в макетную плату. Пришлось разломать на более мелкие кусочки и вставлять их в макетную плату по одному (на вышеприведенной фотографии разломанная часть из 16 контактов - внизу).
Мы делали так: на правом нижнем крае макетной платы вставляем «расчёску» из 16 контактов, на нее насаживаем ЖК-дисплей. (Выбор правого нижнего края макетной платы позволяет загородить ЖК-дисплеем минимальную часть полезной площади макетной платы.) На первый взгляд соединения кажутся надежными, но на практике - не работает. У нас 8 наборов-конструкторов, мы пробовали этот способ на нескольких занятиях и ни разу не удалось этим способом получить на ЖК-дисплее буквы. Появляется подсветка, появляются квадратики, но буквы не появляются. В интернете пишут, что такое поведение означает в большинстве случаев ненадежное соединение одного или нескольких из контактов, по которым передаются данные (таких контактов на данном ЖК-дисплее 8 из 16).
Контактную расчёску при таком способе соединения нашего ЖК-дисплея и макетной платы, кстати, можно установить только длинными концами контактов вниз, в макетную плату. Если контактную «расчёску» попробовать перевернуть короткими концами контактов вниз, то эти короткие концы не достают до входов в макетную плату, мешают крепления ЖК-дисплея на его нижней стороне.
В итоге мы отбросили идею с контактной «расчёской» и всё решилось гораздо проще. У контактных проводков (их еще называют «монтажными перемычками» с концами «папа»-«папа» или по-английски «male-male», сокращенно «MM»), которые имеются в нашем наборе-конструкторе во множестве, тело сделано из гибкого проводника в пластиковой изоляции разных цветов, а концы - из довольно жесткого металла. Такая конструкция позволяет удобно вставлять концы монтажных перемычек в пины платы Arduino и в пины монтажной платы. Оказалось, что их можно просто вставить в контактные отверстия ЖК-дисплея и загнуть. При этом получается очень плотное и довольно надежное соединение. Вот как это выглядит у меня:
Такой способ, конечно, по надежности уступает пайке, но для наших нужд (при обучении мы постоянно собираем и разбираем разные устройства) подходит отлично. Начальный загиб можно делать пальцами, просто введя конец проводка в контактное отверстие ЖК-дисплея и используя его как упор. Окончательно загнуть конец проводка и прижать его к прорезиненной части того же проводка можно с помощью маленьких плоскогубцев.
Загибайте концы проводков так, чтобы их было видно при взгляде на ЖК-дисплей сверху. Так вы сможете визуально контролировать то, что концы проводков при загибе не коснутся соседних контактов.
Две дополнительные тонкости
У данного ЖК-дисплея есть подсветка. Эта подсветка представляет собой обычный светодиод с белым светом. Его прекрасно видно, если посмотреть на правый бок ЖК-дисплея. ЖК-дисплей может работать без этой подсветки, но символы будет довольно плохо видно. За работу этого светодиода отвечают два крайних справа контакта ЖК-дисплея, это анод и катод светодиода (то есть их нужно подключить к плюсу и минусу (земле) соответственно). На ЖК-дисплеях их обозначают по-разному, часто - «A» и «K» (анод и катод), а на наших экземплярах - BLA и BLK («BL» - это, возможно, backlight - «подсветка» по-русски). Как и при подключении обычных светодиодов для светодиода подсветки требуется включить в цепь сопротивление, чтобы светодиод не сгорел. 220 Ом - нормальный вариант, больше не нужно.
При использовании ЖК-дисплея данного типа обязательно ставьте на контакт «V0» ЖК-дисплея (третий слева) потенциометр, который есть в данном наборе-конструкторе. Потенциометр видно на фотографии выше. Потенциометр представляет собой сопротивление с переменным номиналом. Меняем номинал этого сопротивления, покручивая ручку потенциометра в одну сторону или в другую. Потенциометр нужен для настройки контрастности ЖК-дисплея. Опять же, можно попробовать обойтись без потенциометра, подобрав и поставив нужное сопротивление. Но я советую всё-таки всегда ставить потенциометр, он прост в установке, а взамен вы получаете удобство настройки контрастности ЖК-дисплея.
Без правильной настройки контрастности можно выводимые на ЖК-дисплей символы не увидеть даже при правильном подключении контактов. Если вывернуть контрастность в одну сторону, появятся белые квадратики, «закрывающие» своей яркостью символы. Если вывернуть контрастность в другую сторону, на экране кроме синеватого свечения от подсветки ничего не останется. Правильная контрастность подбирается где-то между этими крайними значениями.
Поиск ошибок в подключении
Я наловчился быстро искать у студентов ошибки в подключении контактов, когда они жалуются, что подключенный ЖК-дисплей не работает. Нередко студенты совершают одну или несколько следующих ошибок. Проверяем в следующем порядке.
1. Убедитесь в правильности подключения питания. То есть в первую очередь нужно проверить проводки к питанию со стороны платы Arduino, затем со стороны макетной платы и на самой макетной плате, затем со стороны ЖК-дисплея (первые два контакта слева).
2. Проверьте, горит ли подсветка, это видно на глаз. Если подсветка не горит, проверьте контакты подсветки и соответствующих проводков.
3. Повращайте ручку потенциометра: меняется ли контрастность ЖК-дисплея. Если не меняется, проверьте соответствующие контакты и проводки. Если меняется, покрутите ручку потенциометра, поищите правильную настройку контрастности.
4. Если вышеприведенные три пункта не помогли, проверьте остальные контакты ЖК-дисплея слева направо. Если всё подключено правильно, то еще может быть, что один из проводков - бракованный (маловероятно, у меня было только один раз).
5. Если вышеприведенные пункты не помогли, приступайте к проверке программы.
Продолжение следует...