Probema PCF8574 input output

buona sera a tutti ,
ho un problema con un pcf , ho 4 pin in lettura che sono P0,P1,P2,P3 ed 2 pin in output che sono P4 ed P5
queste ultime 2 per provare il funzionamento cambio lo stato della variabile pc1 o pc2 e di conseguenza deve cambiale lo stato di P4 o P5

, non riesco a fare combinare le 2 cose , legge male sia gli ingressi che le uscite sono 2 giorni che non riesco a farli funzionare insieme ,se leggo o scrivo solamente riesco a farli funzionare ma insieme non riesco
ecco il codice, ringrazio er il vostro aiuto ad arrivare alla soluzione

#include <Wire.h>

#define PCF8574_ADDRESS 0x27

bool pc1 = false;
bool pc2 = false;

unsigned long lastTime_pc1 = 0;
unsigned long lastTime_pc2 = 0;

void setup() {
  Wire.begin();        // Inizializza la libreria Wire
  Serial.begin(9600);  // Inizializza la comunicazione seriale
  Wire.beginTransmission(PCF8574_ADDRESS);
  Wire.write(0b00001111);    // Imposta i pin P0, P1, P2, P3 come input (bit 0 a 1, gli altri a 0)
  Wire.endTransmission();
}

void loop() {
  // Cambia lo stato di pc1 ogni 500 ms
  if (millis() - lastTime_pc1 >= 500) {
    pc1 = !pc1;
    Serial.print("pc1: ");
    Serial.println(pc1 ? "HIGH" : "LOW");
    // Scrivi lo stato delle variabili pc1  pin P4
    byte outputState = (pc1 << 0);
    Wire.beginTransmission(PCF8574_ADDRESS);
    Wire.write(outputState);
    Wire.endTransmission();
    lastTime_pc1 = millis();
  }

  // Cambia lo stato di pc2 ogni 1000 ms
  if (millis() - lastTime_pc2 >= 1000) {
    pc2 = !pc2;
    Serial.print(" pc2: ");
    Serial.println(pc2 ? "HIGH" : "LOW");
    // Scrivi lo stato delle variabili  pc2 sui pin  P5
    byte outputState = (pc2 << 1) ;
    Wire.beginTransmission(PCF8574_ADDRESS);
    Wire.write(outputState);
    Wire.endTransmission();
    lastTime_pc2 = millis();
  }

  // Leggi lo stato dei pin P0, P1, P2, P3
  Wire.requestFrom(PCF8574_ADDRESS, 1);
  if (Wire.available()) {
    byte pinState = Wire.read();
    bool pin0State = pinState & (1 << 0); // Leggi lo stato del pin P0
    bool pin1State = pinState & (1 << 1); // Leggi lo stato del pin P1
    bool pin2State = pinState & (1 << 2); // Leggi lo stato del pin P2
    bool pin3State = pinState & (1 << 3); // Leggi lo stato del pin P3

    Serial.print("Stato del pin P0: ");
    Serial.println(pin0State ? "HIGH" : "LOW");
    Serial.print("Stato del pin P1: ");
    Serial.println(pin1State ? "HIGH" : "LOW");
    Serial.print("Stato del pin P2: ");
    Serial.println(pin2State ? "HIGH" : "LOW");
    Serial.print("Stato del pin P3: ");
    Serial.println(pin3State ? "HIGH" : "LOW");
  }
 

}

grazie , ma non riesco a riuscire a farlo andare, hai un esempio da poter capire come fare?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.