Связка LCD + I2C

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Что бы не повторяться http://arduino.ru/forum/obshchii/pomogite-razobratsya-lcdpcf8574#comment-51204

 

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

Переходник виден по адресу 20. Подключал к меге,уно,нано. Эфект одинаковый.Горит только верхняя строка и всё. Пайку прозвонил.Вроде все окей.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Ух ты, похоже Вы первый счастливый обладатель данной модели. Поиском не пробовали воспользоваться?

LCD 16x2 i2c

Найдено результатов: примерно 18 (за 0,17 сек.)

http://arduino.ru/forum/programmirovanie/lcd-i2c-partizanit

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

Знакомая картина. У вас дисплей не инициализировался просто. Я уже писал на эту тему.

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Я очень рад ,что у Вас аналитический склад ума.Я не спрашивал сколько тем и за сколько секунд это найдется. Я просил помочь с подбором библиотек к конкретным девайсам. Тем я много прочитал и библиотек скачал на 35 мег. Толку то что? Я вот и интересовался -рабочим вариантом.И ИНТЕРЕСУЮСЬ!!!!!!

Нужна просто рабочая ссылка на рабочую библиотеку (многие ссылки в примерах форума не работают).

БУДУ ОЧЕНЬ БЛОГАДАРЕН!!!!!!!!!!!

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Gagarin74 пишет:

Я очень рад ,что у Вас аналитический склад ума.Я не спрашивал сколько тем и за сколько секунд это найдется. Я просил помочь с подбором библиотек к конкретным девайсам.

Можно заставить человека прочитать написанное, но нельзя заставить понять прочитанное:

Цитата:
Модуль i2c с адресом 0x20 на котором сзади надпись "I2C lcd1602 www. mjkdz. com" - версия 1 наоборот, не работает (тоже рисует первый ряд квадратиками...), а работает версия 2.0.

Это про библиотеку LiquidCristal_i2c, если кто-то еще не догадался... Но нет никакой гарантии, что в Вашем случае это поможет, т.к. у Вас может оказаться совершенно другая плата.

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Andrey_Y_Ostanovsky пишет:

Gagarin74 пишет:

Я очень рад ,что у Вас аналитический склад ума.Я не спрашивал сколько тем и за сколько секунд это найдется. Я просил помочь с подбором библиотек к конкретным девайсам.

Можно заставить человека прочитать написанное, но нельзя заставить понять прочитанное:

Цитата:
Модуль i2c с адресом 0x20 на котором сзади надпись "I2C lcd1602 www. mjkdz. com" - версия 1 наоборот, не работает (тоже рисует первый ряд квадратиками...), а работает версия 2.0.

Это про библиотеку LiquidCristal_i2c, если кто-то еще не догадался... Но нет никакой гарантии, что в Вашем случае это поможет, т.к. у Вас может оказаться совершенно другая плата.

Вот я и прошу всего на всего ссылку на конкретно упомянутую библиотеку !!!!!!!!!!!!!!!!!!!!!!!!!!

Не могу я найти ссылку рабочую.

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

Могу дать на ту что я использовал (Дописал стандартную)

http://yadi.sk/d/wc1tGBUWEvmAh

Проверял с чипом PCF8574T

Только вот совсем не факт что у вас заработает. У меня она через раз дает такие строчки - по неизвестным причинам. И проблема в дисплее.

anneksiya81
Offline
Зарегистрирован: 17.12.2013

Gagarin74 пишет:

Что бы не повторяться http://arduino.ru/forum/obshchii/pomogite-razobratsya-lcdpcf8574#comment-51204

 

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

Переходник виден по адресу 20. Подключал к меге,уно,нано. Эфект одинаковый.Горит только верхняя строка и всё. Пайку прозвонил.Вроде все окей.

надеюсь кидаете i2c на A4 A5  к UNO?

моя проблема вот тут http://arduino.ru/forum/apparatnye-voprosy/lcd-i2c-i-ds1307#comment-50818

 

