не работает дисплей 1602 I2C

alex46
Offline
Зарегистрирован: 06.10.2016

Здравствуйте! Приобрёл arduino Uno от robotdyn, разбираюсь, пытаюсь вот подключить дисплей по i2c, но перечитав кучу манов и посмотрев видео, так и не смог к сожалению преодолеть проблему:

На дисплее не отображается какой-либо текст, только горят квадраты и всё, контрастность влияет только собственно на яркость квадратов.

Адрес дисплея 0x38 (узнал i2c сканером)

модуль i2c для дисплея PCA8574AD

Код:

    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x38, 16, 2);
    void setup()
    {
     lcd.init(); 
     lcd.backlight();
     lcd.print("Hello");
     lcd.setCursor(0, 1);
     lcd.print("test");
    }
    void loop()
    {
    }

 

alex46
Offline
Зарегистрирован: 06.10.2016

И еще момент:

почему выдает два адреса а не один?

I2C Scanner
Scanning...
I2C device found at address 0x38  !
I2C device found at address 0x7C  !
done

 

для интереса подцепил часы, опять 2 адреса выдает

I2C device found at address 0x50 !
I2C device found at address 0x68 !
 

nik182
Offline
Зарегистрирован: 04.05.2015

У часов есть микросхема памяти наплате? Это она 0х50. У меня дисплеи откликаются на 0х27 и 0х3F в зависимости от запаяных перемычек на платах i2c.

alex46
Offline
Зарегистрирован: 06.10.2016

Да микруха есть.
А почему у дисплея два адреса? Пробовал оба не выводит, а когда перемычку делаю, питание светодиод гаснет на преобразователе .
По сканеру 0x38: дисплей или 0x7C

nik182
Offline
Зарегистрирован: 04.05.2015

Ни разу не встечал два адреса. У меня их был десяток. И платы i2c есть без дисплеев. http://arduino.ru/forum/programmirovanie/lcd-i2c-partizanit#comment-40761
Почитайте здесь. Долго обсуждали.

alex46
Offline
Зарегистрирован: 06.10.2016

Nik182, спасибо вам за помощь! уже было начал дело разбирать, собирался покупать другой i2c to LCD, но решил 2-й раз пропаять, и  заработало))

Как говорится, Электроника - наука о контактах

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

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

По умолчанию должно быть 3F на вашем контроллере, если перемычки не запаяны.

И покажите скетч I2C сканера. Может там что не так. Не должно два адреса определяться.

------------------

пока писал, проблемма исчезла... ну и слава Б..гу!

alex46
Offline
Зарегистрирован: 06.10.2016

К сожалению плату не сфоткаю, уже припаял.. но адресация видна, если не замкнуты то 0x38 (это от роботдина версия)

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

Код сканера i2c, кстати даже когда все заработало все равно 2 адреса находит 0_о

#include <Wire.h>
 
void setup(){
    Wire.begin();
 
    Serial.begin(9600);
    while (!Serial);
    Serial.println("\nI2C Scanner");
} 

void loop(){
    byte error, address;
    int nDevices;
 
    Serial.println("Scanning...");
 
    nDevices = 0;
    for(address = 8; address < 127; 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);
}

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Подключаете A4 и A5?

С такой строкой инициализации - LiquidCrystal_I2C lcd(0x38, 16, 2);- с моей библиотекой этот зверь не работает, работает с такой

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

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Дисплей с кириллицей стоит от 250р. Без оной - около 80р. Мой «патриотизм» стоит явно дешевле!

alex46
Offline
Зарегистрирован: 06.10.2016

wdrakula, это понятно) я хочу попробовать собрать автомат разменник, хотелось бы русский язык..

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

alex46 пишет:

wdrakula, это понятно) я хочу попробовать собрать автомат разменник, хотелось бы русский язык..

А он должен разменивать буквы или цифры?

Если цифры - зачем Вам кириллица?

alex46
Offline
Зарегистрирован: 06.10.2016

andriano, хочу сделать двухрежимный: выдача жетонов либо размен по номиналу опять же для последующей выдачи.

вот не знаю, хочу надписи на русском)))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

alex46 пишет:

вот не знаю, хочу надписи на русском)))

Ну чё делать - патрийод! ;)

Вот сайт отечественного производителя.

По любому выйдет дешевле, чем амперка, но в три раза дороже китая. ;) ;) ;)

Зато с кириллицей!

alex46
Offline
Зарегистрирован: 06.10.2016

wdrakula, спасибо за линк) но блин, как я понял доставка только от 1500 руб :(

Сумма заказа меньше минимально допустимой. Минимальная сумма заказа: 1 500.00 rub.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Тогда чип-дип, они в любое отделение Евросети отправят. Заодно еще что-нить у них возьмешь. Там оптопары выгоднее китайцев бывают. Мелочи всякие.

----------------------

Возьми у китайцев графический и не парься со шрифтами, как вариант.

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

А чем так подстановка напрягает? Или "Войну и мир" будете в период простоя прокручивать?

alex46
Offline
Зарегистрирован: 06.10.2016

bwn пишет:

А чем так подстановка напрягает? Или "Войну и мир" будете в период простоя прокручивать?


Буду пробовать, не со всеми библиотеками завелся по i2c, с русским дисплеем кода меньше думаю.
Напишу по результату)

Alex771
Offline
Зарегистрирован: 11.05.2017

Всем привет!

У меня тоже была проблема с этим адаптером от китайской фирмы robotdyn. 

Выводил символы не все. Думал может проблема с ЖК экраном (нерабочий, I2C адаптер не пропаенный и т.п.), но дело было не в этом.

Я использовал китайский LCD 20х4 - 4 строки по 20 знаков. 

Проблема решилась использованием нужной библиотеки(LiquidCrystal_I2C1602V1).

Ссылка на библиотеку: http://arduino-info.wikispaces.com/file/detail/LiquidCrystal_I2C1602V1.zip/341635514

Моя проблема решилась, может этот пост поможет остальным!

 

Адрес I2C адаптера проверено - 0х38h. Единственно, я так не понял почему программа I2C сканер находит два адреса?

Монитор последоватльного порта выводит:
***
I2C Scanner
Scanning...
I2C device found at address 0x38 !
I2C device found at address 0x7C !
done
***
Может кто-то понял почему это так?
Вот отрывок из даташита микросхемы PCA8574AD:http://www.nxp.com/documents/data_sheet/PCA8574_PCA8574A.pdf
 
По логики должен быть 0x70h адрес записи, но не как 0x7C. Но я могу ошибаться...