Future Pinball – LEDWiz mit Single LED Flasher

Viele werden sich diese Frage noch nicht gestellt haben: Wie konfiguiere ich einen Flasher, der nur aus einer (1) LED besteht. Normalerweise werden ja nur RGB-Flasher unterstützt. Ein RGB-Flasher wird in der LEDWiz_settings.ini z.B. so konfiguriert:

'Left Flasher
FlasherLeftR.Channel = 30
FlasherLeftG.Channel = 31
FlasherLeftB.Channel = 32

Also drei Ports für die drei Farben. Jetzt könnte man annehmen, dass man bei einer einzelnen LED so vorgehen könnte:

'Left Flasher
FlasherLeftR.Channel = 30
FlasherLeftG.Channel = 30
FlasherLeftB.Channel = 30

Frei nach dem Muster alle Farben für eine LED. Nun, das Script funktioniert so auch ohne Probleme/Fehler. Das Ergebnis kann aber ernüchternd sein.

Warum?

Die LedWIZ_Class setzt die Werte für die verschiedenen Farben eine nach der anderen und schaltet erst dann die LEDs ein. Bei einem RGB-Wert von 255,150,0 ergeben drei LEDs ein schön helles Orange. Führt man die Konfiguration für eine einzelnen LED (wie oben beschrieben) durch, dann erhält man … nichts … Dunkelheit, die LED bleibt aus.

Warum?

Spielen wir einfach mal durch was intern passiert:
1. Die LedWIZ_Class erhält den RGB-Wert 255,150,0
2. Der Wert (Power) der LED wird auf 255 gesetzt (volle Power ROT!)
3. Der Wert der LED wird auf 150 gesetzt (halbe Kraft GRÜN!)
4. Der Wert der LED wird auf 0 gesetzt (kein BLAU!)
5. Die LED wird mit dem zuletzt gesetzten Wert (0) eingeschaltet. Bleibt also aus.

Wo also sonst drei unterschiedliche LEDs (ein RGB-Flasher besteht ja im Grunde nur aus drei einzelnen LEDs) drei verschiedene Werte erhalten, wird hier eine LED mit drei Werte befeuert, wobei nur der letzte zählt. Dumm gelaufen 😉

Was kann man tun?

Ich habe hier eine Änderung (direkt vom Hirn in’s Notepad) für die LedWIZ_Class geschrieben. sie ist momentan 0 getestet, aber so stelle ich mir vor, dass es klappen könnte:

Class LedWizFlasher / Function SetColor
    Function SetColor (ColorRVal, ColorGVal, ColorBVal)
' Check if Flasher is a single LED
if m_ChannelR = m_ChannelG and m_ChannelR = m_ChannelB then
' Get the highest Power (Color)
m_ColorTmp = ColorRVal
if m_ColorTmp < ColorGVal then
m_ColorTmp = ColorGVal
elseif m_ColorTmp < ColorBVal then
m_ColorTmp = ColorBVal
end if
' Scale 255 RBG values to 48 for LEDWiz
m_color = array(cInt(m_ColorTmp*.188), cInt(m_ColorTmp*.188), cInt(m_ColorTmp*.188))
else
' Scale 255 RBG values to 48 for LEDWiz
m_color = array(cInt(ColorRVal*.188), cInt(ColorGVal*.188), cInt(ColorBVal*.188))
end if

ledwiz.LEDWizPorts(m_ChannelR).Power = m_color(0)
ledwiz.LEDWizPorts(m_ChannelG).Power = m_color(1)
ledwiz.LEDWizPorts(m_ChannelB).Power = m_color(2)
End Function

In dieser Funktion wird nun als erstes gecheckt, ob für alle drei Farben des Flasher der gleiche Port / die gleiche LED konfiguriert wurde. Ist das nicht der Fall, dann läuft alles wie bisher. Sie die Ports aber identisch, dann wird der Farbwert mit dem größten Wert ermittelt. In unserem Beispiel ist das der Wert 255. Dieser Wert wird nun der einfachhalt halber in alle Farbwerte kopiert.

Ergebnis: Die einzelne LED leuchtet nun mit der Helligkeit des hellsten / größten RGB-Wertes. Also besser als dunkel.

Alternative: Wer mit ein reinen Ein-/Ausschalten glücklich ist (und auf dass ‚Dimmen‘ über den RGB-Wert verzichten will), der kann auch folgende Änderung vornehmen:

Class LedWizFlasher / Function SetColor
Function SetColor (ColorRVal, ColorGVal, ColorBVal)
' Check if Flasher is a single LED
if m_ChannelR = m_ChannelG and m_ChannelR = m_ChannelB then
' Set FULL POWER
m_ColorTmp = 255
' Scale 255 RBG values to 48 for LEDWiz
m_color = array(cInt(m_ColorTmp*.188), cInt(m_ColorTmp*.188), cInt(m_ColorTmp*.188))
else
' Scale 255 RBG values to 48 for LEDWiz
m_color = array(cInt(ColorRVal*.188), cInt(ColorGVal*.188), cInt(ColorBVal*.188))
end if

ledwiz.LEDWizPorts(m_ChannelR).Power = m_color(0)
ledwiz.LEDWizPorts(m_ChannelG).Power = m_color(1)
ledwiz.LEDWizPorts(m_ChannelB).Power = m_color(2)
End Function

Auch hier gilt: Ist momentan 0 getestet, aber so stelle ich mir vor, dass es klappen könnte. Bei Gelegenheit baue ich es bei mir ein und teste es durch!

Speichere in deinen Favoriten diesen permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Bitte löse folgende Aufgabe, damit ich sicher bin, dass du kein Bot bist. Danke! * Time limit is exhausted. Please reload CAPTCHA.