Например TDA7294

Форум РадиоКот • Просмотр темы - Замена PCF8574 на PCA9554 .
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс июн 01, 2025 05:34:22

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Замена PCF8574 на PCA9554 .
СообщениеДобавлено: Чт май 15, 2025 19:31:10 
Друг Кота
Аватар пользователя

Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22
Сообщений: 4425
Откуда: Владивосток
Рейтинг сообщения: 0
Кто делал такую замену в подключении индикатора lcd 1602 на шину i2c ?
По даташиту это пин ту пин . Не будет ли проблем каких-либо ? Просто есть PCA9554 с донорских плат .
А заказывать модули PCF8574 долго .

_________________
«Когда у общества нет цветовой дифференциации штанов, то нет цели!»

- Позвольте-с вас спросить, почему от вас так отвратительно пахнет?
- Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
СообщениеДобавлено: Чт май 15, 2025 20:12:33 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1596
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
В PCA9554 есть Control Register, имеет регистры направления выходного сигнала и регистры инверсии полярности. Прямая замена не даст результатов.
Если пишете программу самостоятельно, то все несложно. Необходимо добавит инициализацию.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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);
}

_________________
«Когда у общества нет цветовой дифференциации штанов, то нет цели!»

- Позвольте-с вас спросить, почему от вас так отвратительно пахнет?
- Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
СообщениеДобавлено: Пт май 16, 2025 15:13:40 
Сверлит текстолит когтями

Карма: 12
Рейтинг сообщений: 124
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1213
Рейтинг сообщения: 0
jonpim, попробуй сам. Начни с LiquidCrystal_I2C.cpp. Не будет получаться - люди подскажут.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
СообщениеДобавлено: Пт май 16, 2025 16:24:38 
Друг Кота
Аватар пользователя

Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22
Сообщений: 4425
Откуда: Владивосток
Рейтинг сообщения: 0
Цитата:
Начни

начну с поездки за модулем PCF8574T за 100 р :)
не хочу моск ломать инитом PCA9554AD , я не писатель кода а ремонтник :facepalm:

Нашел библиотеку на 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);
}

Неправильно ?

_________________
«Когда у общества нет цветовой дифференциации штанов, то нет цели!»

- Позвольте-с вас спросить, почему от вас так отвратительно пахнет?
- Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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 для обычного теста.

Изображение


Вложения:
pca9554_pdsprj.zip [16.79 KiB]
Скачиваний: 22
hello_world.zip [13.91 KiB]
Скачиваний: 25
Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
СообщениеДобавлено: Вс май 18, 2025 10:31:02 
Друг Кота
Аватар пользователя

Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22
Сообщений: 4425
Откуда: Владивосток
Рейтинг сообщения: 0
Пример на pca9554 работает а вот как вставить эти измененные библиотеки в мой скетч?
И зачем скрипт ? Обьясните несведующему .

_________________
«Когда у общества нет цветовой дифференциации штанов, то нет цели!»

- Позвольте-с вас спросить, почему от вас так отвратительно пахнет?
- Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
СообщениеДобавлено: Вс май 18, 2025 10:53:40 
Друг Кота
Аватар пользователя

Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22
Сообщений: 4425
Откуда: Владивосток
Рейтинг сообщения: 0
Цитата:
Измените "глобальной путь" к библиотеки
на "локальной":

Теперь понятно .

pca9554_pdsprj разве не срипт ?

_________________
«Когда у общества нет цветовой дифференциации штанов, то нет цели!»

- Позвольте-с вас спросить, почему от вас так отвратительно пахнет?
- Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
СообщениеДобавлено: Вс май 18, 2025 11:05:16 
Друг Кота
Аватар пользователя

Карма: 4
Рейтинг сообщений: 323
Зарегистрирован: Ср мар 31, 2010 09:33:22
Сообщений: 4425
Откуда: Владивосток
Рейтинг сообщения: 0
Этот аргумент не корректен "

_________________
«Когда у общества нет цветовой дифференциации штанов, то нет цели!»

- Позвольте-с вас спросить, почему от вас так отвратительно пахнет?
- Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
СообщениеДобавлено: Вс май 18, 2025 11:06:21 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1596
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Код:
#include <LiquidCrystal_I2C.h"

Взгляните повнимательнее. Что там не нравится? :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Замена PCF8574 на PCA9554 .
СообщениеДобавлено: Вс май 18, 2025 11:15:48 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1596
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
(написали один символ < и другой символ ")


Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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);
}

_________________
«Когда у общества нет цветовой дифференциации штанов, то нет цели!»

- Позвольте-с вас спросить, почему от вас так отвратительно пахнет?
- Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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/


Цитата:
Адрес, вероятно, не тот.

Адрес тот , пример работает на нем .

_________________
«Когда у общества нет цветовой дифференциации штанов, то нет цели!»

- Позвольте-с вас спросить, почему от вас так отвратительно пахнет?
- Ну, что ж, пахнет... известно. По специальности. Вчера котов душили, душили. (с)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: 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;
...


Вложения:
sketch_may18a.zip [6.47 KiB]
Скачиваний: 24


Последний раз редактировалось veso74 Вс май 18, 2025 13:00:16, всего редактировалось 1 раз.
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y