RGB LED Matrix control

hallo!
habe einige fragen bezüglich der ansteuerung einer 64 RGB LED Matrix.
ich möchte die matrix per PWM des Atmega 328 ansteuern (und stufenlos dimmen/mischen können).

Folgende anleitung bringt mich jedoch ins grübeln:

wie ich diese schaltung sehe, können nur 7 farben (R, G, B, RG, BG, RB, RGB) produziert werden, oder liege ich da falsch? denn mit PWM hat dies nichts zu tun, die LEDs sind nur einfach "an" oder "aus".

Wie kann ich die Matrix nun so wie ich es möchte ansteuern?
kann ich eine art "common-anode-matrix" aufbauen, indem ich alle LEDs per PWM mit dem gewünschten strom versorge, jedoch pro spalte und pro zeile bei einer LED den strom abfließen lasse, sodass nur diese eine LED an ist..? (quasi eine "und"-schaltung, beide transistoren (zeile und spalte) der zugehörigen LED lassen strom durch, also leuchtet sie). TLC5940 sind ja immer noch vergriffen, deshalb würde ich dafür 2stück 8-bit schieberegister verwenden.
könnte es so denn funktionieren? habe darüber nichts im internet gefunden - funktioniert es also nicht oder gibt es bessere möglichkeiten?

sollte ich lieber NPN oder PNP-transistoren dafür verwenden? (habe den unterschied immer noch nicht recht verstanden, außer dass PNP bei Ground den strom durchlässt und NPN bei +)...

meine nächste frage betrifft die multiplex-angaben im datasheet der LEDs: es ist angegeben, bei 1/10 (on/off) darf die LED 0,1ms mit 100mA versorgt werden. soweit so gut. sind die LEDs jedoch nicht viel dunkler wenn sie nur jedes 64. mal aufleuchten anstatt jedes 10. mal? kann man noch mehr strom fließen lassen (steht ja nicht im datasheet - daher nehme ich an man kann das nicht), oder wie kann man sonst die LEDs maximal erhellen bei PWM-mischung?

vielen dank schonmal;)
gruß

Wieso sollte das mit PWM nichts zu tun haben ?

OK, es ist eine software loesung, aber dennoch kann das teil viel mehr als 7 farben darstellen. Da natuerlich keine speziellen LED treiber chips verwendet werden, ist die erzielbare helligkeit bei weitem nicht so gross wie z.b. bei einem 'rainbowduino', aber im prinzip funktionert es.

Aktuellen code gibt es hier
.

Wenn du nach super-hell strebst, dann ist die einzig sinnvolle loesung die verwendung von passenden LED treibern. TLC5947 waere auch eine von vielen moeglichkeiten, der ist leichter anzusteuern als der 5940.

http://www.thebox.myzen.co.uk/Hardware/Mini_Monome.html

danke!

ich denke es hat mit den PWM-pins des arduinos nichts zu tun, da alles über die schieberegister läuft, welche nur AN/AUS-zustände als output kennen.
um die farben also zu mischen müsste ich bei allen schieberegistern einen bestimmten output-pin so an- und wieder ausmachen damit ein puls entsteht...
analogWrite() wäre natürlich in der software um einiges leichter;)