EASY Geschrieben 19. Februar 2023 Teilen Geschrieben 19. Februar 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 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Goetz Geschrieben 20. Februar 2023 Teilen Geschrieben 20. Februar 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 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
EASY Geschrieben 24. Februar 2023 Autor Teilen Geschrieben 24. Februar 2023 (bearbeitet) 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 Bearbeitet 24. Februar 2023 von EASY Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden