Editing Blinkencontrol

From Chaosdorf Wiki
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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=obsolete
|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|thumb|right]]


Aktuell gibts zwei Instanzen:
[[File:Blinkencontrol.png|Schaltplan für RGB|200x200px|framed|right]]
* [[Laptop Lounge]] an {{H|donationprint}} (RGB-Streifen im Fenster, eigenes 9V-Netzteil)
* [[Hackcenter]] an {{H|feedback}} (oberes Regal neben dem Drucker, [[Kabelbaum]]-Netzteil)


Angeschlossen via [[SI2C]], Ansteuerung per [http://dorfmap.chaosdorf.dn42 dorfmap] (siehe [[Lichtsteuerung]]).
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 ==


Die Firmware führt beliebige Animationen aus, wobei eine Animation aus bis zu 24 Schritten aus Farbe und Fadedauer besteht. Nach einer Übertragung wird die Animation immer vom ersten bis zum letzten übertragenen Schritt ausgeführt.
Vier Byte: <tt>mode red green blue</tt>. Zuerst wird <tt>mode</tt> übertragen, danach die Farben.
Jeweils most significant bit first.


Eine Animation mit nur einem Schritt entspricht Dauerleuchten, über die Fadedauer kann aber eingestellt werden, wie schnell der Übergang von der aktuellen Farbe dauert.
<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].


Animationen können immer nur schrittweise übertragen werden, da sie beim letzten übertragenen Enden, sollte der letzte Schritt auch zuletzt gesendet werden.
<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. Wenn ein anderer Modus als <tt>000</tt> übertragen wird, müssen red, green und blue Null sein. Modi:


Das Datenformat ist <tt>slot delay red green blue addrhi addrlo</tt>, wobei <tt>slot</tt> der Animationsschritt (0 .. 23) ist.
{| class="wikitable"
Beispiel für rotes Pulsieren (wechselnd an/aus):<tt>0 64 255 0 0 0 1</tt>, <tt>1 64 0 0 0 0 1</tt>.
! Modus (Bits) !! Wat
|-
| 000 || steady (Dauerleuchten)
|-
| 001 || RGB, kein Fading
|-
| 010 || Zufallsfarbe, kein Fading
|-
| 011 || ''none''
|-
| 100 || ''none''
|-
| 101 || RGB Fading
|-
| 110 || Zufallsfarbe Fading
|-
| 111 || ''none''
|}


<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].
== netcat-API ==
 
Obiges Protokoll kann zur Ansteuerung der Lounge-RGB-Leiste direkt auf <tt>donationprint:25465</tt> genutzt werden. Die erste Zeile wählt das Blinkendevice aus (d.h. aktuell immer "blinkencontrol1"), danach kommen (jeweils durch newline getrennt) die Werte für mode, red, green, blue 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.01; do
echo "0\n0\n0\n0\npush"
sleep 0.01
echo "0\n$((RANDOM%256))\n$((RANDOM%256))\n$((RANDOM%256))\npush"
done
) | nc donationprint 25465
</source>
Please note that all contributions to Chaosdorf Wiki are considered to be released under the Attribution 3.0 Unported (see Chaosdorf Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)