Jump to content

Empfohlene Beiträge

Geschrieben

Hallo,

ich habe einen Versuch gemacht eine Steuerung mit einer Heuerampel zu bauen. Als "Übersetzer" habe ich das virtuelle Signal von @JimKnopf genommen...

728695158_BildDemo001.thumb.jpg.b68c3f6e8665247a2bc4de561f874bed.jpg

258144702_BildDemo002.thumb.jpg.8fa179f2cf34336d617d059818529399.jpg

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

Geschrieben
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

Geschrieben (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...
935677059_BildDemo003.jpg.7340c061b24de1fe91b85a476a23f743.jpg

... 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 von EASY

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...