EASY Posted February 19, 2023 Posted February 19, 2023 Hallo, ich habe einen Versuch gemacht eine Steuerung mit einer Heuerampel zu bauen. Als "Übersetzer" habe ich das virtuelle Signal von @JimKnopf genommen... Die Anlage als Versuch... HeuerAmpel Steuerung 01.mbp Anmerkungen und Anregungen zur Steuerung werden gerne entgegengenommen... (Da ich mit der grafischen EV nicht klar komme, ist alles in lua... Lösungsvorschläge "trotzdem" auch gerne in der grafischen EV...) Gruß EASY
Goetz Posted February 20, 2023 Posted February 20, 2023 Am 19.2.2023 um 13:05 schrieb EASY: Anmerkungen und Anregungen zur Steuerung werden gerne entgegengenommen... Gestern habe ich EASY per PN folgenden Vorschlag gemacht. Und da er ihm gefiel, möchte ich ihn heute öffentlich vorstellen. Sein Skript für die Umwandlung der Zeigerposition in "rot", "grün" und "weiß" sah so aus: --[[ Ampelsteuerung in Abhängigkeit der Animationsposition "Betrieb" --]] local HNS="" -- Nord-Süd Richtung local HOW="" -- Ost-West Richtung local pos=$("HeuerAmpel 1").animations["Betrieb"].position -- Position Animation "Betrieb" -- Nord-Süd Farbaufteilung in Abhängigkeit der Animationsposition if pos<=0.13 then HNS="rot" elseif pos>0.14 and pos<=0.36 then HNS="grün" elseif pos>0.37 and pos<=0.63 then HNS="rot" elseif pos>0.64 and pos<=0.86 then HNS="grün" elseif pos>0.87 and pos<=1 then HNS="rot" else HNS="weiß" end -- Objektvariabe für Nord-Süd der Ampel bei Farbwechsel setzen if HNS=="grün" and $("HeuerAmpel 1").variables["HNS"]~="grün" then $("HeuerAmpel 1").variables["HNS"]="grün" elseif HNS=="rot" and $("HeuerAmpel 1").variables["HNS"]~="rot" then $("HeuerAmpel 1").variables["HNS"]="rot" end -- Ost-West Farbaufteilung in Abhängigkeit der Animationsposition if pos<=0.11 then HOW="grün" elseif pos>0.12 and pos<=0.38 then HOW="rot" elseif pos>0.39 and pos<=0.61 then HOW="grün" elseif pos>0.62 and pos<=0.88 then HOW="rot" elseif pos>0.89 and pos<=1 then HOW="grün" else HOW="weiß" end -- Objektvariabe für Ost-West der Ampel bei Farbwechsel setzen if HOW=="grün" and $("HeuerAmpel 1").variables["HOW"]~="grün" then $("HeuerAmpel 1").variables["HOW"]="grün" elseif HOW=="rot" and $("HeuerAmpel 1").variables["HOW"]~="rot" then $("HeuerAmpel 1").variables["HOW"]="rot" end Mein Alternativvorschlag dazu ist: --[[ Ampelsteuerung in Abhängigkeit der Animationsposition "Betrieb" --]] local HNS="rot" -- Nord-Süd Richtung local HOW="rot" -- Ost-West Richtung local pos=$("HeuerAmpel 1").animations["Betrieb"].position -- Zeigerstellung pos = pos + 0.125 -- Nullpunkt verschieben pos = (pos * 100 // 1) % 50 -- in ganze Zahl wandeln und Spiegel eliminieren if (pos+1) % 25 > 2 then -- weißes Band von 24 über 0 bis 1 if pos < 25 then -- halb grün, halb rot HOW = "grün" else HNS = "grün" end end -- Objektvariabe für Nord-Süd der Ampel bei Farbwechsel setzen if $("HeuerAmpel 1").variables["HNS"] ~= HNS then $("HeuerAmpel 1").variables["HNS"] = HNS end -- Objektvariabe für Ost-West der Ampel bei Farbwechsel setzen if $("HeuerAmpel 1").variables["HOW"] ~= HOW then $("HeuerAmpel 1").variables["HOW"] = HOW end Auf Wunsch erkläre ich gerne einzelne Komponenten und ihren Sinn. Viele Grüße Götz
EASY Posted February 24, 2023 Author Posted February 24, 2023 (edited) Hallo @Goetz, Deine "versteckten" Hinweise 'Nullpunkt verschieben', 'Spiegel eliminieren' haben mir letztlich doch keine Ruhe gelassen und so habe ich die Ampel Deinem Steuerungsvorschlag angepasst. Die Startposition ist nun der Anfang von rot-rot... ... und die Animation läuft über 180°. So sieht dann die EV dazu aus... --[[ Ampelsteuerung in Abhängigkeit der Animationsposition "Betrieb" --]] local HNS="rot" -- Nord-Süd Richtung local HOW="rot" -- Ost-West Richtung local pos=$("HeuerAmpel 1").animations["Betrieb"].position -- Position Animation "Betrieb" pos = pos * 180 -- Position in Grad Umwandeln (Animation läuft von 0° bis 180°) if pos % 90 >= 12 then -- Ausgleich weiß und rot länger als grün (-> Bereich rot-rot) if pos <= 90 then -- halb grün, halb rot HNS = "grün" -- Nord-Süd Richtung else HOW = "grün" -- Ost-West Richtung end end -- Objektvariabe für Nord-Süd der Ampel bei Farbwechsel setzen if $("HeuerAmpel 1").variables["HNS"] ~= HNS then $("HeuerAmpel 1").variables["HNS"] = HNS end -- Objektvariabe für Ost-West der Ampel bei Farbwechsel setzen if $("HeuerAmpel 1").variables["HOW"] ~= HOW then $("HeuerAmpel 1").variables["HOW"] = HOW end HeuerAmpel Steuerung 02.mbp P.S. Ich habe dem Entwurf der Ampel einfach noch die Änderung als Variante hinzugefügt... Gruß EASY Edited February 24, 2023 by EASY
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now