Arduino Pro Mini + LCD 20x4 с I2C интерфейсом

Abyss
Offline
Зарегистрирован: 12.05.2014

Добрый день. Имеется Arduino Pro Mini и LCD 20x4 с I2C интерфейсом. Использовал кучу библилиотек LiquidCrystal. Ни с одной ХеллоВорда не получилось. Экран просто моргает (если вывод в loop). Подскажите точно работающую, пожалуйста. IDE 1.0.5.

Подключал к А4 (SDA) и A5 (SCL).

Код не привожу, пробовал стандартный из примеров.

Ссылки на девайсы:

Arduino - http://www.ebay.com/itm/New-Pro-Mini-atmega328-5V-16M-Replace-ATmega128-Arduino-Compatible-Nano-TF-/371058843042?pt=LH_DefaultDomain_0&hash=item5664d49da2

LCD - http://www.ebay.com/itm/2004-20x4-LCD-Character-Display-IIC-I2C-TWI-SPI-Serial-interface-Board-Module-/400603081699?pt=LH_DefaultDomain_0&hash=item5d45cdebe3

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

какой I2C-адрес у дисплея (можно взять скетч "i2c scanner) и какой в коде "стандартного примера"? 

Abyss
Offline
Зарегистрирован: 12.05.2014

Tomasina пишет:

какой I2C-адрес у дисплея (можно взять скетч "i2c scanner) и какой в коде "стандартного примера"? 

Тут все чисто. Адрес 0х27 (как раз сканером и проверил), в скетче так же.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Я тоже пробовал кучу библиотек, но проблема в том что они все одинаковые. Эксперементальным путем установил что нужно lcd.begin(); 2 раза вызывать в setup. А еще у вас яркость наверно неправильно отрегулированна.

Abyss
Offline
Зарегистрирован: 12.05.2014

Яркость крутил (потенциометр). А вот насчет begin надо попробовать. Хотя и странно. Кстати - библиотеки разные. В неготорых lcd.begin(), а у кого-то lcd.init(). Ну или просто я вообще не понимаю.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Я про управляющие коды LCD -  внутри они идут в одинаковом порядке и с одинаковыми задержками(значит нет разницы), вот только дисплей на них не всегда реагирует(так и не понял почему).

Planer
Offline
Зарегистрирован: 13.11.2013

Тоже pro mini, тоже LCD 20*4 i2c и тоже были проблеммы с дисплеем - рабочая конфигурация: для 20*4, библиотека с github https://github.com/kiyoshigawa/LiquidCrystal_I2C

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x20 for a 16 chars and 2 line display

void setup()
{
    lcd.init();
    lcd.backlight();
    lcd.print("hello, habrahabr!");  // вывод сообщения на LCD
}

void loop()
{
    // устанавливаем курсор в 0-ом столбце, 1 строка (начинается с 0)
    lcd.setCursor(9, 2);
    lcd.print(millis()/1000); // вывод числа секунд после сброса

}

PS И да, ОБЯЗАТЕЛЬНО ПРОВЕРЬТЕ ПОДСТРОЕЧНЫЙ РЕЗИСТОР СЗАДИ ДИСПЛЕЯ НА ЯРКОСТЬ!!

ssergo
Offline
Зарегистрирован: 10.05.2013

Народ у меня была аналогичная проблема - но она заключалась не в библиотеках, а именно в i2C устройстве. - У данного устройства которое я купил - вот оно -

 http://www.ebay.com/itm/161330941524?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

разъем подключения LCD на данном устройстве  нихрена не соответствует подключению к ножкам самого LCD.

 

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

ssergo пишет:

Народ у меня была аналогичная проблема - но она заключалась не в библиотеках, а именно в i2C устройстве. - У данного устройства которое я купил - вот оно -

 http://www.ebay.com/itm/161330941524?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

разъем подключения LCD на данном устройстве  нихрена не соответствует подключению к ножкам самого LCD.

 

странно покупал 2 штуки.все совпадает один в один...

ssergo
Offline
Зарегистрирован: 10.05.2013

я тоже купил 2 штуки. И плясал с бубном до тех пор пока не разобрался с работой PCF8574 - в гугле есть схемы подключения LCD через этот расширритель портов. На купленных мной устройствам путем прозвонки было установлено несоответствие ножек подключения. После этого данные платы были задвинуты в дальний ящик, а я купил вот это - 

http://www.ebay.com/itm/130748113121?ssPageName=STRK:MEWAX:IT&_trksid=p3...

Которое без проблем запустилось с LCD 1602, 2004 и 0802. 

 

 

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014
0259
0259 аватар
Offline
Зарегистрирован: 30.03.2014

ssergo пишет:

Народ у меня была аналогичная проблема - но она заключалась не в библиотеках, а именно в i2C устройстве. - У данного устройства которое я купил - вот оно -

 http://www.ebay.com/itm/161330941524?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

разъем подключения LCD на данном устройстве  нихрена не соответствует подключению к ножкам самого LCD.

 

вы правы я нашол ответ! ошибка в подключении ножек I2C модуля а вот код как это всё исправить 









#include <Wire.h>
 #include <LCD.h>
 #include <LiquidCrystal_I2C.h>
 
 #define LCD_I2C_ADDR    0x20 // адрес  I2C устройства PCF8574T 
 #define BACKLIGHT     7      //я незнаю как сказать или как понять 
 #define LCD_EN  4            //но эти строки нужнв для того чтобы
 #define LCD_RW  5            //Ардуино понимала как подключены ножки
 #define LCD_RS  6            //дисплея к ножкам I2C микросхемы и все 
 #define LCD_D4  0            //работает нормально поверьте 
 #define LCD_D5  1            //проверено мной лично 0259!
 #define LCD_D6  2            //если кто сможет обяснить назначение этих строк правильно 
 #define LCD_D7  3            //пожалуйста распишите для меня 
 
 LiquidCrystal_I2C       lcd(LCD_I2C_ADDR,LCD_EN,LCD_RW,LCD_RS,LCD_D4,LCD_D5,LCD_D6,LCD_D7);// и вот строка не понятная для меня 0259!
 
 void setup()
 {
 lcd.begin (16,2);
 lcd.setBacklightPin(BACKLIGHT,NEGATIVE); // init the backlight
 lcd.setBacklight(HIGH); // включить подсветку
 lcd.clear(); // очистить дисплей
 }

void loop()
{
lcd.setCursor ( 0, 0 );        // положение текста первой строки
lcd.print("hello user");       //текст страки
lcd.setCursor ( 0, 1 );        // положение текста второйстроки строки
lcd.print("hello 0259");       //тескт строки


}

вот только у меня окозалоси 2 библиотеки какая из них разберайтесь сами

https://yadi.sk/d/J0_kY7sKYvCVn первая библиотека LiquidCrystal

https://yadi.sk/d/l8yrnr_cYvCVw вторая библиотека LiquidCrystal_I2C

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Странно как то, специально проверил с про мини,всё работает

попробуйте ради интереса с этой библиотекой https://yadi.sk/d/t2FvxSHjYv369

0259
0259 аватар
Offline
Зарегистрирован: 30.03.2014

avton пишет:

Странно как то, специально проверил с про мини,всё работает

попробуйте ради интереса с этой библиотекой https://yadi.sk/d/t2FvxSHjYv369

я на меги но с китайский I2C там где перепутаны контакты работает мой пример преведеный выше.

пробовал вашу библиотеку она не работает выводит курсор на 6-юу клетку и всё.

у кого таже проблема что я описываю с библиотекой avton используйте мой пример кода выше а библиотуку выложу позже как разберусь как это сделать

ssergo
Offline
Зарегистрирован: 10.05.2013

попробовал библиотеку предложенную Avton в #12 в связке с pro mini - ОНО ЗАРАБОТАЛО. Но эта библитека не работает с устройством описанным мной в #9. Таким образом библиотеки явно разные(вернее в библитеках разное перезначение пинов подключения LCD).

Более правильно - мне кажется необходимо использовать код и библитеки предложенные 0259 в #11. Это универсальный подход позволяющий одной библиотекой работать с разными устройствами. То что у устройств I2C разная распиновка - это факт.  И остается только поблагодарить дядюшку Ляо за косяки с распиновками. За дешевизну надо платить.

От себя хочу сказать большое спасибо Avton за преложенные библитеки, ибо позволило оживить 2 платки I2C.

 

 

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

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

Во ,вспомнил ))))

