Site icon Renzo Mischianti

Can’t read value of INPUT with library

Hi, I have an encoder that was connected to my ESP32 and working great, because im running out of pins I move them to PCF8575 module but I cant read the value of INPUT pin. What is strange is that by using Wire.h library I can see that values changes so the module is working fine the problem is the library.


#include "Arduino.h"
#include "PCF8575.h"

// Set i2c address
PCF8575 pcf8575(0x20, 21,22);

void setup()
{
	Serial.begin(115200);

	pcf8575.pinMode(P2, INPUT);

	pcf8575.begin();
}

void loop()
{
   
   byte di = pcf8575.digitalReadAll();
   Serial.print("READ VALUE FROM PCF: ");
   Serial.println(di, BIN);
   
   delay(50);
}
Any clue? I always get 00000000 and when I press the encoder button I dont see anything change in the byte. And as I said by using Wire I can see that the corresponding bit changes. This is my code using Wire.h

#include "Arduino.h"
#include <Wire.h>

#define pcf8575adress 0x20

void setup()
{
  Serial.begin(9600);
  Wire.begin();

  pf575_write(word(B11111111,B11111111));

}

void loop()
{
  Wire.requestFrom(pcf8575adress, 1);
  byte incomingByte = Wire.read();
  printBinary(incomingByte);
  //Serial.println(incomingByte, BIN);
 delay(500);
}

void printBinary(byte b) {
  for (int i = 7; i >= 0; i-- )
  {
    Serial.print((b >> i) & 0X01);//shift and select first bit
  }
  Serial.println();
}

// Function for writing two Bytes to the I2C expander device
void pf575_write(uint16_t data) 
{
  Wire.beginTransmission(pcf8575adress);
  Wire.write(lowByte(data));
  Wire.write(highByte(data));
  Wire.endTransmission();
}
Exit mobile version