Arduino/Raspberry Pi 2 LED-Matrizen

Weiß jemand, ob ich einen einzelnen Arduino oder Raspberry Pi verwenden kann, um zwei 32x32-LED-Matrizen zu steuern , wie sie auf der Adafruit-Website verkauft werden? Hier ist ein Tutorial, in dem Sie die 32x32-Matrix verdrahten können .

Idealerweise würde ich sie gerne separat steuern können, aber wenn die Verkabelung nur eine gleichzeitige Steuerung der beiden zulässt, dann ist das ok.

Vielen Dank für Ihre Zeit.

Haben Sie eine spezielle Frage, die das von Ihnen verlinkte Tutorial nicht beantwortet? Es scheint mir ziemlich klar zu sein.
@DaveTweed Mit sehr begrenzter Erfahrung in Arduino / Elektrotechnik (ich bin ein Comp Sci-Major) waren mir einige Details nicht wirklich klar.

Antworten (2)

Diese Panels benötigen aufgrund ihres Designs von Natur aus VIEL Auffrischung. Es wird den Arduino töten, wenn Sie viele Farben machen wollen, besonders wenn Sie diese Panels verketten möchten. Ich habe eine ziemlich allgemeine Erklärung darüber geschrieben, wie das 16x32-Display funktioniert, und Sie können das auf das 32x32-Panel extrapolieren, das im Grunde nur eine weitere Adresszeile hinzufügt. Grundsätzlich können Sie ein Panel so groß betreiben, wie Sie möchten, solange Sie die Daten parallelisieren und schnell genug durch die Adresszeilen springen können. Aus diesem Grund erwähnt Adafruit mehrfach die Verwendung eines FPGA zur Ansteuerung dieser Displays – sie sind perfekt geeignet für schnelles Takten und parallele Datenausgaben.


So funktionieren die 16x32-RGB-Adafruit-Displays (und mögliche andere):
Dieses Display zeichnet Bildinformationen über Multiplexing, was im Grunde bedeutet, dass die Zeilen und Spalten des Displays schneller aktualisiert werden, als das Auge verarbeiten kann. Wenn es schnell genug aktualisiert wird, sieht das Auge ein vollständiges Bild ohne Flimmern oder Artefakte. Zuerst muss die zu aktualisierende Zeile ausgewählt werden. Bei diesem Display erfolgt dies durch Verwendung eines 3-zu-8-Adressdecoders (74HC138D). Es gibt drei Adresseingänge für das Display, die mit A, B und C gekennzeichnet sind. Basierend auf der Wahrheitstabelle können Sie sehen, dass jeweils nur ein Eingang aktiv (niedrig) ist.

Geben Sie hier die Bildbeschreibung ein
Abb. 1. 74HC138D-Wahrheitstabelle

Sie fragen sich vielleicht, wie die 8 Bits vom Decoder verwendet werden können, um insgesamt 16 Zeilen auszuwählen. Der hier verwendete Trick besteht darin, Zeilen parallel auszuwählen. Wenn beispielsweise die 1. Reihe (Reihe 0) ausgewählt ist, wählen Sie auch die 9. Reihe (Reihe 8) aus. Die Verwendung dieser Technik impliziert, dass wir Daten für die Spalten für zwei eindeutige Zeilen gleichzeitig bereitstellen müssen. (Dazu später mehr)

Die Ausgänge des Decoders können nur geringe Ströme verarbeiten und können eine LED-Reihe nicht direkt ansteuern. Um dies zu beheben, wird ein P-Kanal-MOSFET als Schalter verwendet, der uns den hohen Strom liefert, den wir zum Ansteuern einer Reihe von LEDs benötigen. Sie können sehen, dass die Decoderausgänge von jeweils 8 Ausgängen geteilt werden (0 und 8, 1 und 9, Wiederholung dieses Musters bis Reihe 7 und 15).

Geben Sie hier die Bildbeschreibung ein
Abb. 2. 74HC138D-Schaltbild mit Ausgangs-MOSFETs

Nachdem wir nun unsere Zeilen aussortiert haben, müssen wir die Spaltendaten speichern. Die Spaltendaten werden in einem 16-Bit-Schieberegister mit seriellem Eingang und parallelem Ausgang gespeichert. Da das Display 32 Pixel breit ist, müssen zwei Schieberegister miteinander verkettet werden. Das Schieberegister ist für die Arbeit mit LEDs ausgelegt und implementiert ein Konstantstromsystem, das sicherstellt, dass die LED-Helligkeit gleichmäßig bleibt.

Es gibt 12 dieser Schieberegister auf dem Display. Jeweils 3 werden verwendet, um die Rot-, Grün- und Blaudaten für 1 von 4 Quadranten der Anzeige zu speichern. (3 Farben * 4 Quadranten = 12 Chips)

Geben Sie hier die Bildbeschreibung ein
Abb. 3. 16x32-RGB-LED-Anzeigeraster, das die 4 Quadranten zeigt

