Nabend.
So eben fertiggestellt, noch ganz warm aus dem Compiler.
Eines vorweg: Ich verstehe das nicht als schlüsselfertiges Rundumsorglosglücklichpaket. Es ist gedacht als solide Bastelgrundlage für eigene Experimente.
Zutaten, man nehme:
- ALDI LED Stripes mit TM1829 Controller Chip.
- ATmega32U4 Breakout Board+ von Adafruit. Hierzulande erhältlich z.B. bei Watterott.
- Die AVR USB Bibliothek LUFA.
Das Datensignal der LED Stripes ist an Pin PB2 / MOSI zu klemmen.
Da es nix extra gekostet hat spuckt das Programm die Daten auch noch auf dem USART im SPI Modus aus. Man kann also z.B. auch einen WS2801 anklemmen. (CLK von WS2801 an PD5 / XCK1 und Data von WS2801 an PD3 / TXD).
LUFA auspacken.
In das Verzeichnis LUFA-130303/Projects/USBtoSerial wechseln und darin die Dateien aus dem Anhang abladen. Dabei die Dateiendung .txt entfernen. Die Forensoftware ist zu blöd das anders zu fressen...
Kompilieren, wie üblich: make
AVR programmieren: make up
Steuerprogramm für den Rechner kompilieren: make host
Test laufen lassen: ./host_ctrl /dev/ttyU1
(Name des Device Node anpassen...)
Das host_ctrl Programm ist unter NetBSD geschrieben. Es sollte halbwegs schmerzfrei unter Linux laufen. Vielleicht sogar unter MäcOS.
Das "Protokoll" ist primitiv: Der AVR meldet sich als USB CDC Gerät, also als serielle Schnitte / Modem. Der AVR hat intern einen 512 Byte großen Puffer. (a la DMX) Dieser Puffer wird zurückgesetzt und gelöscht, wenn man die Baudrate ändert oder ein serielles "Break" sendet. Danach muss man einfach Blöcke von 512 Byte an den AVR senden. Alle 512 Byte gibt er die Daten an den LED Stripe aus.
Nachtrag:
Farbfolge WS2801: rot, grün, blau
Farbfolge TM1829: blau, rot, grün