Gagarin74
Offline
Зарегистрирован: 24.08.2013

anneksiya81 пишет:

 

надеюсь кидаете i2c на A4 A5  к UNO?

моя проблема вот тут http://arduino.ru/forum/apparatnye-voprosy/lcd-i2c-i-ds1307#comment-50818

 

Да кидаю и на 4 и на 5 и на меге вроде все подписано.Я перепробывал на всех ардуино которые дома.

Вашу ссылку читал уже.

СПАСИБО

Обидно то ,что я специально на ебае выбирал модули с приложенной библиотекой для скачивания.

СКАТЫ-не работает.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Где-то я в подобной теме выкладывал уже строку иницилизации для этого модуля. Тут фишка в  том,Что надо правельно прописать ноги в иницилизации

Gagarin74
Offline
Зарегистрирован: 24.08.2013

MaksMS пишет:

Где-то я в подобной теме выкладывал уже строку иницилизации для этого модуля. Тут фишка в  том,Что надо правельно прописать ноги в иницилизации

ПЛИЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ!!!!!!!!!!!!!!!! поподробней.Найдите пожалуйста эту тему !!!!!!

Просто я купил этого гемороя 12 штук дисплеев и столько же переходников.

Встречу на улице китайца -набью морду.

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Gagarin74 пишет:

Просто я купил этого гемороя 12 штук дисплеев и столько же переходников.

А дисплеи без переходников (по классической схеме подключения) - у Вас работают? Т.е., где проблема: в тормозах дисплея, или в плате переходника?

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Andrey_Y_Ostanovsky пишет:

Gagarin74 пишет:

Просто я купил этого гемороя 12 штук дисплеев и столько же переходников.

А дисплеи без переходников (по классической схеме подключения) - у Вас работают? Т.е., где проблема: в тормозах дисплея, или в плате переходника?

на прямую работают

triada13
Offline
Зарегистрирован: 04.01.2013

Gagarin74 , а вы случаем не из Челябинска?

MaksMS
Offline
Зарегистрирован: 11.03.2013

Иницилизация строкой LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Библиотека от Francisco Malpartida

Gagarin74
Offline
Зарегистрирован: 24.08.2013

MaksMS пишет:

Иницилизация строкой LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Библиотека от Francisco Malpartida

А откуда в активации столько цифорок ? Да и номер у меня не 0х27 а 0х20

и дайте приз ссылку на эту библиотеку

MaksMS
Offline
Зарегистрирован: 11.03.2013

На плате не запаяны перемычки адреса - сотвественно адрес и получается 0х27.. Ссылку не могу дать - не помню откуда.Гуглить надо

Gagarin74
Offline
Зарегистрирован: 24.08.2013

MaksMS пишет:

На плате не запаяны перемычки адреса - сотвественно адрес и получается 0х27.. Ссылку не могу дать - не помню откуда.Гуглить надо

У меня сканер четко показывает адрес 0х20. Библиотека не тут случайно - http://playground.arduino.cc/Code/LCD если не трудно то какая конкретно?

MaksMS
Offline
Зарегистрирован: 11.03.2013

Вот эта библиотека http://homes-smart.ru/upload/arduino/LiquidCrystal.zip

Адрес зависит от того куда подключены адресные пины на модуле i2c ,у меня они не запаяны -сотсвествено адрес 0х27

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Скотч можно полностью сюда Ваш выложить. При применение библиотеки начинает что то промаргивать и всё.Весь дисплей горит в подсветки или верхняя строка в квадратиках.

Life23
Offline
Зарегистрирован: 10.08.2013

MaksMS пишет:

Вот эта библиотека http://homes-smart.ru/upload/arduino/LiquidCrystal.zip

Адрес зависит от того куда подключены адресные пины на модуле i2c ,у меня они не запаяны -сотсвествено адрес 0х27

Что значит "не запаяны"??? Адресные пины должны сидеть или на "+" питания или "-" питания!!! но никак не в воздухе!

по поводу беблиотеки I2C - читайте http://zelectro.com.ua/ (не сочтите за рекламу)! там есть описание I2C. И беблиотеки. Сам пользуюсь. и сам делал преобразователи по их же описанию! Только не попадитесь на микруху с буквенным индексом "T" у нее адреса с 0х27 по 0х32!!

MaksMS
Offline
Зарегистрирован: 11.03.2013

Да точно ,сейчас глянул что она с индексом Т -  и адрес 0х27 ,по этому и подумал,что не запаяные выводы дают адрес именно такой..

И нет ничего страшного,Что с индексом Т  - все работает так же :)

Life23
Offline
Зарегистрирован: 10.08.2013

Страшного ничего. Но когда я заказал 5 штук PCF8574 в интернет магазине, пришел заказ. 2 работают по адресу 0х27 а три на отказ ни в какую! когда уже мозга закипел - только тогда посмотрел на маркировку.. и до меня дошло.. 2-штуки:  PCF8574Т а три  PCF8574АТ. У АТ-серии адреса с 38h по 3Fh! http://www.nxp.com/documents/data_sheet/PCF8574_PCF8574A.pdf

Так что если вам мало 8 lcd, можно взять АТ серию и еще 8 "втулить"! )))

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Большое ,человеческое спасибо. И за строку инсталлизации и за ссылку на библиотеку.

Все заработало.А теперь подробно о граблях.

Первое. Качаем сканер порта -

// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}

 

Читаем о нем тут

Убеждаемся что переходничек виден и работоспособен. ЗАПОМЕНАЕМ ЕГО АДРЕС.

Библиотекой поделился мистер МАКС.Качаем её.

Строка инстализации без исправлений только адрес устройства

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



#define BACKLIGHT_PIN     13

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE);  // Set the LCD I2C address


// Creat a set of new characters
const uint8_t charBitmap[][8] = {
   { 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 },
   { 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 },
   { 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 },
   { 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 },
   { 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 },
   { 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 },
   { 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 },
   { 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 }
   
};

void setup()
{
   int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0]));

  // Switch on the backlight
  pinMode ( BACKLIGHT_PIN, OUTPUT );
  digitalWrite ( BACKLIGHT_PIN, HIGH );
  
  lcd.begin(16,2);               // initialize the lcd 

   for ( int i = 0; i < charBitmapSize; i++ )
   {
      lcd.createChar ( i, (uint8_t *)charBitmap[i] );
   }

  lcd.home ();                   // go home
  lcd.print("Hello, ARDUINO ");  
  lcd.setCursor ( 0, 1 );        // go to the next line
  lcd.print (" FORUM - fm   ");
  delay ( 1000 );
}

void loop()
{
   lcd.home ();
   // Do a little animation by writing to the same location
   for ( int i = 0; i < 2; i++ )
   {
      for ( int j = 0; j < 16; j++ )
      {
         lcd.print (char(random(7)));
      }
      lcd.setCursor ( 0, 1 );
   }
   delay (200);
}

Далее ,если появляются ХЕЛО РАША и всякии пузырики -ПОБЕДА.

Если тупо опять только одни верхние квадратики -берем отверку и методично крутим реостат.

Если это ни к чему не приводит то читаем вот тут про резистор .

Дома валяются три совершенно "одинаковых" экранчика. Так вот при тупом переключение (изьятия и вставки в ардуино) совершенно не факт что яркость и подсветка у них одинаковая. Один работает и на нем видно надпись,на другом уже нет. К каждому экранчику подобрал методом тыка резистор.После этого с макеткой проблем нет.Самый гиморный был ораньжевого цвета.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Ну и что в сухом остатке?

Про i2c сканер -  здесь на форуме уже говорилось, про яркость контраст и "квадратики" - тоже было, про подбор библиотек - несколько раз говорилось...

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Andrey_Y_Ostanovsky пишет:

Ну и что в сухом остатке?

Про i2c сканер -  здесь на форуме уже говорилось, про яркость контраст и "квадратики" - тоже было, про подбор библиотек - несколько раз говорилось...

