User Tools

Site Tools


wio:wio-ledscript-de

This is an old revision of the document!


Englische VersionDeutsche VersionFranzösische Version

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

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


e Ende des LEDSkripts.


Hochladen

ledscript-upload-en.jpg 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.

LEDSkript-Beispiele im Forum

wio/wio-ledscript-de.1750333887.txt.gz · Last modified: 2025/06/19 13:51 by babbel