Led Board
Ledboard Status: beta | |
---|---|
Beschreibung | LED-Board mit 1536 roten LEDs |
Autor: | krisha architekt schinken |
Version | 0.8 |
PayPal |
Idee
- API zum Ansteuern
- IRC Ansteuerung
- Letzte Nachrichten wiedergeben
- Befehle zur direkten Steuerung
- Games
- Quiz
- Hangman
- Ping-Pong
- Snake
- Pacman
- Blinkenlights
- Micro-Qr-Codes
Grafiken auf PC generieren, dadurch keine Probleme mit Codegröße und mehr Möglichkeiten
Hardware
Das Ledboard entspringt einem kommerziellem Produkt bei welchem die Ansteuerung entfernt und durch eine eigene Platine ersetzt wurde. Dadurch war es uns möglich eine eigene Firmware nach unseren Wünschen zu schreiben.
Das Ledboard besteht aus 1536 LEDs, die zu 16 Zeilen mit jeweils 96 Spalten angeordnet sind. Der Controller wird über einen Wannenstecker angeschlossen. Es lassen sich weitere Ledboards über Wannenstecker seriell verbinden. Die Hardware kann jeweils nur eine Zeile anzeigen, was bedeutet, dass wir die 16 Zeilen zeitlich multiplexen mussten. Die Bits werden mit Shiftregistern durch eine Zeile geschoben, per Signal gespeichert und per Signal ausgegeben
Folgende Signale zur Ansteuerung sind vorhanden:
Bezeichnung kurz | Bezeichnung lang | Funktion |
---|---|---|
R0 | Red | aktuelles rotes Bit |
G0 | Green | Unused (missing bondwires) |
HE | FET enable | FETs einschalten (komplettes Board an/aus) |
STO | Store | Speichersignal (Speichern der Bits im Schieberegister) |
STR | Strobe | Anzeigesignal (LEDs an) |
CLK | Clock | Bitrate (Bei jedem Clocksignal wird R0 übernommen und weitergeschoben) |
H0-H3 | Lines | Zeilenmultiplexing |
Gehäuse/Kabel
Die gelöteten Verbindungen auf der PCB sorgen immer mal wieder für Probleme. Das Board wurde auf eine MDF-Platte geschraubt, um Verwindungen zu verhindern, die diese Probleme verursachen können. Die MDF-Platte konnte dann auch ohne Probleme an der Wand befestigt werden. Die Steckleisten zum Flashen und für die serielle Kommunikation wurden mit Heißkleber am Board befestigt. Auch hier hatten sich die Drähte immer mal gelöst.
Software
/* TODO Link to github */
Firmware
Um einen teilweisen Bildaufbau zu vermeiden wurde ein Double Buffering verwendet. Geschrieben wird in den Backbuffer, während der Frontbuffer angezeigt wird.
Grundlegend funktioniert der Code so:
- Zeile auswählen
- 12*8 Bits shiften (mit Clock)
- Anzeige aktivieren
- Delay
- Anzeige deaktivieren
- goto 1
Die Daten werden per UART IRQ empfangen. Die Daten werden dann in den Buffer geschrieben. Die kurze Unterbrechung durch den Interrupt ist nicht sichtbar.
Server: LedLoard
/* TODO */
Kommunikation
Server <-> Firmware
/* TODO */
Client <-> Server
/* TODO */
Erweiterungen
Für das LED Board existieren verschiedene Tools, um eine Ausgabe auf das LED Board zu ermöglichen. Als Master fungiert der LedLoard, der die darzustellenden Daten per Socket annimmt. Hier existieren auch verschiedene Prioritäten, um z.B. Darstellungen für wichtigere Nachrichten zu unterbrechen.
Game of Life
- Sprache: Python
- Code: GitHub
Implementierung von Conway's Game of Life für das LED Board. Die Kanten des LED-Boards bilden eine Ellipse. Wikipedia: http://de.wikipedia.org/wiki/Game_of_Life
gif2led
- Sprache: Python
- Libraries: PIL (python image library)
- Code: GitHub
Darstellung von GIF-Animationen auf dem LED-Board. Das Script verwendet zum umrechnen der GIFs die PIL - Python Imaging Library. Die Animationen werden für die Darstellung skaliert und gecroppt, wobei die Ratio immer beibehalten wird.
Beispiel:
python gif2ledboard.py ~/Pictures/gifs/NyanCat.gif
text2led
- Sprache: Python
- Libraries: PIL
- Code: GitHub
Ermöglicht die Darstellung von scrollenden Text auf dem LED-Board anhand einer TrueType-Schriftart.
twitter2led
- Sprache: Python
- Code: GitHub
Sucht auf Twitter nach HashTags und gibt neue Tweets über die text2led-Library am LED-Board aus.
ledclock
- Sprache: Python
- Libraries: pygame
- Code GitHub
- Video Google I/O Countdown Clock on LED Board
Eine Nachbildung der Google I/O Countdown Clock. Zur realisierung wurde pygame verwendet.