Woher kommen die Quadranten? Erinnern Sie sich an unsere Methode zum Zeichnen von 16 Zeilen unter Verwendung der 8 Ausgänge des Decoders und wie dies impliziert, dass wir eindeutige Daten für jedes Zeilenpaar haben müssen. Wenn Zeile 0 und Zeile 8 ausgewählt sind, müssen wir jede Zeile mit eindeutigen Daten versehen. Dies zwingt uns, für jedes Zeilenpaar zwei verschiedene Schieberegister zu verwenden, ein oberes Register und ein unteres Register. Aus diesem Grund ist die Anzeige in eine obere Hälfte und eine untere Hälfte unterteilt. Die Daten werden über die Signale R1, G1 und B1 am Stecker in die obere Hälfte geschoben. Die Daten der unteren Hälfte werden von den Signalen R2, G2 und B2 am Stecker geliefert. Da unsere Anzeige 32 Pixel breit ist, müssen wir dann 2 Schieberegister verwenden, um alle 32 Bit Pixeldaten für eine einzelne Zeile zu halten. Dadurch werden die linke und die rechte Hälfte des Displays erstellt. (Natürlich,

Sie werden feststellen, dass, wenn wir für jede Zeile ein Schieberegister haben wollten, dies 16 Zeilen * 2 Hälften der Anzeige = 32 Schieberegister erfordern würde, nur für eine Farbe! Sie würden 96 Schieberegister für alle Farben benötigen, wenn Sie eines pro Zeile verwenden würden. Offensichtlich ist dies sowohl hinsichtlich des Designs als auch der Kosten sehr undurchführbar. Um dies zu beheben, greifen wir im Grunde auf die Multiplexing-Idee zurück – wenn wir es schnell genug machen, erscheint die Anzeige für das Auge nahtlos. Jeder Quadrant der Anzeige wird von 3 Schieberegistern gesteuert, eines für jede Farbe. Zuerst werden Zeile 0 und Zeile 8 ausgewählt. 32 Datenbits werden in das Schieberegister jeder Farbe (R1, G1, B1) geschoben und dann zwischengespeichert. Gleichzeitig werden auch 32 Datenbits in das Schieberegister jeder Farbe für die untere Hälfte (R2, G2, B2) geschoben und dann zwischengespeichert. Der Vorgang wiederholt sich 7 weitere Male,

Geben Sie hier die Bildbeschreibung ein
Abb. 4. Diagramm, das den Betrieb der Schieberegister anzeigt.

Jeder Quadrant wird von 3 Schieberegistern gesteuert – eines für jede Farbe R,G,B. Diese Displays haben eine „1:8 Abtastrate“ und jetzt können Sie sehen, dass es 8 sehr schnelle Aktualisierungen braucht, um 1 Bildschirm mit Daten zu zeichnen.

Hervorragende Antwort!
+1000000 für eine erstaunliche Erklärung!!!!
Mh, die Antwort war in Ordnung.

Um zwei der Matrizen mit identischen Anzeigeinformationen zu betreiben, können die Steuerleitungen (Adresse und Daten) parallel an beide Panels angeschlossen werden, Pin für Pin identisch, da die Eingänge zum Panel hochohmig sind, dh sie werden sehr wenig Strom ziehen vom Arduino. Die Anzahl der GPIO-Pins auf dem Arduino bleibt somit ebenfalls gleich.

Befolgen Sie daher einfach das AdaFruit-Tutorial genau, außer dass der Pin, der R1 antreibt, auf beiden Panels zu R1 gehen muss, und so weiter.

Natürlich benötigen Sie auch ausreichend Strom, um beide Panels gleichzeitig zu betreiben, also rund 4 Ampere statt der auf der Seite angegebenen 2 Ampere.


Für den Betrieb der Panels mit separaten Bildern gibt es keine Informationen von AdaFruit, außer dass sie anscheinend kaskadiert werden können. Außerdem gibt es kein Datenblatt, wie die Website eindeutig angibt.

Wenn Sie oder jemand anderes es wagen würden, eines der Panels zu öffnen, die darin enthaltenen ICs zu identifizieren, insbesondere die Konstantstrom-16-Kanal-Treiber und alle anderen vielpoligen ICs, und dann Datenblätter dafür zu finden, würde vielleicht jemand auf dieser Website dies tun in der Lage sein, vorzuschlagen, wie man sie kaskadiert.

Aus Kenntnis anderer kaskadierbarer LED-Matrix-Panels besteht die Verbindung normalerweise aus verketteten Anschlüssen (in diesem Fall der IDC vom "J-out" zum "J-in" des nächsten Panels). Die Kaskadierung der Anzeigedaten von einem Panel zum nächsten erfolgt durch Pulsen des "Latch"-Eingangs auf Low. Dies kann für diese Panels funktionieren oder nicht. Es wäre Ihre Sache, es auf eigene Gefahr zu versuchen.