http://zelectro.com.ua/LcdI2Cmodule

ssergo
Offline
Зарегистрирован: 10.05.2013

а я отсюда                    http://playground.arduino.cc/Code/LCDi2c

0259
0259 аватар
Offline
Зарегистрирован: 30.03.2014

Мне библиотеки достались от продавца 2-е суток я разбирался а потом наехал на него что он мне товар не рабочий подсунул он дал библиотеки пример кода и объяснил что у них просто скопировать модуль нельзя (запрещено законом) по этому они меняют ножки местами ну вообще (кто на что горазд)

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

китайцы отжигают)))

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

0259 пишет:
Мне библиотеки достались от продавца 2-е суток я разбирался а потом наехал на него что он мне товар не рабочий подсунул он дал библиотеки пример кода и объяснил что у них просто скопировать модуль нельзя (запрещено законом) по этому они меняют ножки местами ну вообще (кто на что горазд)

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

Planer
Offline
Зарегистрирован: 13.11.2013

покупайте дисплеи со впаеными модулями i2c и будет вам счастье!)

0259
0259 аватар
Offline
Зарегистрирован: 30.03.2014

Puhlyaviy пишет:
чет как то звучит не по китайски. уж лет 10 с китайцами работаю и впервый раз такое слышу. скорее просто накосячили и заказчик отказался, так они теперь сливают это кривое гавно как могут.

