Проблема с адресом i2c для LCD

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Suyano, 7 апр 2018.

  1. Suyano

    Suyano Нерд

    Доброго времени суток! Приобрел LCD экран с поддержкой i2c:
    [​IMG]
    Определил его имя через i2c сканер (0x3F). Заливаю прошивку
    Код (C++):
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>

    LiquidCrystal_I2C lcd(0x3F,16,2);   /* Задаем адрес и размерность дисплея.
    При использовании LCD I2C модуля с дисплеем 20х04 ничего в коде изменять не требуется, cледует только задать правильную размерность */


    void setup()
    {
      lcd.init();                            // Инициализация lcd            
      lcd.backlight();                       // Включаем подсветку
      // Курсор находится в начале 1 строки
      lcd.print("Hello, world!");            // Выводим текст
      lcd.setCursor(0, 1);                   // Устанавливаем курсор в начало 2 строки
      lcd.print("Test code");              // Выводим текст
    }

    void loop()
    {
    }
    Вроде бы даже выводит эти строки на экран. Стоит мне отключить от питания и вернуть обратно - надпись пропадает и на экране тупо квадратики. Перепрошивка не помогает. Прописываю новое имя (0x39), надпись снова появляется. Стоит мне перезагрузить питание - история повторяется. Складывается мнение, что каждый раз экран меняет свое имя. Может ли быть такое? Данная проблема с любыми прошивками для экрана. Использую ArduinoMega, экран подключен к SDA/SCL, других устройств нет.
     
  2. DIYMan

    DIYMan Гуру

    Лупу в руки - и просматривать на сопли между контактами и непропай. Имхо это первое, с чего стоит начать при описанных симптомах.
     
  3. Suyano

    Suyano Нерд

    Также, если я заливаю код, который должен менять текст на экране - текст застывает.
    Код (C++):
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    //I2C pins declaration
    LiquidCrystal_I2C lcd(0x39, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    void setup()
    {
    lcd.begin(16,2);//Defining 16 columns and 2 rows of lcd display
    lcd.backlight();//To Power ON the back light
    //lcd.backlight();// To Power OFF the back light
    }
    void loop()
    {
    //Write your code
    lcd.setCursor(0,0); //Defining positon to write from first row,first column .
    lcd.print(" Tech Maker "); //You can write 16 Characters per line .
    delay(1000);//Delay used to give a dynamic effect
    lcd.setCursor(0,1);  //Defining positon to write from second row,first column .
    lcd.print("Like | Share");
    delay(8000);
    lcd.clear();//Clean the screen
    lcd.setCursor(0,0);
    lcd.print(" SUBSCRIBE ");
    lcd.setCursor(0,1);
    lcd.print(" TECH MAKER ");
    delay(8000);
    }
     
  4. Suyano

    Suyano Нерд

    Проверил, соплей нет. Плюс я снова пропаял все контакты. Также сменил Мегу на Уно, результат не изменился.
    [​IMG]
    [​IMG]
     
    Последнее редактирование: 7 апр 2018
  5. DIYMan

    DIYMan Гуру

    На второй фотке грибы из припоя - это, кмк, нехорошая пайка. Но раз вы уверены, что с пайкой всё ок, тогда предположу, что проблема по железной части, например, адаптер I2C не алё.
     
    Suyano нравится это.
  6. Tomasina

    Tomasina Иномирянин

    Почему А0, А1, А2 не распаяны? Это как раз выбор адреса I2C.
    Они должны быть притянуты к Vcc или к Gnd. Сейчас они висят в воздухе и адрес при подаче питания зависит от расположения дисплея относительно вашего тела (ёмкостные наводки).
     
    Suyano и DIYMan нравится это.
  7. Suyano

    Suyano Нерд

    Запаял перемычки и все стало работать. Спасибо Вам Огромное!
     
  8. derby

    derby Нуб

    Всем привет, тоже как то попался, два одинаковых дисплея один работает, а второй молчит, подумал что i2c adapter на втором дисплее не рабочий, скачал даташит на pcf8574, и сразу разобрался, думаю наглядно будет более ясно понятнее что к чему, (в двух словах 8574Т И 8574АТ ИМЕЮТ РАЗНУЮ АДРЕСАЦИЮ).
     

    Вложения:

    • pcf8574xx.jpg
      pcf8574xx.jpg
      Размер файла:
      65,6 КБ
      Просмотров:
      127
  9. DetSimen

    DetSimen Гуру

    на то люди и придумали i2c scanner.