Benutzer-Werkzeuge

Webseiten-Werkzeuge


anleitungen:prog_gen:led-to-var

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
anleitungen:prog_gen:led-to-var [2026/10/13 19:30] – [LED Nummer Offset] raily74anleitungen:prog_gen:led-to-var [2026/10/13 21:02] (aktuell) – [Vergleichswert] raily74
Zeile 18: Zeile 18:
 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. 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 "Heissluftballon" aktiv wird (also wenn die rote LED mit irgendeiner Helligkeit leuchtet, die größer als 0 ist), wird der Gasbrenner im Heißluftballon gezündet und dieser hebt ab. Direkt darunter fragen wir mit der **LED-to-Var**-Funktion genau dieses rote Leuchten ab. Sobald nun die vergebene Variable "Heissluftballon" aktiv wird (also wenn die rote LED mit irgendeiner Helligkeit leuchtet, die größer als 0 ist), wird der Gasbrenner im Heißluftballon gezündet und dieser hebt ab.
 +
 +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:anleitungen:prog_gen:led-to-var:led-to-var_schritt01.png?1024|}} {{bilder:anleitungen:prog_gen:led-to-var:led-to-var_schritt01.png?1024|}}
  
-Wenn bis hierhin alles klar ist, schauen wir uns genau an dieser Stelle den **LED Nummer Offset** genauer an. \\ +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  ^  Kanal  ^  Offset  ^ +^  LED-Nr.  ^  Kanal  ^  Offset  ^ 
-|1|Rot|0| +|  1  |  **<color #ed1c24>Rot</color>**  |  **0**  | 
-|1|Grün|1| +|  1  |  **<color #22b14c>Grün</color>**  |  1  | 
-|1|Blau|2|+|  1  |  **<color #00a2e8>Blau</color>**  |  2  | 
 + 
 +**Das war bisher ein Kinderspiel, oder? Dann darf's jetzt ein bisschen mehr sein, oder? Sehr gern.** \\ 
 +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 [[..:bauanleitungen:550v2de:550_microstepper_pro|MicroStepper Pro-Platine]] als Referenz. Das ist im Übrigen ein sehr praktisches Beispiel, weil es sehr wahrscheinlich ist, dass beim Bewegen des Steppermotors auch passende Licht- oder Soundfunktionen ausgelöst werden sollen. Auf die Erklärungen zum [[..:spezial:patternconfigurator|Pattern Configurator]] verzichte ich an dieser Stelle. Wichtig ist hier nur, dass der Steppermotor sechs Sekunden lang in die eine Richtung fährt und am Ziel für zehn Sekunden pausiert, bevor er für sechs Sekunden wieder zurück fährt. Genau das zeigt der folgende Screenshot.\\ 
 +Der aufmerksame Leser wird jetzt bereits erkennen, dass die Kontroll-LED in jeder dieser Phasen einen anderen Helligkeitswert hat - dazu später mehr. 
 + 
 +{{bilder:anleitungen:prog_gen:led-to-var:led-to-var_schritt02.png|}} 
 + 
 +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:anleitungen:prog_gen:led-to-var:led-to-var_schritt03.png?1024|}} 
 + 
 +**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.  ^  Kanal  ^  Offset  ^ 
 +|  1  |  **<color #ed1c24>Rot</color>**  |  0  | 
 +|  1  |  **<color #22b14c>Grün</color>**  |  1  | 
 +|  1  |  **<color #00a2e8>Blau</color>**  |  2  | 
 +|  2  |  **<color #ed1c24>Rot</color>**  |  3  | 
 +|  2  |  **<color #22b14c>Grün</color>**  |  4  | 
 +|  2  |  **<color #00a2e8>Blau</color>**  |  **5**  | 
 + 
 +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:anleitungen:prog_gen:led-to-var:led-to-var_schritt04.png?1024|}} 
 + 
 +In der Tabelle gestaltet sich das nun so: 
 +^  LED-Nr.  ^  Kanal  ^  Offset  ^ 
 +|  1  |  **<color #ed1c24>Rot</color>**  |  0  | 
 +|  1  |  **<color #22b14c>Grün</color>**  |  1  | 
 +|  1  |  **<color #00a2e8>Blau</color>**  |  2  | 
 +|  LED-to-VAR-Funktion  | 
 +|  2  |  **<color #ed1c24>Rot</color>**  |  3  | 
 +|  2  |  **<color #22b14c>Grün</color>**  |  **4**  | 
 +|  2  |  **<color #00a2e8>Blau</color>**  |  5  |
 ==== Vergleichstyp ( = != < > & !& ) ==== ==== 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, die letzten beiden sind extrem mächtig, da sich damit unterschiedliche Funktionen auf einen Helligkeitswert legen lassen. Bevor ich näher darauf eingehe, schauen wir uns die Funktion der ersten vier Operatoren in der Tabelle an:
  
 +^  Operator  ^  Bedeutung  ^  Beispiel für „wahr“  ^
 +| = | 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  (z. B. "Kanal 0 ≠ 0") |
 +| < | 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 ==== ==== 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, wenn ihr anfangt, Teile dieses Tutorials nachzubauen.
anleitungen/prog_gen/led-to-var.1791919809.txt.gz · Zuletzt geändert: von raily74 · Momentan gesperrt von: raily74