Blinkencontrol

From Chaosdorf Wiki
Revision as of 23:07, 4 August 2013 by Derf (talk | contribs) (update pending)
Blinkencontrol beta
Blinkencontrol hardware.jpg
generischer Blinkenlightfoo
Ort Laptop Lounge
Beteiligt derf
Quelltext github


Schaltplan für RGB

Eine Instanz hängt in der Laptop Lounge und steuert den RGB-Streifen im Schaufenster. Angeschlossen per GPIO an donationprint, Ansteuerung wie gewohnt per dorfmap (siehe auch Lichtsteuerung).

Protokoll

Nicht mehr aktuell, wird bald™ aktualisiert.

Sechs Byte: mode red green blue addrhi addrlo. Zuerst wird mode übertragen, danach die Farben, dann die Adresse. Jeweils most significant bit first.

red, green und blue sind PWM-Level von 0 (aus) bis 255 (maximale Helligkeit). Beachten: Es findet derzeit keine Helligkeitsanpassung statt, d.h. es wird linear gefadet, während das menschliche Auge Helligkeit logarithmisch wahrnimmt.

mode == MMMS SSSS setzt sich aus dem Betriebsmodus (MMM) und der Fade- / Blinkgeschwindigkeit (SSSSS) zusammen. Geschwindigkeit 0 ist am schnellsten, Geschwindigkeit 31 am Langsamsten. Die Farb-Bytes werden nicht bei allen Modi berücksichtigt.

Modus (Bits) Wat
000 steady (Dauerleuchten)
001 RGB, kein Fading
010 Zufallsfarbe, kein Fading
011 An/Aus Blinken
100 steady (Dauerleuchten), Fading zur neuen Farbe
101 RGB Fading
110 Zufallsfarbe Fading
111 An/Aus Fading

netcat-API

Obiges Protokoll kann zur Ansteuerung diverser Geräte benutzt wrden. Die erste Zeile wählt das Blinkendevice aus (z.B. "blinkencontrol1" oder "charwrite1"), alle weiteren gehen an das jeweilige Programm. Nach den Daten muss teilweise noch die 16bit-Adresse übertragen werden, erst high byte, dann low byte. Der Daemon lauscht auf donationprint:25465.

blinkencontrol1

Nach blinkencontrol1 kommen (jeweils durch newline getrennt) die Werte für mode, red, green, blue, addrhi, addrlo als Zahlen (ASCII) von 0 bis 255. Die Werte werden entweder durch "push" oder Beenden der Verbindung übernommen.

Zu beachten: Bei Eingabe von Zahlen, die nicht innerhalb von 0 bis 255 sind, kann irgendwas undefiniertes passieren (Garbage in, garbage out).

Beispiel für Strobo mit Zufallsfarben:

(
echo blinkencontrol1
while sleep 0.05; do
echo "0\n0\n0\n0\n0\n1\npush"
sleep 0.05
echo "0\n$((RANDOM%256))\n$((RANDOM%256))\n$((RANDOM%256))\n0\n1\npush"
done
) | nc donationprint 25465

charwrite1

Nimmt vier Zeichen (ASCII, 0-9a-zA-Z) an und überträgt sie bei einer Newline. Zum Beispiel:

echo "charwrite1\nohai" | nc donationprint 25465