Ну все возможно я не спорю просто передаю что сказано мне

0259
0259 аватар
Offline
Зарегистрирован: 30.03.2014

Planer пишет:

покупайте дисплеи со впаеными модулями i2c и будет вам счастье!)


А вас возможно расстрою покупал на aliexpress.com не модуль I2S а дисплей уже с распашными модулем и попал вот на такое что модуль оказался не правильно распаян. Так что не кто не застрахован от такого

Planer
Offline
Зарегистрирован: 13.11.2013

0259 пишет:
Planer пишет:

покупайте дисплеи со впаеными модулями i2c и будет вам счастье!)

А вас возможно расстрою покупал на aliexpress.com не модуль I2S а дисплей уже с распашными модулем и попал вот на такое что модуль оказался не правильно распаян. Так что не кто не застрахован от такого

ну че уж тут, "и на старуху бывает порнуха". Я тоже на али брал 2 модуля распаяны были нормально но тоже поплясал с выбором библиотеки, потом оказалось что на гитхабе самая рабочая. Ща все вроде работает, аминь!)

0259
0259 аватар
Offline
Зарегистрирован: 30.03.2014

да все что не убивает делает нас сильнее
так что чем больше ширпотрепа и не правильно выполненных модулей тем больше опыта у нас

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

0259 пишет:
да все что не убивает делает нас сильнее так что чем больше ширпотрепа и не правильно выполненных модулей тем больше опыта у нас

угу, и тем больше желания начать делать свои модули :) это еще интересней чем просто соединять проводками :)

0259
0259 аватар
Offline
Зарегистрирован: 30.03.2014

Puhlyaviy пишет:

угу, и тем больше желания начать делать свои модули :) это еще интересней чем просто соединять проводками :)

не могу не согласиться

ssergo
Offline
Зарегистрирован: 10.05.2013