В сухом остатке? Впринципе попытался, собрать всё в кучу в одном сообщение ,для конкретных девайсов.Что бы такие дураки как я, не тратили время в поисках по ссылкам . А то ,чего то тут, очень любят ,сперва мозг вынести,потом штук 5 ссылок дадут на другие темы, потом все таки внимательно прочитают вопрос и уж потом если не поленяться дадут ответ. И то в основном на дядюшку гугла.

userAR
Offline
Зарегистрирован: 19.10.2014

Дополню ветку:

Два часа пытался подключить новенький lcd1602 - горела только верхняя строчка квадратиками. Ничего по I2C до этого подключать не подходилось. Сканнер ничего не находил. И тут я понял, что на моей arduino leonardo выводы SCL и SDA расположены отдельно от analog in4 и analog in5 ( не как на uno и других). Из-за незнания особенностей платы потерял драгоценное время)).

art100
Offline
Зарегистрирован: 09.03.2014

userAR пишет:

Дополню ветку:

Два часа пытался подключить новенький lcd1602 - горела только верхняя строчка квадратиками. Ничего по I2C до этого подключать не подходилось. Сканнер ничего не находил. И тут я понял, что на моей arduino leonardo выводы SCL и SDA расположены отдельно от analog in4 и analog in5 ( не как на uno и других). Из-за незнания особенностей платы потерял драгоценное время)).

где фото?

userAR
Offline
Зарегистрирован: 19.10.2014

art100 пишет:

где фото?

Фото чего? Что у меня на выводах analog in4 и analog in5 ничего не рабртает?

Radjah
Offline
Зарегистрирован: 06.08.2014

Вот мои страдания с дисплеем http://blog.radjah.ru/2014/08/arduino.html

Тоже долго гуглил, но таки нашел правильную инициализацию.

А вот статья-источник, которая помогла запустить дисплей http://devdotnet.org/post/2013/04/24/Podkluchenie-displeya-LCD-2004-po-shine-I2C-ispolzuya-Shift-Register-PCF8574T-k-Arduino.aspx

LYNX
Offline
Зарегистрирован: 21.03.2014

Добрый день

Купил такой модуль Board Module Port IIC/I2C/TWI/SP​​I Serial Interface For Arduino 1602 LCD S9

Подключил к дисплею 1602 yellow

Подключил к ардуино pro mini

Проверил адрес, показал 0х27

Загрузил библиотеку, проверил тест кодом с различный ссылок (например с этой статьи), в итоге горит только первая строка квадратиками

 

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

LYNX
Offline
Зарегистрирован: 21.03.2014

Дисплей модели 16x2 1602 HD44780. Про контроллер пока не нашел. Перепробовал еще пару библиотек, безрезультатно

LYNX
Offline
Зарегистрирован: 21.03.2014

Может кто примерно подсказать что прозванивать чтобы опредилить ножки l2c правильные для дисплея. Пока что ни одна библиотека не подходит, также как и варианты распиновки (2 вида встречал)

LYNX
Offline
Зарегистрирован: 21.03.2014

Прочитал статью

ПОмогут ли в моем случае подтягивающие резисторы... ??

Dimus
Offline
Зарегистрирован: 25.11.2012

если на модуле их нет, то помогут

какие библиотеки пробовал?

LYNX
Offline
Зарегистрирован: 21.03.2014

Решил проблему пропайкой получке. помогло :)  Не думал что проблема в этом будет

demon969
Offline
Зарегистрирован: 24.04.2012

Добрый вечер. Имеется Arduino MEGA R3, к 20 и 21 пинам подключен LCD, можно ли подключить к второй паре i2c (эти пины находятся около aref, 13 ...) пинам второе устройство с интерфейсом i2c (модуль часов DS3231)? Есть ли на плате необходимые резисторы для линии I2C? Или на модулях LCD и DS3231 есть подтягивающие резисторы?

 

bwn
Offline
Зарегистрирован: 25.08.2014

