Переназначить пины в библиотеке LiquidCristal_I2C

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

Привет всем. Как можно переназначить пины подключения дисплея (RS, E, RW) в библиотеке, чтобы подключить PCF8574. Т.е, стандартное подключение 4-4, 5-5, 6-6 выводы дисплея и PCF8574 по другому. Спасибо.

nik182
Онлайн
Зарегистрирован: 04.05.2015

Пины назначаются в момент инициализации. Номера не имеют, только имена.

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

nik182 пишет:
Пины назначаются в момент инициализации. Номера не имеют, только имена.

Меня интересуют только (RS, E, RW).

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

В I2C нет таких пинов.

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

Родное сердце! Ты бы выразился яснее. Модуль на основе PC8574 имеет типовую схему и припаивается вот прям нога-в-ногу на дисплеи типа 1602, 2004 и т.п. И да на этих дисплеях RS,RW.E это  4,5,6 см. картинки. Так чего ты хочешь? Припаять на другой дисплей? Поясни, плз.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Cennmax пишет:

Привет всем. Как можно переназначить пины подключения дисплея (RS, E, RW) в библиотеке, чтобы подключить PCF8574. Т.е, стандартное подключение 4-4, 5-5, 6-6 выводы дисплея и PCF8574 по другому. Спасибо.

В библиотеке LiquidCristal_I2C нет таких пинов. Может Вы имели в виду LiquidCristal? Так они там в конструкторе задаются, назначайте чего хотите, я разрешаю.

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

Печатная плата для поделки сделана и изготовлена на индикатор WH0802 и PCF8574AT. Так вот там, RW,RS,E идут с PCF на дисплей как 4-6, 5-4, 6-5. Где в библиотеке можно их переназначить?

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

ЕвгенийП пишет:

Cennmax пишет:

Привет всем. Как можно переназначить пины подключения дисплея (RS, E, RW) в библиотеке, чтобы подключить PCF8574. Т.е, стандартное подключение 4-4, 5-5, 6-6 выводы дисплея и PCF8574 по другому. Спасибо.

В библиотеке LiquidCristal_I2C нет таких пинов. Может Вы имели в виду LiquidCristal? Так они там в конструкторе задаются, назначайте чего хотите, я разрешаю.

Вообще-то в немного другой библе имеются

This is fast Arduino library for LCD HD44780 and its clones (S6A0069, KS0066U, NT3881D, LC7985, ST7066, SPLC780, WH160xB, AIP31066, GDM200xD). It works in 4-bit mode via I²C bus with 8-bit PCF8574/PCF8574A I/O expander.

The 99.9% of all PCF8574 I²C backpacks from eBay connected like this:

PCF8574 ports LCD pins
P0 4/RS
P1 5/RW
P2 6/En
P3 16/BACKLIGHT LED-, with turn-on level HIGH/POSITIVE
P4 11/DB4
P5 12/DB5
P6 13/DB6
P7 14/DB7

The initialization string:

LiquidCrystal_I2C lcd(PCF8574_ADDR_A21_A11_A01, 4, 5, 6, 16, 11, 12, 13, 14, POSITIVE);

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Cennmax пишет:
Вообще-то в немного другой библе имеются

Вопрос про "немного другую библу" без ссылки на неё, чтобы её можно было увидеть, расценивается как издевательство над теми, кто пытается Вам помочь. Я (и остальные) слили в унитаз своё время, пытаясь Вам помогать, не имея никакого понятия о том, что у Вас "немного другая (ХЗ какая!!!!) "библа"".

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

Да Ё-МОЁ, Разговор про библу Liqidcristal_I2C обычную, я про неё и спрашиваю, А скрины с модифицированной библиотеки! Вот я и спросил, возможно ли найти где эти выводы назначаются в стандартной библиотеке???
Да ладно, проехали, я не собирался не над кем издеваться, вроде и доходчиво обЬяснял. Спасибо.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Cennmax пишет:

я и спросил, возможно ли найти где эти выводы назначаются в стандартной библиотеке???

Так я и ответил первой фразой поста #5

sadman41
Offline
Зарегистрирован: 19.10.2016

Товарищ имеет в виду возможность скомандовать объекту ликвидкристалл_и2ц дергать другими ногами pcf-ки, не дефолтовыми.

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

Совершенно верно, ДРУГ.

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

ЕвгенийП пишет:

Cennmax пишет:

я и спросил, возможно ли найти где эти выводы назначаются в стандартной библиотеке???

Так я и ответил первой фразой поста #5

Ну пины же где-то должны назначаться?

v258
Offline
Зарегистрирован: 25.05.2020

Cennmax пишет:

Ну пины же где-то должны назначаться?


Нет. В случае I2C пины зависят не от библиотеки, а от модели контроллера

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

Cennmax пишет:

ЕвгенийП пишет:

Cennmax пишет:

я и спросил, возможно ли найти где эти выводы назначаются в стандартной библиотеке???

Так я и ответил первой фразой поста #5

Ну пины же где-то должны назначаться?

Тугой? Пишут уже не первый раз: "В СТАНДАРТНОЙ LiquidCrystal I2C - НЕЛЬЗЯ". Есть ДРУГИЕ библиотеки, где - МОЖНО, там строчка конструктора длинная. как в приведенной тобой цитате. Вот и ищи такую библиотеку. Или еще и поискать для тебя надо?

Или напиши свою, или перепиши типовую для себя - путей миллион. В типовой эти три пина встречаются менее десятка раз. 10 строчек кода - это, конечно, вот прям истинный героизм! ;)))

Green
Онлайн
Зарегистрирован: 01.10.2015

Cennmax пишет:

Ну пины же где-то должны назначаться?


Известно где. В LiquidCrystal_I2C.h, где ж ещё.
 

#define En B00000100  // Enable bit
#define Rw B00000010  // Read/Write bit
#define Rs B00000001  // Register select bit

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Cennmax пишет:

Ну пины же где-то должны назначаться?

Кому? Вам? Ну, если должны, то попробуйте стрясти долг через суд.

sadman41
Offline
Зарегистрирован: 19.10.2016

...\Documents\Arduino\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.h 

....
#define En B00000100  // Enable bit
#define Rw B00000010  // Read/Write bit
#define Rs B00000001  // Register select bit
....

Вот это дефолтовые значения для библиотеки: En - pin 6, Rw -pin 5, Rs - pin 4

Думаю, что если биты либо имена дефайнов переставить в некотором ином порядке, то всё должно замигать.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

...\Documents\Arduino\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.h 

....
#define En B00000100  // Enable bit
#define Rw B00000010  // Read/Write bit
#define Rs B00000001  // Register select bit
....

Вот это дефолтовые значения для библиотеки: En - pin 6, Rw -pin 5, Rs - pin 4

Думаю, что если биты либо имена дефайнов переставить в некотором ином порядке, то всё должно замигать.

Вот-вот. Как раз сейчас курил и до меня таки наконец дошло, что ТС нужны именно эти биты, пришёл написать, но Вы опередили.

У ТС уникальная способность "понятно формулировать вопрос" :-)

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

sadman41 пишет:

...\Documents\Arduino\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.h 

....
#define En B00000100  // Enable bit
#define Rw B00000010  // Read/Write bit
#define Rs B00000001  // Register select bit
....

Вот это дефолтовые значения для библиотеки: En - pin 6, Rw -pin 5, Rs - pin 4

Думаю, что если биты либо имена дефайнов переставить в некотором ином порядке, то всё должно замигать.

в коде использованы только Rs и En по два раза каждый... ;))

 

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

Как осиное гнездо, чё злые то такие???
ЕвгенийП, на аватарке точно ты?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Точно.

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

Тогда может подскажете другое?
PIC16F выдает сигналы I2C. Как узнать на каком адресе?
Сканер I2C ардуино здесь не проканает.

b707
Offline
Зарегистрирован: 26.05.2017

Cennmax пишет:

Тогда может подскажете другое?
PIC16F выдает сигналы I2C. Как узнать на каком адресе?
Сканер I2C ардуино здесь не проканает.

если он "выдает сигналы", значит он мастер. А понятие адрес относится к слейву... потому и сканер не прокатывает. что сканировать нечего

