LED-Matrix 8x32 MAX7219

OP #5194608
Lesenswert?

Guten Abend Zusammen,

ich habe mir eine 8x32 bzw. 4x8x8 Led-Dot-Matrix gekauft.
Ich habe sie soweit auch zum laufe gebracht (mithilfe der "LedControl" 
Libary). Dabei habe ich eine Arduino Uno verwendet.

Jetzt will ich aber eine leichtere Möglichkeit finden einen Text auf 
dieser Matrix anzuzeigen.
Ich habe hierzu keine Möglichkeit gefunden, wie man einen String darauf 
abbilden kann.

Habt ihr eine Idee wie ich am Einfachsten z.B. "Hallo" in meinen 
Programm definiere und dieser dann auf meiner Matrix angezeigt wird?
Gibt es hierzu eine bessere Libary?
Welche Erfahrungen habt ihr mit so einer Matrix gemacht?

Dieser Text soll sich auch im Laufe des Programms ändern.
Am Schluss würde ich gerne eine Uhr daraus basteln.

Vielen Dank für eure Hilfe.
#5194642
Lesenswert?

Hi

Wie werden die Pixel in die Matrix reingeschoben?
Sind die ersten 64 Bit die erste 8x8-Matrix?

Wenn die 'Byte' immer eine senkrechte Reihe darstellen, musst Du 'nur' 
die 5 Bytes pro Zeichen definieren und entsprechend in die Matrix 
reintakten.

'Nach Hinten' schieben müsste gehen, wenn die Anzeige aber 'nach Vorne' 
gescrollt werden soll, wird der aktuelle Inhalt komplett erneut gesendet 
werden müssen - ist ja 'nur' ein Schieberegister und kein eigenständiger 
µC, Welcher Sich um die Darstellung kümmert.

MfG
#5194677
Lesenswert?

Ja, die Zauber-librarys...
Hier findest du Anregungen:
Beitrag "Zeichensatz 8x5 für Led Display"
Trenne die Teilaufgaben. Der erste Teil besteht darin, einen RAM-Bereich 
(32Byte) vie SPI aufs Display zu schreiben. Jedem gesetzten Bit 
entspricht eine leuchtende LED. Die Ausgaben kann man zyklisch machen 
oder eben nur, wenn sich was ändern soll. Die zeitkritischen Sachen 
nimmt dir schon der MAX7219 ab.
Der zweite Schritt wäre dann dann das erstellen (oder finden) eines 
passenden Zeichsatzes.
Und der dritte Schritt wäre dann das Erstellen einer Routine, die einen 
string (den du z.B. mit sprintf() erhälst umcodiert, in den RAM 
schreibst und ausgibst.

Ja, ist einiges an Arbeit, aber du wirst viel lernen dabei. Mehr, als 
eine fertige lib zu benutzen, falls es die gibt.
#5195149
Lesenswert?

Hi Lukas,
ganz einfach: Genial!! Hehe...  ;-)
Aber im Ernst: Die MAX sind kaskadiert und werden seriell beschrieben 
wie vorgesehen. Das geht mit DREI Drähten (ja, nur drei!)
Im Flash sind alle ASCII Zeichen abgelegt als Bitmuster, auch das 'ä' im 
März.
Ich hab eine Funktion die als Parameter das darzustellende Zeichen, X,Y 
und einen Scrollwert bekommt.
Damit kann ich jedes Zeichen an jede Stelle das Displays schreiben, auch 
verteilt auf mehrere MAX.
Diese Funktion holt also das entsprechende Zeichen ausm Flash und 
schreibt es an die richtige Position im Display Array.
Das ist ein Datenfeld wo ich zuerst die einzelnen Pixel als Bytemuster 
abspeichere, da mische ich also Temp, Zeit und Datumstring 20 mal pro 
Sekunde. Das Feld 7x32 Bytes.

Dann wird das gesamte Array rausgeschoben in der richtigen Reihenfolge 
und wieder neu berechnet.
Wenn du willst kann ich dir die Dokumentation als Mail schicken.
Kannst mich kontaktieren unter thomas.schattat (at) gmail.com.

Gruß Thomas
#5195172
Lesenswert?

#5195188
Lesenswert?

OK. Das sieht so ähnlich aus wie bei mir.
Was ist nun die Frage?
Die Matrizen werden als gemeinsame Andoe oder gemeinsame Kathode 
verkauft.
Keine Ahnung was das soll, alle haben gemeinsame Anoden und geinsame 
Kathoden.

Meine sind so verdrahtet, dass die Bytes vom MAX zeilenweise angezeigt 
werden, links MSB, rechts LSB.
Zeile 0 ist oben, Zeile 7 ganz unten. Das Schaltbild ist evenuell 
anders.

Es macht Sinn zu verstehen wie das geht und nicht irgendwelche fertigen 
Module an einen Arduino zu hängen und fertige Libraries zu laden.
Fang einfach mal mit einem 8x8 Quadrat an und schieb da Daten rein. Dann 
sieht man welche Bits welche Pixel ansteuern.

Wo klemmt es denn nun anfänglich? Was klappt und was nicht? Niemand wird 
hier fertigen Code mundgerecht erstellen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren