Uilisation de PCF8574

Bonjour,
Je cherche à utiliser un circuit PCF8574 , pour interfacer un clavier 4x4 vec une carte Arduino ....
J'ai essayé de nombreux exemples sans trop de succés ......
Quelqu'un aurait -il un exemple, simple, (qui fonctionne), pour cela ....
Par exemple écrire le PCF8574 sur 4 des ports et et le lire sur quatres autres, les exemples que j'ai trouvés , ne fonctionnent pas du tout .......
Au minimum comment écrire sur 4 bits et lire sur 4 autres .... !!!!!

La première chose à faire lorsque l'on connecte un composant I2C sur un ARDUINO est de tester sa présence sur le bus :

As-tu testé ceci :

Bonsoir serge6969

Il te faut la bibliothèque Keypad_I2C.h

Attention, suivant le circuit intégré il peut y avoir l'adresse 0x20 ou 0x38

Cordialement
jpbbricole

C'est bien l'adresse "20" l'autre détecée, c'est l'afficheur Oled (3C)...

J'ai fais ça depuis longtemps, je trouve "3C" l'afficheur Oled et "20" le PCF8574 ..... Je cherche, un exemple " trés , trés basique et simple ,comment décider que 4 ports serviront en sortie et 4 en entrées , et comment les écrire et les lire .... avec, ou trouver la library correspondante pour que ça fonctionne .....!!!!

Bonsoir serge6969

C'est indiqué ici.
J'utilise cette bibliothèque, ça marche impec!

Cordialement
jpbbricole

Très bien, mais au lieu de nous laisser deviner ce que tu as expérimenté, et les tutos que tu as suivi, annonce la couleur d'entrée de jeu. Cela éviterait les question inutiles.

Bonsoir serge6969
J'avais oublié le branchement, si tu as un clavier à membranes comme ceci, c'est tout droit


Il faut juste laisser la pin de droite libre.

Cordialement
jpbbricole

Très basique = impossible.
Le PCF8574 est un Quasi bidirectionnel ce n'est pas vrai bidirectionnel
Pour les explications complètes il faut lire la datasheet.

Néanmoins en gros on peut dire que :

  • ses broches sont toutes des sorties, il est impossible de les configurer en entrée comme on le fait pour un microcontrôleur.

  • Mais ce circuit est capable de détecter quand on force une de ses sorties à un potentiel différent : il génère alors un signal d'interruption et le programmeur doit tester les accès pour déterminer celui qui a changé d'état.
    C'est l'explication du terme "quasi" bidirectionnel.

Des bibliothèques existent, toutes ne gèrent pas les interruptions et s'il est parfaitement possible de l'utiliser "comme" une entrée cela ne sera jamais simple.

Ce circuit PCF8574 est très vieux. Il existe des CI plus modernes qui se comportent comme tu le souhaites en vrai bidirectionnel, comme une E/S de microcontrôleur.
Je pense au MCP23017 qui est 16 bits, mais dont il existe une version 8 bits.

Bonjour,
Une vieillerie de 8 ans d'age sur le sujet : Lib Skywodd

Savez vous pourquoi un PCF8574 a ses broches de P0 à P7 à l'état haut (5v) lorsque l'on l'alimente (même si il est en liaison avec un Arduino).
Comment peut on faire pour qu'elles soit à l'état bas sans être obligé de le faire dans le Void setup () ?

Aucune idée, AMHA ce circuit n'est intéressant que lorsqu'il y a besoin d'être prévenu qu'une valeur "entrée" a changé d'état.
Sinon il y a vraiment plus pratique.

Si cela est possible, c'est obligatoirement dit dans la datasheet.

MCP23008, en chip, y compris DIL, mais le MCP23017 est disponible en module.

Si l'on force l'état d'une des sorties du PCF8574 à HIGH ou LOW, on peut parfaitement la lire, malgré l'absence de pinMode.
Je ne pense pas que ce soit handicapant pour lire un keypad.
La librairie de Rob Tillaart ou une autre doit pouvoir fonctionner sans problème.

PCF8574 est un circuit "presque" collecteur ouvert, avec un générateur de courant 100µA, ce qui limite fortement le courant disponible à l'état haut. C'est une des raisons pour lesquelles je lui préfère les MCP23008 et MCP23017.
Tant qu'à faire un choix, autant choisir un vrai expander. Les seuls PCF8574 que j'ai en stock sont des modules I2C pour LCD. Sinon, c'est MCP23XXX systématiquement.

J'ai commandé des MCP23017, je les attends, j'espere que ce sera plus simple à utliser..... :woozy_face:
Dommge que les PCF8574, ne soit pas utilisables, bon, ils vont finir àla poubelle :sleepy:

Bonjour serge6969

Pourquoi? Ca fonctionne très bien avec ce circuit et cette bibliothèque Keypad_I2C.h!

Cordialement
jpbbricole

Je n'ai pas dit que le PCF8574 était inutilisable pour cette application.
Voir les librairies posts #3 #4, et leurs exemples.

Je vais encore essayer ce WE, , de tout façon, pas le choix , je n'ai toujours pas recu les autres ....

Le MCP23017 est plus universel, il aura d'autres occasions d'être utilisé. Ce n'est pas une mauvaise chose d'en avoir quelques uns en stock.
Moi-même en ce moment j'en utilise un pour piloter 16 mosfets :
https://riton-duino.blogspot.com/2021/07/piloter-des-relais-ou-des-mosfets-laide.html