ChatGPT Script....
-- Lua-Skript für FRO und SRO über einen Encoder, optimiert
-- Konstanten für die Encoder-Pins
local encPinFRO = 10 -- Beispiel: Pin für FRO
local encPinSRO = 11 -- Beispiel: Pin für SRO
-- Schwellenwert für die Änderung (um unnötige Updates zu vermeiden)
local threshold = 1 -- Minimale Änderung, um einen Update auszulösen
-- Globale Variablen zum Speichern des letzten Encoderwerts
local lastFROValue = 0
local lastSROValue = 0
-- Funktion zum Einstellen der FRO
function SetFRO(encoderValue)
local newFRO = encoderValue / 1000 -- Umrechnung des Encoderwerts in Prozent
if math.abs(newFRO - lastFROValue) > threshold then
mc.mcSignalSetState(1000, newFRO) -- Setzt den FRO-Wert
lastFROValue = newFRO -- Speichert den letzten Wert
end
end
-- Funktion zum Einstellen der SRO
function SetSRO(encoderValue)
local newSRO = encoderValue / 1000 -- Umrechnung des Encoderwerts in Prozent
if math.abs(newSRO - lastSROValue) > threshold then
mc.mcSignalSetState(1001, newSRO) -- Setzt den SRO-Wert
lastSROValue = newSRO -- Speichert den letzten Wert
end
end
-- Funktion zum Abrufen des Encoderwerts
function GetEncoderValue(pin)
local value = mc.mcInputGet(pin) -- Liest den Wert des Encoders an einem Pin
return value
end
-- Funktion zum Überwachen des Encoders
function MonitorEncoder()
-- Abrufen der Encoderwerte
local encoderValueFRO = GetEncoderValue(encPinFRO)
local encoderValueSRO = GetEncoderValue(encPinSRO)
-- Setzen der FRO- und SRO-Werte
SetFRO(encoderValueFRO)
SetSRO(encoderValueSRO)
end
-- Event-Timer: 10 ms Intervall für die Überwachung
function InitMonitor()
local rc = mc.mcCntlSetTimer(10, "MonitorEncoder") -- Setzt einen Timer für alle 10 ms
if rc ~= mc.MERROR_NOERROR then
mc.mcCntlSetLastError("Fehler beim Setzen des Timers für die Überwachung")
end
end
-- Starte die Überwachung
InitMonitor()