PCF8574A I2C

Ciao a tutti , dopo aver controllato in rete senza risultati ho deciso di aprire una nuova discussione , se mi è permesso ^

Utilizzo un ARDUINO UNO che , tramite I2C , comunica con un PCF8574A
Utilizzo la libreria PCF8574.H

Posto il codice :

#include <PCF8574.h>
#include <Wire.h>

PCF8574 expander;

void setup(){
  
   
  expander.pinMode(0,INPUT); 
 
  pinMode(13, OUTPUT);  

  
  expander.begin(0x38);
  
  expander.pullUp(0);

}



void loop(){
 
  
  expander.detachInterrupt(0);
  
  int value = (expander.digitalRead(0));
  
  if(value == 0)
  {
    digitalWrite(13, HIGH);
    delay (150);
    digitalWrite(13, LOW);
    delay (150);
    digitalWrite(13, HIGH);
    delay (150);
    digitalWrite(13, LOW);
    delay (150);
    digitalWrite(13, HIGH);
    delay (150);
    digitalWrite(13, LOW);
    delay (150);
    digitalWrite(13, HIGH);
    delay (150);
    digitalWrite(13, LOW);
    delay (150);
    digitalWrite(13, HIGH);
    delay (150);
    digitalWrite(13, LOW);
    
  }
  
  
  
}

Tutto funziona , premo il BUTTON sul PIN0 del PCF78574A e ottengo un lampeggio del LED collegato sull'uscita 13 della MAINBOARD di arduino

Ma se volessi far lampeggiare un LED su un PIN del PCF8574A con questo codice :

#include <PCF8574.h>
#include <Wire.h>

PCF8574 expander;

void setup(){
  
   
  expander.pinMode(0,INPUT); 
 
  expander.pinMode(1, OUTPUT);  

  
  expander.begin(0x38);
  
  expander.pullUp(0);

}



void loop(){
 
  
  expander.detachInterrupt(0);
  
  int value = (expander.digitalRead(0));
  
  if(value == 0)
  {
    expander.digitalWrite(1, HIGH);
    delay (150);
    expander.digitalWrite(1, LOW);
    delay (150);
    expander.digitalWrite(1, HIGH);
    delay (150);
    expander.digitalWrite(1, LOW);
    delay (150);
    expander.digitalWrite(1, HIGH);
    delay (150);
    expander.digitalWrite(1, LOW);
    delay (150);
    expander.digitalWrite(1, HIGH);
    delay (150);
    expander.digitalWrite(1, LOW);
    delay (150);
    expander.digitalWrite(1, HIGH);
    delay (150);
    expander.digitalWrite(1, LOW);
    
  }
  
  
  
}

accade che , quando premo il BUTTON sul PIN0 del PCF8574A il LED sul PIN 1 inizia a lampeggiare ma non si ferma più..

Ho fatto 1000 prove ma senza soluzione..

Grazie per l'aiuto

Dimenticavo , ritengo sia molto importante :

Se scollego il circuito PCF8574A lasciano alimentato ARDUINO ( quindi lo disalimento e sconnetto la linea i2c ) , attendo e riconnetto , il LED continua a lampeggiare

Grazie ancora

Presumo che hai messo il LED con la sua resistenza tra 5V e uscita PCF8574A. Un LOW accende il LED.
Se il pulsante viene schiafcciato il ciclo finisce con expander.digitalWrite(1, LOW); percui LED acceso!!
Ciao Uwe

Ciao e grazie per la tempestiva risposta

In realtà il problema e ben più complicato

Il LED non rimane acceso , ma continua a lampeggiare com se tenessi il pulsante premuto

Ho usato anche il terminale e , controllando lo stato del pulsante , una volta premuto lo vedo sempre in stato premuto , non va più a riposo

... Non e il pulsante difettoso ( ho pensato a tutto )

Grazie

Hai messo una resistenza di pullup sul pulsante (resistenza da 10kOhm tra entrata PCF8574A e +5V)? presumo che hai messo il pulsante tra entrata PCF8574A e massa.
Ciao Uwe

Si :frowning:

E lo ho anche definito nel comando !

Credo di poter affermare che il problema sia software , conosco il C ( sviluppo software per iPhone ) ma con Arduio e la prima volta che lavoro

Grazie