LUA für Anfänger (OpenTX 2.1.X)

Status
Nicht offen für weitere Antworten.

kalle123

Jugend forscht ....
#21
Klasse Video, Bernd.

Was ist den da jetzt an hardware dran? oXs mit ....

GPS, MS5611, 6050Gyro/Acc !? Das wars?

Muss ich auch mal probieren - Grüße und schönen Abend noch - KH

@Ralf, den "falschen" Job hatte ich auch. Nein, stimmt nicht, hatte eigentlich den falschen Chef!!
 
#24
Das "Problem" ist die offene Namenvergabe in den Telemetrieeinstellungen :
Alles was hier eingetragen ist kann auch in Lua als Variable verwendet werden.
Ralf
Irgendwie gibt es ja schon feste ID's z.B. (in den Header-Dateien von OpenTx zu finden) für GPS (die Koordinaten) dann passen auch die Namen. Aber für den Lock-Status und die Anzahl der Satelliten habe ich nichts gefunden, da habe ich eine Temp Variable benutzt. Vermutlich habe ich die Idee hinter der 'offenen' Namensvergabe einfach noch nicht erfasst - dazu habe ich bisher nichts finden können.
 

kalle123

Jugend forscht ....
#25
@Ralf.

Problem gelöst.

1. helloworld.lua in 2.1.x - max 8 characters filename (Danke Kilrah)

2. local inputs = { {“Your Val”, SOURCE } } 2.1.x mag die " Dinger nich :D

Nur Ralf, thread Titel ist ja nun LUA für Anfänger (OpenTX 2.1.X)

Bei Helle im Handbuch wird man solche Feinheiten kaum finden. Und in div. Foren sucht man sich nen Wolf. :D

Ich hab den Ansatz von http://open-txu.org/ immer sehr geschätzt. (Kleine Pakete, gut zu lesen und verstehen) Nur die LUA Einführung hat mich dort sehr enttäuscht. Irgendwie scheint sich dort auch nix mehr zu tun. Hab dort mal einen Kommentar rein gesetzt mit der Bitte, eine Korrektur dort zu plazieren. Ein Anfänger, der mit 2.1.x startet und dann helloworld.lua probieren will, schmeißt in den meisten Fällen dann sofort hin.
 
Zuletzt bearbeitet:
#26
Einen Schritt weiter:

Diese Zeilen waren mir gleich unsympathisch:
Code:
-- Distance_2D calculation (Spherical Law of Cosines)
   distance_2D = math.floor(6371009 * math.acos(sin_pilotLat * sin_currLat + cos_pilotLat * cos_currlat * cos_currLon_pilotLon))
Dafür rechne ich jetzt die 2D-Distance im Sender mit der Dist-Funktion aus und übergebe sie in l_Edist
Code:
-- Distance_2D = calculated distance 
   distance_2D = getValue(l_Edist)
Die Distanz wird jetzt korrekt im Radar angezeigt.

Was ich nicht verstehe, sind diese Zeilen:
Code:
 if radarArmed == 2 then
    lcd.drawText(colRadar - 24, rowDistance, "ON", SMLSIZE)
  else
    lcd.drawText(colRadar - 24, rowDistance, "OFF", SMLSIZE)  
  end
und
Code:
 if getValue(sw_radarmode) > 0 then
    if radarArmed == 1 then
      pilote_heading = heading
      radarArmed = 2
    end
  else
    radarArmed = 1
  end
Hier wird die ON/OFF Anzeige unter dem Radar umgeschaltet, aber wann und warum?
Vielleicht kann einer der LUA-Cracks mal schauen, oder Udo muss es halt wieder richten. Ich hänge mal das Script und den Telemtriescreen noch an.

Gruß Bernd
 

Anhänge

kalle123

Jugend forscht ....
#27
Bernd sehr schön, aber unter " LUA für Anfänger (OpenTX 2.1.X)" hatte ich mir was anderes vorgestellt ;)

Aber mach mal weiter ......

Gruß und schönen Abend noch - KH




Hab mir bei AliExpress gerade ein GY-86 bestellt - 10.46€
 
#28
@Ralf.

Problem gelöst.

1. helloworld.lua in 2.1.x - max 8 characters filename (Danke Kilrah)

2. local inputs = { {“Your Val”, SOURCE } } 2.1.x mag die " Dinger nich :D

Nur Ralf, thread Titel ist ja nun LUA für Anfänger (OpenTX 2.1.X)

Bei Helle im Handbuch wird man solche Feinheiten kaum finden. Und in div. Foren sucht man sich nen Wolf. :D
Lua ist halt eine eigenständige "Hochsprache" zur Programmierung und ein nice to have bei OpenTx.
Hat deshalb in meinen Augen ( in einem für die Nutzung auf der Taranis erforderlichen Ausmaß ) auch nichts mehr in Helles Handbuch zu suchen.
Was (immer noch) fehlt ist eine ausreichende Dokumentation , nachdem ich aber im Github einen Punkt dazu aufgemacht hatte hat sich in der Richtung ja auch schon wieder einiges gebessert. David ist da schwer dran.
Man darf nicht vergessen dass die
Programmierer ja auch alle nur "hobbymässig" an dem Thema arbeiten.
Wenn ich selber etwas Programmiert habe weiss ich wie es Funktioniert ,
wenn ich aber wie David das Dokumentieren und für andere Verständlich erklären soll was andere erstellt haben wirds schwierig.

jetzt zum HelloWorld

1. Aus alter Gewohnheit (DOS) nutze ich immer noch die 8.3 Namenvergabe, ist mir deshalb gar nicht aufgefallen.
2. meine Einarbeitung in Lua habe ich mit 2.0.12 hinter mich gebracht, da war jedes Testen von Scripten ungleich aufwändiger so dass ich selbst in angeblich funktionierenden Scripten erst alles auskommentiert habe und dann Zeile für Zeile wieder aktiviert habe um zu sehen was passiert.

Solche "Monsterscripte" wie das von Bernd angeführte sind in einem Thread für Anfänger auch sicherlich fehl am Platz, diese sind wahrscheinlich in einem eigenen Thema " Tipps und Tricks für LUA" besser aufgehoben..

Ralf
 
Zuletzt bearbeitet:
#29
Hier wird die ON/OFF Anzeige unter dem Radar umgeschaltet, aber wann und warum?

Gruß Bernd
So wie ich das verstehe wird gewartet bis gültige GPS Daten da sind, dann wird auf on geschaltet...
Quasi eine Mini Schrittkette:
Solange keine Daten da sind werden die Schritte übrsprungen. 1
Sind Daten da werdern diese als Startwerte übernommen und ein Merker gesetzt 2
Danach werden die Anweisungen wieder übersprungen....
Ralf
 
Zuletzt bearbeitet:
#30
OK, da wird die Variable "sf" abgefragt, das könnte satelite fix bedeuten, scheint aber aus der Telemetry angefragt zu werden. Ist das eine Standardvariable, oder war es eine in 2.0.X.?

Diese Abfrage könnte man ja ersetzen, indem man z.B. die 2D-Distanz auf > 0 prüft, dann ist auch definitiv ein Fix da. Oder das On/Off ganz rauslassen, oder?

Edit: sf ist Schalter F, den Sinn des Schalters habe ich noch nicht kapiert, aber er schaltet ON/OFF um.
 
Zuletzt bearbeitet:

strgaltdel

Erfahrener Benutzer
#31
Hi

und grundsätzlich zwei Sachen.

a)

Für einen thread "lua für Anfänger" läuft es hier imho etwas unkoordiniert.
Für den lua Einsteiger könnte es wichtig sein, welche grundsätzlichen Anlaufschwierigkeiten wie anzugehen sind,
welche Einschränkungen zu beachten sind (wie z.B. 8.3 Namenskonventionen) etc..

Ganz besonders wichtig ist es die Methodik anzureissen.
Momentan passiert hier eher "trial & error", oder täuscht mich der Eindruck?

Das Blindflugscript dürfte als Einstieg auch etwas zu mächtig sein, ggf sollte man dafür einen extra thread aufmachen.

Kleine Hinweise, die man selbst bereits ggf als selbstverständlich ansieht, könnten Anfängern eher helfen.

z.B. die Empfehlung des freeware editors "notepad++"
(Scriptfehler werden meistens mit Zeilennummer angegeben, die findet man in ++ z.B. sehr schnell),
oder dass der debug modus (Funktionstaste F6 im Simulator´) ggf detailierter einen Fehler darstellt..



zur Methodik ein Bsp:

was bedeutet getValue("sf") ?

1. Fragestellung:
ist getValue "standard" value, wenn ja >> schaue auf den lua Seiten nach
ist getValue Bestandteil der "taranis" Bibliothek, also eine taranis spezifische Spracherweiterung,
dann schaue im lua reference guide nach.


2. man schaut also im lua ref guide und findet:

getValue(source)
Returns the value of a source.
The list of valid sources is available:
for OpenTX 2.0.x at http://downloads-20.open-tx.org/firmware/lua_fields.txt
for OpenTX 2.1.x at http://downloads-21.open-tx.org/firmware/lua_fields.txt


3.
man schaut in den links nach (lädt man sich runter weil benötigt man häufig)
und findet:
..
sc Switch C
sd Switch D
se Switch E
sf Switch F
sg Switch G

Ist also die Abfrage einer Schalterstellung !



b)

das Problem mit der Entfernung:

da fischt man erst mal im Trüben.
Grundsätzlich wird die Entfernung ja über den Homepoint und der aktuellen Posi ermittelt.
jetzt kann die mathlib ein Problem haben (fehlerhafte Kalkulation, eher weniger Wahrscheinlich)
der homepoint verloren gegangen sein (aber wie?)
oder wg aussetzendem satfix ein Problem auftreten (wie kontrollieren ?)
oder kennt jemand andere Alternativen (fehlerhaftes switching zwischen 2d / 3d Entfernung weil sich Anzahl der Sats erhöht oder verringert hat ?)...
Egal wie, da hilft meines Erachtens nach nur ein logging, insbesondere der homepints, der aktuellen Koordinaten und der Dist variable.

Der homepoint wird ja über getValue("pilot-latitude") usw ausgelesen.
das ist für 2.1.7 frisch implementiert
googlen mit "openTx getvalue("pilotlatitude" führt zu
https://github.com/opentx/opentx/issues/2921

evtl noch fehlerbehaftet?

Ich glaube der homepoint kann auch als Wert aus der Struktur "GPS" zurückgeliefert werden,
evtl ist das zuverlässiger.



Gruß

Udo
 

kalle123

Jugend forscht ....
#32
Gut geschrieben Udo, nur Bernd ist jetzt nicht mehr zu bremsen.

Das Blindflugscript dürfte als Einstieg auch etwas zu mächtig sein, ggf sollte man dafür einen extra thread aufmache

Ist wohl eine leichte Untertreibung. Setze immer noch darauf, dass sich bei openTXU wieder was bewegt und die University nicht zum Stillstand gekommen ist. Das Konzept und die Anfängerfreundlichkeit hat mich sehr beeindruckt.

HIER kann ich nur reinschauen und staunen .....

cu KH
 
#33
Udo, letzte offene Frage, dann bin ich wieder raus hier: Macht SF außer ON/OFF umschalten, noch etwas Anderes?

Halt, mir fällt noch eine Anfängerübung ein: lade die Variable ElTm (s) aus der Telemetrie, rechne den VSpeed Durchschnitt ab T0 und speichere ihn in einer GVar. Ist ElTm = 0, starte die Berechnung neu ;)

Gruß Bernd
 
Zuletzt bearbeitet:
#34
Ich glaube, jetzt habe ich es verstanden: Du fliegst von dir weg und schaltest dann "On", dann ist der blip im Radar genau oben. Wenn du diese Orientierung beibehältst, kann du im Radar jederzeit die Position erkennen. Oder du merkst dir die "eingenordete" Richtung und drehst dich wieder dahin zurück, wenn du den Flieger verloren hast.

Nigelsheffield experimentiert zur Zeit mit einem Magnetometer, um das Radar nachzuführen, finde ich im Moment "too much", aber mal sehen. So jetzt Schluss mit offtopic, bevor der TE sauer wird.

Gruß Bernd
 

meute

Erfahrener Benutzer
#36
Hallo,

meine ersten LUA-Versuche.

Ich bin über diesen Post
http://fpv-community.de/showthread....egungsformular&p=921649&viewfull=1#post921649
auf diese Schalterübersicht
http://fpv-community.de/showthread.php?47985-LUA-scripts-zum-testen&p=686895&viewfull=1#post686895
von "Kaldi" gestossen.
Damit wollte ich spielen.

Dann hier
http://fpv-community.de/showthread....penTX-2-1-X%29&p=920584&viewfull=1#post920584
gelesen, dass die Telemetrie-Scripte nach SCRIPTS/TELEMETRY müssen.
Ging aber nicht.

Dann in Companion erst mal auf den Telemetrie-Reiter geschaut.
Aha, hier muss man bei "Telemetrie Anzeige als" auf Script umstellen und das Script auswählen.
Nun funktioniert die Anzeige in Companion.

Leider flimmert die LUA-Telemetrie-Anzeige in Companion wie blöd.
So als ob die Anzeige laufend neu aufgebaut wird, das aber nicht schnell genug geht.
Ist das normal?



Gruß
meute
 
#37
Endlich eine Anfängerfrage...

Unter:
http://fpv-community.de/showthread.php?52362-LUA-Scripts-Sammlung-der-Screens

hatte ich mein erstes "Telemetriebild" nämlich die Uhrzeitanzeige veröffentlicht.
Später dann nochmal ein überarbeitetes Script für 2.1.
Mit den Kommentaren was sich zur 2.0 alles geändert hatte.

Bau mal ziemlich zu Anfang ein
lcd(clear) in dein Sript ein , hat bei mir geholfen.
Anscheinend bleiben sonst Reste der normalen Anzeige stehen und drängen sich in den Vordergrund wenn das script gerade nicht aktiv ist.

Ralf

Edit: Programmiersprache verwechselt in Lua heißt der Befehl lcd.clear ()
Danke @ Meute
 
Zuletzt bearbeitet:

meute

Erfahrener Benutzer
#39
Hallo,

Bau mal ziemlich zu Anfang ein
lcd(clear) in dein Sript ein , hat bei mir geholfen.
Mit lcd(clear) kommt ein Script Error.
Kurz gegoogelt und auf lcd.clear() gestossen.
Damit wird der Bildschirm gelöscht und die Anzeige in Companion ist ruhig.
Trotzdem danke für den Hinweis, den Bildschirm immer zuerst zu löschen.

Und gleich die nächsten Probleme.

Den normalen Telemetrie-Screen (nicht LUA) kann man mit ENT verlassen.
Warum kann man den LUA-Telemetrie-Screen nicht mit ENT verlassen?
Nur mit ENT LONG kann er verlassen werden.

getValue("ch5") liest den Wert von Kanal 5 aus.
100% scheint 1024 zu sein.
Gibt es eine Funktion, die den Wert in Prozent umrechnet?


Gruß
meute
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten