This is an old revision of the document!
Table of Contents
LEDSkript
Einleitung
LEDSkript läuft im WIO-Kontext und kann durch Rocrail-Befehle aktiviert werden.
Es handelt sich um eine einfache ASCII-Textdatei, die auf das WIO hochgeladen werden muss.
Update 25.01.2025: Ab WIO-Version 872 vom 16.04.2024 wurde das Timing für p-Befehle (Pause) von 10 ms auf 50 ms geändert!!!
Alle LEDSkripte, die p-Befehle verwenden, werden dadurch langsamer ausgeführt. Bitte vorhandene LEDSkripte entsprechend anpassen.
Format
Nur Unix-Zeilenumbrüche sind erlaubt. |
---|
Das Textformat unterliegt folgenden Einschränkungen:
- Eine Leerzeile beendet den LEDSkript-Parser – wie auch der Befehl `end`.
- Kommentarzeilen beginnen mit `#` und dürfen max. 64 Zeichen inkl. Zeilenumbruch enthalten.
- Es sind nur reine Zeilenumbrüche erlaubt ohne zusätzliches Wagenrücklaufzeichen. (Unix-Format)
- Max. 32 Sequenzen sind erlaubt.
Dateinamen
Der Dateiname muss folgendem Format entsprechen:
<freitext><nr>.led
*00.led, kann über einen Ausgang nicht angesprochen werden.
Die Nummer `<nr>` muss zwischen 01
und 99
liegen.
Beispiel:
disco04.led
Befehle
Header
Der Header enthält nur eine Zeile:
s <wiederholungen> | Max. 255 Wiederholungen. Null erzeugt eine Endlosschleife. |
o <report> | Meldung am Ende des Skripts aktivieren (1) oder deaktivieren (0). Standard ist 1. |
LED-Definition
l <nr> | Startadresse der LED, beginnt einen neuen Datensatz |
c <anzahl> | Anzahl der LEDs ab Adresse l |
C <anzahl> | zufällige LED aus Bereich ab Adresse l bis C |
+ oder - <anzahl> | schrittweise Erhöhung/Verringerung statt c oder C *1 |
r <rot> | RGB Rotwert |
g <grün> | RGB Grünwert |
b <blau> | RGB Blauwert |
i <helligkeit> | Helligkeit der LED |
< oder > <helligkeit> | stufenweise Verringerung/Erhöhung der Helligkeit (statt i oder I) (ab Version 380+) |
p <pause> | Pause in Einheiten à 50 ms. Bis Version 875: 10 ms |
R <rot> | RGB Rot zufällig mit max. Wert oder Bereich* (darf nicht 0 sein) |
G <grün> | RGB Grün zufällig mit max. Wert oder Bereich* (darf nicht 0 sein) |
B <blau> | RGB Blau zufällig mit max. Wert oder Bereich* (darf nicht 0 sein) |
I <helligkeit> | Helligkeit zufällig mit max. Wert |
P <pause> | Zufällige Pause in Einheiten à 50 ms mit max. Wert. Bis Version 875: 10 ms |
a | zufällige Definition, RGB-, Helligkeit- und Pausenwerte mit den angegebenen Maximalwerten |
rgbip-Werte können ausgelassen werden – dann werden die zuletzt geparsten Werte übernommen.
*Bereich: Ein 16-Bit-RGB-Bereich. Beispiel: Bereich von 150 bis 220 ergibt Wert = 220 + (150 * 256) = 38620 (ab Version 374+)
*1: Schrittweise Erhöhung bis zum nächsten `l`-Befehl. Mit `+` bleibt LED an, mit `-` geht sie aus. Siehe Beispiel (ab Version 377+)
LED-Reset
Falls t
> 0, wird am Ende des Skripts dieser Befehl zur LED-Rücksetzung genutzt:
d <nr> | Startadresse der LED |
t <anzahl> | Anzahl der LEDs ab Adresse d |
LED AUS
Beim LED-Ausschaltbefehl werden folgende Befehle genutzt, um die LEDs zurückzusetzen, falls sie nach Ende des Skripts noch an sind:
D <nr> | Startadresse |
T <anzahl> | Anzahl der LEDs ab Adresse D |
Footer
e | Ende des LEDSkripts. |
Hochladen
Das Hochladen von LEDSkripten kann mit einem Webbrowser erfolgen, wie hier erklärt:
Upload per Webbrowser
Aktivierung
Ausgang
Den Adresswert <nr> zwischen 1 und 99 setzen und den Porttyp auf LEDScript stellen.
Fahrzeugfunktion
Wenn der Adresswert größer als 100 ist, gilt <nr> = Adresse – 100.
Beispiele
# Ab WIO Version 875 # Farbwechsel Rot-Grün s2 # LED 0 bis 5 l0 c5 r255 g0 b0 i50 p50 # LED 0 bis 2 l0 c5 r255 g255 b0 i50 p50 # Ende # LED-Reset D0 T20 e
Disco
# Ab WIO Version 875 # start 0=Endlosschleife, 1...255=Wiederholungen s0 # LED 0 bis 19 l0 c20 # Zufall a r255 g100 b100 i80 p4 # LED-Reset d0 t20 e
LED-Adressen erhöhen
# Ab WIO Version 875 # Warnlichter s0 //Skript als Endlosschleife definiert l0 -6 //startet Erhöhung mit LEDs aus nach p r255 g115 b0 i150 p2 //Ende Erhöhung l0 c6 r255 g115 b0 i150 p1 l0 c6 i0 p20 l0 +6 //startet Erhöhung mit LEDs an nach p r255 g115 b0 i150 p2 //Ende Erhöhung l0 c6 i0 p20 # LED-Reset, alle LEDs aus d0 t6 e
Helligkeit erhöhen/verringern
# Ab WIO Version 875 #helligkeit rauf/runter s0 l0 c1 r255 g80 b0 >150 //Helligkeit erhöhen l1 c1 r255 g80 b0 <150 //Helligkeit verringern # LED-Reset, LED ausschalten d0 t2 e
WIO LEDSkript-Parser
Der WIO-Parser ist sehr einfach aufgebaut und liest die Datei zeilenweise.
Nach dem Lesen einer Zeile wird das erste Zeichen geprüft wie unter Befehle beschrieben.
Wenn eine Zahl erwartet wird, nutzt die C-Funktion `atoi()` den Zeiger auf Zeichenposition +1. Ein nicht-numerisches Zeichen muss folgen.
Durch diese einfache Struktur ist es erlaubt, Kommentare einzufügen, um das Skript lesbarer zu machen:
i80 // Helligkeit 80 von 255 p20 // Pause 20 * 50ms. Bis WIO Version 875: 10ms end
Aber die gesamte Zeile inkl. Zeilenumbruch darf nicht länger als 64 Zeichen sein.