Un saluto a tutti.
Mi sapreste aiutare a risolvere questo problema ?
Non riesco a capire perchè non funziona il PCF8574AP collegato ai pin SDA ed SCL rispettivamente ai pin A4 ed A5 di arduino con la comunicazione I2C.
Mi spiego.
Il circuito legge 8 ingressi digitali collegati al primo PCF8574AP configurato in ingresso e rispettivamente il secondo PCF8574A configurato in uscita ha collegato 8 led.
Alla pressione del tato 1 si deve accendere il led 1, 2 il led 2 e così via.
Tutto bene fino al tasto 4, dopo tutto un casino.
Ho notato che in ingresso, vengono letti tutti gli ingressi correttamente, mentre per le uscite, il valore corretto che viene gestito si ferma a 14, dopo di chè non comprendo perchè le uscite con peso binario 16 e 32 sono sempre attive e quelle con peso 32 e 64 sempre spente.
Il codice utilizzato è il seguente:
// test in-out PCF8574AP
#include<Wire.h>
byte x=0;
byte y=0;void setup()
{
Wire.begin();
Serial.begin(9600);
}void loop()
{Wire.requestFrom(0x3A,1);
if(Wire.available()) //If the request is available
{
x=Wire.read(); //Receive the data
}
if(x<255) //If the data is less than 255
{
if (x==0) { y = 0; }; //null
if (x==1) { y = 1; }; //P1
if (x==2) { y = 2; }; //P2
if (x==4) { y = 4; }; //P3
if (x==8) { y = 8; }; //P4
if (x==16) { y = 16; }; //P5
if (x==32) { y = 32; }; //P6
if (x==64) { y = 64; }; //P7
if (x==128) { y = 128; }; //P8
}
Wire.beginTransmission(0x3B); //Begin the transmission to PCF8574
Wire.print(y); //Send the data to PCF8574
Wire.endTransmission(); //End the Transmission
Serial.println(y);
}
Grazie per l'attenzione.