Frage von Jordelory, 123

Wie lassen sich verschiedene bewegte Muster auf einem Dot-Matrix-Display darstellen?

Für die Schule müssen wir eine Facharbeit schreiben, mein Thema lautet "Wie lassen sich verschiedene bewegte Muster auf einem Dot-Matrix-Display darstellen?". Ich habe mir diese Matrix zugelegt: amazon.de/16x16-Matrix-Birthday-Christmas-Arduino/dp/B00MHUCZZO/ref=cm_rdp_product Und als Demos diese hier verwendet: http://www.electrodragon.com/w/File:Arduino_Demo_for_16x_16_LED.zip Ich habe daraufhin die Matrix an meinen Arduino angeschlossen und alle Demos einmal hochgeladen. Meines Erachtens nach hat alles einwandfrei funktioniert. Daraufhin habe ich versucht, mich in das Programm einzulesen und erst einmal die Demo mit dem statischen Bild zu bearbeiten. Leider habe ich keinen blassen schimmer was ich im Programm ändern muss, damit ich auch auf dem Display eine Veränderung sehe. Ich hoffe, dass es verständlich ist und mir jemand weiterhelfen kann.

Antwort
von Computator, 70

Generell lassen sich bewegliche Animationen in LED-Matrizen darstellen, indem man mehrere Muster erstellt und diese mit Verzögerung anzeigen lässt.
Eine LED-Matrix kann gesteuert werden indem eine Spalte mit der Masse (logisch 0) verbunden wird und die Zeilen entweder mit Masse oder 3-5V (logisch 1). Nach diesem Prinzip kann nur eine Spalte der Matrix gesteuert werden. Verbindet man jedoch eine andere Spalte mit der Masse kann nun diese gesteuert werden. Durch schnelles Durchschalten der Spalten kann so ein Muster angezeigt werden.

Wenn du Programmiersprachen gut verstehst, kannst du auch eine Matrix ohne Controller zu kaufen oder zu bauen und diese dann zu Programmieren. Du brauchst dafür allerdings einen Arduino mit mindestens Zeilen+Spalten IO-Pins. Zusätzlich können Schieberegister verwendet werden um die benötigten Pins zu reduzieren.

Der Code scheint so zu funktionieren, dass das zweidimensionale Array "Word1[x][32]" die verschiedenen Muster speichert, die verwendet werden. Dabei ist x die Anzahl der Wörter. Alle 16*16=265 LEDs können mit 32 byte (chars) dargestellt werden, da ein Byte 8 Bits darstellt und 8*32=256. Das ganze wird in Hexadezimal aufgeschrieben um Platz zu sparen, kann aber auch in Binär oder Dezimal passieren (Dezimal eignet sich allerdings nicht, da man extrem schlecht auf das Muster zurück schließen kann).
Hexadezimal-Zahlen werden mit einem "0x" gekennzeichnet, Binär mit einem "0b" die erste Ziffer steht für die ersten 4 LEDs, die zweite für die hinteren. Du kannst das mal hier ausprobieren: http://blog.riyas.org/2013/12/online-led-matrix-font-generator-with.html.>

Wenn du alle "Wörter" bzw. Muster erstellt hast kannst du sie im Hauptteil des Programms "loop" mit dem Befehl "Display" anzeigen lassen. Das Programm kommt immer wieder zu "loop" zurück und wiederholt diese Methode, wenn sie das Ende erreicht hat. Hast du zwei Muster und möchtest diese nacheinander anzeigen, machst du das z.B. mit

void loop()
{
Display(Word1); delayMilliseconds(100); //Weiß nicht ob es die gibt,  kann sein, dass du eine andere brauchst Display(Word2); }

Die Methoden "Setup", "Display", "Scan_Line" und "Send" werden zum Senden der Daten an die Matrix-Controller verwendet und sollten besser nicht modifiziert werden.
Um die Programme besser zu verstehen und zu schreiben solltest du ein wenig Objektorientierte Programmiersprachen lernen.

Ich hoffe, dass du alles verstanden hast und es ausführlich genug war, damit du die Matrix verwenden kannst.

Kommentar von Computator ,
Kommentar von Jordelory ,

Vielen vielen Dank für deine Antwort, das hat mir echt geholfen das zu verstehen. 

Kommentar von Computator ,

Das im ersten Absatz Beschriebene heißt übrigens Multiplexverfahren, habe ich vergessen zu erwähnen :)

Keine passende Antwort gefunden?

Fragen Sie die Community