Ansteuern von 7-Segment-Anzeigen über das GPIO von Raspberry Pi

Also dachte ich daran, vier 7-Segment-Anzeigen über den Raspberry PI zu verdrahten. Ich würde das tun, indem ich jeden von ihnen multiplexe, und bin auf Folgendes gestoßen: http://hackyourmind.org/public/images/display7seg_anim.gif

Die Sache ist, mir ist bewusst, dass ich maximal 16 mA pro GPIO-Pin ziehen (und sinken) kann. Daher kann ich für jedes Segment nur eine maximale Belastung von 16 mA haben, richtig? (vorausgesetzt, ich verwende keinen Transistor für jedes Segment, um Strom aus der 5-V-Schiene zu ziehen). Wenn ich also zu einem bestimmten Zeitpunkt nur weniger als 16 mA verbrauche, brauche ich diese Transistoren, um die mehreren Anzeigen ein- und auszuschalten? Kann ich nicht jede der gemeinsamen Anoden/Kathoden direkt von den GPIO-Pins verdrahten und sie einfach hoch und niedrig schalten, um sie ein- und auszuschalten?

BEARBEITEN: Ich pulsiere auch jedes der Segmente jeder Anzeige, damit ich nicht 7 Widerstände pro Anzeige benötige und mit nur einem Widerstand an der gemeinsamen Anode / Kathode auskommen und die Helligkeit über verschiedene Ziffern hinweg beibehalten kann (gibt es eine besser so?)

Antworten (2)

Wenn Sie jedes Segment jeder Anzeige pulsieren (zu jedem Zeitpunkt ist nur ein Segment jeder Ziffer eingeschaltet), benötigen Sie tatsächlich keine Transistoren, und Sie können einen einzelnen Widerstand pro Ziffer verwenden.

Der Nachteil ist, dass die durchschnittliche Helligkeit jeder Ziffer nur 1/8 ihrer „vollen“ Helligkeit beträgt. Wenn Sie ein Display mit hoher Helligkeit verwenden, ist dies wahrscheinlich kein Problem. (Beachten Sie, dass in dem GIF, das Sie mit der Helligkeit verknüpft haben, 1/4 des Maximums beträgt, da zu jedem Zeitpunkt nur eine Ziffer aktiviert ist).

Mir fehlt die 1/8-Ableitung, könnten Sie das bitte erklären? EDIT: Oh warte, ich habe den Teil über nur ein Segment der 7 in jedem Moment verpasst. Ist es das, was Sie meinten? So habe ich das noch nie gesehen. Die Projekte, die ich gesehen habe, sind genau wie das GIF und treiben bis zu 7 LEDs gleichzeitig an und multiplexen, welche Anzeige angesteuert wird - anstatt jede der Anzeigen bis zu 8 Mal anzusteuern, sodass zu jedem Zeitpunkt nur eine einzelne LED angesteuert wird.

Jedes Segment zieht nur 16 mA, aber die gemeinsamen Pins ziehen genug Strom für alle zugehörigen Segmente. Setzen Sie Transistoren darauf.

Aber keine Widerstände, da der Strom durch alle Segmente konstant ist, was bedeutet, dass der Strom durch jedes beleuchtete Segment davon abhängt, wie viele Segmente leuchten. Halten Sie einfach den Multiplexer in Bewegung, und das begrenzt die an jedes Segment angelegte Leistung.

Ihre Antwort impliziert Widerstände für jeden der Segmentstifte, richtig? Lesen Sie die Bearbeitung zu meiner Frage
Nein, tut es nicht. Lesen Sie den letzten Satz meiner Antwort.
Nehmen wir also an, ich verwende eine gemeinsame Anode. Ich fahre HIGH durch den gemeinsamen Pin und nirgendwo eine Art Widerstand? Angenommen, ich treibe nur ein Segment, wird es nicht versuchen, etwa 50 mA von der 3,3-V-Schiene in einen GPIO-Pin zu senken und es zu braten?
Der erste Absatz behandelt das.