The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 5: | Line 5: | ||
|location=Laptop Lounge | |location=Laptop Lounge | ||
|image=blinkencontrol hardware.jpg | |image=blinkencontrol hardware.jpg | ||
|status= | |status=beta | ||
|people={{U|derf}} | |people={{U|derf}} | ||
|source=https://github.com/derf/dorfmap{{!}}github | |source=https://github.com/derf/dorfmap{{!}}github | ||
}} | }} | ||
[[File:Blinkencontrol.png|Schaltplan für RGB|200x200px|framed|right]] | |||
Eine Instanz hängt in der [[Laptop Lounge]] und steuert den RGB-Streifen im Schaufenster. Angeschlossen per GPIO an {{H|donationprint}}, Ansteuerung wie gewohnt per [http://dorfmap/blinkencontrol/lounge_rggb dorfmap] (siehe auch [[Lichtsteuerung]]). | |||
== Protokoll == | == Protokoll == | ||
Sechs Byte: <tt>mode red green blue addrhi addrlo</tt>. Zuerst wird <tt>mode</tt> übertragen, danach die Farben, dann die Adresse. | |||
Jeweils most significant bit first. | |||
<tt>red</tt>, <tt>green</tt> und <tt>blue</tt> 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 [http://www.mikrocontroller.net/articles/LED-Fading logarithmisch wahrnimmt]. | |||
<tt>mode == MMMS SSSS</tt> 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. | |||
{| class="wikitable" | |||
! 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 noch die 16bit-Adresse übertragen werden, erst high byte, dann low byte. Der Daemon lauscht auf <tt>donationprint:25465</tt>. | |||
=== 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: Der Zugriff ist nicht-exklusiv, d.h. wenn mehrere Clients gleichzeitig Daten reinwerfen, kommt Müll raus. Auch: Bei Eingabe von Zahlen, die nicht innerhalb von 0 bis 255 sind, kann irgendwas undefiniertes passieren. | |||
< | Beispiel für Strobo mit Zufallsfarben: | ||
<source lang="bash"> | |||
( | |||
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 | |||
</source> | |||
=== charwrite1 === | |||
Nimmt vier Zeichen (ASCII, 0-9a-zA-Z) an und überträgt sie bei einer Newline. Zum Beispiel: | |||
<source lang="bash"> | |||
echo "charwrite1\nohai\n0\n3" | nc donationprint 25465 | |||
</source> |