Por favor, las conexiones en electronica sea con el programa que sea deben ser ortogonales. O sea.. cuando cambias de direccion en ángulo recto.
Eso de tirar diagonales desde el sensor al pin del arduino es algo que se ha generalizado y resulta solo entendible por el autor.
Aprende en los programas a no usar delay() en cada paso que das en tu código
pcf8574.digitalWrite(P0, LOW); // P0 en ON
delay(pausa);
pcf8574.digitalWrite(P0, HIGH); // P0 en OFF
delay(pausa);
pcf8574.digitalWrite(P1, LOW); // P1 en ON
delay(pausa);
pcf8574.digitalWrite(P1, HIGH); // P1 en OFF
delay(pausa);
pcf8574.digitalWrite(P2, LOW); // P2 en ON
delay(pausa);
pcf8574.digitalWrite(P2, HIGH); // P2 en OFF
delay(pausa);
pcf8574.digitalWrite(P3, LOW); // P3 en ON
delay(pausa);
pcf8574.digitalWrite(P3, HIGH); // P3 en OFF
delay(pausa);
tienes un STOP y el resto?
Si aprendes a usar millis() puedes comandar todo sin que se detenga el programa.
Que pasa si luego tienes muchos sensores? pulsadores, sensores pantalla que actualizar
Cada pausa es de 2000 mseg o sea 2seg
Cada vez que cambias una de las 8 salidas demoras 2 seg o sea 16 segundos en recorrer todo.
Para la prueba esta bien pero para mas adelante no.
Desterra el uso de delay() antes que te vuelvas adicto y sea tarde.
Ve a Documentación => Indice de temas tutoriales => millis()