Проблемы с lcd экраном 16x2 i2c
- Войдите на сайт для отправки комментариев
Чт, 19/11/2015 - 17:55
Здравствуйте! проблемы с модулем lcd1602 i2c.
Дисплей общяется с arduino по i2c соеденению, всё в принципи работает, но при выводе текста на дисплей с помощью функции lcd.print("Hello, world"); Отображается только первый символ, а всё остальное куда то пропадает(
Подскажите пожалуйста что делать я уже и библиотеки менял хоть убей всё равно выводит токо 1 букву и больше ничего(((
Давите его Киса, давите.
Я не понял вашего сорказма. Дисплей рабочий и надавливать негде не надо а вот с отображением что то не то если например начать запись с 3 позиции на строке то всёравно он выводит только первую букву а остальные кудато пропадают(
Если он рабочий, то должен выводить как затевалось. Вот и пробегитесь по контактам, в том числе которые внутри (надавливание по периметру наиболее простой способ). И первый символ выводит ярко или еле видно?
Есть ли возможность включить без I2C?
Если есть возможность, сбросьте фотки как подключено и что получается.
Схема подключения секретна!
Скетч тоже секретный!
Думайте мужики, как я соединил, что я там напрограммировал и в чём у меня может быть проблема, думайте!
Дисплей работает и выводит символ на каждой строке на каждом вертекальном расположение курсора, но он выводит только один символ вне зависимоти от того где установлен курсор lcd.print("Hello world");
выводит только один символ, только H и больше ничего(
Повторяюсь дисплей исправен и выводит все сстрочки все столбики работают, но выводит только один символ(
Так и я ж про то говорю.
Вот, знаете, я вчера скетч написал, и он неправильно работает. Скетч я Вам не покажу (вдруг украдёте), но Вы напрягитесь и посоветуйте в какую сторону мне копать!
Вы видите идиотичность постановки вопроса? У Вас ровно также!
#include <LiquidCrystal_I2C.h>
{
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.print("Hello, world!");
}
{
}
Это стандартный скетч он работает но не доконца lcd.print("Hello, world!"); выводит только одну букву и больше ничего!
Посмотрите на описание функций из библиотеки lcd, возможно вместо lcd.init(); нужно использовать вызов: lcd.begin();
Такая же беда с 1602 HD44780.
Подключение по I2C скетч "Hello world" выводит только первую букву.
Подключение по стандартной шине работает в цело нормально, но эпизодически при долгой работе буквы превращаются в краозябру. и помогает только кнопка ресет на ардуине.
Буквы в кракозябрах это другая история, ищите помеху по питанию девайса.
Перепробовал несколько библиотек, не помогло. С какимито выводит тоько первую, с другими вообще ни чего не выводит.
Написал свою подпрогамму для посимвольного вывода из символьного массива. Выводит всю надпись.
Не ужели ни кто более с таким дефектом не встречался?
Пользуюсь такой либой. Работает исправно и с китайскими и с отечественными дисплеями.
Спасибо, попробую!
Radjah, попробовал эту библиотеку - эфект точно такой же, выводит первый символ, остальные пропадают.
Такое впечатление, что пересылка строки происходит быстрее, чем I2C способен принять.
Или дисплей иницилазируется неправильно, или китайцы в пайке напортачили.
У меня вот такая заготовка для работы с дисплеем.
Меняется только адрес и размер дисплея.
Дисплей и пайка здесь ни при чем. Все делл в версии IDE(то есть проги Arduino, на которой пишется скетч). Дагнный баг наблюдается на версии 1.6.6 (http://arduino.ru/forum/apparatnye-voprosy/lcd-1602-i-konverter-i2c) На версиях ниже все норм. Поэтому желательно работать на версии IDE 1.6.5
А я говорю, что ты вруша. Вот только что скачал 1.6.6 и LiquidCrystal 1.2.1. Собрал скетч для дисплея на i2c и залил. Всё нормально отображается.
Ты ссылку смотрел, которую я кинул? Если у тебя работает, значит отлично, тебе повезло. Я же писал пользователю JasKo, у которого с этим проблемы. Я тоже столкнулся с этой проблемой. Перепробовал все библиотеки, разные скетчи и ничего не помогало. Помог откат на предыдущую версию. Это мой практический опыт, не понимаю при чем здесь твоё детское "вруша" Возможно есть еще какие то более глубокие причины. Если ты их знаешь и понял причину текущей проблемы, дак поделись. А то что у тебя заработало никого не интересует
Я написал выше. Для скорбных на голову повторяю:
Либо неисправен дисплей, либо сопли в подключении.
Если и так не убедил, то распишу.
IDE брал с сайта arduino.cc Бибилиотеку версии 1.2.1 для дисплея браз здесь.
Дисплей 16x2, плата.
Все ясно, спорить с тобой бессмыслено. Короче, для тех, у кого такая проблема, я отписался выше. Если и моя версия не помогла тогда вариант человека, который любит спорить и оскорблять сидя за монитором (Radjah) - ищите сопли или меняйте дисплей. В инете больше не нашел вариантов решения этой проблемы. Если есть еще какие варианты, пишите сюда, будем рады
Я не обзываю, а называю.
dominionish, спасибо за подсказку! Действительно замена IDE 1.6.6 на 1.6.5 помогла. Теперь сообщения выводятся полностью.
PS: Интересно было бы все таки узнать где проблема в 1.6.6 зарыта.
В ДНК у тебя проблема, а не в IDE.
...
IDE брал с сайта arduino.cc Бибилиотеку версии 1.2.1 для дисплея браз здесь.
Дисплей 16x2, плата.
Попробовал и с этой библиотекой на IDE 1.6.6 - не выводит полностью строку на дисплей через I2C.
На 1.6.5 выводит
билиотека вот эта
name=LiquidCrystal_I2C
version=1.1
author=Marco Schwartz
maintainer=Marco Schwartz <marcolivier.schwartz@gmail.com>
sentence=A library for DFRobot I2C LCD displays.
paragraph=A library for DFRobot I2C LCD displays. It allows to control DFRobot I2C displays with commands similar to the Arduino LiquidCrystal library.
category=Display
url=https://github.com/marcoschwartz/LiquidCrystal_I2C
и вот эта Arduino-LiquidCrystal-I2C-library-master
работают !
Или дисплей иницилазируется неправильно, или китайцы в пайке напортачили.
У меня вот такая заготовка для работы с дисплеем.
Меняется только адрес и размер дисплея.
Твой пример с предложенной тобою библиотекой 1.2.1 работает в версии 1.6.6 (их примеры нет).
Из двух зол выбираю меньше - IDE 1.6.5 и более стандартные библиотеки.
Ну и жри говно дальше.
Оказывается эту проблему обсуждают покрайней мере еще в одной ветке форума http://arduino.ru/forum/apparatnye-voprosy/lcd-1602-i-konverter-i2c
Предложенное там решение http://arduino.ru/forum/apparatnye-voprosy/lcd-1602-i-konverter-i2c#comm... реально работает на IDE 1.6.6 - сам проверил.
И еще в одной давным давно указано
Библиотеку автор обновил. Теперь работает - проверено в 1.6.7
https://github.com/marcoschwartz/LiquidCrystal_I2C
У меня есть скетч, и использованием LiquidCrystal_I2C. Все исправно работало в старой версии компилятора. Я переустановил винду и скачал новую версию. Вот тут начались эти глюки, посимвольно в цикле выводится вся строка, а если пытаешся строковую переменную вывести разом, то выводится только первый символ. Хотя вывести можно в любую точку дисплея
Стандартный скетч из библиотеки, все работает. Естественно нужно устанавить курсор в нужную позицию!!!
Неповериш!!!
Удалил оболочку с библиотеками версии 1.6.7 и нашел в старом диске версию 1.6.5. Установил её и скомпилировал свой скетч и той же библиотекой LiquidCrystal_I2C. Неповериш, но все стало отображаться как надо, точнее как было. Переменная String выводится полностью на экран, а не только первая буква.
Вот отрывой скетча:
Я пробовал обновлять библиотеку, но ни чего не менялось, пока оболочку не откатил назад
Я пробовал обновлять библиотеку, но ни чего не менялось, пока оболочку не откатил назад
Была в какой то 1.6.х версии такая дрянь. На форуме просто истерика была на эту тему.
На форуме есть вторая ветка этой проблемы - тут
Там я писал что и буржуи обсуждали эту проблему и у них есть решение тут .
Я так понял надо найти в файле LiquidCrystal_I2C.cpp строки
1
inline
size_t
LiquidCrystal_I2C::write(uint8_t value) {
2
send(value, Rs);
3
return
0;
4
}
И замениить return 0; на return 1;
Дома было интересно, стояла 1.6.7 не работала, выводила только первый символ на экран, снес, поставил 1.6.5 все заработало.
Все устраивало, наткнулся на обсуждение, решил перейти на 1.6.7 и попробовать исправить библиотеку как написано выше. Сотрю а инсталяцию 1.6.7 я потер. Скачал заново, установил, и бац все работает :-) без каких либо исправлений. Вчера поздно было не стал проверять библиотеку, седня гляну.
У меня была такая же проблема, 3 раза перепаивал контакты, думал они. Потом переустанавливал софт, от амперки софт нормально подошел, стали отображаться все буквы, но стал отваливаться GSM. Решил все снести и переустановить, в том числе и драйвера портов. Помучался но понял что у меня проблема была в кривых драйверах для загрузчика, в моем случае CH340G. Терерь все нормально и на 1.6.7 и 1.6.8. У оригинала загрузчик ATMEGA 16U22 ...
А у меня исправилось кнопкой в меню - исправить кодировку и перезагрузить )
Andrey12 , Благодарю, то что надо! помогло !
тож lcd i2c 1602 LiquidCrystal_I2C.h пишет только первую букву H
версия 1.6.7 . версию не менял, библиотеку не обновлял, В файле LiquidCrystal_I2C.cpp было
1
inline
size_t
LiquidCrystal_I2C::write(uint8_t value) {
2
send(value, Rs);
3
}
помогло добавление
return
1;
1
inline
size_t
LiquidCrystal_I2C::write(uint8_t value) {
2
send(value, Rs);
3
return
1;
4
}
Испытал такой-же глюк с I2C переходником..
IDE поменялась с 1.8.2 на 1.8.3
Правка файла LiquidCrystal_I2C.cpp помогла
IDE 1.8.5
Display 20 x 4
LiquidCrystal_I2C lcd(0x3f,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
Помогло
Спасибо! У меня тоже самое было и IDE 1.6.5 решила проблемму))
Спасибо! У меня тоже самое было и IDE 1.6.5 решила проблемму))
dominionish, спасибо за подсказку! Действительно замена IDE 1.6.6 на 1.6.5 помогла. Теперь сообщения выводятся полностью.
PS: Интересно было бы все таки узнать где проблема в 1.6.6 зарыта.
Все заработало, спасибо!
1. Где текст (копипаста) сообщения об ошибке?
2. Где правильно вставленный код?
Давайте и то, и другое, тогда сможете рассчитывать на помощь.
leolem - заканчивайте троллингом заниматься, вы это уже спрашиваете в другой ветке - нафига дублировать?
OK\
Вы не в состоянии вопринять два пункта сразу? Хорошо, давайте по одному
Где текст (копипаста) сообщения об ошибке?