Sensor PIR em Pino D0\D1 ?

Já pensaste na solução do port extender??

Tipo o MCP23017?

Queres mostrar o teu esquema para vermos se não existe possibilidade de melhorar essas lilgações?

´
//no inciio do ficheiro... 

#define SET_BIT(p,n) ((p) |= (1 << (n)))
#define CLR_BIT(p,n) ((p) &= (~(1) << (n)))

//No setup... 
   pinMode(latchPin, OUTPUT);

//no ficheiro de código... 
void ShiftUpdate(unsigned char data) {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, data);
    digitalWrite(latchPin, 1);
}

//no loop

for (unsigned char i = 0; i < 2; i++) {
    SET_BIT (dataOut, 2); 
    ShiftUpdate(dataOut);
    delay(100);
    CLR_BIT(dataOut, 2);
    ShiftUpdate(dataOut);
    delay(100);
}

Sempre que usas um delay estragas a performance do programa... logo não vale a pena sequer comentar o resto.