Guten Tag zusammen,
ich habe schon vor längerer Zeit mit dem Gedanken gespielt ein Programm zu entwickeln, welches mir am Computer hilft meine Animationen für den LED Coffee Table zu entwerfen.
Ziel sollte es sein, dass man einfach Algorithmen testen kann um diese dann auf seinen Arduino zu übertragen.
Der Versuch ein paar nette Animationen zu sammeln ist leider nicht so sehr erfolgreich gewesen :~
Das Programm sieht wie folgt aus:
Reiter Actions:
Unter Demo können ein paar Animationen ausgewählt werden und per Klick auf den Start-Button aktiviert werden.
Das Interval beschreibt die Zeit zwischen jeder Aktualisierung.
Die Button daneben legen die verwendeten Vordergrund- oder Hintergrundfarben fest. Die Farbe, die für den Vordergrund verwendet wird, kann auch gleichzeitig per linker Maustaste auf die Matrix übertragen werden.
Reiter Setup:
Hier kann die Richtung der LED-Kette festgelegt werden. Das ist nötig, wenn man nicht per Koordinatensystem, sondern per Array, bzw. LED-Nummer die Farbe ändern möchte.
Weiterhin können die LED´s als Rechteck oder Kreis, 2 oder 3 Dimensional angezeigt werden. Label blendet die laufende Nummer der LED´s ein.
Größe und Abstand der LED´s ist selbsterklärend, denke ich.
Per Save & Load können die aktuellen Einstellungen und die angezeigte Matrix per XML exportiert & wieder importiert werden.
Image wandelt ein Bild um, Folder zeigt alle Bilder in einem Ordner nacheinander an. Dabei muss allerdings der Pixelflow auf UpperLeftToBottom stehen.
Reiter Info:
Zeigt die aktuelle Farbe und Transparenz zu der LED an, die sich gerade unter dem Mauszeiger befindet.
Im Anhang befindet sich weiterhin das Programm zum ausführen und der Quellcode der Anwendung (Visual Studio 2010 Projekt in C# ).
In dem Programmcode der Form LED Matrix ist allerhand Code für die Button, Laden und Speichern der Einstellungen, usw. Wichtig ist erstmal nur die Funktion private void Loop()
. Diese kann verwendet werden um eigene Animationen zu programmieren. Die Grundlegenden Funktionen sind dort bereits zu Demonstrationszwecken enthalten:
//All Pixel
matrix.All(backgroundColor);
DisplayMatrix();
//First Pixel
matrix.SetLed(0, foreColor);
DisplayMatrix(1000); //1 Second Delay
//Last Pixel by coordinates
matrix.SetPixel(matrix.GridWidth - 1, matrix.GridHeight - 1, foreColor);
DisplayMatrix();
//Set PixelRange
matrix.SetRange(3, 8, foreColor);
DisplayMatrix();
//Set Pixel Range by coordinates
matrix.SetPixelRange(2, 3, 7, 8, foreColor);
DisplayMatrix();
//Draw a Circle
matrix.DrawCircle(5, 4, 4, matrix.RandomColor());
DisplayMatrix();
//Fill this Circle
matrix.FillCircle(5, 4, 4, matrix.RandomColor());
DisplayMatrix();
//Draw Rectangle
matrix.DrawRect(1, 1, 8, 8, matrix.RandomColor());
DisplayMatrix();
Die Funktionen sind an die Library von Bliptronics angelehnt. Das ermöglicht quasi eine 1:1 übernahme des Codes in die Arduino IDE.
Die Library habe ich für mich etwas angepasst und erweitert. Die stelle ich gerne auch nochmal zur Verfügung. Sicherlich kann man diese relativ einfach auch für andere Hersteller anpassen.
Geplant ist noch ein Protokoll um per Serieller Schnittstelle direkt mit dem Arduino zu kommunizieren und die LED´s live zu steuern.
Über etwas Feedback würde ich mich freuen
Gruß,
Thomas
LED Matix Anwendung.zip (72.7 KB)
LED Matrix Source.zip (110 KB)