LiquidCrystal

AlexTLN
Offline
Зарегистрирован: 14.05.2016

Есть проблема, возможно, кто-то решал.

Имеются платы и экраны. Обычный "blink" OK(связь есть(13 пин)). Подключаю дисплей, связь есть, при инициализации происходит сбой, начинает моргать случайный сегмент дисплея. Ардуинок 3, дисплеев 3. Что было сделано:

1. замена плат местами

2. замена дисплеев

3. физическая смена COM порта и шнура

4. смена тактовых частот в ...\arduino-1.8.10\hardware\arduino\avr\boards.txt на 9600 для плат

Система: Windows 10. Версия 1903. Сборка 18362.295

Arduino: 1.8.10

Среда разработки просто была перенесена.

Код:

#include <LiquidCrystal.h>
LiquidCrystal lcd(4,5,6,7,8,9);
 
void setup()
{
  lcd.begin(16, 2);
  //delay(500);
  lcd.print("sx123");
}
 
void loop()
{
  lcd.print("sx123");
}

Спасибо.

b707
Offline
Зарегистрирован: 26.05.2017

а если строчку 13 закомментировать?

nik182
Offline
Зарегистрирован: 04.05.2015

А если 7 раскомментировать и после 13 продублировать. Можно много интересного увидеть.

AlexTLN
Offline
Зарегистрирован: 14.05.2016

Пробовал. На этапе инициализации происходит какая-то ерунда(мое мнение). Каждая заливка одной прошивки(кода) дает разные результаты.

Green
Offline
Зарегистрирован: 01.10.2015

В LiquidCrystal.cpp в методах clear и home увеличьте задержку, хотя бы до 2500.

AlexTLN
Offline
Зарегистрирован: 14.05.2016

Green пишет:

В LiquidCrystal.cpp в методах clear и home увеличьте задержку, хотя бы до 2500.

Сделал, полная ерунда получилась. До смены параметров работало(криво), после смены перестало работать совсем(ошибка компиляции), вернул на место параметры, опять не работает(ошибка компиляции). Переустановил среду разработки, с новой работает криво. 

Вот так сделал:

https://ibb.co/HrpJvd9

Спасибо.

b707
Offline
Зарегистрирован: 26.05.2017

AlexTLN пишет:

перестало работать совсем(ошибка компиляции), вернул на место параметры, опять не работает(ошибка компиляции)

что за фигню вы пишете, различайте "не работает" и "не компилируется", это совсем разные ошибки.

Когда происходит "ошибка компиляции" - значит вы (лично ВЫ!) что-то налажали в коде

AlexTLN
Offline
Зарегистрирован: 14.05.2016

b707 пишет:

AlexTLN пишет:

перестало работать совсем(ошибка компиляции), вернул на место параметры, опять не работает(ошибка компиляции)

что за фигню вы пишете, различайте "не работает" и "не компилируется", это совсем разные ошибки.

Когда происходит "ошибка компиляции" - значит вы (лично ВЫ!) что-то налажали в коде

Порядок действий:

1. Подключил

2. Залил прошивку(работает некорректно)

3. По совету из четвертого поста "В LiquidCrystal.cpp в методах clear и home увеличьте задержку, хотя бы до 2500", изменил до 2500-2700(скрин прилагается) с 2000

4. Началась "ошибка компиляции"

5. Вернул обратно

6. Ошибка компиляции

7. Переустановил среду разработки, залил код(ошибок нет, работает некорректно)

Как это описать по-другому?

С уважением.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Видимо что-то ещё изменили, пока меняли время. 
А точно контраст тут ни при чем? Фото или видео поведения дисплея можете показать?

Green
Offline
Зарегистрирован: 01.10.2015

Вы бы ещё Windows переустановили.( Ошибку выкладывайте.
Только текстом, а не картинкой.

b707
Offline
Зарегистрирован: 26.05.2017

AlexTLN пишет:

3. По совету из четвертого поста "В LiquidCrystal.cpp в методах clear и home увеличьте задержку, хотя бы до 2500", изменил до 2500-2700(скрин прилагается) с 2000

4. Началась "ошибка компиляции"

5. Вернул обратно

6. Ошибка компиляции

Чудес не бывает.

Если на п.6 "ошибка компиляции" не исчезла - значит на п.5 "вернули обратно" не полностью.

Переставлять среду было совсем не обязательно, достаточно просто внимательно посмотреть, что вы налажали в коде

AlexTLN
Offline
Зарегистрирован: 14.05.2016

Ошибка ушла, было сделано:

1. Переустановил еще раз среду разработки(ушла "ошибка компиляции")

2. В коде изменил

LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

На

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

Надеюсь, другим поможет

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 
void setup()
{
  lcd.begin(16, 2);
  delay(500);
  lcd.print("sx123");
}
 
void loop()
{
  lcd.print("sx123");
}

 

Green
Offline
Зарегистрирован: 01.10.2015

Ошибка компиляции ушла, неисправность самоустранилась.
Переставляя lcd пины можно получить ещё множество работоспособных комбинаций.)

