#ifdef PCF8575
#define BITS_PER_CHIP 16
#else
#define BITS_PER_CHIP 16
#endif
Déjà tu as changé le code. A l'origine c'est :
// enlever le commentaire pour un PCF 16 bit
//#define PCF8575 1
#ifdef PCF8575
#define BITS_PER_CHIP 16
#else
#define BITS_PER_CHIP 8
#endif
J'ai fait le code et je l'ai testé avec un PCF8574 qui est 8 bit
Le but c'est que si le define au dessus est actif, le code est bon pour du PFC8574 qui est 16 Bits
Si le define est en commentaire (comme dans mon cas), le code est pour des PCF8574
Pour toi, il faut enlever le commentaire :
// enlever le commentaire pour un PCF 16 bit
#define PCF8575 1
#ifdef PCF8575
#define BITS_PER_CHIP 16
#else
#define BITS_PER_CHIP 8
#endif
Ensuite :
#define NBCHIP_OUT 1
#define NBCHIP_IN 1
Define qui définisse le nombre de chip d'entrée et le nombre de chip de sortie.
Moi j'en ai qu'un de chaque mais le code s'adapte automatiquement
uint8_t AdrChipOut[NBCHIP_OUT] = { 0x20 }; // ardresse des PCF de sortie
uint8_t AdrChipIn[NBCHIP_IN] = { 0x23}; // adresse des PCF d'entrée
Adresses des chip de sortie et des chip d'entrée. J'en ai qu'un de chaque.
uint16_t MemChipOut[NBCHIP_OUT];
Tu as regardé le code de pcfWriteOutBit() et pcfWriteOutWord() ?
Ca sert a mémoriser la dernière valeur écrite dans chaque PCF de sortie.
Sinon, on la fonction pcfWriteOutBit() ne peut pas marcher.
uint16_t ResChipIn[NBCHIP_IN];
Tableau de mémorisation des résultats de lecture des PCF d'entrée.