Форум РадиоКот • Просмотр темы - Замена PCF8574 на PCA9554 .
Сообщения без ответов | Активные темы
Страница 1 из 2
[ Сообщений: 24 ]
,
Автор
Сообщение
jonpim
Заголовок сообщения: Замена PCF8574 на PCA9554 .
Добавлено: Чт май 15, 2025 19:31:10
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Кто делал такую замену в подключении индикатора lcd 1602 на шину i2c ? По даташиту это пин ту пин . Не будет ли проблем каких-либо ? Просто есть PCA9554 с донорских плат . А заказывать модули PCF8574 долго .
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Вернуться наверх
Реклама
veso74
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Чт май 15, 2025 20:12:33
Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52Сообщений: 1596Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
В PCA9554 есть Control Register, имеет регистры направления выходного сигнала и регистры инверсии полярности. Прямая замена не даст результатов. Если пишете программу самостоятельно, то все несложно. Необходимо добавит инициализацию.
Вернуться наверх
Реклама
jonpim
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Чт май 15, 2025 20:29:49
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Что надо добавить в скетч на ESP8266 чтобы была корректная замена ? Вот код Спойлер //Prateek //www.justdoelectronics.com #include <Wire.h> #include <PZEM004Tv30.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); PZEM004Tv30 pzem(D7, D8); void setup() { Serial.begin(115200); lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("PZEM Test"); lcd.setCursor(0, 1); lcd.print("by Prateek"); delay(500); lcd.clear(); } void loop() { float voltage = pzem.voltage(); if (voltage != NAN) { Serial.print("Voltage: "); Serial.print(voltage); Serial.println("V"); lcd.setCursor(0, 0); lcd.print("V:"); lcd.print(voltage); } else { Serial.println("Error reading voltage"); } float current = pzem.current(); if (current != NAN) { Serial.print("Current: "); Serial.print(current); Serial.println("A"); lcd.setCursor(0, 1); lcd.print("I:"); lcd.print(current); } else { Serial.println("Error reading current"); } float power = pzem.power(); if (current != NAN) { Serial.print("Power: "); Serial.print(power); Serial.println("W"); lcd.setCursor(9, 0); lcd.print("P:"); lcd.print(power); } else { Serial.println("Error reading power"); } float energy = pzem.energy(); if (current != NAN) { Serial.print("Energy: "); Serial.print(energy, 3); Serial.println("kWh"); } else { Serial.println("Error reading energy"); } float frequency = pzem.frequency(); if (current != NAN) { Serial.print("Frequency: "); Serial.print(frequency, 1); Serial.println("Hz"); lcd.setCursor(8, 1); lcd.print("f:"); lcd.print(frequency); } else { Serial.println("Error reading frequency"); } float pf = pzem.pf(); if (current != NAN) { Serial.print("PF: "); Serial.println(pf); } else { Serial.println("Error reading power factor"); } Serial.println(); delay(2000); }
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Вернуться наверх
OKF
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Пт май 16, 2025 15:13:40
Сверлит текстолит когтями
Карма: 12
Рейтинг сообщений: 124
Зарегистрирован: Вт июн 07, 2011 08:03:18Сообщений: 1213
Рейтинг сообщения: 0
jonpim , попробуй сам. Начни с LiquidCrystal_I2C.cpp. Не будет получаться - люди подскажут.
Вернуться наверх
jonpim
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Пт май 16, 2025 16:24:38
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Цитата:
Начни
начну с поездки за модулем PCF8574T за 100 р
не хочу моск ломать инитом PCA9554AD , я не писатель кода а ремонтник
Нашел библиотеку на PCA9554 , в ней пример . Кусок кода вставил в свой .
Спойлер //Prateek //www.justdoelectronics.com #include <Wire.h> #include <PZEM004Tv30.h> #include <PCA9554.h> // Load the PCA9554 Library #include <LiquidCrystal_I2C.h> PCA9554 ioCon1(0x38); // Create an object at this address LiquidCrystal_I2C lcd(0x38, 16, 2); PZEM004Tv30 pzem(D7, D8); void setup() { Serial.begin(115200); ioCon1.portMode(ALLOUTPUT); //Set the port as all output // Can also set pins individually using // ioCon1.pinmode(pin number, Input/Output); // IE: ioCon1.pinmode(1, INPUT); lcd.init(); lcd.setCursor(0, 0); lcd.print("PZEM Test"); lcd.setCursor(0, 1); lcd.print("by Prateek"); delay(500); lcd.clear(); } void loop() { float voltage = pzem.voltage(); if (voltage != NAN) { Serial.print("Voltage: "); Serial.print(voltage); Serial.println("V"); lcd.setCursor(0, 0); lcd.print("V:"); lcd.print(voltage); } else { Serial.println("Error reading voltage"); } float current = pzem.current(); if (current != NAN) { Serial.print("Current: "); Serial.print(current); Serial.println("A"); lcd.setCursor(0, 1); lcd.print("I:"); lcd.print(current); } else { Serial.println("Error reading current"); } float power = pzem.power(); if (current != NAN) { Serial.print("Power: "); Serial.print(power); Serial.println("W"); lcd.setCursor(9, 0); lcd.print("P:"); lcd.print(power); } else { Serial.println("Error reading power"); } float energy = pzem.energy(); if (current != NAN) { Serial.print("Energy: "); Serial.print(energy, 3); Serial.println("kWh"); } else { Serial.println("Error reading energy"); } float frequency = pzem.frequency(); if (current != NAN) { Serial.print("Frequency: "); Serial.print(frequency, 1); Serial.println("Hz"); lcd.setCursor(8, 1); lcd.print("f:"); lcd.print(frequency); } else { Serial.println("Error reading frequency"); } float pf = pzem.pf(); if (current != NAN) { Serial.print("PF: "); Serial.println(pf); } else { Serial.println("Error reading power factor"); } Serial.println(); delay(2000); }Неправильно ?
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Вернуться наверх
Реклама
veso74
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Сб май 17, 2025 06:34:58
Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52Сообщений: 1596Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Неправильно. В функциях связи I2c в LiquidCrystal_I2C добавьте использование другой ИС с ее управлением.
---
В LiquidCrystal_I2C добавил код для PCA9554. Тест: в симулаторе. I2c адрес: 0x27. Измените на свой.
Могут быть неточности, нет у меня PCA для обычного теста.
Вернуться наверх
Реклама
jonpim
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 10:31:02
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Пример на pca9554 работает а вот как вставить эти измененные библиотеки в мой скетч? И зачем скрипт ? Обьясните несведующему .
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Вернуться наверх
veso74
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 10:41:02
Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52Сообщений: 1596Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Что называете "скрипт"?
Просто заменитье библиотеку LiquidCrystal_I2C на ту, что в прикрепленном сообщении выше
(LiquidCrystal_I2C.ccp, LiquidCrystal_I2C.h файл + PCA9554.cpp, PCA9554.h).
Измените "глобальной путь" к библиотеки LiquidCrystal_I2C:
Код:
#include <LiquidCrystal_I2C.h>
на "локальной":
Код:
#include "LiquidCrystal_I2C.h"
Не анализирую, что делает ваш код. С другой библиотекой из сообщение выше следует сделать то же самое, но с PCA9554.
Вернуться наверх
jonpim
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 10:53:40
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Цитата:
Измените "глобальной путь" к библиотеки на "локальной":
Теперь понятно .
pca9554_pdsprj разве не срипт ?
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Вернуться наверх
Реклама
veso74
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 10:57:14
Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52Сообщений: 1596Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Нет. Ето файл симуляции "ATmega328P + PCA9554 + LCD1602" в софтe Proteus, из скриншоте выше. Часто бывает быстрее и эффективнее использовать программы-симуляции, чем реальное устройство. По крайней мере: если нет чип PCA, но можно писать код и протестировать. На самом деле с высокой степенью вероятности если работает на симуляторе, то будет работать на реальном устройстве.
Последний раз редактировалось veso74 Вс май 18, 2025 11:02:25, всего редактировалось 1 раз.
Вернуться наверх
jonpim
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:01:01
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Ошибка сразу выскакивает -
Спойлер rduino: 1.8.19 (Windows 7), Плата:"LOLIN(WEMOS) D1 ESP-WROOM-02, 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 2MB (FS:64KB OTA:~992KB), v2 Lower Memory, Disabled, None, Only Sketch, 921600" sketch_may16a:7:31: error: missing terminating > character 7 | #include <LiquidCrystal_I2C.h" | ^ sketch_may16a:7:10: fatal error: C:\Users\2\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/include/LiquidCrystal_I2C.h": Invalid argument 7 | #include <LiquidCrystal_I2C.h" | ^ compilation terminated. exit status 1 missing terminating > character Возникла ошибка при загрузке https://downloads.arduino.cc/packages/p ... index.json Библиотеки нужно присоединять в программе ?
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Последний раз редактировалось jonpim Вс май 18, 2025 11:04:18, всего редактировалось 1 раз.
Вернуться наверх
veso74
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:04:07
Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52Сообщений: 1596Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Внимательно посмотрите на написанный вами текст. Строки не случайны. Просто проанализируйте, что написано. Если хотите, с переводчиком. Другого способа написать прогр. код не существует.
Последний раз редактировалось veso74 Вс май 18, 2025 11:17:00, всего редактировалось 1 раз.
Вернуться наверх
jonpim
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:05:16
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Этот аргумент не корректен "
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Вернуться наверх
veso74
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:06:21
Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52Сообщений: 1596Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Код:
#include <LiquidCrystal_I2C.h"
Взгляните повнимательнее. Что там не нравится?
Вернуться наверх
jonpim
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:14:51
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Ну не хочет эта строчка лезть и все .
я не вижу разницы с моей -
Цитата:
на "локальной": Код: #include "LiquidCrystal_I2C.h"
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Последний раз редактировалось jonpim Вс май 18, 2025 11:15:52, всего редактировалось 1 раз.
Вернуться наверх
veso74
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:15:48
Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52Сообщений: 1596Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
(написали один символ < и другой символ ")
Вернуться наверх
jonpim
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:29:05
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Ну эти крючкотворы задолбали ....
вот почему кодописатели такие не от мира сего
Добавлено after 11 minutes 15 seconds: Загрузил но не работает .
Цитата:
//Prateek //www.justdoelectronics.com #include <Wire.h> #include <PZEM004Tv30.h> #include "LiquidCrystal_I2C.h" #include "PCA9554.h" LiquidCrystal_I2C lcd(0x38, 16, 2); PZEM004Tv30 pzem(D7, D8); void setup() { Serial.begin(115200); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("PZEM Test"); lcd.setCursor(0, 1); lcd.print("by Prateek"); delay(500); lcd.clear(); } void loop() { float voltage = pzem.voltage(); if (voltage != NAN) { Serial.print("Voltage: "); Serial.print(voltage); Serial.println("V"); lcd.setCursor(0, 0); lcd.print("V:"); lcd.print(voltage); } else { Serial.println("Error reading voltage"); } float current = pzem.current(); if (current != NAN) { Serial.print("Current: "); Serial.print(current); Serial.println("A"); lcd.setCursor(0, 1); lcd.print("I:"); lcd.print(current); } else { Serial.println("Error reading current"); } float power = pzem.power(); if (current != NAN) { Serial.print("Power: "); Serial.print(power); Serial.println("W"); lcd.setCursor(9, 0); lcd.print("P:"); lcd.print(power); } else { Serial.println("Error reading power"); } float energy = pzem.energy(); if (current != NAN) { Serial.print("Energy: "); Serial.print(energy, 3); Serial.println("kWh"); } else { Serial.println("Error reading energy"); } float frequency = pzem.frequency(); if (current != NAN) { Serial.print("Frequency: "); Serial.print(frequency, 1); Serial.println("Hz"); lcd.setCursor(8, 1); lcd.print("f:"); lcd.print(frequency); } else { Serial.println("Error reading frequency"); } float pf = pzem.pf(); if (current != NAN) { Serial.print("PF: "); Serial.println(pf); } else { Serial.println("Error reading power factor"); } Serial.println(); delay(2000); }
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Вернуться наверх
veso74
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:38:14
Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52Сообщений: 1596Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
уже не нужно: #include "PCA9554.h"
нет инициализации: lcd.begin();
LiquidCrystal_I2C lcd(0x38, 16, 2); ?
Адрес, вероятно, не тот.
Последний раз редактировалось veso74 Вс май 18, 2025 11:52:46, всего редактировалось 2 раз(а).
Вернуться наверх
jonpim
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:41:44
Друг Кота
Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22Сообщений: 4425Откуда: Владивосток
Рейтинг сообщения: 0
Цитата:
нет инициализации: lcd.begin();
С ней ошибка
Я ламер в кодописании ардуино , только повторяю вот это -
https://justdoelectronics.com/pzem-004t ... r-monitor/ Цитата:
Адрес, вероятно, не тот.
Адрес тот , пример работает на нем .
_________________ «Когда у общества нет цветовой дифференциации штанов, то нет цели!» - Позвольте-с вас спросить, почему от вас так отвратительно пахнет? - Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)
Вернуться наверх
veso74
Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
Добавлено: Вс май 18, 2025 11:51:17
Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52Сообщений: 1596Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Пример? Там ИС не была PCF8574? Сканируйте шину I2C для получения ответа от устройства на PCA.
Ваш код у меня компилируется (заменил значения на 0). Ищите ошибку.
Код:
float voltage = pzem.voltage(); -> float voltage = 0; ...
Последний раз редактировалось veso74 Вс май 18, 2025 13:00:16, всего редактировалось 1 раз.
Вернуться наверх
Страница 1 из 2
[ Сообщений: 24 ]
,
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения