Modul "Rampenfunktion" alias Softdimmer
Verfasst: Fr Feb 28, 2020 7:46 pm
				
				Es gibt ein neues Modul für die Logic-Engine: Die "Ramp"-enfunktion, mit dem lässt sich ein Wert einem neuen Zielwert langsam und schrittweise annähern.
Die Syntax für die Rampenfunktion sieht folgendermassen aus:
["Ramp","$In","$Out","$Active","$Step","$Period"]
Wie funktioniert das ganze?
Wenn der Ist-Wert unterschiedlich zum Ziel-Wert ist, wird ein Timer (mit $Period) gestartet.
Jedesmal wenn der Timer abläuft nähert sich der Ist-Wert dem Ziel-Wert an.
Wenn Ist- und Ziel-Wert gleich sind wird der Timer wieder gestoppt.
Bsp:

Hier der zeitliche Ablauf (Eingangssequenz: 0 -> 42 -> -17 -> 10):

Mit diesem Modul lässt sich sehr einfach eine langsame Dimmung umsetzen (Lichtwecker)
Das Modul ist bereits in der aktuellen DEV-Version verfügbar. Viel Spaß beim ausprobieren
			Die Syntax für die Rampenfunktion sieht folgendermassen aus:
["Ramp","$In","$Out","$Active","$Step","$Period"]
    "Ramp" :   Modulkennung
    "$In":     Referenz auf einen float Level der den angestrebten Ziel-Wert enthält
    "$Out":    Referenz auf einen float Level der den aktuellen Ist-Wert enthält
    "$Active": Referenz auf einen boolschen Level der anzeigt, wenn die Annäherung aktiv ist (Ziel- und Ist-Wert unterschiedlich)
    "$Step":   Referenz auf einen float Level der die Schrittweite der Annäherung enthält
    "$Period": Referenz auf einen float Level der den Takt der Annäherung enthält
Wie funktioniert das ganze?
Wenn der Ist-Wert unterschiedlich zum Ziel-Wert ist, wird ein Timer (mit $Period) gestartet.
Jedesmal wenn der Timer abläuft nähert sich der Ist-Wert dem Ziel-Wert an.
Wenn Ist- und Ziel-Wert gleich sind wird der Timer wieder gestoppt.
Bsp:
Code: Alles auswählen
{
      "Level": [
        ["$In","float",0.0],
        ["$Out","float",0.0],
        ["$Active","bool",false],
        ["$Step","float",2.0],
        ["$Period","float",1.0],
        ["$VAR<Inhibit?>", "bool", false]
      ],
      "Module": [
        ["Break", ["$VAR<Inhibit?>"]  ],
        ["Ramp","$In","$Out","$Active","$Step","$Period"]
      ],
      "Input": [
        ["Ziel","Ziel-Wert","$In","c"],
        ["Schritt","Schrittweite für Annäherung","$Step","c"],
        ["Intervall","Zeitintervall für Annäherung [s]","$Period","c"],
        ["Inhibit", "INHIBIT", "$VAR<Inhibit?>", "u" ]
      ],
      "Output": [
        ["Akt. Wert","Aktueller Wert","$Out","c"],
        ["Aktive","Status: Ziel-Wert noch nicht erreicht","$Active","c"]
      ]
}
Hier der zeitliche Ablauf (Eingangssequenz: 0 -> 42 -> -17 -> 10):

Mit diesem Modul lässt sich sehr einfach eine langsame Dimmung umsetzen (Lichtwecker)
Das Modul ist bereits in der aktuellen DEV-Version verfügbar. Viel Spaß beim ausprobieren

