Hallo zusammen,
ich möchte für eine Anzeige 10 LEDs unabhängig voneinander ansteuern,
habe aber nur 8 digitale Ausgänge an meinem Microcontroller.
Gibt es nicht irgendwie eine inteligente Verschaltungsmöglichkeit,
sodass ich mit den 8 digitalen Ausgängen auskomme?
Vielen Dank!
Wenn du sie wirklich unabhängig voneinander ansteuern willst, brauchts
du 10 Leitungen.
Alles Andere läuft auf irgend eine Art von Multiplexing hinaus. Zum
Beispiel 7 Leitungen für 3x4=12 LED's.
Googel nach "LED Multiplexing".
Die clevere Schaltung ist für 1 aus 8 geeignet, aber nicht für:
>für eine Anzeige 10 LEDs unabhängig voneinander ansteuern
Da helfen wohl nur ein externes Schieberegister, irgendwas mit I²C, oder
wie auch immer all die Möglichkeiten heißen mögen.
Daniel Schmidt schrieb:> Gibt es nicht irgendwie eine inteligente Verschaltungsmöglichkeit,> sodass ich mit den 8 digitalen Ausgängen auskomme?
Hänge zwei LEDs an einen Pin (LED1 an VCC, LED2 an Gnd)
Dann gibt es folgende Möglichkeiten
(1) Pin Output Low - nur LED 1 leuchtet
(2) Pin Output High - nur LED 2 leuchtet
(3) Pin Input - LEDs aus
Damit die Helligkeit der leuchtenden LED unabhängig vom Zustand der
anderen ist, schaltest du schaltest du immer zwischen zwei Zuständen
hin- und her. Jeder LED gehört damit ein Zeitfenster.
Nur LED 1: Umschaltung (1)-(3)
Nur LED 2: Umschaltung (2)-(3)
LED1 + LED2: Umschaltung (1)-(2)
Beide aus: (3)
Das ist von der Pin-Nutzung nicht so effektiv wie Charlieplexing, reicht
in deinem Fall aber wahrscheinlich, wenn du die Pins sonst nicht
brauchst.
Ralf L. schrieb:> Wenn Du 10 LEDs hast, brauchst Du 4 Leitungen. Du musst dann leider> multiplexen.
Die dazugehörige Schaltung würde ich gerne mal sehen, da ich die
Realisierbarkeit mit 4 Leitungen bezweifele.
Ja, ich kann mit Google umgehen.
Nein, ich werde nicht suchen!
Daniel Schmidt schrieb:> ich möchte für eine Anzeige 10 LEDs unabhängig voneinander ansteuern,> habe aber nur 8 digitale Ausgänge an meinem Microcontroller.> Gibt es nicht irgendwie eine inteligente Verschaltungsmöglichkeit,> sodass ich mit den 8 digitalen Ausgängen auskomme?
sogar mit einem, WS2812B
Manfred schrieb:> Die dazugehörige Schaltung würde ich gerne mal sehen, da ich die> Realisierbarkeit mit 4 Leitungen bezweifele.
Mit vier Leitungen kann ich sogar 16 LEDs beliebig steuern! :P
2 hoch 4 = 16
Ralf schrieb:>> Die dazugehörige Schaltung würde ich gerne mal sehen, da ich die>> Realisierbarkeit mit 4 Leitungen bezweifele.> Mit vier Leitungen kann ich sogar 16 LEDs beliebig steuern!
Hilft wenig und steht noch immer in Zweifel.
Aber danke an Toxic, der die Schaltung hier reingestellt hat! Da sind es
aber nur 12 LEDs.
Manfred schrieb:> Da sind es> aber nur 12 LEDs.
Es werden sowieso nur 10 LEDs verwendet, Du Genauigkeitsfanatiker.
Ralf schrieb:> Mit vier Leitungen kann ich sogar 16 LEDs beliebig steuern!
o.k. Du hast Recht, dann sind es eben nur max. 15 LEDs. Das sind
immerhin noch mehr als benötigt werden.
> Mit vier Leitungen kann ich sogar 16 LEDs beliebig steuern!
????
16 LEDs können 2^16 Kombinationen von an/aus anzeigen. Da will ich aber
sehen, wie du das mit 4 Leitungen machst.
Noch einer schrieb:> 16 LEDs können 2^16 Kombinationen von an/aus anzeigen. Da will ich aber> sehen, wie du das mit 4 Leitungen machst.
schrieb ich doch
Beitrag "Re: Anzahl benötigter Ausgänge für Ansteuern von LEDs"
man muss nur schnell genug die Bitkombinationen durchtoggeln, je öfter
Bit 1 gesendet wird umso heller wird LED1
dito LED2
man kann auch mal ein paar mal Bit 0 durchtoggeln, je öfter desto AUS
für alle oder dunkler
Ihr habt recht. Mit 4 Leitungen kann ich nur 15 LEDs nacheinander
ansteuern, einschließlich alle aus. Der TO möchte aber alle LEDs
unabhängig voneinander einschalten können und das habe ich überlesen.
Sorry.
Hallo,
was ich noch nicht gelesen habe ist:
weitere externe Einheiten, die man z.B. über I2C, SPI, seriell oder über
Portexpander CLK, DI und Reset ansteuern kann.
Karl M. schrieb:> Hallo,>> was ich noch nicht gelesen habe ist:>> weitere externe Einheiten, die man z.B. über I2C, SPI, seriell oder über> Portexpander CLK, DI und Reset ansteuern kann.
Doch steht weiter oben, aber das war ja auch nicht die Frage.
Ich weiß ja nicht, auf welchem Trip ihr gerade seid.
Aber mit ganz normalem 4x4 Multiplexing steuere ich 16 LED's an.
Und zwar so: http://dokuwiki.ehajo.de/artikel:led-multiplex
Für 10 LED's genügt die 3x4 Variante, also 7 Leitungen.
Ralf schrieb:> Ihr habt recht. Mit 4 Leitungen kann ich nur 15 LEDs nacheinander> ansteuern, einschließlich alle aus. Der TO möchte aber alle LEDs> unabhängig voneinander einschalten können und das habe ich überlesen.> Sorry.
geht doch auch, einfach schnell genug die passenden Bits auf die 4
Eingänge durchsenden also ein Zähler 1 bis 10 in einer Schleife stets
wiederholend, dann ist jede LED kurz an und optisch siehts dann so aus
als wenn alle leuchten.
Stefan U. schrieb:> Ich weiß ja nicht, auf welchem Trip ihr gerade seid.> Aber mit ganz normalem 4x4 Multiplexing steuere ich 16 LED's an.>> Und zwar so: http://dokuwiki.ehajo.de/artikel:led-multiplex>> Für 10 LED's genügt die 3x4 Variante, also 7 Leitungen.
Jep. Bei Verwendung einer regulären Matrix kann man mit 7 Pins bis
zu 12 LEDs steuern: N+M Pins für N*M LEDs.
Und wenn man Charlieplexing verwendet (weiter oben verlinkt) dann
reichen sogar nur 4 Pins für 12 LEDs: N Pins für N*(N-1) LEDs.
Axel S. schrieb:> Und wenn man Charlieplexing verwendet (weiter oben verlinkt) dann> reichen sogar nur 4 Pins für 12 LEDs
Beim Charlieplexing für 10 LEDs leuchten die jeweils aktiven LEDs nur
für 1/10 der Zeit und damit nur relativ schwach.
Stefan U. schrieb:> Ich weiß ja nicht, auf welchem Trip ihr gerade seid.> Aber mit ganz normalem 4x4 Multiplexing steuere ich 16 LED's an.>> Und zwar so: http://dokuwiki.ehajo.de/artikel:led-multiplex>> Für 10 LED's genügt die 3x4 Variante, also 7 Leitungen.
Wieso nicht 2×5? Das genügt ebenso für 10 LEDs, aber es wird nur 2-fach
gemultiplext, wodurch die LEDs heller leuchten und die Multiplexperiode
verkürzt wird, was das Flimmern reduziert.
Das 2×5-Multiplexverfahren lässt sich aber auch mit nur 5 I/O-Pins
realisieren, wie Wolfgang gezeigt hat:
Wolfgang schrieb:> Hänge zwei LEDs an einen Pin (LED1 an VCC, LED2 an Gnd)
Leider funktioniert das nur, wenn die Flussspannung der LEDs deutlich
größer als die halbe Versorgungsspannung ist. Sonst leuchten im
hochohmigen Zustand des I/O-Pins beide angeschlossenen LEDs, wenn auch
schwächer als normal. Aber vielleicht ist diese Bedingung beim TE ja
erfüllt. Dann ist das IMHO die optimale Lösung.
Eine andere Variante (s. Anhang) des 2×5-Multiplex nutzt ähnlich wie
beim Charlieplexing die Möglichkeit, die I/O-Pins alternierend sowohl
als Quelle als auch als Senke zu nutzen. Die Anzahl der benötigten
I/O-Pins liegt mit 6 zwischen dem klassischen Multiplex und Wolfgangs
Verfahren. I/O-Pin P0 muss 5 LEDs gleichzeitig treiben können, was bei
Low-Current-LEDs möglich sein sollte. Sonst muss der als "optional"
gekennzeichnete Treiber aus zwei Transistoren zugeschaltet werden, was
die Schaltung leider wieder etwas aufwendiger macht.