One 595 provides the power and thus selects which lights are lit for a single row. The ULN2003 selects which row will be lit by acting as a current sink. If a row is not selected then no current can be grounded through the 2003. The 2003 is itself driven by another 595 shift register. The two 595s are chained together and programmed at once and released in a single latch.

One row is not functioning as I am using the uln2003 which only has 7 pairs. The 2803 has 8 pairs, so would be ideal, buts its also $1.50 instead of 30c. So I might end up using two 2003 chips.

This is what it is running:

void loop()
int i;
for ( i = 0; i < 256; i++ )
int col = 1;
for( col = 1; col < 256; col

Loading more stuff…

Hmm…it looks like things are taking a while to load. Try again?

Loading videos…