Man bracht nicht zu jeder LED einen eigenen Vorwiderstand, einer je Gruppe, aus der höchstens eine gleichzeitig leuchtet reicht.

Bei blauen LEDs hat man nicht viel Spannung in Reserve. Ein ULN2003 als Treiber scheidet da schon aus, denn da gehen 0,6-1 V verloren. Wenn man mit 20 mA Strom klarkommt könnte man die eine Seite noch direkt vom Controller (AVR) teiben, sonst halt die etwas Komplizierteren extra Treiber, wobei man in der Schaltung obern den Transistor Tzn1 und einen Widerstand sparen kann. Das invertieren kann man auch gut in Software machen.