В прошлом году я собирая свое устройство для проверки плат, даже не мог подумать, что может быть проблема с ЖКИ. LCD1602, которые брал в амперке, включались сразу и все ок. Сейчас хочу собрать двухступенчатый регулятор температуры -таймер для светобокса. Но меги нет, а есть УНО и НАНО. Все подключил, загружал скетчи, менял пины, но никак - одни квадратики. Взял табло I2C ot OLIMEX, всего 4 конца - тоже самое, не включается даже подсветка. примеры брал из разных источников , библиотеки менял. Помогите выйти из замкнутого круга - как узнать кто виноват, я сам, ардуины или табло
если видны квадратики, значит неправильно задан контраст, проверяйте подключение. Еще вариант - неверно заданы пины инициализации.
Яркость этих знакомест регулируется до исчезновения. Пины перебирал в неимоверных сочетаниях. пару раз получил только горизонтальную черту. Я помню, что на МЕГЕ мне пришлось изменить на обратный, порядок пинов дата, чтобы заработал. Но здесь не помогло. Хорошо бы, чтобы я ошибся - перепаяю резистор контрастности и доложу.
Убрал резистор переменный, посадил 3 ножку на общий для макс контрастности. Скетч простейший #include <LiquidCrystal.h> LiquidCrystal lcd(4,5,11,10,9,8); void setup() { lcd.setCursor(0, 1); lcd.begin(16, 2); lcd.print("Hello, world!"); } void loop() { }квадратики пропадают, если изменить номер строки в lcd.setCursor(0, 1); на -1 или 2 тоже самое если отключить пинDB7. если же отключить пин DB4 шины данных, то квадратики пропадают, но появляется черточка в 3 знакоместе. Чертовщина, однако выручайте, а то выброшу все и не скажу куда
попрбовал менять контрастность через ШИМ // устанавливаем ШИМ выход : pinMode(9, OUTPUT); analogWrite(9, 50); квадратиков нет, текста тоже
А строчку "lcd.begin(16, 2);" не нужно поставить перед "lcd.setCursor(0, 1);" Ну а вообще неплохо бы фото подключения, чтобы было видно что куда идет и как...
ДУНЯ работает с другими скетчами ошибится мог, но где- всего то 6 концов? дисплей сдох - как уточнить? ТОМАШИНА предположил, что котнтраст задан неверно, я и отключил потенциометр. В коммутации ошибок нет - перепроверял многократно. завтра куплю новый дисплей и испытаю.
Я не силен в программировании, но строчку "lcd.begin(16, 2); понимаю как определяющуюю тип дисплея, или не так?
я всегда так пишу, если честно не знаю принципиальную разницу void setup() { lcd.begin(16, 2); lcd.setCursor(0, 1); lcd.print("Hello, world!"); } но так более логично, всё попорядку.
Подключив на место 1602 другой дисплей 2004 SPARKFUM , последний сразу заработал! Даже изменений не вносил в скетч. Так что, 1602 на выброс или есть вариант полноценной диагностики?
lcd.begin(16, 2); - это означает инициализацию дисплея, у которого 16 символов в 2 строки. для четырехстрочного 2004 это будет lcd.begin(20, 4); И эта строка должна быть всегда ДО любых других упоминаний lcd. Неправильно: Код (Text): setup { lcd.setCursor(0, 1); lcd.begin(16, 2); lcd.print("Hello, world!"); { Правильно: Код (Text): setup { lcd.begin(16, 2); lcd.setCursor(0, 1); lcd.print("Hello, world!"); { Для некоторых капризных дисплеев надо после lcd.begin еще вставить строчку delay (200); P.S. можно крупнее фото зеленого дисплея? Меня смущает, что у меня GND подключен по-другому, хотя подключение должно быть типовое.
Именно так. Но без этой строки вообще не работает. Еще раз включил 1602. черточка перемещается по экрану, контрастность максимум, квадратики исчезли, скетч под 2004. На выброс? или есть шанс ?