
Eigentlich wollte ich diese Variante gar nicht bauen, aber der Vollständigkeit halber habe ich dann doch einmal das
Charlieplexing implementiert. Hierbei kann ich 5 LEDs ohne weitere Bauteile (nur Widerstände, damit die LEDs nicht verglühen) über lediglich 3 Leitungen steuern – und es wäre sogar noch eine 6. LED möglich.
Die Basis des Ganzen ist, dass man die Ausgangs-PINs des ATmega auf 0 und 1 schalten kann. Zwischen die zwei Ausgänge PB0 und PB1 kann man z.B. zwei LEDs in verschiedener Richtung hängen. Setzt man PB0 auf 0 und PB1 auf 1, fließt Strom von PB1 nach PB0 und die eine Leuchtdiode leuchtet - die andere sperrt in der Richtung, leuchtet also nicht. Schaltet man die Pins um, fließt der Strom in die andere Richtung und die andere LED geht an.
Einfach, klar, verständlich - und sinnlos, denn 2 LEDs über 2 Leitungen zu steuern ist rechnerisch kein Vorteil gegenüber der ganz langweiligen
ersten Schaltung.
Aber jetzt kommt der Trick: Die Pins des ATmega können nicht nur 1 (Strom bzw. Stromquelle) und 0 (kein Strom bzw. korrekter Stromsenke), sondern als dritten Zustand (Tri-state) noch das sogenannte Hi-Z. Das bedeutet einen sehr hohen Widerstand, wodurch sich der Pin so verhält, als wenn er gar nicht angeschlossen wäre, der Draht also irgendwo in der Luft baumeln würde.
Trara, das ist die Schaltung:
Erläuterungen dazu:
PB0 auf 1, PB1 auf 0, PB2 auf Hi-Z: Es fließt Strom von PB0 nach PB1, nur die LED2 leuchtet.
PB0 auf Hi-Z, PB1 auf 0, PB2 auf 1: Es fließt Strom von PB2 nach PB1, nur die LED4 leuchtet.
PB0 auf 0, PB1 auf Hi-Z, PB2 auf 1: Es fließt Strom von PB2 nach PB0, nur die LED5 leuchtet. Wer gut aufgepasst hat: Ja, es fließt zusätzlich auch Strom durch LED4 und LED2, aber da die in Reihe geschaltet sind, reicht das nicht mehr aus, um sie zum Leuchten zu bringen.
Wie immer gibt's auch
den Programmcode dazu.
Das ganze lässt mit mehr benutzen Leitungen auf noch mehr LEDs erweitern; die Formel "mit wievielen Pins kann ich wieviele LEDs schalten?" ist oben im Wikipedia-Artikel verlinkt.
Ähnlich wie bei der
Dekoderschaltung kann man allerdings auch hier nicht alle LEDs gleichzeitig leuchten lassen. Manche Kombinationen sind möglich, im obigen Beispiel z.B. LED1 und gleichzeitig LED3 über PB0=0, PB1=1 und PB2=0. Solche Verknüddelungen machen aber die Steuerungssoftware dann nicht gerade übersichtlich…
Posten nach Mitternacht, das kann ja nur voller Fehler sein jetzt