я тоже к это му выводу пришел, поэтому закупил десяток PCF8574.

0259
0259 аватар
Offline
Зарегистрирован: 30.03.2014

кстати интереско кроми lcd дисплея что еще можно к ней PCF8574 подключить?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

0259 пишет:

кстати интереско кроми lcd дисплея что еще можно к ней PCF8574 подключить?

да все что вам зачешется, PCF8574 это просто I2C <-> 8 бит паралельный порт

ssergo
Offline
Зарегистрирован: 10.05.2013

Более правильно было бы сказать - что PCF8574 - позволяет расширить количество порттов, используя двухпроводной интерфейс(I2C), используя адресацию можно на I2C повесить до 8ми PCF8574 и получить допонительно 64 порта ввода-вывода. В этом плане более интересна МСР23017, которая позволяет аналогично добавит 16 портов. Так что подключение LCD это частный случай.

Более подробно о расширении портов http://homes-smart.ru/index.php/oborudovanie/prochee/rasshiryaem-porty

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

ssergo пишет:

Более правильно было бы сказать - что PCF8574 - позволяет расширить количество порттов, используя двухпроводной интерфейс(I2C), используя адресацию можно на I2C повесить до 8ми PCF8574 и получить допонительно 64 порта ввода-вывода. В этом плане более интересна МСР23017, которая позволяет аналогично добавит 16 портов. Так что подключение LCD это частный случай.

Более подробно о расширении портов http://homes-smart.ru/index.php/oborudovanie/prochee/rasshiryaem-porty

блин не поделитесь идеей нафига вам столько портов? что такое глобальное должна обслуживать ардуинка что бы ей понадобилось такая гора портов?

ssergo
Offline
Зарегистрирован: 10.05.2013

У нас на производстве рабочая группа решила автоматизировать процесс прозвонки автомобильных жгутов на ОТК(в экономном варианте, ибо использование промышленных наработок типа Divmaс - заоблачно дорого), имеющих более пятидесяти жил. Вот Вам и вариант использования.  Главное то, что есть такая возможность, а варианты использования подкинет жизнь,техзадание или воспаленный моск )).....

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

ssergo пишет:

У нас на производстве рабочая группа решила автоматизировать процесс прозвонки автомобильных жгутов на ОТК(в экономном варианте, ибо использование промышленных наработок типа Divmaс - заоблачно дорого), имеющих более пятидесяти жил. Вот Вам и вариант использования.  Главное то, что есть такая возможность, а варианты использования подкинет жизнь,техзадание или воспаленный моск )).....

возмите мегу2560 там без танцев с бубнами 53 вывода. да и прозвонку жгутов насколько я себе представляю можно производить на стенде с лампочками. без всяких там МК.

 не нужно плодить сучностей свыше необходимого :)

ssergo
Offline
Зарегистрирован: 10.05.2013

я не поборник флуда, в принципе ветку можно закрыть, тк решение темы ветки найдено. 

Но напоследок все-таки замечу что 54 портов (а не 53) на меге все равно недостаточно для прозвонки 100 концов, и на лампочках чтобы реализовать стенд прозвонки 20 номенклатурных групп жгутов - это глупо и как раз наплодит кучу ненужных сущностей в виде матриц перекоммуникаций реализованных в железе.

Гораздо разумнее и следуя принципу "Лезвия Оккамы" матрицы коммутаций реализовать программно и по необходимости заливать нужную программку. Все. Эту тему я больше не обсуждаю. Всем спасибо. 

0259
0259 аватар
Offline
Зарегистрирован: 30.03.2014

Puhlyaviy пишет:

возмите мегу2560 там без танцев с бубнами 53 вывода. да и прозвонку жгутов насколько я себе представляю можно производить на стенде с лампочками. без всяких там МК.

 не нужно плодить сучностей свыше необходимого :)

у меня мега но портов много не бывает может быть только недостаточно!