Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| anleitungen:prog_gen:led-to-var [2026/10/13 18:27] – raily74 | anleitungen:prog_gen:led-to-var [2026/10/13 21:02] (aktuell) – [Vergleichswert] raily74 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Die Wunderwaffe LED-to-VAR ====== | ====== Die Wunderwaffe LED-to-VAR ====== | ||
| + | **Wie sich auf einfachste Weise Funktionen beim Erreichen bestimmter Helligkeitswerte schalten lassen und wie man damit jeden Ablauf optimieren kann.** \\ | ||
| + | [[raily74@icloud.com|von Michael]]\\ | ||
| + | |||
| + | Diese Anleitung soll euch die Angst vor einer komplett unterschätzten Funktion der MobaLedLib nehmen. Oftmals wird die Funktion als eine Gimmick für Profis dargestellt, | ||
| + | |||
| + | Los geht es mit dem Menü, das nach dem Auswählen der Funktion **LED-Werte als Variable** (auch bekannt als {{: | ||
| + | |||
| + | {{bilder: | ||
| + | |||
| + | ==== Zielvariable ==== | ||
| + | Hier ist man also völlig frei und kann als Variable den spezifischen Namen der gewünschten Funktion eingeben, z. B. „Heissluftballon“. Wichtig ist - wie bei allen Variablen - dass der verwendete Name einzigartig ist, denn der Name wird hierdurch zu einem Schalter. Richtig: Statt einer DCC-Adresse schaltet das Wort Heissluftballon zukünftig LEDs oder startet den Gasbrenner zum Abheben. | ||
| + | |||
| + | ==== LED Nummer Offset ==== | ||
| + | Okay, ich gebe zu, das ist ein bisschen unglücklich formuliert und vermutlich ist das die größte Hürde. Was hier eigentlich gemeint ist, ist die Frage nach der referenzierten LED. Also der LED, die wir auslesen wollen bzw. die maßgeblich dafür ist, wann bestimmte Funktionen ausgelöst werden. Damit diese Hürde ein für allemal beseitigt wird, gehe ich in diesem Kapitel möglichst einfach darauf ein. \\ | ||
| + | |||
| + | <wrap em> | ||
| + | Wir schalten eine RGB-LED, die nur rot leuchtet, wenn sie eingeschaltet ist und gar nicht leuchtet, wenn sie ausgeschaltet ist. Das ist für den Einstieg sehr einfach. | ||
| + | Direkt darunter fragen wir mit der **LED-to-Var**-Funktion genau dieses rote Leuchten ab. Sobald nun die vergebene Variable " | ||
| + | |||
| + | Wenn bis hierhin alles klar ist, schauen wir uns genau an dieser Stelle den **LED Nummer Offset** genauer an. Wie wir oben gelernt haben, fangen wir bei der ersten LED mit null an zu zählen, die direkt über der LED-to-VAR-Funktion steht (im Folgenden LED-Nr. genannt), in unserem Fall also die rote RGB-LED, deren roter Kanal im aktiven Zustand leuchtet. Man erkennt sie im Screenshot an der rot unterlegten **255** die darüber mit **Kanal 0** gekennzeichnet ist. Die grün unterlegte **0** bezieht sich exakt auf diesen Kanal. Gelb unterlegt ist lediglich die Wenn-Bedingung (größer als null), worauf ich weiter unten eingehe.\\ | ||
| + | |||
| + | {{bilder: | ||
| + | |||
| + | In einer Tabelle dargestellt teilt sich die erste LED auf drei Kanäle auf. Kanal 0 entspricht hier also dem roten Kanal dieser LED: | ||
| + | ^ LED-Nr. | ||
| + | | 1 | **<color # | ||
| + | | 1 | **<color # | ||
| + | | 1 | **<color # | ||
| + | |||
| + | **Das war bisher ein Kinderspiel, | ||
| + | Bevor ich aber jetzt auf Werte unterhalb der LED-Variable eingehe (ja, das geht auch), schauen wir uns an, wie es sich verhält, wenn wir eine Funktion abfragen müssen, die aus mehr als einer RGB-LED besteht oder anders gesagt aus mehr als drei Kanälen. Das könnte beispielsweise ein belebtes Haus sein, immerhin kann die LED-to-VAR-Funktion bis zu 31 Kanäle abfragen, was also locker für zehn RGB-LEDs innerhalb einer Funktion ausreicht. Doch ich mache lieber mit zwei WS2811 bzw. sechs Kanälen weiter. | ||
| + | |||
| + | Im Folgenden nehmen wir uns die [[..: | ||
| + | Der aufmerksame Leser wird jetzt bereits erkennen, dass die Kontroll-LED in jeder dieser Phasen einen anderen Helligkeitswert hat - dazu später mehr. | ||
| + | |||
| + | {{bilder: | ||
| + | |||
| + | Eigentlich bleibt alles wie beim vorangegangenen Beispiel. Wir referenzieren lediglich einen anderen Kanal, nämlich den blauen Kanal des zweiten WS2811, der sich auf der Stepperplatine befindet. Die grün unterlegte **5** bezieht sich exakt auf diesen blauen Kanal. Gelb unterlegt ist wieder die Wenn-Bedingung (größer als null). | ||
| + | |||
| + | {{bilder: | ||
| + | |||
| + | **Doch wie kommt man auf diese 5?** \\ | ||
| + | Dazu erweitern wir einfach mal die oben gezeigte Tabelle um drei Kanäle, denn die Funktion über der Abfrage besteht jetzt aus zwei LEDs. | ||
| + | ^ LED-Nr. | ||
| + | | 1 | **<color # | ||
| + | | 1 | **<color # | ||
| + | | 1 | **<color # | ||
| + | | 2 | **<color # | ||
| + | | 2 | **<color # | ||
| + | | 2 | **<color # | ||
| + | |||
| + | Bevor wir das Kapitel **LED Nummer Offset** schließen, zeige ich noch - wie oben versprochen - das Auslesen von LEDs, die **nach** der LED-to-VAR-Funktion aufgeführt werden. Auch wenn diese Funktion gegeben ist, so bleibt es bei der wichtigsten Regel: Die LED-to-VAR-Funktion bezieht sich **immer** auf die Funktion, die sich **direkt über** ihr befindet. Das muss mindestens **ein** Kanal sein. Im folgenden Screenshot wollen wir den grünen Kanal der unteren RGB-LED abrufen. Für die Zählweise muss man die drei Kanäle über der LED-to-VAR-Funktion mitzählen und dann bei der darunter positionierten LED weiterzählen. | ||
| + | |||
| + | {{bilder: | ||
| + | |||
| + | In der Tabelle gestaltet sich das nun so: | ||
| + | ^ LED-Nr. | ||
| + | | 1 | **<color # | ||
| + | | 1 | **<color # | ||
| + | | 1 | **<color # | ||
| + | | LED-to-VAR-Funktion | ||
| + | | 2 | **<color # | ||
| + | | 2 | **<color # | ||
| + | | 2 | **<color # | ||
| + | ==== Vergleichstyp ( = != < > & !& ) ==== | ||
| + | Hier stehen sechs Operatoren zur Verfügung, mit denen man so gut wie jeden Zustand abfragen kann. Die ersten vier Operatoren sind selbsterklärend, | ||
| + | |||
| + | ^ Operator | ||
| + | | = | Abgefragter LED-Wert und Bedingung müssen gleich sein | Aktiv, wenn der abgefragte Helligkeitswert einer LED erreicht wird (z. B. "Kanal 0 = 255") | | ||
| + | | != | Abgefragter LED-Wert und Bedingung dürfen nicht gleich sein | Aktiv, wenn der abgefragte Helligkeitswert einer LED **nicht** zutrifft | ||
| + | | < | Abgefragter LED-Wert kleiner sein als Bedingung | Aktiv, solange der abgefragte Helligkeitswert einer LED unterschritten bleibt (z. B. "Kanal 0 < 127") | | ||
| + | | > | Abgefragter LED-Wert größer sein als Bedingung | Aktiv, sobald der abgefragte Helligkeitswert einer LED überschritten wird (z. B. "Kanal 0 > 127") | | ||
| + | | & | Binärer Vergleich | siehe unten | | ||
| + | | !& | Binärer Vergleich negiert | siehe unten | | ||
| + | ==== Vergleichswert ==== | ||
| + | Wer es bis hierher geschafft hat, darf aufatmen. Denn das war's im Großen und Ganzen. | ||
| + | Der Vergleichswert ist einfach gesagt der Helligkeitswert (0 bis 255) der LED, die durch die Funktion abgefragt werden soll. Hier geben wir also an, bei welcher Helligkeit eine Funktion aktiv werden soll. | ||
| + | |||
| + | ==== Fazit ==== | ||
| + | Die LED-to-VAR-Funktion ist sicher ein Bereich, den man vor der Anwendung immer mal wieder nachschlagen muss. Doch richtig eingesetzt ist es wie eingangs erwähnt eine Waffe. Ich wünsch euch viel Freude und schöne Aha-Effekte, | ||