RGB-Decoder: eine Software für OpenDecoder (V.2.5 und V2.8)

Überblick

    Mit dieser Software kann man eine RGB-LED (oder auch z.B. einen RGB-LED-Streifen) ansteuern. Der Farbort kann entweder direkt angewählt werden oder es kann ein Farbprofil gewählt werden. Das Farbprofil (also z.B. Abfahren eines Farbkreises) kann in der Abspielgeschwindigkeit eingestellt werden.

    Diese Software arbeitet als Accessory Decoder, die Konfiguration der einzelnen Farb-Ausgänge erfolgt mittels CV (=Configuration Variable); diese sind entweder per Service Mode oder per PoM (=Programmierung am Hauptgleis) einstellbar. Zusätzlich kann der Decoder in seiner Adresse auch ganz einfach durch Drücken des Programmiertasters und einmaliges Senden der richtigen Adresse eingestellt werden.

Konfiguration mit CV-Variablen

    Im Folgenden ist die Konfiguration des RGB-Decoders beschrieben:
  • CV 545 (33): DECODER MODE
    Diese CV legt die Betriebsart des Decoders fest. Je nach nach Betriebsart kann sich die Bedeutung der folgenden CV's komplett ändern! Achtung - es muß auch das passende File geladen sein, welche die gewählte Betriebsart auch unterstützt. Eine bestimmte Software unterstützt nicht alle Modi. Sollte ein Mode eingestellt werden, den die geladene Software nicht unterstützt, so blinkt der Decoder 6*schnell-Pause.
    Im folgenden sind nur die CV's für den MODE 33 + 34 beschrieben!
  • CV [BASE]+0: REDmax (*=255)
    Maximalwert für Kanal rot. 255 entspricht 100%. Mit diesem Maximalwert werden alle Ansteuerungen multipliziert, d.h. mit REDmax kann man die Helligkeit der Diode angleichen und einen Weißabgleich (grayscale) machen.
  • CV [BASE]+1: GREENmax (*=255)
    Maximalwert für Kanal grün. 255 entspricht 100%, die Verrechnung erfolgt wie bei rot.
  • CV [BASE]+2: BLUEmax (*=255)
    Maximalwert für Kanal blau. 255 entspricht 100%, die Verrechnung erfolgt wie bei rot.
  • CV [BASE]+3: RGB_mode (*=0)
    Diese CV ist reserviert
  • CV [BASE]+4: Wiederholungen (*=0)
    Diese CV bestimmt die Zahl der Wiederholungen.
      CV [BASE]+4: Wiederholung
      0 Profil läuft nach Aktivierung in Dauerbetrieb, d.h. es wird am Ende wieder von vorne begonnen.
      1..255 Profil wird die angegebene Zahl mal wiederholt.
  • CV [BASE]+5: Lichtprofil (*=0)
    Hier wird die Verlaufskurve ausgewählt - dies erfolgt mit der Kennzahl der gewünschten Helligkeits-Zeitkurve.

    Bei einer Zahl kleiner 128 wird eine vordefinierte Verlaufskurve aus den internen Programmspeicher verwendet. Bei einer Zahl größer oder gleich 128 wird eine Benutzerkurve aus den Konfigurationsspeicher verwendet, Es gibt 4 verschiedende Benutzerkurven, diese können mit weiteren CVs programmiert werden. (128 entspricht dabei Benutzerkurve 0, 129 = Kurve 1, usw.)

    Die Kurven in der Tabelle werden zeitlich mit dem Werten der Zeitstreckung gedehnt, in der Tabelle sind die Zeiten für Dehnung=1 angegeben.

    Die Kurven in der Tabelle werden bei der Ausgabe auf die dann jeweils gültigen Maximalwerte der Farben skaliert. Es gilt folgender Bezug:
      Ausgabewert = Tabellenwert * (Max) / 255.
      CV [BASE]+5: Lichtprofil
      0 Einzelfarben
      Jede Farbe wird einzeln aufgedimmt und wieder abgedimmt.
      1 Farbkreis
      Die Farben werden mit einem fließenden Übergang von rot über grün und blau nach rot umgestellt, dabei bleibt immer eine oder zwei LEDs an.
      2 Türkis Schimmer
      Zufällige Werte von vorzugsweise grün und blau werden gedimmt.
      128 benutzerspezifische Kurve 0
      diese Kurve kann mit weiteren CVs im Decoder abgelegt werden.
      129 benutzerspezifische Kurve 1
      diese Kurve kann mit weiteren CVs im Decoder abgelegt werden.
      130 benutzerspezifische Kurve 2
      diese Kurve kann mit weiteren CVs im Decoder abgelegt werden.
      131 benutzerspezifische Kurve 3
      diese Kurve kann mit weiteren CVs im Decoder abgelegt werden.
  • CV [BASE]+6: Zeitstreckung Lichtprofil (*=10)
    Die geladene Kurve wird um diesen Faktor zeitlich gestreckt. Die Basiseinheit ist 20ms, d.h. eine Zeitstreckung von 1 bedeutet, dass der Übergang vom Zeitpunkt A zum Zeitpunkt A+1 20ms dauert.
  • CV [BASE]+7+[folgende]: Benutzerprofil 0 (*=0)
    Ein Benutzerprofil besteht aus 24*4 Bytes, welche die anzusteuernden Helligkeitspunkte angeben.
  • CV [BASE]+103+[folgende]: Benutzerprofil 1 (*=0)
    Ein Benutzerprofil besteht aus 24*4 Bytes, welche die anzusteuernden Helligkeitspunkte angeben.
  • CV [BASE]+199+[folgende]: Benutzerprofil 2 (*=0)
    Ein Benutzerprofil besteht aus 24*4 Bytes, welche die anzusteuernden Helligkeitspunkte angeben.
  • CV [BASE]+295+[folgende]: Benutzerprofil 3 (*=0)
    Ein Benutzerprofil besteht aus 24*4 Bytes, welche die anzusteuernden Helligkeitspunkte angeben.

