Borgware-2D: Unterschied zwischen den Versionen
Tunix (Diskussion | Beiträge) K (→Simulator: weniger bandwurm) |
Tunix (Diskussion | Beiträge) (Komplette Überarbeitung, Github-Link hinzugefügt) |
||
Zeile 1: | Zeile 1: | ||
Die Borgware-2D | ==Übersicht== | ||
Die Borgware-2D ist eine Firmware für AVR-basierte, zweidimensionale LED-Matrizen, insbesondere die [http://www.das-labor.org/wiki/Blinken_Borgs Blinken Borgs]. Hauptplattform ist der [http://www.das-labor.org/wiki/Borg16 Borg16]-Bausatz. Andere unterstützte Plattformen sind das [http://www.hackerspace-ffm.de/wiki/index.php?title=LedBrett LED Brett] vom [http://www.hackerspace-ffm.de Hackerspace FFM] oder das [http://www.elo-web.de/elo/mikrocontroller-und-programmierung/ping-pong/das-franzis-pingpong ELO Ping-Pong-Board]. | |||
{| | |||
[[Bild: | | | ||
[[Bild:Borg-andre2.jpg|thumb|120px|left|Andres Ur-Borg]] | |||
| | |||
[[Bild:Borg16Screen.jpg|thumb|120px|left|Borg16 mit Testdisplay]] | |||
|} | |||
==Animationen== | |||
Mittlerweile gibt es Zahlreiche Animationen für die Borgs. Hier sind ein paar Beispiele: | |||
= | |||
{| | {| | ||
| | | | ||
[[Bild:Borgware2d_matrix.png|thumb|120px|left|Matrix]] | [[Bild:Borgware2d_matrix.png|thumb|120px|left|Matrix]] | ||
Zeile 38: | Zeile 24: | ||
|} | |} | ||
Ein [https://raw.github.com/das-labor/borgware-2d/master/doc/img/borg_anim.gif animiertes GIF (3,5 MB)] vermittelt einen Eindruck von der Borgware-2D in Action ;) | |||
== | |||
==Spiele== | |||
{| | |||
| | |||
[[Bild:Borgware2d_snake.png|thumb|120px|left|Snake]] | |||
| | |||
[[Bild:Borgware2d_tetris.png|thumb|120px|left|Tetris]] | [[Bild:Borgware2d_tetris.png|thumb|120px|left|Tetris]] | ||
|} | |||
* Tetris | |||
** Classic: Das ganz normale Tetris | |||
** First Person Tetris: Statt die Steine zu drehen, dreht man hierbei das Spielfeld um den Stein | |||
** Bastet: Diese Tetris Variante gibt einem stets den Stein, den man gerade am wenigsten gebrauchen kann | |||
* Snake | |||
* BreakOut | |||
* Space Invaders | |||
==Quellen== | |||
Die aktuellen Quellen liegen bei [https://github.com/das-labor/borgware-2d Github]. Diese lassen sich mit folgendem Befehl auschecken: | |||
git clone https://github.com/das-labor/borgware-2d.git | |||
==Bauen der Firmware== | |||
Derzeit unterstützte Build-Plattformen sind Linux, FreeBSD and Windows (via Cygwin). Die Simulator-Unterstützung beschränkt sich momentan auf x86- und x86_64-Architekturen. | |||
Für FreeBSD gilt eine Besonderheit: Wenn hier von '''make''' die Rede ist, muss unter FreeBSD stattdessen '''gmake''' eingesetzt werden. | |||
Folgende Abhängigkeiten gelten unter den jeweiligen Systemen: | |||
===Abhängigkeiten unter Linux/FreeBSD=== | |||
Die Paketnamen basieren auf den Debian/Ubuntu-Repositorys. Bitte entsprechend der Nomenklatur der verwendeten Linux-Distribution (bzw. FreeBSD) anpassen. | |||
* build-essential (installiert eine komplette GCC-Tool-Chain für den Host) | |||
* make (gmake on FreeBSD) | |||
* libncurses5-dev | |||
* gcc-avr | |||
* avr-libc | |||
* binutils-avr | |||
* avrdude | |||
* freeglut3-dev | |||
===Abhängigkeiten unter Windows=== | |||
* [http://winavr.sourceforge.net WinAVR] (inklusive avr-gcc and avrdude) | |||
* [http://www.cygwin.com/ Cygwin(64)] | |||
** make | |||
** gcc-core | |||
** libncurses-devel (Cygwin) | |||
** libncursesw-devel (Cygwin64) | |||
* [http://sourceforge.net/apps/trac/libusb-win32/wiki libusb-win32] sofern ein USBasp-Programmiergerät mit avrdude genutzt wird | |||
===Konfigurieren=== | |||
[[Bild:Borgware2d_menuconfig.png|thumb|120px|right|Screenshot der Menuconfig]] | |||
Ein (Cygwin-)Terminal öffnen, ins Checkout-Verzeichnis wechseln und folgendes einippen: | |||
make menuconfig | |||
Dadurch startet ein Ncurses-basiertes Textmenü, mit dem sich einige Eigenschaften der Zielplattform einstellen lassen. Vorsicht ist geboten, wenn IDEs wie Eclipse zum Einsatz kommen, da sich dort integrierte Terminal-Emulatoren gerne an Ncurses-Ausgaben verschlucken. Um zu verhindern, dass das Ncurses-Menü durch einen normalen Build-Vorgang (via '''make''') aufgerufen wird, muss nach einem frischen Checkout bzw. nach einem '''make mrproper''' mindestens einmal '''make menuconfig''' in einem normalen Terminal-Emulator aufgerufen werden. | |||
===Kompilieren=== | |||
Um die Firware nach der Konfiguration einmal für die Zielplattform zu bauen, genügt ein einfaches | |||
make | |||
Die Borgware enhält einen Simulator für Linux und FreeBSD (OpenGL) sowie einen für Windows (Win32/GDI, Cygwin). Der Simulator-Build lässt sich folgendermaßen anstoßen: | |||
make simulator | |||
Das Build-System wählt automatischen den korrekten Simulator. Nach einem erfolgreichen Build liegt ein Binary namens <code>borgsim</code> oder <code>borgsim.exe</code> im selben Verzeichnis. | |||
==Handhabung des Simulators== | |||
Bitte behaltet im Hinterkopf, dass der Simulator KEIN Emulator ist. Er ermöglicht lediglich, die Borgware-2D als native Host-Anwendung zu bauen, so dass man seinen C-Code mit Hilfe eines Host-Debuggers wie dem GDB inspizieren kann. Der GUI-Thread der Anwendung fragt den simulierten Framebuffer des Borgs alle 40ms ab und zeichnet seinen Inhalt in ein Fenster. | |||
Die WASD-Tasten stehen für die Joystick-Richtungen und SPACE agiert als Feuerknopf. Der OpenGL-basierte Simulator (Linux/FreeBSD) erlaubt es, den Betrachtungswinkel der Matrix über die Pfeiltasten zu ändern (nicht unter Windows). | |||
Aufgrund speziell angepasster Linkerskripte läuft der Simulator derzeit nur unter Linux, FreeBSD und Windows (und dort auch nur unter x86 bzw. x64). Prinzipiell ist der OpenGL-basierte Simulator plattform-unabhängig, allerdings müssen pro Betriebsystem und Architektur entsprechende Linkerskripte vorgehalten und ins Build-System integriert werden. Die Linkerskripte erzeugen beim Binden automatisch eine Datenstruktur für die Spielmenüeinträge und ermöglichen die EEPROM-Emulation im Simulator. Die Abhängigkeit von diesen Skripten ist derzeit das einzige Hindernis in Bezug auf Plattformunabhängigkeit. Patches welcome. | |||
= Verwandte Projekte = | == Verwandte Projekte == | ||
* [http://blinkenlights.net/ Project Blinken Lights] benutzt gerne ganze Häuserfassaden für Animationen. Bekannt aus Funk und Fernsehen! | |||
* [http://wiki.niftylight.de/index.php/Libniftyled LibNiftyLed] ist ein Projekt das sich mit der Abstraktion von LED-Steuerungen beschäftigt | * [http://wiki.niftylight.de/index.php/Libniftyled LibNiftyLed] ist ein Projekt das sich mit der Abstraktion von LED-Steuerungen beschäftigt |
Version vom 12. März 2014, 18:32 Uhr
Übersicht
Die Borgware-2D ist eine Firmware für AVR-basierte, zweidimensionale LED-Matrizen, insbesondere die Blinken Borgs. Hauptplattform ist der Borg16-Bausatz. Andere unterstützte Plattformen sind das LED Brett vom Hackerspace FFM oder das ELO Ping-Pong-Board.
Animationen
Mittlerweile gibt es Zahlreiche Animationen für die Borgs. Hier sind ein paar Beispiele:
...und viele weitere |
Ein animiertes GIF (3,5 MB) vermittelt einen Eindruck von der Borgware-2D in Action ;)
Spiele
- Tetris
- Classic: Das ganz normale Tetris
- First Person Tetris: Statt die Steine zu drehen, dreht man hierbei das Spielfeld um den Stein
- Bastet: Diese Tetris Variante gibt einem stets den Stein, den man gerade am wenigsten gebrauchen kann
- Snake
- BreakOut
- Space Invaders
Quellen
Die aktuellen Quellen liegen bei Github. Diese lassen sich mit folgendem Befehl auschecken:
git clone https://github.com/das-labor/borgware-2d.git
Bauen der Firmware
Derzeit unterstützte Build-Plattformen sind Linux, FreeBSD and Windows (via Cygwin). Die Simulator-Unterstützung beschränkt sich momentan auf x86- und x86_64-Architekturen. Für FreeBSD gilt eine Besonderheit: Wenn hier von make die Rede ist, muss unter FreeBSD stattdessen gmake eingesetzt werden. Folgende Abhängigkeiten gelten unter den jeweiligen Systemen:
Abhängigkeiten unter Linux/FreeBSD
Die Paketnamen basieren auf den Debian/Ubuntu-Repositorys. Bitte entsprechend der Nomenklatur der verwendeten Linux-Distribution (bzw. FreeBSD) anpassen.
- build-essential (installiert eine komplette GCC-Tool-Chain für den Host)
- make (gmake on FreeBSD)
- libncurses5-dev
- gcc-avr
- avr-libc
- binutils-avr
- avrdude
- freeglut3-dev
Abhängigkeiten unter Windows
- WinAVR (inklusive avr-gcc and avrdude)
- Cygwin(64)
- make
- gcc-core
- libncurses-devel (Cygwin)
- libncursesw-devel (Cygwin64)
- libusb-win32 sofern ein USBasp-Programmiergerät mit avrdude genutzt wird
Konfigurieren
Ein (Cygwin-)Terminal öffnen, ins Checkout-Verzeichnis wechseln und folgendes einippen:
make menuconfig
Dadurch startet ein Ncurses-basiertes Textmenü, mit dem sich einige Eigenschaften der Zielplattform einstellen lassen. Vorsicht ist geboten, wenn IDEs wie Eclipse zum Einsatz kommen, da sich dort integrierte Terminal-Emulatoren gerne an Ncurses-Ausgaben verschlucken. Um zu verhindern, dass das Ncurses-Menü durch einen normalen Build-Vorgang (via make) aufgerufen wird, muss nach einem frischen Checkout bzw. nach einem make mrproper mindestens einmal make menuconfig in einem normalen Terminal-Emulator aufgerufen werden.
Kompilieren
Um die Firware nach der Konfiguration einmal für die Zielplattform zu bauen, genügt ein einfaches
make
Die Borgware enhält einen Simulator für Linux und FreeBSD (OpenGL) sowie einen für Windows (Win32/GDI, Cygwin). Der Simulator-Build lässt sich folgendermaßen anstoßen:
make simulator
Das Build-System wählt automatischen den korrekten Simulator. Nach einem erfolgreichen Build liegt ein Binary namens borgsim
oder borgsim.exe
im selben Verzeichnis.
Handhabung des Simulators
Bitte behaltet im Hinterkopf, dass der Simulator KEIN Emulator ist. Er ermöglicht lediglich, die Borgware-2D als native Host-Anwendung zu bauen, so dass man seinen C-Code mit Hilfe eines Host-Debuggers wie dem GDB inspizieren kann. Der GUI-Thread der Anwendung fragt den simulierten Framebuffer des Borgs alle 40ms ab und zeichnet seinen Inhalt in ein Fenster.
Die WASD-Tasten stehen für die Joystick-Richtungen und SPACE agiert als Feuerknopf. Der OpenGL-basierte Simulator (Linux/FreeBSD) erlaubt es, den Betrachtungswinkel der Matrix über die Pfeiltasten zu ändern (nicht unter Windows).
Aufgrund speziell angepasster Linkerskripte läuft der Simulator derzeit nur unter Linux, FreeBSD und Windows (und dort auch nur unter x86 bzw. x64). Prinzipiell ist der OpenGL-basierte Simulator plattform-unabhängig, allerdings müssen pro Betriebsystem und Architektur entsprechende Linkerskripte vorgehalten und ins Build-System integriert werden. Die Linkerskripte erzeugen beim Binden automatisch eine Datenstruktur für die Spielmenüeinträge und ermöglichen die EEPROM-Emulation im Simulator. Die Abhängigkeit von diesen Skripten ist derzeit das einzige Hindernis in Bezug auf Plattformunabhängigkeit. Patches welcome.
Verwandte Projekte
- Project Blinken Lights benutzt gerne ganze Häuserfassaden für Animationen. Bekannt aus Funk und Fernsehen!
- LibNiftyLed ist ein Projekt das sich mit der Abstraktion von LED-Steuerungen beschäftigt