Проблема с LCD 1602a на разных скетчах требуется подстройка контрастности
- Войдите на сайт для отправки комментариев
Сб, 25/05/2019 - 16:13
Привет, гуру и форумчане!
Я - новичок в работе с Arduino.Может спрошу глупость, прошу заранее простить.
Проблема вот какая: при изменении скетча каждый раз требуется подстройка контрастности.
Вот 2 скетча, простейших, на мой взгляд.
Вот первый.
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); // Инициализирует LCD 16x2 lcd.setCursor(2,0); // Установить курсор на первыю строку lcd.print("Hello, world"); // Вывести текст lcd.setCursor(0,1); // Установить курсор на вторую строку lcd.print("www.robotchip.ru"); // Вывести текст } void loop() { }
Вот второй.
#include <LiquidCrystal.h> // initialize the library by associating any needed LCD interface pin // with the arduino pin number it is connected to const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis() / 1000);}
LCD подключен без I2C, для каждого скетча требуется регулировка контрастности. Почему?
К тому же, во втором скетче, примерно после 10 секунд работы начинает помаргивать экран.
Я пока только осваиваю этот ПЛК, поэтому на начальных этапах требуется помощь.
Заранее спасибо всем откликнувшимся.
Во втором коде Вы дрючите экран при каждом проходе loop, Вы представляете насколько это часто? Выводите с разумной частотой и будет Вам счастье.
Это я уже понял из других материалов Тырнета, а вот с контрастностью нет...
Не знаю, что Вы поняли, только выводите с разумной частотой и с контрасностью проблем не будет :)
Наверно, это в песочницу.
Песочница - это немного обидно, но, наверное, справедливо...
Нарисовал 2 скетча, но не могу понять, почему в одном случае на LCD отображается информация, а во втором нет
1-й скетч.
2-й скетч.
Разница только в проверке условия во 2-м скетче, но при этом на LCD отображаются только прямоугольники вместо значений...
Может кто подкинет идею?
Заранее спасибо.
Потому что для инициализации дисплея нужно время, а за это время функция "Setup" успевает проскочить без вывода картинки..
Вам уже дали ответ во втором сообщени. Вы слишком часто выводите данные на дисплей, от этого мерцание, от этого низкая контрастность. Добавьте паузу!
Может тогда стоит добавить паузу ДО setCursor?
Но всё равно спасибо, попробую - отпишусь...
Может тогда стоит добавить паузу ДО setCursor?
ДО lcd.begin(16, 2); добавьте.
С вот таким дисплеем была заморочка. На ардуине работат, а на таком же чипе без загрузчика - нет. Выяснилось, что при включении питания, он не успевает аппаратно проинициализироваться, а на него уже команды прут.
Вот, творчески переработал свою же заготовку сигнализации протечек. Добавил вывод на LCD.
Проблема с контрастностью не исчезла, каждый раз перед запуском приходится выводить потенциометр в крайнее положение (+5В) и потом аккуратно двигать в сторону GND. После увлажнения датчика всё срабатывает (светодиод, зуммер, сервопривод), надпись на мониторе исчезает, вместо неё появляются прямоугольники, после осушивания датчика приямоугольники тоже пропадают и во втором ряду на 3-м месте появляется мигающий курсор. Пробовал LCD.Print и LCD.Write, разницы не увидел, хотя была надежда...
Есть подозрение, что сам LCD1602 типа помирает.
Кто-нибудь может подсказать выбрасывать LCD или ещё есть надежда?
Заранее спасибо!
Я бы напряжение питания LCD проверил. На полвольта меняется - уже плывет контраст (ну на моих так).
Проверил, при увлажнении датчика и срабатывании сервопривода напряжение плывёт, порядка 0,5В.
Отключил сервопривод, пищалку и зуммер, всё равно перепад порядка 0,1В. Никаких изменений в работе LCD.
Поставил более мощный источник (до 2А на выходе) перепад стал около 0,05В, а работает LCD как и раньше...
Может ещё какие идеи будут?
Подумал, может на питание LCD отдельный источник поставить?
Подумал, может на питание LCD отдельный источник поставить?
Да не, это уже как то ненормально.
Подключил сервопривод и подсветку LCD на отдельное питание и добавил задержку перед инициализацией LCD. Вроде работает...
А как должна выглядеть индикация на LCD, символы должны быть тёмными или светлыми?
У меня, если символы светлые - продолжается ерунда (см. предыдущие сообщения), а если тёмные, то в новом варианте вроде работает (в предыдущем не работало в любом варианте).
Вот такой получился код. Понимаю - не идеал, пока учусь.
Буду признателен за любые замечания и советы.
PS. На низком тоне звук стал "блеющим", может кто сталкивался?
А как должна выглядеть индикация на LCD, символы должны быть тёмными или светлыми?
Знакомест почти не должно быть видно (но все таки чуть чуть остается) - мне кажется так оптимально по видимости.
Я ж Вам про это ещё неделю назад писал - #8! тогда не поверили, и не стали пробовать? :)))
Т.е. всё таки тёмные символы на светлом фоне?
Я не "не поверил", а решил "творчески" переосмыслить.
Когда всёв голове уложилось - попробовал и получилось.
Тем не менее - СПАСИБО за совет.
Т.е. всё таки тёмные символы на светлом фоне?
Бывает и так и так, но контрастностью это не перевернуть - как видится так и должно быть, но как можно четче.
Вот на первой картике как мне кажется оптимально настроено - слегка проглядывают "квадратики", если меньше контраст - бледные символы будут, если больше - "квадратики" повылазят под символами.
Странно, у меня контрастностью можно вывести хоть тёмный шрифт:
Хоть светлый:
Немного не в фокусе получилось, но суть, я думаю, видна.
Так вот, когда шрифт тёмный - сообщения выводятся нормально, а когда светлый начинаются проблемы.
При АВАРИИ вместо надписи в верхнем ряду выводятся квадратики, а при возврате к НОРМЕ, на 3-м знакоместе 2-го ряда появляется мигающий курсор.
Не могу понять в чём дело-то. Может всё таки дело в LCD? Или в кривых ручках?
Хм, в порядке потока сознания, что то связанное с поляризацией стекла. Попадалось на просторах, если перевернуть, то меняется угол обзора.......
Да нет, со всех сторон одинаково...
Такого хитрого дисплея у меня не было :) У него обозначение есть какое нибудь ? Может даташит найдется.
На оборотной стороне 1602А написано. И фсё...