rkit
Онлайн
Зарегистрирован: 23.11.2016

Очевидно написать слейв-сканер.

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

Cennmax пишет:

Как осиное гнездо, чё злые то такие???

Лисапеда нету, кроме титанового )))

а попробуй поставить через меню - LiquidCrystal_PCF8574.h

в файле LiquidCrystal_PCF8574.cpp заменить как хотелось бы
 

#define PCF_RS 0x01
#define PCF_RW 0x02
#define PCF_EN 0x04
#define PCF_BACKLIGHT 0x08

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Cennmax пишет:

Тогда может подскажете другое?
PIC16F выдает сигналы I2C. Как узнать на каком адресе?
Сканер I2C ардуино здесь не проканает.

Я уже отмечал

ЕвгенийП пишет:

У ТС уникальная способность "понятно формулировать вопрос" :-)

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

Cennmax пишет:

Тогда может подскажете другое?

Почему не подсказать? Подскажем: забудьте про Ардуино и займитесь лучше макраме.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Вообще Новый год скоро, добрее нужно быть. Протереть шары хрустальные и вперёд. 

b707
Offline
Зарегистрирован: 26.05.2017

BOOM пишет:

Протереть шары хрустальные и вперёд. 

попробовать, что ль?

Полагаю, что у ТС есть ПИК с прошивкой, которая типа должна взаимодействовать по I2C с неким оборудованием. Адрес слейва I2C, зашитый в прошивке - неизвестен. ТС нужна программа, которая будет последовательно прикидываться слейвами I2c c разными адресами, пока мастер на ПИКе с ней не законтачит.

Короче, как сказал rkit - нужен слейв-сканер

Сорри, но похоже это заразно и я выражаюсь так же туманно, как и сам ТС :)

 

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

b707 пишет:

Короче, как сказал rkit - нужен слейв-сканер

Ну тот, вероятно, пошутил. Никаких слейв-сканеров не может существовать по структуре протокола. Мастер может вообще не иметь адреса. А тот адрес, по которому мастер обращается в шину к кому-то - виден на логическом анализаторе... как-то так ;)))

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Может я чего не понимаю - но я вижу пару путей решения вопроса:

1 - отключить мастер и подключить i2c сканер и выяснить адрес

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

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

mykaida пишет:

Может я чего не понимаю - но я вижу пару путей решения вопроса:

1 - отключить мастер и подключить i2c сканер и выяснить адрес

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

Не один путь не приведет к ожидаемому. На слейве и так ясен адрес, микросхема PIc16F1827, при чем здесь даташит??? Один умнее другого. Если она прошитая HEX откуда я могу узнать какой там адрес?

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

Cennmax пишет:

 Если она прошитая HEX откуда я могу узнать какой там адрес?

так Дракула подсказал, подключить лог.анализатор, он скажет

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Cennmax пишет:

Не один путь не приведет к ожидаемому. На слейве и так ясен адрес, микросхема PIc16F1827, при чем здесь даташит???

Пи-те, уважаемый. I2C сканер Вы не запускали. Иначе PIc16F1827 ответил бы Вам свой адрес I2C (если это и правда слейв). При чем здесь прошивка? Любой свободно программируемый контроллер можно запрограммировать в любом режиме. И неча истерить - Вы даже схему устройства себе не представляете, а уже - ХОЧУ!

Cennmax
Cennmax аватар
Offline
Зарегистрирован: 06.09.2019

mykaida пишет:

Cennmax пишет:

Не один путь не приведет к ожидаемому. На слейве и так ясен адрес, микросхема PIc16F1827, при чем здесь даташит???

Пи-те, уважаемый. I2C сканер Вы не запускали. Иначе PIc16F1827 ответил бы Вам свой адрес I2C (если это и правда слейв). При чем здесь прошивка? Любой свободно программируемый контроллер можно запрограммировать в любом режиме. И неча истерить - Вы даже схему устройства себе не представляете, а уже - ХОЧУ!

Блин, уважаемый. PIC это мастер, а через PCF по шине I2C подключен дисплей 0802А. Ладно, проехали правда. Всех с НАСТУПАЮЩИМ!!!!!