Bonjour à tous:),
Voila, je découvre tranquillement Arduino et ses applications.
Je souhaiterai pouvoir utiliser une communication I2C avec un expander de type PCF8574A.
J'ai trouvé des ressources pour m'initier à cela, néanmoins je n'arrive pas à le faire fonctionner.
La particularité de mon expander est que ce n'est pas un PCF8574, mais un PCF8574A!
A priori, la différence réside juste dans l'adresse de celui-ci qui n'est pas 0x20 mais 0x38.
J'ai donc réalisé cette petite modif, mais toujours rien...
Cela fait maintenant quelques heures que je me triture les méninges, mais je ne comprends pas ce qui déconne....
Voici le code utilisé:
/*
Clignotement de LED en I2C avec un PCF8574
*/
#include <Wire.h>
#include <PCF8574.h>
#define adress 0x38
void setup() {
Wire.begin();
}
void loop() {
Write(B11111111); // On passe tout à 1 pour allumer les LED
delay(1000); // On attend 1s (1000ms)
Write(B00000000); // On passe tout à 1 pour etteindre les LED
delay(1000); // On attend 1s (1000ms)
}
void Write(byte _data) {
Wire.beginTransmission(adress); // Commence la transmission sur l'adresse défini plus haut
Wire.write(_data); // On envoie la donnée
Wire.endTransmission(); // On termine la transmission
}
Est-ce que quelqu'un voit ce qui déconne et pourrait éclairé ma led, ma lanterne, enfin comme vous voulez du moment que ça s'allume:)
Merci beaucoup!
Francis
Hors ligne
Re, c'est bon j'ai solutionné mon souci!
En faite, première chose: il n'y a pas besoin d'utiliser d'autre lib que "wire.h".
Secondo, il faut bien faire attention au modèle d'expander.
Dans le cas ou vous utilisez un PCF8574, sur un bus I2C son adresse est: 0x20.
Si vous utilisez un pCF8574A, son adresse est 0x38.
Autre différence, les sorties de ce dernier sont connectées à la masse et non pas au VCC comme sur le premier.
C'est couillon, mais faut le savoir!
Hors ligne
Must include main library
Hors ligne