In diesem Tutorial zeige ich die Benutzung und eine Demo des Treibers für mehrzeilige MAX7219 Matrizen, welchen ich geschrieben habe.Mit dieser Bibliothek lassen sich verschiedene aneinander gesteckte quadratische Matrizen als ein ganzes Modul steuern und u.a. Texte und sogar Bilder darauf projezieren.
Meine Bibliothek ist eine erweiterte und verbesserte Version von JonA1961’s MAX7219array (https://github.com/JonA1961/MAX7219array)
Übersicht
Zubehör
Beim Kauf von MAX7219 Matrizen, solltest du darauf achten, dass diese quadratisch sein müssen.
- ein paar quadratische MAX7219 Dot Matrizen
- Jumper (meisten bei den DIY Dot Matrizen mit enthalten)
- female to female Jumper Kabel
- Lötutensilien
In diesem Artikel zeige ich wie man eine MAX7219 LED Matrix zusammenlötet.
Vorbereitung
Um die LED Matrizen einwandfrei nutzen zu können, muss die python spi Bibliothek installiert sein. Falls dies bereits geschehen ist, kannst du diesen Schritt überspringen.
Falls nicht, empfehle ich den ersten Teil dieses Artikels, in dem die Installation beschrieben ist:
http://www.100randomtasks.com/simple-spi-on-raspberry-pi
Aufbau der Raspberry Pi LED Matrizen
Nachdem du alle Matrizen zusammengelötet hast, müssen sie noch verbunden werden. Damit die Darstellung mittels des Treibers korrekt ist, ist es wichtig sie wie auf den Bildern unten zu verkabeln. Die erste Matrix ist von vorne gesehen unten links, die folgenden darüber. Wenn die Spalte gefüllt ist, kommt die nächste Matrix in die Spalte rechts daneben nach unten, die folgenden wieder darüber usw. Die Enden der Spalten kannst du mit Jumperkabeln verbinden, die aneinander liegenden mittels kleinen Jumpern.
Jede Matrix hat folgende Pins:
Rechts: CLK – CS – DIN – GND – VCC
Links: CLK – CS – DOUT – GND – VCC
Der DOUT Pin der vorherigen Matrix wird mit dem DIN der folgenden Matrix verbunden. Die anderen Pins werden entsprechend ihres Namen miteinander verbunden.
Die Pins der ersten Matrix gehen wie folgt mit dem Pi verbunden:
LED Matrix Bibliothek installieren
Zum einfachen download meiner Bibliothek habe ich ein GitHub Repo angelegt, was das installieren sehr einfach macht (der github client sollte natürlich installiert sein):
git clone https://github.com/tutRPi/multilineMAX7219.git && cd multilineMAX7219
In diesem Ordner sind nun zwei wichtige Dateien:
multilineMAX7219.py
– Die eigentliche Hauptdatei, welche alle Funktionen enthält
multilineMAX7219_fonts.py
– Diese Datei enthält die Buchstaben und Zeichen der Schriften. Falls du eine neue Schriftart hinzufügen willst, füge sie in dieser Datei hinzu.
Es ist wichtig die multilineMAX7219.py
Datei (Zeile 113/114) zu bearbeiten und deine Größe in MATRIX_WIDTH und MATRIX_HEIGHT einzutragen.
Demo Code – 8×8 LED Matrix
Um eine Demo laufen zu lassen, gib folgendes ein:
python multilineMAX7219_demo.py
Hier sind einige Effekte und Funktionen demonstriert.
Ich habe vor allem einen Schwerpunkt auf die Graphikfunktionen gelegt und daher auch einen Editor zum „Bilder zeichnen“ erstellt, welche du sehr einfach mit der Bibliothek visualisieren kannst.
Die Seite mit dem Editor gibt’s hier.
Wie du siehst ist der Code des Raspberry Pi Logos bereits vorgegeben (auf 3×3 Matrizen). Mit Python kann es auch eingefügt werden:
logo = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,1,1,1,0],[0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,1,0],[0,0,1,1,0,0,1,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,0,1],[0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,0,1],[0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,0,1],[0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,1,0,0,1,0,0,1],[0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0],[1,1,0,1,1,0,0,1,1,0,0,0,0,1,0,0,1,1,0,1,0,0,1,0],[1,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,0],[1,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0],[1,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0],[1,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,0],[1,1,0,1,1,0,0,1,1,0,0,0,0,1,0,0,1,1,0,1,0,0,1,0],[0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0],[0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,1,0,0,1,0,0,1],[0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,0,1],[0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,0,1],[0,0,1,1,0,0,1,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,0,1],[0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,1,0],[0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,1,1,1,0],[0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]
Und nun kann es gezeichnet werden.
LEDMatrix.gfx_sprite_array(logo) LEDMatrix.gfx_render()
Für mehr Details schau am besten in die multilineMAX7219_demo.py Datei und in multilineMAX7219.py wo alle Funktionen beschrieben sind.
Hier noch ein Beispiel Video (nur eine verkleinerte Version der Demo Datei):
193 Kommentare
Frage: Wie viele von den LED-Matrizen kann man problemlos direkt an den RPI anschließen?
P.S. Ein wirklich klasse Tutorial! Danke
Ich hatte 15 Module (3×5) getestet, was kein Problem darstellte. Im Prinzip sind unendlich viele möglich, wobei der Spannungsabfall natürlich beachtet werden muss.
Vielen Dank. Ich dachte nur, weil in irgendeinem anderen Artikel von einer notwendigen externen Spannungsquelle die Rede ist.
Die von mir verwendeten Module brauchen 5V Eingangsspannung, sind also problemlos ohne externe Spannungsquelle betreibbar. Ab einer gewissen Anzahl (konnte ich leider noch nicht testen, wie viele genau) ist eine zusätzliche Spannungsquelle nötig. Größere Module (z.B. 32x16LEDs) werden i.d.R. nicht direkt vom Pi versorgt.
Also sollten meine 1×4 Module funktionieren 😀
Noch eine andere Frage: Geht Ihr Editor für Matrix-Graphiken noch (bei mir geht er nicht; vielleicht falscher Browser)
Ok hat sich schon erledigt, bei Chrome funktioniert es nicht, dafür aber bei Firefox 🙂
So, ich habe jetzt ein weiteres Problem:
Nach dem Zusammenlöten wird jetzt beim Programmstart nur wirres Zeug angezeigt. Woran könnte das liegen?
Was wird genau angezeigt und vor allem was hast du ausgeführt?
Ich habe die multiline7219_demo.py ausgeführt. Das Resultat ist Folgendes:
https://goo.gl/FEpqWT
Liegt das an den Lötstellen?
Ja, das sieht sehr nach unsauberen Lötstellen aus. Bei den MAX7219 IC ist es gar nicht so einfach die Kontakte sauber zu verlöten. Du kannst aber auch jedes einzeln auf Funktionalität prüfen (benutze dafür am besten die Bibliothek, die ich hier vorstelle)
So, ich habe jetzt ein weiteres Problem:
Nach dem Zusammenlöten wird jetzt beim Programmstart nur wirres Zeug angezeigt. Woran könnte das liegen?
Was wird genau angezeigt und vor allem was hast du ausgeführt?
Ich habe die multiline7219_demo.py ausgeführt. Das Resultat ist Folgendes:
https://goo.gl/FEpqWT
Liegt das an den Lötstellen?
Ja, das sieht sehr nach unsauberen Lötstellen aus. Bei den MAX7219 IC ist es gar nicht so einfach die Kontakte sauber zu verlöten. Du kannst aber auch jedes einzeln auf Funktionalität prüfen (benutze dafür am besten die Bibliothek, die ich hier vorstelle)
So, ich habe jetzt die Lötstellen überprüft. Allerdings hat sich das Problem noch nicht gelöst. ich glaube aber kaum, dass es an den Lötstellen liegt, da es bei jeder Matrix gleich aussieht.
Also habe ich eine Frage: was wird bei Ihnen angezeigt, wenn Sie nur eine Spannung anlegen und die Datenverbindung unberührt lassen?
Viele Grüße
Andreas
Das weiß ich nicht mehr hundert prozentig, ich bin mir aber relativ sicher, dass beim Anlegen der Spannung die Matrizen alle schwarz waren/nichts angezeigt wurde.
Was wird denn nach dem initialisieren (blank) angezeigt?
Ok, jetzt bekomme ich langsam Angst…
Ich probiere jetzt schon seit 1 1/2 Stunden rum, schreibe dann einen Kommentar, und dann funktioiert es plötzlich mit dem gleichen Aufbau…
Ich melde mich wieder, wenn es nicht mehr geht 😀
Viele Grüße und einen entspannten Sonntag ohne nervige Kommentare
Andreas
Merkwürdig 😀 Klingt ein bisschen nach einem Wackelkontakt.
So, ich habe jetzt die Lötstellen überprüft. Allerdings hat sich das Problem noch nicht gelöst. ich glaube aber kaum, dass es an den Lötstellen liegt, da es bei jeder Matrix gleich aussieht.
Also habe ich eine Frage: was wird bei Ihnen angezeigt, wenn Sie nur eine Spannung anlegen und die Datenverbindung unberührt lassen?
Viele Grüße
Andreas
Das weiß ich nicht mehr hundert prozentig, ich bin mir aber relativ sicher, dass beim Anlegen der Spannung die Matrizen alle schwarz waren/nichts angezeigt wurde.
Was wird denn nach dem initialisieren (blank) angezeigt?
Ok, jetzt bekomme ich langsam Angst…
Ich probiere jetzt schon seit 1 1/2 Stunden rum, schreibe dann einen Kommentar, und dann funktioiert es plötzlich mit dem gleichen Aufbau…
Ich melde mich wieder, wenn es nicht mehr geht 😀
Viele Grüße und einen entspannten Sonntag ohne nervige Kommentare
Andreas
Merkwürdig 😀 Klingt ein bisschen nach einem Wackelkontakt.
Bei welchem deutschen Shop bekomme ich die LED Matrixen?
Die Lieferzeiten bei dem angegebenen sind mir zu lange.
Weiß ich nicht, ich habe leider keinen gefunden, der die quadratischen Matrizen liefert. Musste auf meine ca. 20 Module 2-3 Wochen warten.
Bei welchem deutschen Shop bekomme ich die LED Matrixen?
Die Lieferzeiten bei dem angegebenen sind mir zu lange.
Weiß ich nicht, ich habe leider keinen gefunden, der die quadratischen Matrizen liefert. Musste auf meine ca. 20 Module 2-3 Wochen warten.
Hallo,
ich habe Probleme mit der Darstellung von Umlauten.
Der Print-Befehl klappt wunderbar, in der Konsole werden die Umlaute korrekt angezeigt. Auf der LED-Matrix dagegen wird allerdings jeweils nur ein kryptisches Symbol für den Buchstaben angezeigt. Es macht keinen Unterschied ob mit oder ohne Umwandlung (ich habe schon diverses ausprobiert). Woran kann das liegen?
Eckige Klammern werden hier als Befehl zum durchstreichen interpretiert 🙂 Darin stand, dass ich natürlich auch sämtliche Importe gemacht habe (inklusive Fonts).
Sind die Umlaute in der FONT Datei enthalten? Wenn ja versuch sie mal mittels des Index zu laden. Falls nicht kannst du auch einfach einen zusätzlichen Eintrag erstellen und die Umlaute selbst definieren. Mit
decode
wird das aber nicht klappen, vermute ich (das erstellt „kryptische Zeichen“, die dann anders interpretiert werden).Hallo,
ich habe Probleme mit der Darstellung von Umlauten.
Der Print-Befehl klappt wunderbar, in der Konsole werden die Umlaute korrekt angezeigt. Auf der LED-Matrix dagegen wird allerdings jeweils nur ein kryptisches Symbol für den Buchstaben angezeigt. Es macht keinen Unterschied ob mit oder ohne Umwandlung (ich habe schon diverses ausprobiert). Woran kann das liegen?
Eckige Klammern werden hier als Befehl zum durchstreichen interpretiert 🙂 Darin stand, dass ich natürlich auch sämtliche Importe gemacht habe (inklusive Fonts).
Sind die Umlaute in der FONT Datei enthalten? Wenn ja versuch sie mal mittels des Index zu laden. Falls nicht kannst du auch einfach einen zusätzlichen Eintrag erstellen und die Umlaute selbst definieren. Mit
decode
wird das aber nicht klappen, vermute ich (das erstellt „kryptische Zeichen“, die dann anders interpretiert werden).Bin ein ziemlicher Noob in der Programmierung solcher Dinge. Kannst du mir ein Beispiel für so ein Laden mittels Index geben? Das Problem ist: Die Verwendung des Umlauts (und anderer Zeichen) soll möglichst ohne aufwendige Konvertierung etc. funktionieren.
Ziel ist: Über ein Textfeld einer php-Page einen String an ein python-Script zu senden, der dann über die LED-Matrix ausgegeben wird. Das habe ich auch schon hinbekommen, nur eben mit den Sonderzeichen klappt’s nicht. Nun wollte ich auf unterster Ebene anfangen, aber selbst das funktioniert schon nicht. Die Umlaute sind in der fonts-Datei enthalten
[ 0x79, 0x7D, 0x16, 0x12, 0x16, 0x7D, 0x79, 0x00 ], # 0x8E (Ä)
[ 0x01, 0x19, 0x3C, 0x66, 0x66, 0x3C, 0x19, 0x01 ], # 0x99 (Ö)
[ 0x3D, 0x7D, 0x40, 0x40, 0x7D, 0x3D, 0x00, 0x00 ], # 0x9A (Ü)
werden aber trotzdem falsch dargestellt. Beim Ansteuern über den entsprechenden Unicode-Wert (z.B. 0x99 für Ö) wird der Buchstabe korrekt dargestellt, nur eben nicht als einzelner String in einer Zeichenkette.
Wäre super, wenn du mir da weiterhelfen könntest
Hast du mal versucht die Library zu verändern und
# -*- coding: utf-8 -*-
an den Anfang zu schreiben? Ich habe damals Unicode nicht berücksichtigt/getestet. Btw. 0x8E ist nicht der Unicode für „Ä“, sondern 0xC4 (dezimal 196). Die Abfrage führt über ein Array und ord() des characters. Falls du decode benutzt werden mehrere chars erstellt und es kommt nichts richtiges bei raus.Bin ein ziemlicher Noob in der Programmierung solcher Dinge. Kannst du mir ein Beispiel für so ein Laden mittels Index geben? Das Problem ist: Die Verwendung des Umlauts (und anderer Zeichen) soll möglichst ohne aufwendige Konvertierung etc. funktionieren.
Ziel ist: Über ein Textfeld einer php-Page einen String an ein python-Script zu senden, der dann über die LED-Matrix ausgegeben wird. Das habe ich auch schon hinbekommen, nur eben mit den Sonderzeichen klappt’s nicht. Nun wollte ich auf unterster Ebene anfangen, aber selbst das funktioniert schon nicht. Die Umlaute sind in der fonts-Datei enthalten
[ 0x79, 0x7D, 0x16, 0x12, 0x16, 0x7D, 0x79, 0x00 ], # 0x8E (Ä)
[ 0x01, 0x19, 0x3C, 0x66, 0x66, 0x3C, 0x19, 0x01 ], # 0x99 (Ö)
[ 0x3D, 0x7D, 0x40, 0x40, 0x7D, 0x3D, 0x00, 0x00 ], # 0x9A (Ü)
werden aber trotzdem falsch dargestellt. Beim Ansteuern über den entsprechenden Unicode-Wert (z.B. 0x99 für Ö) wird der Buchstabe korrekt dargestellt, nur eben nicht als einzelner String in einer Zeichenkette.
Wäre super, wenn du mir da weiterhelfen könntest
Hast du mal versucht die Library zu verändern und
# -*- coding: utf-8 -*-
an den Anfang zu schreiben? Ich habe damals Unicode nicht berücksichtigt/getestet. Btw. 0x8E ist nicht der Unicode für „Ä“, sondern 0xC4 (dezimal 196). Die Abfrage führt über ein Array und ord() des characters. Falls du decode benutzt werden mehrere chars erstellt und es kommt nichts richtiges bei raus.Habe ich gemacht, hat aber leider nichts geändert. Das mit dem Decode war auch nur ein Ansatz zur Lösung des Problems. Wie du aber schon sagst, bringt es mich nicht weiter. Das kann doch nicht so schwer sein, einen Umlaut da durchscrollen zu lassen?!
Ich müsste mir das mal genauer ansehen, habe aber in den nächsten Wochen kaum Zeit. Wenn du willst kannst du deine Skripte mal irgendwo hochladen und verlinken. Ich kann sie mir ansehen, sobald ich mehr Zeit finde.
LG Felix
Habe ich gemacht, hat aber leider nichts geändert. Das mit dem Decode war auch nur ein Ansatz zur Lösung des Problems. Wie du aber schon sagst, bringt es mich nicht weiter. Das kann doch nicht so schwer sein, einen Umlaut da durchscrollen zu lassen?!
Ich müsste mir das mal genauer ansehen, habe aber in den nächsten Wochen kaum Zeit. Wenn du willst kannst du deine Skripte mal irgendwo hochladen und verlinken. Ich kann sie mir ansehen, sobald ich mehr Zeit finde.
LG Felix
Das wär super, allerdings habe ich an den Standard-Skripten (Library und Fonts) nichts großartig geändert, außer dass ich wie gefordert die Anzahl der Matrizen geändert habe (zwei horizontal angeordnete).
Das Mini-Skript zum probieren habe ich ja quasi schon gepostet:
Ich weiß nicht, wo der Fehler liegt. Auch wenn er wahrscheinlich total simpel und offensichtlich ist…
Das wär super, allerdings habe ich an den Standard-Skripten (Library und Fonts) nichts großartig geändert, außer dass ich wie gefordert die Anzahl der Matrizen geändert habe (zwei horizontal angeordnete).
Das Mini-Skript zum probieren habe ich ja quasi schon gepostet:
Ich weiß nicht, wo der Fehler liegt. Auch wenn er wahrscheinlich total simpel und offensichtlich ist…
Hallo zusammen,
ich habe 6 Matrizen nebeneinander. Dies funktioniert soweit und in der multilineMAX7219.py ist auch 6 und 1 eingetragen. Änder ich das nun auf 7 und 1 Matritzen und hänge eine 7. dazu spielt das ganze verrückt. Es funktionieren dann teilweise nur die ersten 3. Ich habe schon durchgetauscht ud ausgetauscht. Immer ab der 7.
Jemand eine Idee was das sein könnte. Einzeln funktioniert auch jede.
Gruß
Holger
Bei welchen Befehlen tritt das auf? Da ich mehr als 7 Matrizen (3×3 bzw. inzw 4×4 bzw 3×5) verwendet und getestet habe, kann ich ausschließen, dass es an der Datenübertragung liegt (siehe Video). Falls du 8 Matrizen hast, kannst du mal zwei Reihen je 4 Matrizen versuchen?
Hi Felix,
ja das kann ich mal testen. Was auch komisch ist, dass ich immer erst mal sudo python matrix_test.py aufrufen muss. Erst danach kann ich z.B. sudo python multilineMAX7219_demo.py aufrufen und wird korrekt angezeigt.
Gruß
Holger
wo ruft man denn diese befehle auf?
Hallo zusammen,
ich habe 6 Matrizen nebeneinander. Dies funktioniert soweit und in der multilineMAX7219.py ist auch 6 und 1 eingetragen. Änder ich das nun auf 7 und 1 Matritzen und hänge eine 7. dazu spielt das ganze verrückt. Es funktionieren dann teilweise nur die ersten 3. Ich habe schon durchgetauscht ud ausgetauscht. Immer ab der 7.
Jemand eine Idee was das sein könnte. Einzeln funktioniert auch jede.
Gruß
Holger
Bei welchen Befehlen tritt das auf? Da ich mehr als 7 Matrizen (3×3 bzw. inzw 4×4 bzw 3×5) verwendet und getestet habe, kann ich ausschließen, dass es an der Datenübertragung liegt (siehe Video). Falls du 8 Matrizen hast, kannst du mal zwei Reihen je 4 Matrizen versuchen?
Hi Felix,
ja das kann ich mal testen. Was auch komisch ist, dass ich immer erst mal sudo python matrix_test.py aufrufen muss. Erst danach kann ich z.B. sudo python multilineMAX7219_demo.py aufrufen und wird korrekt angezeigt.
Gruß
Holger
So, hab noch ein wenig gebastelt. 4×2 funktioniert auf Anhieb. Gleiche Matritzen umgesteckt auf 8×1 spinnt das ganze total rum. Ja, ich habe auch die Einstellung in der multilineMAX7219.py angepasst 🙂
Ich habe leider nicht so viele Female-Female Kabel, dass ich die einmal durchtauschen könnte. Mir fällt im Moment nix ein woran es liegen könnte.
Gruß
Holger
Hallo zusammen,
ich wollte auch mal einen Status geben zu meinem Problem, dass bei einer Kombination von 8×1 das ganze rumspinnt, 5×2 aber z.B. problemlos funktioniert.
Da mir mit der Zeit die Jumperkabel ausgingen wurde ich immer stutziger ob das Problem nicht vielleicht damit zu tun. Nachdem ich nun alle Jumperkabel durch kurze gelötete Verbindungen ersetzt habe funktioniert derzeit sogar 9×1 ohne Probleme.
http://imgur.com/a/M2irQ
Gruß
Holger
So, hab noch ein wenig gebastelt. 4×2 funktioniert auf Anhieb. Gleiche Matritzen umgesteckt auf 8×1 spinnt das ganze total rum. Ja, ich habe auch die Einstellung in der multilineMAX7219.py angepasst 🙂
Ich habe leider nicht so viele Female-Female Kabel, dass ich die einmal durchtauschen könnte. Mir fällt im Moment nix ein woran es liegen könnte.
Gruß
Holger
Hallo zusammen,
ich wollte auch mal einen Status geben zu meinem Problem, dass bei einer Kombination von 8×1 das ganze rumspinnt, 5×2 aber z.B. problemlos funktioniert.
Da mir mit der Zeit die Jumperkabel ausgingen wurde ich immer stutziger ob das Problem nicht vielleicht damit zu tun. Nachdem ich nun alle Jumperkabel durch kurze gelötete Verbindungen ersetzt habe funktioniert derzeit sogar 9×1 ohne Probleme.
http://imgur.com/a/M2irQ
Gruß
Holger
Hallo,
erst einmal vielen Dank für die trefflichen Anleitungen.
Bin gerade dabei eine größere Matrix zu schalten. Mit einem Modul klappt funtioniert alles toll, Laufschrift, Muster etc.
Jedoch ist auf Deinem Foto der Rückseite der 9er Matrix die Anordnung der N1/N2/N3/N4 Jumper nicht genau zu erkennen. Kannst Du vielleicht die Schaltung etwas detaillierter angeben.
Wäre super, Danke
Wenn du auf das Bild klickst, vergrößert es sich. P1 muss immer an P2. Sprich alle müssen in der selben Richtung aufgestellt sein.
Hallo,
erst einmal vielen Dank für die trefflichen Anleitungen.
Bin gerade dabei eine größere Matrix zu schalten. Mit einem Modul klappt funtioniert alles toll, Laufschrift, Muster etc.
Jedoch ist auf Deinem Foto der Rückseite der 9er Matrix die Anordnung der N1/N2/N3/N4 Jumper nicht genau zu erkennen. Kannst Du vielleicht die Schaltung etwas detaillierter angeben.
Wäre super, Danke
Wenn du auf das Bild klickst, vergrößert es sich. P1 muss immer an P2. Sprich alle müssen in der selben Richtung aufgestellt sein.
Danke für die schnelle Antwort. Die Verbindungen habe ich schon, bin mir nuit nicht sicher wie ob es einen Jumper über N1/N2 und N3/N4 und N1/N3 und N2/N4 zur Verbindung der Matrix-Module 1-2-5-4 / 2-3-6-5 / 4-5-8-7 / 5-6-9-8 gibt.
Oder verstehe ich da was falsch???
Die Jumper an den Ecken sind nur dazu da, um die Module aneinander festzuhalten.
Danke für die schnelle Antwort. Die Verbindungen habe ich schon, bin mir nuit nicht sicher wie ob es einen Jumper über N1/N2 und N3/N4 und N1/N3 und N2/N4 zur Verbindung der Matrix-Module 1-2-5-4 / 2-3-6-5 / 4-5-8-7 / 5-6-9-8 gibt.
Oder verstehe ich da was falsch???
Die Jumper an den Ecken sind nur dazu da, um die Module aneinander festzuhalten.
Hi,
da ich noch nicht viel Erfahrung mit dem Löten habe, habe ich mir vor kurzem eine schon zusammengebaute Komponente mit 4*4 LED Modulen (quadratisch 8×8) beim Fachhändler bestellt.
Bei dem Demo-Programm gibt es allerdings ein Problem: Es scheint so, als wäre die Reihenfolge der einzelnen LED Module nicht richtig. Bei Schriftzügen wird die Schrift von rechts nach links angezeigt und auch bei Animationen über mehrere Matrizen hinweg entstehen nicht nachzuvollziehende „Muster“
Muss ich außer Länge und Breite der Anzeige noch irgendwo etwas einstellen?
Hi Sebastian,
ich weiß nicht welche Komponenten du verwendest, aber es kann durchaus sein, dass meine Bibliothek nicht (komplett) kompatibel mit diesen ist, da ich sie nur für die verlinkten Module geschrieben habe.
Hi Felix,
danke für die schnelle Antwort. Es handelt sich um die auch von dir benutzten Max 7219 Module. Der einzige Unterschied ist, dass sie auf einer großen Platine bereits zusammengefügt sind.
http://eckstein-shop.de/3232-Dot-Matrix-Module-LED-Display-Drive-Module-MAX7219
Das sollte eigentlich funktionieren oder?
Das kann funktionieren – muss aber nicht. Wenn die „falschen“ Kanten aneinander sind, wird es komisch aussehen. Ansonsten kannst du natürlich meine Bibliothek auch so verändern, dass sie auch für deine Matrizen passt. Ich weiß, dass es auch nicht-quadratische Modelle gibt und wenn man diese nebeneinander schaltet, wird es nicht optimal aussehen.
Ich hab das mal versucht in einem Bild zu veranschaulichen: http://i.imgur.com/K2H9xQ0.png
Okay, verstehe. Dann bleibt mir wohl nichts anderes übrig als die Bib umzuschreiben.
Vielen Dank für deine Hilfe 🙂
Hi,
da ich noch nicht viel Erfahrung mit dem Löten habe, habe ich mir vor kurzem eine schon zusammengebaute Komponente mit 4*4 LED Modulen (quadratisch 8×8) beim Fachhändler bestellt.
Bei dem Demo-Programm gibt es allerdings ein Problem: Es scheint so, als wäre die Reihenfolge der einzelnen LED Module nicht richtig. Bei Schriftzügen wird die Schrift von rechts nach links angezeigt und auch bei Animationen über mehrere Matrizen hinweg entstehen nicht nachzuvollziehende „Muster“
Muss ich außer Länge und Breite der Anzeige noch irgendwo etwas einstellen?
Hi Sebastian,
ich weiß nicht welche Komponenten du verwendest, aber es kann durchaus sein, dass meine Bibliothek nicht (komplett) kompatibel mit diesen ist, da ich sie nur für die verlinkten Module geschrieben habe.
Hi Felix,
danke für die schnelle Antwort. Es handelt sich um die auch von dir benutzten Max 7219 Module. Der einzige Unterschied ist, dass sie auf einer großen Platine bereits zusammengefügt sind.
http://eckstein-shop.de/3232-Dot-Matrix-Module-LED-Display-Drive-Module-MAX7219
Das sollte eigentlich funktionieren oder?
Das kann funktionieren – muss aber nicht. Wenn die „falschen“ Kanten aneinander sind, wird es komisch aussehen. Ansonsten kannst du natürlich meine Bibliothek auch so verändern, dass sie auch für deine Matrizen passt. Ich weiß, dass es auch nicht-quadratische Modelle gibt und wenn man diese nebeneinander schaltet, wird es nicht optimal aussehen.
Ich hab das mal versucht in einem Bild zu veranschaulichen: http://i.imgur.com/K2H9xQ0.png
Okay, verstehe. Dann bleibt mir wohl nichts anderes übrig als die Bib umzuschreiben.
Vielen Dank für deine Hilfe 🙂
Wenn du möchtest, kannst du die umgeschriebene Version auch gerne hier verlinken, dann haben ggf. auch andere User etwas davon 🙂
Hi, hast du umgeschriebene version der Demo datei für eine 4×4 DOT-Matrix und könntest die verlinken ?
Moin,
eine kurze Frage: Du schreibst oben dass die MAtrizen quadratisch sein _müssen_. Hat das technische Gründe oder meinst Du damit einfach nur, dass Deine Bibliothek nur mit quadratischen funktioniert?
Was würde passieren wenn ich 5×7-Matrizen nutzen würde?
Das war eigentlich anders gemeint 😀 Es gibt nämlich auch 8×8 LED Matrizen, wobei das PCB nicht quadratisch ist. Bei denen kann man keine ebene, verbundene Fläche erstellen.
Aber ja, meine Bibliothek müsste umgeschrieben werden, wenn du Matrizen mit 5×7 LEDs verwenden willst.
OK, dann bin ich beruhigt. Ich hatte schon gedacht meine HArdwarebestellung wäre in den Sand gesetzt. 😉 Dass die Software angepasst werden muss, ist klar.
Ich würde dann forken und Dir in ein paar Wochen ggf. einen Pull Request schicken wenn Du magst.
Kannst du gerne tun 🙂 Nur werde ich es nicht testen können, da ich lediglich 8×8 Matrizen da habe.
LG Felix
Moin,
eine kurze Frage: Du schreibst oben dass die MAtrizen quadratisch sein _müssen_. Hat das technische Gründe oder meinst Du damit einfach nur, dass Deine Bibliothek nur mit quadratischen funktioniert?
Was würde passieren wenn ich 5×7-Matrizen nutzen würde?
Das war eigentlich anders gemeint 😀 Es gibt nämlich auch 8×8 LED Matrizen, wobei das PCB nicht quadratisch ist. Bei denen kann man keine ebene, verbundene Fläche erstellen.
Aber ja, meine Bibliothek müsste umgeschrieben werden, wenn du Matrizen mit 5×7 LEDs verwenden willst.
OK, dann bin ich beruhigt. Ich hatte schon gedacht meine HArdwarebestellung wäre in den Sand gesetzt. 😉 Dass die Software angepasst werden muss, ist klar.
Ich würde dann forken und Dir in ein paar Wochen ggf. einen Pull Request schicken wenn Du magst.
Kannst du gerne tun 🙂 Nur werde ich es nicht testen können, da ich lediglich 8×8 Matrizen da habe.
LG Felix
Hallo,
erst mal vielen Dank für die ausführliche Beschreibung.
Es hat bei mir auf anhieb mit einem Pi3 und einer 4×4 Matrix (16xMAX7219 aus 4 Streifen mit 4 MAX7219) funktioniert. Ich möchte die Punkte einzeln über die Funktion LEDMatrix.gfx_set_px(x,y,GFX_ON) ansprechen, leider sind meine Einzelmodule um 90 Grad gedreht. Gibt es eine Möglichkeit in der Konfiguration das zu korrigieren/einzustellen?
Ich beutze diese Matrix Streifen http://de.aliexpress.com/item/MAX7219-Dot-Matrix-Module-For-Arduino-Microcontroller-4-In-One-Display-with-5P-Line/32637207300.html?isOrigTitle=true
Besten Dank.
VG Banto
Hallo Banto,
kannst du die Module nicht anders anordnen? Da ich nur meine zur Verfügung habe und somit nicht testen kann, müsstest du das selbst im Code ändern (sollte nicht all zu schwer sein).
PS: Mit diesen sollte das kein Problem sein.
LG, Felix
Hallo,
erst mal vielen Dank für die ausführliche Beschreibung.
Es hat bei mir auf anhieb mit einem Pi3 und einer 4×4 Matrix (16xMAX7219 aus 4 Streifen mit 4 MAX7219) funktioniert. Ich möchte die Punkte einzeln über die Funktion LEDMatrix.gfx_set_px(x,y,GFX_ON) ansprechen, leider sind meine Einzelmodule um 90 Grad gedreht. Gibt es eine Möglichkeit in der Konfiguration das zu korrigieren/einzustellen?
Ich beutze diese Matrix Streifen http://de.aliexpress.com/item/MAX7219-Dot-Matrix-Module-For-Arduino-Microcontroller-4-In-One-Display-with-5P-Line/32637207300.html?isOrigTitle=true
Besten Dank.
VG Banto
Hallo Banto,
kannst du die Module nicht anders anordnen? Da ich nur meine zur Verfügung habe und somit nicht testen kann, müsstest du das selbst im Code ändern (sollte nicht all zu schwer sein).
PS: Mit diesen sollte das kein Problem sein.
LG, Felix
Hallo Felix,
hab mir jetzt eine Funktion dafür geschrieben :-))
Funktioniert prime ist aber sehr langsam. Geht das auch schneller?
LG
Banto
Ich würde nicht jeden Pixel einzeln setzen, sondern entweder jene write Funktion, die ein Array an Daten auf einmal versendet, verändern oder eben das Array so manipulieren (Bereiche drehen), sodass es für deine Matrizen passt. Damit sollte es schneller sein.
LG, Felix
Hallo Felix,
hab mir jetzt eine Funktion dafür geschrieben :-))
Funktioniert prime ist aber sehr langsam. Geht das auch schneller?
LG
Banto
Ich würde nicht jeden Pixel einzeln setzen, sondern entweder jene write Funktion, die ein Array an Daten auf einmal versendet, verändern oder eben das Array so manipulieren (Bereiche drehen), sodass es für deine Matrizen passt. Damit sollte es schneller sein.
LG, Felix
Gibt es eine Anleitung, wie ich eine weitere Spannungsquelle zwischen schalten kann. Also wenn ich jetzt eine sehr große LED Tafel betreiben will, was muss ich da tun?
Bin ziemlich neu auf dem Gebiet.
Danke schon einmal!
Gibt es eine Anleitung, wie ich eine weitere Spannungsquelle zwischen schalten kann. Also wenn ich jetzt eine sehr große LED Tafel betreiben will, was muss ich da tun?
Bin ziemlich neu auf dem Gebiet.
Danke schon einmal!
Hallo, muss ich irgendwo angeben, mit welchen GPIO Ports ich die Matrizen ansteuere?
Bitte um rasche Rückmeldung,
mgf Florian
Nein, da es über SPI läuft. Ggf. den Chipselect (CS), falls du einen anderen nutzt.
Hallo, muss ich irgendwo angeben, mit welchen GPIO Ports ich die Matrizen ansteuere?
Bitte um rasche Rückmeldung,
mgf Florian
Nein, da es über SPI läuft. Ggf. den Chipselect (CS), falls du einen anderen nutzt.
Danke für dieses tolle Tutorial und für die bereitgestellte Bibliothek.
Ich habe trotzdem noch eine Frage:
Und zwar versuche ich das mit der selben Hardware aber einer anderen Software nachzustellen (C/C++ und WiringPi).
Hier bin ich allerdings auf ein paar Hindernisse gestoßen und weiß jetzt nicht, wie ich mehrere Matrizen ansteuern kann, OHNE für jede Matrix ein eigenes Chip Select Kabel zum RasPi zu verlegen (man kann auch „normale Pins“ als CS Leitungen verwenden).
Du hast es jedoch so realisiert, dass es nur ein CS gibt und DIN vom ersten über DOUT auf DIN vom nächsten geht.
Jetzt meine Fragen :
Wäre das auch mit C++ und WiringPi möglich ?
Ist DOUT der letzte Zustand der Matrix, bevor sie über DIN überschrieben wird ?
Falls nicht: Wie kann man mehrere Slaves (Matrizen) mit SPI über nur ein CS steuern ?
Mein derzeitiger Code für 2 Matrizen (vereinfacht, ohne Funktionen) :
Hierzu werden jedoch zwei CS Leitungen benötigt.
Am besten du schaust dir das Datenblatt vom MAX7219 an. Du brauchst nur einen CS, da DOUT einer Matrix nur die Daten für die folgenden Matrizen enthält.
Danke für den Hinweis. Das Datenblatt anschauen war das richtige Stichwort.
Nur wie kann ich DOUT beeinflussen ?
Zur Zeit übernimmt DOUT den Wert von DIN einen Schreibzugriff später (so wie ein Schieberegister). Nur lassen sich so eben nicht Bilder oder Schriftzüge auf mehreren Matrizen darstellen. Wie hast du das geschafft ?
Ich kann zwar kein Python, versuche aber das dann mit C++ nachzustellen.
Dadurch, dass ich die Dimensionen der Matrizen kenne (NxM) berechnet meine Bibliothek, welche Matrix was anzeigen muss. Ist etwas Aufwand, sich die Gedanken zu machen, aber du kannst die Funktionen meiner Bibliothek fast 1:! übersetzen. Ich würde mich freuen, wenn du deine Version auch auf GitHub o.ä. teilst, falls andere auch daran interessiert sind 🙂
Also wenn du etwas auf z.B. Matrix 4 anzeigen willst, dann clearst du CS (low aktiv), schickst dann die Daten und shiftest 3x mit NO OP, damit die Matrizen 1 bis 3 nichts anzeigen, dann kommt der Delay und man sieht nur etwas auf Matrix 4.
Habe ich das richtig verstanden ?
Nein, der Status aller Matrizen wird gespeichert und bei einer Änderung insgesamt übergeben. Übergibst du nur geshiftete Werte, wären die Matrizen vorher leer.
Danke für dieses tolle Tutorial und für die bereitgestellte Bibliothek.
Ich habe trotzdem noch eine Frage:
Und zwar versuche ich das mit der selben Hardware aber einer anderen Software nachzustellen (C/C++ und WiringPi).
Hier bin ich allerdings auf ein paar Hindernisse gestoßen und weiß jetzt nicht, wie ich mehrere Matrizen ansteuern kann, OHNE für jede Matrix ein eigenes Chip Select Kabel zum RasPi zu verlegen (man kann auch „normale Pins“ als CS Leitungen verwenden).
Du hast es jedoch so realisiert, dass es nur ein CS gibt und DIN vom ersten über DOUT auf DIN vom nächsten geht.
Jetzt meine Fragen :
Wäre das auch mit C++ und WiringPi möglich ?
Ist DOUT der letzte Zustand der Matrix, bevor sie über DIN überschrieben wird ?
Falls nicht: Wie kann man mehrere Slaves (Matrizen) mit SPI über nur ein CS steuern ?
Mein derzeitiger Code für 2 Matrizen (vereinfacht, ohne Funktionen) :
Hierzu werden jedoch zwei CS Leitungen benötigt.
Am besten du schaust dir das Datenblatt vom MAX7219 an. Du brauchst nur einen CS, da DOUT einer Matrix nur die Daten für die folgenden Matrizen enthält.
Danke für den Hinweis. Das Datenblatt anschauen war das richtige Stichwort.
Nur wie kann ich DOUT beeinflussen ?
Zur Zeit übernimmt DOUT den Wert von DIN einen Schreibzugriff später (so wie ein Schieberegister). Nur lassen sich so eben nicht Bilder oder Schriftzüge auf mehreren Matrizen darstellen. Wie hast du das geschafft ?
Ich kann zwar kein Python, versuche aber das dann mit C++ nachzustellen.
Dadurch, dass ich die Dimensionen der Matrizen kenne (NxM) berechnet meine Bibliothek, welche Matrix was anzeigen muss. Ist etwas Aufwand, sich die Gedanken zu machen, aber du kannst die Funktionen meiner Bibliothek fast 1:! übersetzen. Ich würde mich freuen, wenn du deine Version auch auf GitHub o.ä. teilst, falls andere auch daran interessiert sind 🙂
Also wenn du etwas auf z.B. Matrix 4 anzeigen willst, dann clearst du CS (low aktiv), schickst dann die Daten und shiftest 3x mit NO OP, damit die Matrizen 1 bis 3 nichts anzeigen, dann kommt der Delay und man sieht nur etwas auf Matrix 4.
Habe ich das richtig verstanden ?
Nein, der Status aller Matrizen wird gespeichert und bei einer Änderung insgesamt übergeben. Übergibst du nur geshiftete Werte, wären die Matrizen vorher leer.
Hallo zusammen,
ich habe mir 5 Segmente bestellt. Reicht die Spannungsversorgung vom Pi aus?
Wenn nein, wie schließe ich das ganze an? Ich habe leider nicht so die Elektrotechnik Skills.
Danke im voraus
Kai
Ich habe über 9 Module ohne externe Stromversorgung am Pi betrieben. Falls doch notwendig: VCC an extern + und GND an GND vom Pi und Minus Pol der Stromversorgung.
Danke Felix!
Ich probiere es einfach mal aus. Sie sollten sie Tage in der Post sein.
Wahrscheinlich ist das ganze etwas fehl am Platz hier, aber hast du schonmal eine einfache Uhr angezeigt? Bzw. ist es Möglich das Skript so umzuschreiben dass man Nachrichten über die Konsole an es schicken kann und falls nicht geschickt wurde eine Uhr angezeigt wird?
Sorry, kenn mich in Python leider nicht so aus 🙁
Viele Grüße Kai
Hallo Hai,
schau mal in dem Video, da habe ich eine „Pseudo Uhr“ angzeigt (9 statt 12 Strichen). Wenn die Matrix etwas größer wäre, kann man bestimmt auch eine analoge Uhr anzeigen. Eine Digitaluhr bzw. Nachrichten sind kein Problem.
LG, Felix
Super! Hab das alles hinbekommen.
Wo es bei mir jetzt etwas klemmt: ich würde gerne auf der ersten anzeige eine grafik anzeigen und die anderen zum anzeigen einer nachricht benutzen. habe in der demo gesehen dass du das mit den raumnummern so ähnlich machst. allerdings bekomme ich es nicht hin dann auf den anderen anzeigen den text anzuzeigen bzw zu scrollen 🙁
hast du einen tipp für mich wie ich das hinbekomme?
Hallo zusammen,
ich habe mir 5 Segmente bestellt. Reicht die Spannungsversorgung vom Pi aus?
Wenn nein, wie schließe ich das ganze an? Ich habe leider nicht so die Elektrotechnik Skills.
Danke im voraus
Kai
Ich habe über 9 Module ohne externe Stromversorgung am Pi betrieben. Falls doch notwendig: VCC an extern + und GND an GND vom Pi und Minus Pol der Stromversorgung.
Danke Felix!
Ich probiere es einfach mal aus. Sie sollten sie Tage in der Post sein.
Wahrscheinlich ist das ganze etwas fehl am Platz hier, aber hast du schonmal eine einfache Uhr angezeigt? Bzw. ist es Möglich das Skript so umzuschreiben dass man Nachrichten über die Konsole an es schicken kann und falls nicht geschickt wurde eine Uhr angezeigt wird?
Sorry, kenn mich in Python leider nicht so aus 🙁
Viele Grüße Kai
Hallo Hai,
schau mal in dem Video, da habe ich eine „Pseudo Uhr“ angzeigt (9 statt 12 Strichen). Wenn die Matrix etwas größer wäre, kann man bestimmt auch eine analoge Uhr anzeigen. Eine Digitaluhr bzw. Nachrichten sind kein Problem.
LG, Felix
Super! Hab das alles hinbekommen.
Wo es bei mir jetzt etwas klemmt: ich würde gerne auf der ersten anzeige eine grafik anzeigen und die anderen zum anzeigen einer nachricht benutzen. habe in der demo gesehen dass du das mit den raumnummern so ähnlich machst. allerdings bekomme ich es nicht hin dann auf den anderen anzeigen den text anzuzeigen bzw zu scrollen 🙁
hast du einen tipp für mich wie ich das hinbekomme?
Moin Felix,
erstmal wirklich cooles Projekt! Ein Kumpel und ich versuchen das Snake Game nachzubauen. Wir sind beide Laien, aber wir hatten einfach mal Lust uns mit einem Raspberry Pi, Python etc zu beschäftigen.
Auf unserem Raspberry Pi ist Python 3 installiert. Dein Code ist aber für Python 2 oder?
Jedenfalls haben wir schon die mehrzeilige Matrix zusammengelötet und wollten heute den Testcode abspielen lassen, aber es passierte nichts.
Müssen wir zu Python 2 wechseln? Oder den Code auf Python 3 anpassen? Hast du vielleicht eine Idee für uns?
Hi Michael,
ich habe den Code für Python2 geschrieben und getestet, allerdings sollte er sehr einfach anpassbar sein, da die meisten Funktionen auch auf Python3 genauso aufrufbar sind. Lediglich die prints etc. müssten ggf. überarbeitet werden.
LG, Felix
Moin Felix,
erstmal wirklich cooles Projekt! Ein Kumpel und ich versuchen das Snake Game nachzubauen. Wir sind beide Laien, aber wir hatten einfach mal Lust uns mit einem Raspberry Pi, Python etc zu beschäftigen.
Auf unserem Raspberry Pi ist Python 3 installiert. Dein Code ist aber für Python 2 oder?
Jedenfalls haben wir schon die mehrzeilige Matrix zusammengelötet und wollten heute den Testcode abspielen lassen, aber es passierte nichts.
Müssen wir zu Python 2 wechseln? Oder den Code auf Python 3 anpassen? Hast du vielleicht eine Idee für uns?
Hi Michael,
ich habe den Code für Python2 geschrieben und getestet, allerdings sollte er sehr einfach anpassbar sein, da die meisten Funktionen auch auf Python3 genauso aufrufbar sind. Lediglich die prints etc. müssten ggf. überarbeitet werden.
LG, Felix
Hallo und vielen Dank für Deine Anleitung,
Folgende Frage habe ich an Dich, ich habe eine Matrix mit 1×4 Blöcken. Ich habe in Deiner Bibliothek Die Zeilen 113 un 114 in beiden Richtungen versucht zu ändern, sprich;
height = 1 und width=4 und umgekehrt, aber es klappt nicht einen scrollenden text über die Länge der 4 module hin zu bekommen.
Hast Du eventuell den entscheidenden Tipp für mich ?
ich würde einfach nur gerne direkt die Bibliothek aufrufen:
./multilineMAX7219.py message [repeats [speed [direction [font]]]]
Kannst Du mir hierfür ein Besispiel geben ?
Vielen Dank im voraus / regards Peter
Möglicherweise sind deine Matrizen anders angeordnet und somit 90° verschoben. Du musstest sie entweder anders anordnen oder die Bibliothek umschreiben. Ein ähnliches Problem hatte ein User hier, allerdings weiß ich nicht mehr, ob er die angepasste Bibliothek online gestellt hat.
Hallo und vielen Dank für Deine Anleitung,
Folgende Frage habe ich an Dich, ich habe eine Matrix mit 1×4 Blöcken. Ich habe in Deiner Bibliothek Die Zeilen 113 un 114 in beiden Richtungen versucht zu ändern, sprich;
height = 1 und width=4 und umgekehrt, aber es klappt nicht einen scrollenden text über die Länge der 4 module hin zu bekommen.
Hast Du eventuell den entscheidenden Tipp für mich ?
ich würde einfach nur gerne direkt die Bibliothek aufrufen:
./multilineMAX7219.py message [repeats [speed [direction [font]]]]
Kannst Du mir hierfür ein Besispiel geben ?
Vielen Dank im voraus / regards Peter
Möglicherweise sind deine Matrizen anders angeordnet und somit 90° verschoben. Du musstest sie entweder anders anordnen oder die Bibliothek umschreiben. Ein ähnliches Problem hatte ein User hier, allerdings weiß ich nicht mehr, ob er die angepasste Bibliothek online gestellt hat.
Danke für die prompte Antwort, ich habe diese Matrizen:
https://www.amazon.de/gp/product/B01BUTAFW2/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1
Ich habe aber auch den Fehler gelöst, ich benutze die ursprügliche Bibliothek MAX2719 und dort musste ich folgende Parameter setzen:
device = led.matrix(cascaded = 4)
device.orientation(90)
nun funktionirert Textausgabe und Lauftext über die gesamte Breite.
Wenn ich nun aber noch 3 von diesen Matrizen benutzen wollte um ein 4×4 Array zu haben, würde das dann mit deiner Bibliothe funktionieren ?
Regards Peter
Wo kann ich die von Dir erwähnte „ursprüngliche“ Bibliothek finden? Hast Du einen Link für mich. Danke.
Hi Peter, kannst du das bitte genauer beschreiben, genau dieses Problem habe ich gerade auch!
Danke
Danke für die prompte Antwort, ich habe diese Matrizen:
https://www.amazon.de/gp/product/B01BUTAFW2/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1
Ich habe aber auch den Fehler gelöst, ich benutze die ursprügliche Bibliothek MAX2719 und dort musste ich folgende Parameter setzen:
device = led.matrix(cascaded = 4)
device.orientation(90)
nun funktionirert Textausgabe und Lauftext über die gesamte Breite.
Wenn ich nun aber noch 3 von diesen Matrizen benutzen wollte um ein 4×4 Array zu haben, würde das dann mit deiner Bibliothe funktionieren ?
Regards Peter
Wo kann ich die von Dir erwähnte „ursprüngliche“ Bibliothek finden? Hast Du einen Link für mich. Danke.
Hi Peter, kannst du das bitte genauer beschreiben, genau dieses Problem habe ich gerade auch!
Danke
hallo felix,
vielen vielen dank dafür dieses anleitung.
war zwar sehr skeptisch was den chinalieferant betrift von ebay aber die kam echt an, waren 10 stück für 22 euro.. nahja ausgepackt alle einzeln durchgetestet auch keine defekten bei. 9 stück schön sauber und ordentlich nach deinem bild mit heißkleber verklebt und angesteckt. alles nach beschreibung abgearbeitet und ……
JAWOHLLLLLL es klappt alles so macht es echt spass anleitungen für anfanger nachzumachen wo mal wirklich alles bis ins kleinste beschrieben ist bin auf alle fälle super happy…..
nahja gut alles geht doch n ich so glatt aber is dahin gestellt inder _demo.py die analoge uhr hat keine zeiger 🙂
aber nochmals vielen dank dafür
Hey Björn,
freut mich, dass es klappt 🙂
Bei der Demo erhebe ich keinen Anspruch auf Vollständigkeit – reine Demonstrationszwecke 😀
huhu
spiele jetz schon ne weile mit rum und macht immer noch spass mein sohn hat nun dadurch angefangen zahlen und burchstaben zu lehrnen 🙂
jedenfals is meine sorge das der pi das ganze nichtso mag
jedesmal wenn ich den anmache und die 5v noch angeschlossen sind ladet er das os nicht… und zum zweiten habe ich im monitor nach dem ich ein .py script start immer so ein gelben blitz oben rechts nahaj mal permanend mal flackernt
glaube das kann nicht gut sein achso fals es relevant ist es hängen 9 stück zusammen nachschub wurde bestellt auf 6 x 3 möchte ich kommen
wenn externe einspeisung nötig ist bitte eine empfehlen weiss nich wirklich auf was ich da achten muss 5v is klar aber amper hmmm
danke im vorraus und habe eine schöne zeit
Ich weiß nicht mehr genau wie viel mA eine LED Matrix braucht, aber denke um die 150 – 200 mA. D.h. dein Netzteil sollte mind. 3-4A liefern können. Du kannst aber auch eines mit mehr Leistung nehmen, wie z.B. in diesem Tutorial, in dem auch der Anschluss beschrieben wird.
LG, Felix
hallo felix,
vielen vielen dank dafür dieses anleitung.
war zwar sehr skeptisch was den chinalieferant betrift von ebay aber die kam echt an, waren 10 stück für 22 euro.. nahja ausgepackt alle einzeln durchgetestet auch keine defekten bei. 9 stück schön sauber und ordentlich nach deinem bild mit heißkleber verklebt und angesteckt. alles nach beschreibung abgearbeitet und ……
JAWOHLLLLLL es klappt alles so macht es echt spass anleitungen für anfanger nachzumachen wo mal wirklich alles bis ins kleinste beschrieben ist bin auf alle fälle super happy…..
nahja gut alles geht doch n ich so glatt aber is dahin gestellt inder _demo.py die analoge uhr hat keine zeiger 🙂
aber nochmals vielen dank dafür
Hey Björn,
freut mich, dass es klappt 🙂
Bei der Demo erhebe ich keinen Anspruch auf Vollständigkeit – reine Demonstrationszwecke 😀
huhu
spiele jetz schon ne weile mit rum und macht immer noch spass mein sohn hat nun dadurch angefangen zahlen und burchstaben zu lehrnen 🙂
jedenfals is meine sorge das der pi das ganze nichtso mag
jedesmal wenn ich den anmache und die 5v noch angeschlossen sind ladet er das os nicht… und zum zweiten habe ich im monitor nach dem ich ein .py script start immer so ein gelben blitz oben rechts nahaj mal permanend mal flackernt
glaube das kann nicht gut sein achso fals es relevant ist es hängen 9 stück zusammen nachschub wurde bestellt auf 6 x 3 möchte ich kommen
wenn externe einspeisung nötig ist bitte eine empfehlen weiss nich wirklich auf was ich da achten muss 5v is klar aber amper hmmm
danke im vorraus und habe eine schöne zeit
Ich weiß nicht mehr genau wie viel mA eine LED Matrix braucht, aber denke um die 150 – 200 mA. D.h. dein Netzteil sollte mind. 3-4A liefern können. Du kannst aber auch eines mit mehr Leistung nehmen, wie z.B. in diesem Tutorial, in dem auch der Anschluss beschrieben wird.
LG, Felix
Hallo Felix,
vielen Dank für die Anleitung!
Ich bin RPi-Anfänger und bin noch nicht ganz vertraut mit den Biblothenken und wie ich diese für meine Zwecke einbinden kann.
Ich habe eine sehr einfache Schleife erstellt in dem von 1-10 hochgezählt wird und via Print die Zahlen in der Konsole ausgegeben werden. Wie muss ich vorgehen wenn ich die Zahlen auf dem 8×8 LED Matrix ausgeben möchte?
Gruß aus Rheine,
Marc
Zunächst gibst du die Anzahl der Matizen (in deinem Fall 1×1) in der Bibliothek an. Danach kannst du die Library einfach mittels
import multilineMAX7219
in dein eigenes Python Skript einbauen und die vorhandenen Funktionen aufrufen. Schau dir am besten mal die Beispieldatei genauer an.LG, Felix
Hallo Felix,
mit diesem Beispielcode funktioniert die Anzeige.
Allerdings möchte ich gerne eine Schfleife durchlaufen lassen und die Zahlen anstatt am Bildschirm per LED ausgeben!
Bei diesem Code erhalte ich eine Fehlermeldung bei ……./led.py Zeile 441
Ich bitte um einen Denkanstoss wo ich was falsch mache bzw. wie es richtig geht!
Wie lautet die Fehlermeldung? Versuch mal
matrix.show_message(str(i))
, also die Zahl als String übergeben.Hi,
super, hat funktioniert!
Hier mein Code zum hochzählen mit Ausgabe an der 8×8 LED Matrix.
Hallo Felix,
vielen Dank für die Anleitung!
Ich bin RPi-Anfänger und bin noch nicht ganz vertraut mit den Biblothenken und wie ich diese für meine Zwecke einbinden kann.
Ich habe eine sehr einfache Schleife erstellt in dem von 1-10 hochgezählt wird und via Print die Zahlen in der Konsole ausgegeben werden. Wie muss ich vorgehen wenn ich die Zahlen auf dem 8×8 LED Matrix ausgeben möchte?
Gruß aus Rheine,
Marc
Zunächst gibst du die Anzahl der Matizen (in deinem Fall 1×1) in der Bibliothek an. Danach kannst du die Library einfach mittels
import multilineMAX7219
in dein eigenes Python Skript einbauen und die vorhandenen Funktionen aufrufen. Schau dir am besten mal die Beispieldatei genauer an.LG, Felix
Hallo Felix,
mit diesem Beispielcode funktioniert die Anzeige.
Allerdings möchte ich gerne eine Schfleife durchlaufen lassen und die Zahlen anstatt am Bildschirm per LED ausgeben!
Bei diesem Code erhalte ich eine Fehlermeldung bei ……./led.py Zeile 441
Ich bitte um einen Denkanstoss wo ich was falsch mache bzw. wie es richtig geht!
Wie lautet die Fehlermeldung? Versuch mal
matrix.show_message(str(i))
, also die Zahl als String übergeben.Hi,
super, hat funktioniert!
Hier mein Code zum hochzählen mit Ausgabe an der 8×8 LED Matrix.
Was mache ich falsch? Ich bekomme jedes mal folgende Fehlermeldung beim Ausführen der multilineMAX7219_demo.py Datei:
Traceback (most recent call last):
File „multilineMAX7219_demo.py“, line 30, in
import multilineMAX7219 as LEDMatrix
File „/root/multilineMAX7219/multilineMAX7219.py“, line 104, in
import spidev
ImportError: No module named spidev
Du hast spidev nicht installiert.
Ich habe das selbe Problem.
Mit deiner verlinkten Anleitung komme ich auch nicht wirklich weiter.
Die Datei „sudo nano /etc/modprobe.d/raspi-blacklist.conf“ existiert nicht, also kann nichts gelöscht werden.
Das „sudo python setup.py install“ produziert ein:
„Traceback (most recent call last):
File „setup.py“, line 29, in
long_description= open(‚README.md‘).read() + „n“ + open(‚CHANGELOG.md‘).read(),
IOError: [Errno 2] No such file or directory: ‚README.md'“
Eine Idee?
Was mache ich falsch? Ich bekomme jedes mal folgende Fehlermeldung beim Ausführen der multilineMAX7219_demo.py Datei:
Traceback (most recent call last):
File „multilineMAX7219_demo.py“, line 30, in
import multilineMAX7219 as LEDMatrix
File „/root/multilineMAX7219/multilineMAX7219.py“, line 104, in
import spidev
ImportError: No module named spidev
Du hast spidev nicht installiert.
Ich habe das selbe Problem.
Mit deiner verlinkten Anleitung komme ich auch nicht wirklich weiter.
Die Datei „sudo nano /etc/modprobe.d/raspi-blacklist.conf“ existiert nicht, also kann nichts gelöscht werden.
Das „sudo python setup.py install“ produziert ein:
„Traceback (most recent call last):
File „setup.py“, line 29, in
long_description= open(‚README.md‘).read() + „n“ + open(‚CHANGELOG.md‘).read(),
IOError: [Errno 2] No such file or directory: ‚README.md'“
Eine Idee?
Hi,
wie kann ich denn die einzelnen Pixel ansteuern? Normal geht das doch über … .pixel(…) habe das dann mal versucht zu definieren aber irgendwie geht das nicht. Kannst du mir dabei weiterhelfen?
Grüße
Hi,
wie kann ich denn die einzelnen Pixel ansteuern? Normal geht das doch über … .pixel(…) habe das dann mal versucht zu definieren aber irgendwie geht das nicht. Kannst du mir dabei weiterhelfen?
Grüße
Hi,
ich habe zwar noch nichts von dir gehört, bin aber inzwischen nochmal alles durchgegangen und dabei ist mir aufgefallen, das es eine Funktion mit dem Namen „gfx_set_px(g_x, g_y, state=GFX_INVERT)“ gibt.
Diese habe ich dann auch mal versucht aufzurufen, soweit sieht beim Aufruf auch alles gut aus. Ich bekomme in der Konsole keinen Fehler angezeigt. Leider ändert sich nichts auf der Matrix.
Hier mal der Code:
LEDMatrix.gfx_set_px(1,1,GFX_ON)
LEDMatrix.gfx_set_px(2,2,GFX_ON)
eigentlich müsste das doch damit möglich sein oder?
Was mache ich falsch?
Grüße
Hi,
ich habe zwar noch nichts von dir gehört, bin aber inzwischen nochmal alles durchgegangen und dabei ist mir aufgefallen, das es eine Funktion mit dem Namen „gfx_set_px(g_x, g_y, state=GFX_INVERT)“ gibt.
Diese habe ich dann auch mal versucht aufzurufen, soweit sieht beim Aufruf auch alles gut aus. Ich bekomme in der Konsole keinen Fehler angezeigt. Leider ändert sich nichts auf der Matrix.
Hier mal der Code:
LEDMatrix.gfx_set_px(1,1,GFX_ON)
LEDMatrix.gfx_set_px(2,2,GFX_ON)
eigentlich müsste das doch damit möglich sein oder?
Was mache ich falsch?
Grüße
Hi,
Ich habe leider ein Problem:
Ich habe zwei Matrizen miteinander verbunden, dementsprechend auch MATRIX_WIDTH auf 1 und MATRIX_HEIGHT auf 2 gestellt, und sie angeschlossen.
Die beiden Matrizen leuchten fröhlich rot, aber verändern sich einfach nicht. Ich habe schon ein paar print()-Funktionen in die „multilineMAX7219_demo.py“ gesetzt, welche beim Start des Programms auch ausgegeben werden, aber die Matrizen bleiben komplett beleuchtet.
Fehlermeldungen sehe ich auch keine.
Über Hilfe würde ich mich wirklich freuen, danke schonmal im Voraus!
Hast du sie selbst zusammengelötet? Aus Erfahrung kann ich sagen, dass so etwas bei falsch verlöteten Kontakten oder bei falscher Verkablung auftreten kann.
Hi,
Ich habe leider ein Problem:
Ich habe zwei Matrizen miteinander verbunden, dementsprechend auch MATRIX_WIDTH auf 1 und MATRIX_HEIGHT auf 2 gestellt, und sie angeschlossen.
Die beiden Matrizen leuchten fröhlich rot, aber verändern sich einfach nicht. Ich habe schon ein paar print()-Funktionen in die „multilineMAX7219_demo.py“ gesetzt, welche beim Start des Programms auch ausgegeben werden, aber die Matrizen bleiben komplett beleuchtet.
Fehlermeldungen sehe ich auch keine.
Über Hilfe würde ich mich wirklich freuen, danke schonmal im Voraus!
Hast du sie selbst zusammengelötet? Aus Erfahrung kann ich sagen, dass so etwas bei falsch verlöteten Kontakten oder bei falscher Verkablung auftreten kann.
Bei mir gibt es beim Ausführen der Demo-Datei eine Fehlermeldung:
File „/home/pi/multilineMAX7219/multilineMAX7219.py“, line 166, in
spi.open(0,0)
IOError: [Errno 2] No such file or directory
Woran könnte das liegen?
Ist spidev installiert? Versuche mal CS1 statt CS0.
Bei mir gibt es beim Ausführen der Demo-Datei eine Fehlermeldung:
File „/home/pi/multilineMAX7219/multilineMAX7219.py“, line 166, in
spi.open(0,0)
IOError: [Errno 2] No such file or directory
Woran könnte das liegen?
Ist spidev installiert? Versuche mal CS1 statt CS0.
Hat jetzt eigentlich jemand die Bibliothek mit der Drehung um 90° irgendwo hochgeladen?
Hat jetzt eigentlich jemand die Bibliothek mit der Drehung um 90° irgendwo hochgeladen?
hilfe bekomme die nicht mehr zum laufen
vorher ging es ohne probleme nun wollte ich die mal wieder einbaun
alles richtig angeschlassen verdratet , pi is up to date aber es kommt nich sinvolles bei rum
einer eine idee
Hallo Zusammen,
ich habe eine 1×4 Matrix von Amazon, die Matrix an sich funktioniert wunderbar, das habe ich mit der Bibliothek MAX7219 getestet, jedoch muss ich auch, wie schon mal weiter oben von jemandem erwähnt das ganze mit dem Parameter –block-orientation -90 aufrufen damit es vernünftig angezeigt wird. Wenn ich hier nun python multilineMAX7219_demo.py aufrufe, passiert einfach mal gar nichts. Egal was ich in der python multilineMAX7219.py angebe. Ich habe es schon mit 1×4, 4×1 und auch 2×2 probiert, nichts klappt. Es kommt auch keine Fehlermeldung.
Kann mir jemand einen Tip geben?
Ich habe genau das gleiche Problem. Die Matrix leuchtet schön rot, aber das war es. Das Demo-Script ändert auch nichts dadran. Eine Fehlermeldung erhalte ich auch nicht. Ich habe leider die Vermutung, dass dieses Tutorial nicht mehr gepflegt wird.
Halloooooooo ,lebt hier nochwer ??
Das tutorial ist SUPER,nur egal was ich versuche ich BRINGS NICHT HIN UMLAUTE DARZUSTELLEN :(((((((((((
gibts hier keinen FIX ??????
Hallo
ich habe eine Frage: Kann man alle 15 Matrizen an einen raspberry pi anschliessen oder braucht man da mehrere?
Hallo!
Wir haben das Projekt auf einem raspberry pi3b+ umgesetzt. Es war schon nicht ganz leicht die ganzen Bibliotheken zu installieren. Da hat sich wohl viel geändert.
Das glückte uns aber noch.
Jetzt kriegen wir die Matriezn zum leichten. Das Demo Script tut auch was… Heißt: Die Matrizen verändern sic bei Ausführung. Nur nicht so wie sie sollen: Im Wesentlichen leuchtet von den 8×8 Matrizen immer die ganze Matrix oder nichts. Welche Matirzen leuchten, we3chselt bei Ausführung. Jedoch leuchten nie einzelne PINS.
Irgendwelche Ideen, was wir tun können?
Vielen Dank!!!
Hallo Armin,
ich habe gerade das selbe Problem, welches du beschreibst. Läuft es bei Dir mittlerweile? Verkabelt muss es richtig sein, da die Matrizen mit anderen Bibliotheken einwandfrei funktionieren.
Danke
Hallo
Konntet ihr das Problem lösen?
Wir haben auch einen Raspberry Pi 3B+ mit 4 mal 4 8*8 Matrixen. Aber wenn wir das multilineMAX7219_demo.py laufen lassen leuchten nur die ganzen Matrixen und nicht einzelne LED.
Bin im Moment ratlos an was es liegen könnte.
Bin dankbar um jeden Rat.
Wir haben auch schon versucht eine einzelne 8*8 Matrix an zu hängen und mit der MAX7219 zu betreiben aber funktioniert nicht.
Hallo
Benutzt ihr auch einen Raspberry Pi 3B+ mit Stretch als OS?
Wenn ja dann hilft euch das vielleicht weiter da wir ein ähnliches Problem hatten.
Wir mussten in der multilineMAX7219.py nach spi open noch folgende Zeile einfügen.
spi.max_speed_hz = 500000
Was wollen mir diese Worte sagen:
pi@raspi3buero:~/multilineMAX7219 $ python multilineMAX7219_demo.py
Traceback (most recent call last):
File „multilineMAX7219_demo.py“, line 121, in
LEDMatrix.scroll_message_vert(„Speed: „+chr(48+speed), „Message 2“,speed, DIR_U)
File „/home/pi/multilineMAX7219/multilineMAX7219.py“, line 385, in scroll_message_vert
this_char = font[ord(old_message[position + iter*MATRIX_WIDTH])]
IndexError: string index out of range
pi@raspi3buero:~/multilineMAX7219 $
Ich habe 1 Zeile und 4 Matrizen und das auch in dem Hauptfile eingestellt
Ich habe das gleiche Problem hast dus schon gelöst ?
Ich hab leider keine Ahnung, wo ich die Jumper anbringen muss. Ich kann auf dem Bild leider überhaupt nix erkennen.
Hallo zusammen, vielen Dank für das tolle Tutorial. Gibt es den auch eine Möglichkeit ein Matrix anzusteuern, welches aus zwei untereinanderliegenden Zeilen von 8×8 Matrizen besteht. Man könnte jetzt die Punkte einzeln ansteuern, das ist jedoch sehr mühselig. Eventuell Font Datei editieren oder ähnliches?
Grüße Manuel
Hallo
Ich habe das gleiche Problem. Ich versuche Buchstaben über zwei 8×8 Matrixen darzustellen, also so, dass die Buchstaben größer (höher) werden. Hast du eine Lösung gefunden?
Christoph
Hi,
ich habe ein Problem mit den 4×4 Matrizen.
Ich habe alles installiert, und auf 4 x 4 konfiguriert.
Allerdings werden die 1. vier Elemente nicht richtig angesteuert.
Reihe 2 – 4 werden nacheinander sauber angesteuert. Nur die 1. Reihe „spackt“ rum.
Jetzt ist die Frage ob e vtl noch ein Einstellungsfehler vorhanden ist, oder ob evtl. das one in all Matrix Display ein fehler hat, oder ob evtl ein Anschluss vom Pi nicht richtig funktioniert.
Vielleicht kann mir da jemand eine Hilfe geben um die Fehlerquelle zu identifizieren.
Danke schon mal
mfg Bernd
Hallo nochmal,
das 1. Problem ist beseitigt. Das Matrix Display hatte wohl einen Schaden.
Jetzt habe ich 3 1×4 Elemente geholt und angeschlossen und die Matrix wird angesteuert.
Allerdings noch nicht ganz richtig.
Zur Übersicht der Elemente:
1 5 9
2 6 A
3 7 B
4 8 C
Es sind also 2 Elemente insgesamt.
Wenn ich jetzt ein Pixel wandern lasse z.B. von 3 runter, dann taucht es nicht oben bei der 4 auf sondern bei der Nr. 2.
Linke und rechte Verschiebungen passen. Vom rechten Rand der 3 wandert er dann von links nach rechts durch die 7 und dann weiter zu B und zurück zur 3.
Aber Senkrecht scheinen die einzelnen Elemente falsch adressiert zu sein. Kann man die Anordnung in der Datei noch ändern oder evtl um 180 Grad drehen?
Als Info wozu das ganze überhaupt benötigt wird kann ich sagen das wir einen 2. Raspberry Pi Geocache legen wollen. Es soll Snake vor Ort gespielt werden. Wenn dann eine bestimmte Punktzahl erreicht wurde, wird entweder eine Tür autmatisch geöffnet oder aber es wird beschrieben wir man zum Finale kommen kann.
Nur erstmal muss das Display richtig funktionieren 🙂
Vielen Dank schon mal für die Hilfe.
Ciao Bernd
Es sind 12 Elemente…. nicht 2!
Ich hab das Projekt nachgemacht und bin dabei auf einige Hindernisse gestoßen. Das Tutorial ist ja auch schon sehr alt. Um es anderen zu erleichtern, hab ich die Bibliothek upgedatet:
– Die SPI Frequenz limitiert, sonst kommt nur wirres Zeug an.
– Die Blöcke können jetzt um 180° gedreht werden.
– Alle Befehle nach Python 3 konvertiert
– Ein script hinzugefügt, das die Nummerierung der Blöcke anzeigt
statt wie oben angegeben also einfach folgende Zeile nutzen:
git clone https://github.com/tutRPi/multilineMAX7219.git && cd multilineMAX7219
Ebenso habe ich auch Snake auf Python 3 upgedatet, falls das noch jemand braucht:
https://github.com/michaelWuensch/Snake-Game-MAX7219.git
Viel Spaß beim Basteln!
Sorry, jetzt hab ich den falschen Link angegeben. Richtig lautet es so:
git clone https://github.com/michaelWuensch/multilineMAX7219.git && cd multilineMAX7219