Bonjour,
J'ai l'impression qu'il y a 2 sujets dans le message :
- comment cabler le pcf84574 ( et comment il fonctionne )
- comment faire fonctionner un LCD sur PCF8574
Tout d'abord, l'adressage avec l'arduino :
le PCF8574 a une adresse de base = 0100 XXX Y ( 64 en décimal )
Les XXX Y correspondent en fait à A2, A1, A0 et R/W ...
Explications :
- le bit 0 indique si vous voulez accéder au PCF en lecture : R ( =1) ou en écriture W (= 0)
- le bit 1 correspond à l'état de l'entrée A0 donc ce bit est à 0 si la borne A0 est à la masse et ce bit est à 1 si la borne A0 est au +5V
- le bit 2 correspond à l'état de l'entrée A1 donc ce bit est à 0 si la borne A1 est à la masse et ce bit est à 1 si la borne A1 est au +5V
- le bit 3 correspond à l'état de l'entrée A2 donc ce bit est à 0 si la borne A2 est à la masse et ce bit est à 1 si la borne A2 est au +5V
Exemple : - A0 et AI et A2 sont reliés à la masse et vous voulez écrire une donnée ==> l'adresse est 0100 0000 ( 64 D )
- A0 et AI et A2 sont reliés à la masse et vous voulez lire une donnée ==> l'adresse est 0100 0001 ( 65 H )
Avec la librairie wire, c'est un peu plus compliqué puisque ce sont les instructions qui déterminent si on accède en lecture ou écriture.
De ce fait, on enlève le bit 0 de l'adresse ce qui donne pour notre exemple ci-dessus : 0100 000X ==> 0010 0000 soit 32D
Notez qu'il éxiste aussi le PCF8574
A qui a une adresse de base = 0111 XXX Y ( 112 D )
Un petit sketch pour résumer :
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(57600);
}
void loop() {
//Toutes les sorties mises à 1
Serial.println("Write B11111111.");
Wire.beginTransmission(B0100000); // adresse sur 7 bits
Wire.send(B11111111);
Wire.endTransmission();
delay(1000);
//Toutes les sorties mises à 0
Serial.println("Write B11111111.");
Wire.beginTransmission(B0100000); // adresse sur 7 bits
Wire.send(B00000000);
Wire.endTransmission();
delay(1000);
// lit 1 octet en provenance du PCF8574
Wire.requestFrom(B0100000, 1); // adresse sur 7 bits
while (Wire.available ())
{
int i=Wire.receive (); // Stockage de l'octet = état des 8 lignes PO à P7 du PCF8574
Serial.print("Valeur lue :");
Serial.println(i,BIN);
}
}
Après, pour brancher et faire fonctionner le LCD, avez vous un liens plus complet car je ne trouve pas le schéma sur votre lien. J'ai ouvert une bonne partie des archives ZIP, mais pas de schéma ...
A+