Ansteuerung des LED-Lauflicht

28. September 2009 – 14:00

[singlepic id=116 w=210 h=140 float=right]In diesem kurzen Beitrag möchte ich die Ansteuerung des LED-Lauflicht erläutern.

Ich weiße explizit darauf hin, dass mein Code nicht den strengsten Kriterien für Effizienz, Sicherheit und Ordnung genügt. Beim stöbern im Netz finde ich es aber immer sehr frustrierend, wenn man aus diesen Gründen keinen Code findet, obwohl man nur eine kleine Anregung benötigt. Deswegen hier der C-Code für einen Atmega16:

Programmcode zum LED-Lauflicht v.1.0

(Nicht direkt lauffähige Version, extrahiert aus einem größeren Projekt)

Das Byte-Array zur Speicherung der Bild-Daten ist folgender maßen aufgebaut:

Die ersten beiden Bytes enthalten die Länge des Arrays, damit ich nicht erst die Länge im Programm zählen muss. Das nullte Byte stellt hierbei das HighByte dar.

Die „Bilder“ bestehen nun immer aus drei Bytes für die Portexpander, die die LEDs treiben und einem Byte für die Anzeigedauer in Millisekunden.

Die LEDs werden mit einer 1 angeschaltet, da erst die Funktion zum schreiben der I2C Befehle die nötige Invertierung für meine Schaltung vornimmt.

Der Timer/Counter0 läuft bei mir so, dass er jede Millisekunde einen Interrupt auslöst, in dem ich Laufvariablen editiere. Eine Variable zum warten auf das nächste LED-Bild wird hier dekrementiert. Sobald diese Variable unter 0 läuft, wird beim nächsten Schleifendurchlauf das neue Bild gesetzt.

Zur Generierung der „Bilder“ habe ich ein kleines .NET Programm geschrieben. Dieses ist wirklich sehr schlecht dokumentiert und auch unvollständig, aber ich will es Euch nicht vorenthalten:

.NET Programm zur Gestaltung des Lauflichtes
(Im .rar-Archiv liegt auf oberster Ebene das ausführbare Programm, sowie die Visual Studio 2008 Dateien)

Bei Fragen erläutere ich Details gerne genauer.

Kommentare sind hier nicht erlaubt.