А что мешает второе устройство подключить к тому же I2C, она вроде для этого и придумана? Резисторы на модулях уже стоят, если модулей много, скорее выпаивать придется.

Drusha
Offline
Зарегистрирован: 30.09.2015

Gagarin74, Спасибо Вам огромное!!! Получил дисплей, час игрался, но наткнулся на эту тему, сканер портов выдал 0x3F. Только тогда заработл дисплей.

akass
Offline
Зарегистрирован: 30.11.2015

Подключил 1602 к ардуине через L2C, экран включается, но ничего не выводит, пробовал с десяток библиотек и примеров.

Так же пробовал проставить резисторы на А5 и А4, но не уверен что это правильно делал. Не подскаэете что может быть?

bwn
Offline
Зарегистрирован: 25.08.2014

akass пишет:

Подключил 1602 к ардуине через L2C, экран включается, но ничего не выводит, пробовал с десяток библиотек и примеров.

Так же пробовал проставить резисторы на А5 и А4, но не уверен что это правильно делал. Не подскаэете что может быть?

Вы адрес I2C определили сканером? Когда определите, это будет означать, что по I2C вы соединились и можно думать про дисплей. До этого момента, даже не известно, что у вас не работает.

akass
Offline
Зарегистрирован: 30.11.2015

bwn пишет:

akass пишет:

Подключил 1602 к ардуине через L2C, экран включается, но ничего не выводит, пробовал с десяток библиотек и примеров.

Так же пробовал проставить резисторы на А5 и А4, но не уверен что это правильно делал. Не подскаэете что может быть?

Вы адрес I2C определили сканером? Когда определите, это будет означать, что по I2C вы соединились и можно думать про дисплей. До этого момента, даже не известно, что у вас не работает.


Да, сканер показывает что 0х27 найден.

bwn
Offline
Зарегистрирован: 25.08.2014

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

akass
Offline
Зарегистрирован: 30.11.2015

bwn пишет:

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


Gnd-gnd
Vcc-5v
Sda-a5
Scl-a4

bwn
Offline
Зарегистрирован: 25.08.2014

Если определился адрес, то к переходнику вопросов нет. Теперь переходник-дисплей, непропай, сопля и т.д.

akass
Offline
Зарегистрирован: 30.11.2015

bwn пишет:

Если определился адрес, то к переходнику вопросов нет. Теперь переходник-дисплей, непропай, сопля и т.д.


Пропаяно 100% аккуратно и как надо.

bwn
Offline
Зарегистрирован: 25.08.2014

Закончилась фантазия, может кто еще что присоветует.

LYNX
Offline
Зарегистрирован: 21.03.2014

Если есть квадратики покрути яркость. Ты вроде писал что есть

Radjah
Offline
Зарегистрирован: 06.08.2014

Я уже в другой теме давал совет и про бибилиотеки и про версию среду и даже со ссылками.

Либы я распаковывал не в "Мои документы", а прямо в папку со средой, удалив тамошнюю либу для дисплея.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

akass, Я писал маленький скетчик для проверки  микрухи, на которой собрал переходник. В неё раз в секунду поочереди записывается либо 00, либо FF, потом программно читается.  Соответсвенно можно проверить светодиодом или тестером все линии шины.  Какой-то один бит на переходнике подтянут к земле, и не может стать единицей, так что FF не выдаст. Адрес в 11 и 14  строке вставить свой.

//    TEST  pcf8574 Remote 8-Bit I/O Expander for I2C
#include "Wire.h"
byte n=0;
void setup() {
Serial.begin(9600);
Wire.begin();

}
void loop() {
n=~n;  
Wire.beginTransmission(0x3f);
Wire.write(n);
Wire.endTransmission();
Wire.requestFrom(0x3f,1); 
Serial.println(Wire.read());
delay(1000);

}

 

akass
Offline
Зарегистрирован: 30.11.2015

LYNX пишет:
Если есть квадратики покрути яркость. Ты вроде писал что есть

 
Экран горит, но никаких квадратов нет.