b707
Offline
Зарегистрирован: 26.05.2017

Green пишет:

Переставляя lcd пины можно получить ещё множество работоспособных комбинаций.)


Ты хотел сказать НЕРАБОТОСПОСОБНЫХ?

ТС, порядок пинов в скетче должен соответствовать порядку подключения на модуле. Если вы тасуете пины как попало - нечего удивляться, что у вас глючит.
И не стоит думать, что ваши безграмотные примеры кода могут быть кому-то полезны. Чтобы давать другим советы, надо самому разбираться в предмете.

AlexTLN
Offline
Зарегистрирован: 14.05.2016

Green пишет:

Ошибка компиляции ушла, неисправность самоустранилась.
Переставляя lcd пины можно получить ещё множество работоспособных комбинаций.)

Главное, работает )

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

осталось выяснить почему не работало

AlexTLN
Offline
Зарегистрирован: 14.05.2016

ua6em пишет:

осталось выяснить почему не работало

В 11м посте описал. Нашел в интернете пример, в нем был неправильный порядок аргументов функции LiquidCrystal, поэтому дисплей не инициализировался. Потом на другом компьютере нашел код(с другого проекта), который работал когда-то, поправил, все починилось.

b707
Offline
Зарегистрирован: 26.05.2017

AlexTLN пишет:

В 11м посте описал. Нашел в интернете пример, в нем был неправильный порядок аргументов функции LiquidCrystal, поэтому дисплей не инициализировался. Потом на другом компьютере нашел код(с другого проекта), который работал когда-то, поправил, все починилось.

я так понимаю, советовать вам самому разобраться, что значит каждая цифра в аргументах - без толку? Будете продолжать "искать примеры", составленные такими же безграмотными балбесами - и пробовать методом тыка, какой подойдет?

ну радуйтесь - вы добавили в свалку интернета еще один бестолковый пример... "может кому пригодится"... ага

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

AlexTLN пишет:

ua6em пишет:

осталось выяснить почему не работало

В 11м посте описал. Нашел в интернете пример, в нем был неправильный порядок аргументов функции LiquidCrystal, поэтому дисплей не инициализировался. Потом на другом компьютере нашел код(с другого проекта), который работал когда-то, поправил, все починилось.

нет никакого неправильного порядка

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Номера пинов могут быть иными

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Да перестаньте! ТС виднее куда и какие цЫфры пИсать и из каких примероФ. Ещё учить вздумали... )))

Меня ещё фраза:

3. физическая смена COM порта и шнура

смутила сильно. 

ЗЫ: И никто схему соединения не спросил, прям поверили ТС изначально )))

Green
Offline
Зарегистрирован: 01.10.2015

BOOM пишет:
 

ЗЫ: И никто схему соединения не спросил, прям поверили ТС изначально )))


Да уж, лопухнулись.( И хоть и учит нас ЕвгенийП всю дорогу, а всё равно на грабли наступаем.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

BOOM пишет:
 

ЗЫ: И никто схему соединения не спросил, прям поверили ТС изначально )))


Да уж, лопухнулись.( И хоть и учит нас ЕвгенийП всю дорогу, а всё равно на грабли наступаем.

Так Петрович законы Мэрфи хорошо знает )))

Green
Offline
Зарегистрирован: 01.10.2015

BOOM пишет:
 

ЗЫ: И никто схему соединения не спросил, прям поверили ТС изначально )))


У меня с заказчиком был случай. У него новый дисплей не работает с моим скетчем. И так, и эдак, никак он не может сдвинуться с места... Я уже не выдержал, нашел 2004, включаю... Ну у меня то должно работать! Бац, не работает.( Даже штатный hello word не выводит. Ну не могут же одновременно оба дисплея не работать! Начал ковырять инициализацию, методом тыка обнаружил что в clear() когда изменяешь delay на 2500 всё ОК. При том что по ДШ для HD44780 нужно 1530! "Вот и верь после этого людям!" Теперь, при похожих симптомах сразу советую увеличить задержку в clear() и home().)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

BOOM пишет:
 

ЗЫ: И никто схему соединения не спросил, прям поверили ТС изначально )))


У меня с заказчиком был случай. У него новый дисплей не работает с моим скетчем. И так, и эдак, никак он не может сдвинуться с места... Я уже не выдержал, нашел 2004, включаю... Ну у меня то должно работать! Бац, не работает.( Даже штатный hello word не выводит. Ну не могут же одновременно оба дисплея не работать! Начал ковырять инициализацию, методом тыка обнаружил что в clear() когда изменяешь delay на 2500 всё ОК. При том что по ДШ для HD44780 нужно 1530! "Вот и верь после этого людям!" Теперь, при похожих симптомах сразу советую увеличить задержку в clear() и home().)

у меня с дисплеями 0802 проблема была, на некоторых девайсах стартуют нормально, на некоторых надо резет нажать, чтобы стартануло, видимо этот косяк