Проблемы с lcd 1602 с i2c

Тема в разделе "Arduino & Shields", создана пользователем VanGo, 20 май 2023.

  1. VanGo

    VanGo Нуб

    Недавно начал изучать ардуино, после экспериментов с мигающими светодиодами решил попробовать подключить LCD дисплей. Однако с этим возникли трудности. Дисплей просто светиться и информация на него не хочет выводиться. Пробовал самые разнообразные библиотеки для связи подобных экранов по I2C. Не помогает. Так же при проверке адреса модуля I2C, адрес постоянно ищется, но ни ошибок о ом что не найден модуль, ни какого либо адреса в порт не выдаёт
    Код (C++):
    #include <Wire.h> // библиотека для управления устройствами по I2C
    #include <LiquidCrystal_I2C.h> // подключаем библиотеку для QAPASS 1602

    LiquidCrystal_I2C LCD(0x3F,16,2); // присваиваем имя LCD для дисплея

    void setup() {
       LCD.init(); // инициализация LCD дисплея
       LCD.backlight(); // включение подсветки дисплея

       LCD.setCursor(1, 0);     // ставим курсор на 1 символ первой строки
       LCD.print("Hello");     // печатаем сообщение на первой строке

       LCD.setCursor(8, 1);        // ставим курсор на 1 символ второй строки
       LCD.print("World!!!");  // печатаем сообщение на второй строке
    }

    void loop() {
       LCD.noDisplay(); // выключаем и включаем надпись на дисплее
       delay(1000);
       LCD.display();
       delay(1000);
    }
     

    Вложения:

  2. User248

    User248 Гик

    Обычно запускается с адресом 0x27:
    Код (C++):
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    И контрастность попробуйте отрегулировать подстроечным резистором на плате I2C.
     
  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Плохо понятно на картинке. Вы не ошиблись с пинами на плате Ардуино нано ?
    8й и 9й по счету пины от УСБ коннкетора.
     
  4. VanGo

    VanGo Нуб

    Данный адрес тоже пробовал. При регулировки контрастности на левой половине дисплея на обоих строчках появляются прямоугольники, которые со времинем "расстворяються"
     
  5. VanGo

    VanGo Нуб

    Не ошибся. несколько раз перепроверял. Пины А4 для SDA и A5 для SCL
     
  6. ZAZ-965

    ZAZ-965 Гуру

    @VanGo, использование библиотекой метода LCD.init() не соответствует руководству по стилю написания библиотек, метод должен называться
    LCD.begin() (т.е вы используете устаревшую библиотеку). Установите, например, https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
    Код (C++):
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    // Set the LCD address to 0x27 for a 16 chars and 2 line display
    LiquidCrystal_I2C lcd(0x27, 16, 2);

    void setup()
    {
        lcd.begin();        // initialize the LCD
        lcd.backlight();   // Turn on the blacklight and print a message.
        lcd.print("Hello, world!");
    }

    void loop()
    {
    }
    В качестве сканера попробуйте https://github.com/RobTillaart/Arduino/tree/master/sketches/MultiSpeedI2CScanner
    PS Питание LCD случайно не перепутывали? У вас используется разъем питания от флопика и цвет проводов питания так и просится случайно перпутать.
     
  7. Airbus

    Airbus Радиохулиган Модератор

    А так?
    Код (Text):
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h> // Подключение библиотеки

    LiquidCrystal_I2C lcd(0x27,16,2); // Указываем I2C адрес (наиболее распространенное значение), а также параметры экрана (в случае LCD 1602 - 2 строки по 16 символов в каждой

    void setup()
    {
      lcd.init();                      // Инициализация дисплея
      lcd.backlight();                 // Подключение подсветки
      lcd.setCursor(0,0);              // Установка курсора в начало первой строки
      lcd.print("Hello");       // Набор текста на первой строке
      lcd.setCursor(0,1);              // Установка курсора в начало второй строки
      lcd.print("World");       // Набор текста на второй строке
    }
    void loop()
    {
    //Устанавливаем курсор на вторую строку и 3 символ.
    lcd.setCursor(3, 1);
    //Выводим на экран количество секунд с момента запуска ардуины
    lcd.print(millis() / 1000);
    delay(1000);
    }
     
    У Вас кстати LCD.setCursor(8, 1); Это куда? Первое что резануло глаз
     
    Последнее редактирование: 20 май 2023
  8. Airbus

    Airbus Радиохулиган Модератор

    До этого естессно ищем I2C адрес устройства. Может оно вообще нерабочее
    Код (Text):
    #include <Wire.h>
    void setup(){
    Wire.begin();
    Serial.begin(9600);
    while (!Serial);
    Serial.println("\n I²C Сканнер");
    }
    void loop(){
    byte error, address;
    int nDevices;
    Serial.println("Сканирование...");
    nDevices = 0;
    for(address = 8; address < 127; address++ ){
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0){
    Serial.print("Найден девайс I²C с адресом 0x");
    if (address<16)
    Serial.print("0");
    Serial.print(address,HEX);
    Serial.println(" !");
    nDevices++;
    }
    else if (error==4) {
    Serial.print("Неизвестная ошибка по адресу 0x");
    if (address<16)
    Serial.print("0");
    Serial.println(address,HEX);
    }
    }
    if (nDevices == 0)
    Serial.println("Девайсы I²C не найдены\n");
    else
    Serial.println("Ок\n");
    delay(5000);
    }
     
  9. VanGo

    VanGo Нуб

    Попробовал не работает. Выдаёт ошибки:
    C:\Users\HP\AppData\Local\Temp\.arduinoIDE-unsaved2023420-16040-1n758bd.c6jd\sketch_may20c\sketch_may20c.ino: In function 'void setup()':
    C:\Users\HP\AppData\Local\Temp\.arduinoIDE-unsaved2023420-16040-1n758bd.c6jd\sketch_may20c\sketch_may20c.ino:10:15: error: no matching function for call to 'LiquidCrystal_I2C::begin()'
    lcd.begin(); // initialize the LCD
    ^
    In file included from C:\Users\HP\AppData\Local\Temp\.arduinoIDE-unsaved2023420-16040-1n758bd.c6jd\sketch_may20c\sketch_may20c.ino:1:0:
    C:\Users\HP\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:58:8: note: candidate: void LiquidCrystal_I2C::begin(uint8_t, uint8_t, uint8_t)
    void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS );
    ^~~~~
    C:\Users\HP\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:58:8: note: candidate expects 3 arguments, 0 provided
    Несколько библиотек найдено для "LiquidCrystal_I2C.h"
    Используется: C:\Users\HP\Documents\Arduino\libraries\LiquidCrystal_I2C
    Не используется: C:\Users\HP\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master
    exit status 1

    Compilation error: no matching function for call to 'LiquidCrystal_I2C::begin()'
    PS. Все провода подключены правильно. Сразу обратил внимание ,что провода придётся подключать не по классическим цветам.
     
  10. VanGo

    VanGo Нуб

    Кстати. При попытке узнать адрес, висит такое сообщение и ничего не проиcходит.
     

    Вложения:

  11. VanGo

    VanGo Нуб

    Точнее не то что бы не происходит. Пускается по кругу и в Serial Monitor несколько раз выскакивают эти сообщения. Одно из которых с рандомными символами
     

    Вложения:

  12. VanGo

    VanGo Нуб

    Внимательнее вчитался в ошибку и понял в чём была проблема - было загружено несколько библиотек для работы с I2C. После удаления лишних ошибка пропала, но текст так и не выводиться...
     
  13. Airbus

    Airbus Радиохулиган Модератор

    Выбрось нафиг тогда. I2С приблуда не работает. Попробуй пропаять ее всю. Заодно замкни какую нибудь перемычку А0, А1 или А2 они меняют I2С адрес. Если все три разомкнуты то он 0х27
     
  14. VanGo

    VanGo Нуб

    Да ,похоже реально I2C модуль неисправен - пропаял выводы как на самом I2C, так и на ардуинке- не помогло. Поставил перемычку - считыватель адреса так и не нашёл ничего нового. Наверное попробую заказать модуль I2C отдельно и заменить.
     
  15. VanGo

    VanGo Нуб

    Всем спасибо за советы!
     
  16. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Микросхема I2C конвертора, стоЯщая в модуле - PCF8574. СтОит - копейки. Купите и поэкспериментируйте.
     
    Последнее редактирование: 20 май 2023
  17. Bott

    Bott Гик

    Ага, микросхема на али 37 рублей а модуль в сборе 47. Конечно дешевле!
     
  18. parovoZZ

    parovoZZ Гуру

    я бы вообще отпаял бы этот I2C и управлял lcd напрямую.

     
  19. User248

    User248 Гик

    Если подсветка включается, значит адрес правильный и модуль частично рабочий. Может быть непропай где-то. Или подсветка включается на любых адресах? Тогда проблема.
     
    Последнее редактирование: 21 май 2023
  20. VanGo

    VanGo Нуб

    подсветка включается как только подключаю питание. Видимо правда либо неисправен сам дисплей, либо модуль I2C. Дисплей без модуля пока не проверял - не пытался на него отправить данные. (точнее подключил к ардуино ,но кроме подсветки и 2-х строк прямоугольников, при чём только на правой стороне дисплея ничего нет + эти строки со временем исчезают) Новый модуль i2c приедет только на сл неделе.