FRSKY OpenTX Lua Script - Ton einmal ansagen lassen...

Papsi

Erfahrener Benutzer
#1
Hallo,

ich habe hier ein Testscript, wo ich mir eine WAV Datei NUR EINMAL ansagen lassen will.
Dies ist nur ein Test - wird später in einem anderen Script weiter verwendet.
Code:
local function run(event)
   lcd.clear()
   eleVal = getValue("ele")
   lcd.drawText(1,11,"eleVal: " .. eleVal, 0)      

   if eleVal > 500 then
      playFile("/SOUNDS/de/SYSTEM/0005.wav")
   elseif eleVal > 400 then
      playFile("/SOUNDS/de/SYSTEM/0004.wav")
   elseif eleVal > 300 then
      playFile("/SOUNDS/de/SYSTEM/0003.wav")
   elseif eleVal > 200 then
      playFile("/SOUNDS/de/SYSTEM/0002.wav")
   elseif eleVal > 100 then
      playFile("/SOUNDS/de/SYSTEM/0001.wav")
   end
   
end

return {run=run}
Wie kann es anstellen, das mir der Wert nur einmal pro Wert angesagt wird.
Momentan kommen die Ansagen dann ohne Pause immer wieder bei >300 (drei, drei, drei, drei, usw)
 

OlliW

Erfahrener Benutzer
#2
du must dir den letzten Wert oder Zustand merken, und testen ob der sich geändert hat

also, z.B. (nur generisch, nicht echter getesteter Cdoe):

Code:
local state_last = 0

local function run(event)
   lcd.clear()
   eleVal = getValue("ele")
   lcd.drawText(1,11,"eleVal: " .. eleVal, 0)    

   local state = 0

   if eleVal > 500 then state = 5
   elseif eleVal > 400 then state = 4
   elseif eleVal > 300 then state = 3
   elseif eleVal > 200 then state = 2
   elseif eleVal > 100 then state = 1
   end

   if state ~= state_last then
     if state == 5 then
       playFile("/SOUNDS/de/SYSTEM/0005.wav")
     elseif state == 4 then
       playFile("/SOUNDS/de/SYSTEM/0004.wav")
     elseif state == 3 then
       playFile("/SOUNDS/de/SYSTEM/0003.wav")
     elseif state == 2 then
       playFile("/SOUNDS/de/SYSTEM/0002.wav")
     elseif state == 1 then
       playFile("/SOUNDS/de/SYSTEM/0001.wav")
     end
   end
 
   state_last = state
end

return {run=run}
 

Merak

Well-known member
#3
Das klingt interessant ... Wenn Du fertig bist mit dem LUA-Script, kannst Du das Ergebnis mit etwas Anleitung für Dummies hier teilen? Ich kenne mich mit LUA und deren Nutzung im Betrieb noch nicht aus.
Das könnte mein Einstieg werden :)
 

Papsi

Erfahrener Benutzer
#4
@OlliW
SUPER - Codeschnipsel funktioniert und wurde in mein Script eingearbeitet - DANKE (y)


@Merak
Wenn alles funktioniert, dann kann ich mal was veröffentlichen.
Momentan noch in der Testphase.

Es wird ein angepasstes Script für die Tango2 - sieht dann ungefähr so aus:
1.jpg
 

Papsi

Erfahrener Benutzer
#5
@Oliver
Ich häng hier mal noch ne Frage an. Evtl. kannst Du da auch weiter helfen.

Ich bekomme den Heading Wert von der FC als Grad Werte zwischen -32 und +32
Wie kann ich diesen Wert in „normal“ Kompass Grad umrechnen? Was schickt mir der FC da für Werte?

Hier mal als Beispiel:
52D678CC-DE21-49B7-AF86-C84E54ABB722.png
 

OlliW

Erfahrener Benutzer
#6
ne, damit kann ich nicht helfen, weil ich derartige Telem nicht nutze.
-32 ... +32 klingt ein bischen als ob das -10*pi ... +10*pi wäre, dann wäre die Umrechung winkel = 0.1*180/pi * x, das wäre aber eine schlechte Winlkelauflösung
 
FPV1

Banggood

Oben Unten