Ja, genau so mach ich das auch. Es leuchten bis zu 9 LEDs (1 Zeile) gleichzeitig, die Zeilen werden nacheinander angesteuert, also 1,2,3,1,2,...Zitat von M@tes
Das geht in dem Beispiel aber nur deshalb ohne Treiber, weil *alle* LEDs einer Zeile zusammen weniger als 20mA ziehen.
Die Lösunf mit einem ULN ist denkbar, etwas unpraktisch finde ich aber, daß man dann pro LED einen Port braucht. In einer Matrix braucht man Zeilen+Spalten Ports und hat denn Zeilen*Spalten LEDs. In dem Fall müssen die LEDs im Zeilmultiplex angesteuert werden, also zeilen- oder spaltenweise. Dadurch verliert man etwas helligkeit, aber in der Praxis aber idR kein Problem. Je nachdem, was der µC an Strom liefern/versenken lann, braucht man Anoden und/oder Kathodentreiber.
Bei zeilenweiser Ansteuerung brauch man pro Spalte einen Vorwiderstand, falls die LEDs baugleich sind. Sind die nicht baugleich, dann braucht jede LED nen individuellen Strombegrenzer.
In einer Matrix ist auch auf die Sperrspannung der LEDs zu achten; es gibt zB LEDs, die in Rückwärtsrichtung nur einige 100mV sperren. In einer Matrix braucht man dann noch Reihendioden zu diesen LEDs, weil ansonsten der Strom ungewollte Pfade läuft und dadurch LEDs leuchten, die es nicht sollten.
Also Portexpander gehen auch Schieberegister wie 74*595, die sind billiger und leichter zu bekommen, belegt weniger Ports am µC (nur 3-4), sind einfacher uns schneller anzusteuern als I²C-Portexpander und können auch low-current-LEDs treiben. Zudem können die LEDs einfach per PWM gedimmt werden.
Lesezeichen