Site icon Renzo Mischianti

Switching on relays with PCF8574 expander

Hi guys, I have a board with ESP32 and two PCF8574 expanders, one for inputs and the other one for outputs. The "output" 's ports are connected to an ULN2003 (darlington NPN amplifier) that is used to switch on relays. I did a simple program to test the board out. I can change the states of PCF_Output pins on a read input but the relays do not switch on. If I add an external pull up resistor 10k from VCC to a pin, the corresponding relay becomes controllable, but on startup its HIGH for about a second which is a problem. I am looking for a way to fix that. Any help is appreciated. Here is my sample test code:
void setup()
{
  Serial.begin(115200);

  PCF_Input.pinMode(P0, INPUT);
  PCF_Input.pinMode(P1, INPUT);
  PCF_Input.pinMode(P2, INPUT);
  PCF_Input.pinMode(P3, INPUT);

  PCF_Output.pinMode(P0, OUTPUT, LOW);
  PCF_Output.pinMode(P1, OUTPUT, LOW);
  PCF_Output.pinMode(P2, OUTPUT, LOW);
  PCF_Output.pinMode(P3, OUTPUT, LOW);
 
  PCF_Input.begin();
  PCF_Output.begin();

}

void loop()
{
  Serial.print(PCF_Output.digitalRead(P0));
  Serial.print(PCF_Output.digitalRead(P1));
  Serial.print(PCF_Output.digitalRead(P2));
  Serial.print(PCF_Output.digitalRead(P3));

  Serial.println();
  delay(1000);

  if(PCF_Input.digitalRead(P0)==LOW)
  {
    PCF_Output.digitalWrite(P0, HIGH);
    PCF_Output.digitalWrite(P1, HIGH);
    PCF_Output.digitalWrite(P2, HIGH);
    PCF_Output.digitalWrite(P3, HIGH);

  }
  
}
Exit mobile version