CrossRoads:
I don't see how. You have all four cathodes turned all the time
Yes, BTW they are common anode displays
This seems to work:
void update_display() {
for(int j = 0;j<4;j++)
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, digit[j]);
digitalWrite(latchPin, HIGH);
digitalWrite(digits[j], HIGH);
delay(1);
digitalWrite(digits[j], LOW);
}
}
The problem is brightness gets too low which makes me think it is something wrong.