Собсно, что имеем: контроллер Arduino UNO, подозреваемый на неисправность отдельных портов. Залил в него вот такой скетч, для проверки Спойлер: блинк на все порты Код (C++): void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); delay(500); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); delay(500); // wait for a second } Взял обычный светодиод, одной ногой подключил к земле, другую ногу по очереди совал во все порты контроллера, в каждом светодиод мигал как положено. Но при этом, если я к этому контроллеру подключаю ЖК-экран 20х4, подключаю согласно этой инструкции, то экран светится, знакоместа видны, но текст никакой не выводится. На вход дисплея управляющий контрастностью, пробовал разное напряжение (от 0 до 5 естессно) подавать - видна реакция в виде изменения яркости знакомест, но текст по прежнему никакой не виден. Скетчи вывода текста пробовал разные, в том числе совершенно точно рабочие (раньше работало на этом же контроллере, с этим же экраном, и с тех пор не изменялось). Пробовал и тот код что в той же инструкции дан, без толку. (Разумеется, я корректировал строку инициализации экрана на такую lcd.begin(20, 4); дисплей то 20х4 у меня) Текст на экране не появляется, никакой. И что самое интересное. Я тоже сначала подумал, экран виноват. Взял другие два таких же экрана, пробую их подключать точно так же, скетчи пробую разные, совершенно точно рабочие, но результат тот же - текст не появляется. Где еще может быть причина, не могу понять... может быть, порты контроллера из-за чего то потеряли способность работать с высокой частотой, передавая данные в экран, не полностью сгорели? Просто при замене всего и вся единственный возможный виновник получается контроллер, а тест с вышеприведенным скетчем показывает полную исправность. Еще есть вариант что я чего-то в упор не вижу или не понимаю Есть у кого-то идеи, где причину искать?
Есть подозрение, что дисплей подключаете не правильно. Могу ошибаться, но думаю, что подключаете точно так как на картинках в инструкции, не глядя на реальную маркировку выводов дисплея. Это довольно-таки распространённая ошибка у начинающих. Вот здесь -- тестер батареек -- есть принципиальная схема, где указано какой вывод дисплея к какому выходу Arduino UNO нужно подключать (не смотрите на схему на макетке, а подключайте по принципиальной схеме, т.к. выводы Вашего дисплея расположены по другому) и приведён пример инициализации дисплея в коде.
соглашусь,но у меня было тоже но виновата была подсветка она была тусклее и когда я дал больше вольт все заработало кстати схемы таки правда врут
Нет, не так. Подключаю, глядя на номера выводов дисплея и контроллера в инструкции - и на маркировку, выводов дисплея и контроллера. И потом, я же уже сказал что некоторое время назад все нормально работало на этом самом контроллере с этим самым дисплеем. Потом - скажем так, к контроллеру подключалось кое-что самопально спаянное. А теперь вот имеем то что имеем... диоды работают а дисплей нет. И ведь наверное не все порты накрылись, и варианты еще есть.
Если "диоды работают", то и порты на выход работают. А дисплею нужно, что бы порты на выход работали. Предполагаю следующие проблемы -- плохой контакт на макетке (обрыв провода), нерабочий дисплей, кривой код для работы с дисплеем (кривая библиотека).
Могут деградировать полупроводники, что изменит характеристики проводимости. Например, от того, в пины тыкают светодиоды без резистора.
Разобрался Причина оказалась в соединительных проводах, один из них стабильно не давал контакта при втыкании в дисплей. Заменил его и все заработало, дисплеи рабочие, скетчи рабочие, и контроллер полностью исправен оказался. Про яркость текста вот, спрошу. Уже выше упоминали что надо напряжение поднять - это про подсветку речь идет или про что? Просто у меня наблюдается следующее: 1) на разных дисплеях яркость текста разная. Ну это ладно 2) он тусклый на всех трех. 3) для регулировки яркости попробовал на соответствующий вывод дисплея подавать разное напряжение с пина контроллера, используя analogWrite(pin, value). При значении 0 - текст такой же тусклый как был. При повышении значения до 20~30, постепенно становится еще тусклее, и после 30 и далее его уже вообще не видно.
Так понимаю речь идёт о контрастности? Если так, то за неё отвечает вывод V0 (или U0, или 3-й вывод). Если вывод закоротить на "землю", будет максимальная контрастность. Если на него подавать питание, то чем выше напряжение на V0, тем ниже контрастность (текст становиться более тусклым). Так же на контрастность влияет источник питания -- от чего дисплей запитываете? Хватает ли мощности у источника питания?
Да, о том самом выводе речь и идет. Поэкспериментировав с ним, я его обратно к земле вернул, но текст тусклый все равно. Запитываю дисплей и ардуинку от USB компа.
Порты USB по вторую версию включительно имеют ограничение в 500 mA, что мало для нормальной работы дисплея и платы. USB третей версии могут давать до 900 mA (если производитель материнской платы соблюдает спецификацию). Попробуйте запитать от другого источника питания. Только используйте качественный источник питания (китайские зарядки в большинстве случаев к качественным не относятся).
Ещё один распространённый Баг я снова на него недавно натолкнулся-неправильно развёл плату. Куда у Вас подключён пин 5 LCD он же R/W ? должен быть на "землю" туда же куда и пин 1 LCD. Пока не будет на "земле" ничего показывать не будет.