Lichtprofile

    Ein Lichtprofil besteht aus bis zu 24 Punkten. Jeder Punkt beschreibt einen Helligkeitswert für R, G und B sowie den Zeitpunkt, bis zum dem diese Helligkeit erreicht sein soll.
  • Vordefinierte Lichtprofile:
    Im Quellcode sind vordefinierte Lichtprofile enthalten, hier werden die Punkte mit einer struct beschrieben:
    typedef struct    // fade values, normalized [0..255]
          {
            unsigned char time;
            unsigned char red;
            unsigned char green;
            unsigned char blue;
          } t_rgb_point;
    Die Lichtprofile sind dann wie folgt definiert:
    • Einzelfarben
      t_rgb_point einzelfarben[] PROGMEM =
        {
         // time, r, g, b
          {   0 ,   0 ,   0 ,   0 },
          {   1 , 255 ,   0 ,   0 },
          {   2 ,   0 ,   0 ,   0 },
          {   3 ,   0 , 255 ,   0 },
          {   4 ,   0 ,   0 ,   0 },
          {   5 ,   0 ,   0 , 255 },
          {   6 ,   0 ,   0 ,   0 },
          {   0 ,   0 ,   0 ,   0 },              // end of list: time = 0
        };
    • Farbkreis
      t_rgb_point farbkreis[] PROGMEM =
        {
         // time, r, g, b
          {   0 , 255 ,   0 ,   0 },
          {   1 , 255 , 255 ,   0 },
          {   2 ,   0 , 255 ,   0 },
          {   3 ,   0 , 255 , 255 },
          {   4 ,   0 ,   0 , 255 },
          {   5 , 255 ,   0 , 255 },
          {   6 , 255 ,   0 ,   0 },
          {   0 ,   0 ,   0 ,   0 },              // end of list: time = 0
        };
  • Benutzerdefinierte Lichtprofile:
    Die Parameter werden mit jeweils vier zusammengehörigen CV's für jeden Punkt eingestellt, diese CV's folgen immer direkt aufeinander:
    • CV Lichtpunkt[0]: Zeit (*=0)
      Zeitpunkt, zum dem der Lichtpunkt erreicht werden soll. Ist die angegebene Zeit = 0, so handelt es sich um den letzten Punkt im Profil und das Profil beginnt fallweise wieder von vorne. Die hier angegebene Zeit wird noch mit der Zeitstreckung multipliziert.
    • CV Lichtpunkt[1]: Helligkeitswert rot (*=0)
      Ziel-Helligkeitswert, der eingestellt werden soll;
      Wertebereich 0..255, wobei 0 = dunkel und 255 = volle Helligkeit ist.
    • CV Lichtpunkt[2]: Helligkeitswert grün (*=0)
    • CV Lichtpunkt[3]: Helligkeitswert blau (*=0)

Programmierbeispiel

    Text fehlt ....

Decoderbefehle

    Nach der Konfiguration des RGB-Decoders kann er wie jeder andere Decoder auch einfach über die Stellbefehle angesprochen werden.
      Direct Mode
      Taste Wirkung
      1 ROT aus.
      2 ROT ein; der zugehörige Kanal wird auf die in CV??? angegebene Helligkeit gesteuert.
      3 GRÜN aus.
      4 GRÜN ein; der zugehörige Kanal wird auf die in CV??? angegebene Helligkeit gesteuert.
      5 BLAU aus.
      6 BLAU ein; der zugehörige Kanal wird auf die in CV??? angegebene Helligkeit gesteuert..
      7 reserved
      8 reserved
      Profil Mode (+Servo)
      Taste Wirkung
      1 Alle drei Kanäle aus.
      2 Das momentan gewählte Profil wird gestartet.
      3 Alle drei Känale aus, zugleich werden beide Servos mit dem Weichenstellbefehl für 'rot' angesteuert und führen die jeweils hinterlegte Aktion aus.
      4 Das momentan gewählte Profil wird gestartet, zugleich werden beide Servos mit dem Weichenstellbefehl für 'grün' angesteuert und führen die jeweils hinterlegte Aktion aus.
      5 reserviert.
      6 reserviert.
      7 reserviert.
      8 reserviert.


    Hinweis: die allgemein üblichen CV's wie z.B. Adresse sind identisch zur Schaltsoftware und auch dort beschrieben.

Anschlußplan OpenDecoder2.5

Anschlußplan OpenDecoder2.8