Forum: Mikrocontroller und Digitale Elektronik LED-Matrix 8x32 MAX7219


von Lukas B. (mind)


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.

: Bearbeitet durch User
von Patrick J. (ho-bit-hun-ter)


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

von Lukas B. (mind)


Lesenswert?

Es handelt sich um folgende Matrix:

https://www.amazon.de/gp/aw/d/B06XJ9ZX17/ref=mp_s_a_1_2?__mk_de_DE=ÅMÅZÕÑ&qid=1509569541&sr=8-2&pi=AC_SX236_SY340_QL65&keywords=8x8+led+matrix&dpPl=1&dpID=51omLWzGN%2BL&ref=plSrch

Ich würde hierbei schon gerne einen Mikrokontroller verwenden da dieser 
noch mehrere Aufgaben erledigen soll.

von H.Joachim S. (crazyhorse)


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.

von Thomas S. (thomas_s72)


Lesenswert?

Hallo,
ich hab eine Uhr mit genau dem Prinzp realisiert, siehe youtube:

https://www.youtube.com/watch?v=rP4nDXz-_9c

Falls gewünscht kann ich den Quellcode zur Verfügung stellen. Es sind 28 
MAX7219 drin (7x4).
Das kann aber auch gekürzt werden auf nur vier.

Gruß
Thomas

von Lukas B. (mind)


Lesenswert?

Hallo Thomas,

sieht sehr interessant aus, wie genau hast du das gelöst?

von Thomas S. (thomas_s72)


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

von Jan L. (ranzcopter)


Lesenswert?


von Thomas S. (thomas_s72)


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.

von Dieter W. (dds5)


Lesenswert?

Thomas S. schrieb:
> Es sind 28 MAX7219 drin (7x4).

Hast Du im Lotto gewonnen? Die Dinger sind doch sündhaft teuer.

von Harry (Gast)


Lesenswert?

Dieter W. schrieb:
> Thomas S. schrieb:
> Es sind 28 MAX7219 drin (7x4).
>
> Hast Du im Lotto gewonnen? Die Dinger sind doch sündhaft teuer.

Ja ebay China 50 Stück für ca. 15€

von Thomas S. (thomas_s72)


Lesenswert?

LOL!!!
Beim Chinamann für ein paar Cents zu haben!!
Schau mal bei Aliexpress rein, da gibt es die für kleines Geld. Auch 
wenns Kopien sind, die funktionieren bei mir seit 3 Jahren ohne Ausfall.

von Spannungsteiler (Gast)


Lesenswert?

GukstDu hier;
Beitrag "MAX7219_MaxMatrix_Scrolltext_without_Delay"
ein gut funktionierendes Beispiel......

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.