LUA Scripting voor o.a. Taranis

Discussie in 'Multicopters electronica' gestart door Richardoe, 20 aug 2014.

  1. stansan

    stansan

    Lid geworden:
    19 mei 2013
    Berichten:
    80
    Locatie:
    Lelystad
    Hallo,


    Het telemetry script van Richardoe (die met de 3 schermen) heb je in het eerste scherm die gps sateliet met een balkje erachter.


    Dit is in het script gebaseerd op 2 waardes, die van temp1 en temp2.


    Nou heb ik een crius aio die megapirateNG draait (APM2.6) en om de Mavlink telemetrie data om te zetten naar frsky gebruik ik een JD-io boardje. nou geeft die op temp1 echt de temperatuur weer (compleet nutteloos) en de sateliet data op temp2 maar als volgt.

    Code:
    Temperature 1 = Flight controller internal temperature, Celsius
    Temperature 2 = Visible satellite count and GPS Fix  style, 2-3 digits where 
    LAST digit is fix status 0-1 No fix, 2 2D Fix, 3  3D Fix. FRONT digits are amount of satellites.
    For example "63" = 6  satellites, 3D FIx or "103" is 10 satellites, 3D fix or "32" = 3  satellites, 2D fix
    
    Hoe zou ik dat in het script kunnen ombouwen zodat ik op het scherm nog steeds dezelfde BMP kan gebruiken. dus het aantal sats en de fix quality?
    Onder zet ik even het deel van het script waar het om gaat, wat ik zou willen veranderen.

    Code:
    [SIZE=1]-- ################# GPS Quality ##################################
      
       local myNumSat =  getValue("temp1")                                   -- Temp1 is number of sats
       local myQualSat =  getValue("temp2")                                  -- Temp2 is quality of Satfix
       
    if simulation == 1 then
     myNumSat =7                                                                -- for Taranis Simulations Mode
     myQualSat =3                                                            -- for Taranis Simulations Mode
    end
       
       if myQualSat == 0 then
              lcd.drawPixmap(46, 24, "/SCRIPTS/BMP/sat0.bmp")                     -- NO Fix
       elseif myQualSat == 2 then
                lcd.drawPixmap(46, 24, "/SCRIPTS/BMP/sat1.bmp")              -- 2D Fix
       elseif myQualSat == 3 then
                lcd.drawPixmap(46, 24, "/SCRIPTS/BMP/sat2.bmp")              -- 3D Fix
       elseif myQualSat == 4 then
                lcd.drawPixmap(46, 24, "/SCRIPTS/BMP/sat3.bmp")              -- DGPS FIX
         end                
         if myNumSat > 5 then
                 lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_6.bmp")             -- 6 or more Sats 
         elseif myNumSat > 4 then
                 lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_5.bmp")               -- 5 Sats 
         elseif myNumSat > 3 then
                 lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_4.bmp")               -- 4 Sats
         elseif myNumSat > 2 then
               lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_3.bmp")               -- 3 Sats
         elseif myNumSat > 1 then
                 lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_2.bmp")               -- 2 Sats
         elseif myNumSat > 0 then
                 lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_1.bmp")               -- 1 Sat
         else
             lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_0.bmp")                 -- no Sats
         end
       lcd.drawNumber(73, 24, myNumSat,  SMLSIZE)                            -- Show number of sats[/SIZE]
     
  2. Richardoe

    Richardoe

    Lid geworden:
    15 jun 2014
    Berichten:
    441
    Locatie:
    Omg. Groningen
    Je kan het volgende proberen , niet getest

    local myQualSat = string.sub(getValue("temp2"), -1, -1)
    local myNumSat = string.sub(getValue("temp2"), 1, -2)

    Dat zou de temp2 moeten splisten
     
  3. stansan

    stansan

    Lid geworden:
    19 mei 2013
    Berichten:
    80
    Locatie:
    Lelystad
    ga ik meteen ff doen.. wel snelle reactie haha..

    je hoort het zo..

    EDIT:

    Nee dus , krijg een melding script syntax error.
     
    Laatst bewerkt: 3 apr 2015
  4. Richardoe

    Richardoe

    Lid geworden:
    15 jun 2014
    Berichten:
    441
    Locatie:
    Omg. Groningen
    Ok, even wat meer tijd in gestoken. De String functies mogen niet, dus ik moet het op een heel smerige manier doen, maar werkt hier wel in Companion. Dus test dit eens, deze werkt tot 10 satellieten.

    dit vervangen:
    Code:
       local myNumSat =  getValue("temp1")                                   -- Temp1 is number of sats
       local myQualSat =  getValue("temp2")                                  -- Temp2 is quality of Satfix
       
    if simulation == 1 then
     myNumSat =7                                                                -- for Taranis Simulations Mode
     myQualSat =3                                                            -- for Taranis Simulations Mode
    end
    
    door dit

    Code:
       local myNumSat =  0                                   -- Temp1 is number of sats
       local myQualSat =  0                                   -- Temp2 is quality of Satfix
       local APMtemp2= getValue("temp2") 
    
    if simulation == 1 then
    -- myNumSat =7                                                       	     -- for Taranis Simulations Mode
    -- myQualSat =3                                                            -- for Taranis Simulations Mode
       APMtemp2 = 63
    end
       
      
       if APMtemp2 > 99 then
       myNumSat = 10
       myQualSat = APMtemp2 - 100
       elseif APMtemp2 > 89 then
       myNumSat = 9
       myQualSat = APMtemp2 - 90
       elseif APMtemp2 > 79 then
       myNumSat = 8
       myQualSat = APMtemp2 - 80
       elseif APMtemp2 > 69 then
       myNumSat = 7
       myQualSat = APMtemp2 - 70
       elseif APMtemp2 > 59 then
       myNumSat = 6
       myQualSat = APMtemp2 - 60
       elseif APMtemp2 > 49 then
       myNumSat = 5
       myQualSat = APMtemp2 - 50
       elseif APMtemp2 > 39 then
       myNumSat = 4
       myQualSat = APMtemp2 - 40
       elseif APMtemp2 > 29 then
       myNumSat = 3
       myQualSat = APMtemp2 - 30
       elseif APMtemp2 > 19 then
       myNumSat = 2
       myQualSat = APMtemp2 - 20
       elseif APMtemp2 > 9 then
       myNumSat = 1
       myQualSat = APMtemp2 - 10
       elseif APMtemp2 > 0 then
       myNumSat = 0
       myQualSat = APMtemp2
       end
    
     
    Laatst bewerkt: 4 apr 2015
  5. stansan

    stansan

    Lid geworden:
    19 mei 2013
    Berichten:
    80
    Locatie:
    Lelystad
    hmm, helaas,

    Als ie op simulation 1 staat doet ie het idd in companion.
    Maar als je m op 0 zet weer script error.

    Ook in de taranis dus script error.
    Ik had de eerste regel al van
    local APMtemp2= getValue("temp2")
    local APMtemp2 = getValue("temp2")


    gemaakt, maar helpt dus ook niet.

    dus die APMtemp2 = 63 accepteert ie wel, maar zodra die een vergelijking moet doen dan accepteert ie het niet denk ik dan met mijn boeren verstand :)

    ikzelf kan aan de hand van voorbeeldjes wel dingetjes verlengen enzo maar ik snap verder helemaal niks van lua, dus nieuwe dingen verzinnen gaat niet..
     
    Laatst bewerkt: 4 apr 2015
  6. Richardoe

    Richardoe

    Lid geworden:
    15 jun 2014
    Berichten:
    441
    Locatie:
    Omg. Groningen
    heb je niet meer aangepast? bij mij doet hij het namelijk wel als ik simulation op 0 zet. Klinkt alsof je ergens anders ook al iets hebt aangepast. Probeer het eens met het originele script en dan alleen dit aanpassen.

    of mail mij even je hele script (richard@hetnet.nl)
     
  7. stansan

    stansan

    Lid geworden:
    19 mei 2013
    Berichten:
    80
    Locatie:
    Lelystad
    nee in het totale script is veel meer aangepast ivm apm flightmodes enzo.
    maar het werkt tot dit stukje.. ik zal je het hele script mailen.. volgende project is het stukje van gimbal die ik niet gebruik om te zetten naar heading. maar eerst dit maar :)
     
  8. Richardoe

    Richardoe

    Lid geworden:
    15 jun 2014
    Berichten:
    441
    Locatie:
    Omg. Groningen
    Er misten 2 local statements. zit weer in je mail. Code hierboven ook aangepast. Zou nu moeten werken met je APM
     
  9. stansan

    stansan

    Lid geworden:
    19 mei 2013
    Berichten:
    80
    Locatie:
    Lelystad
    Ha dank je idd werkt weer in taranis.. maar heb ik toch een vraag.
    Die eerste local myNumsat verwijst nu toch weer naar temp1... krijgt ie nu niet weer de waarde van temp1 uit het boardje?
     
  10. Richardoe

    Richardoe

    Lid geworden:
    15 jun 2014
    Berichten:
    441
    Locatie:
    Omg. Groningen
    wordt overschreven als het goed is, mag je ook vervangen door:
    local myNumSat = 0 -- Temp1 is number of sats
    local myQualSat = 0 -- Temp2 is quality of Satfix
     
  11. grob

    grob

    Lid geworden:
    4 jul 2010
    Berichten:
    101
    Locatie:
    Raalte (OV)
    Richard, perfect idee.
    Was zelf ook al aan het puzzelen hoe ik een effectief scherm kan opzetten voor een aantal van mijn modellen.

    Misschien handig om een soort library concept, kleine modules, op te zetten. bv. de Capaciteits meter in je laatste voorbeeld. Handig voor alle modellen.

    Rob.
     
  12. stansan

    stansan

    Lid geworden:
    19 mei 2013
    Berichten:
    80
    Locatie:
    Lelystad
    ziet er naar uuit dat het werkt met die 0.. moet nu even weg.. vanaaf weer verder testen.
     
  13. stansan

    stansan

    Lid geworden:
    19 mei 2013
    Berichten:
    80
    Locatie:
    Lelystad
    Nou, in princiepe werkt het wel, alleen dat JD-io bord gaat na een paar minuten iets doen waardoor de cell count op hol gaat..

    Eerst dus juiste voltage op scherm, en na een tijdje wordt het ineens 4 cellen (ipv de 3 die ik heb) of voltage schiet omhoog naar 24 volt lol.

    door in de telemetrie wat verder te crollen kom ik op de laatste normale pagina een vakje tegen waar idd de 3 cellen worden weergegeven helemaal normaal maar daaronder nog 3 die normaal dan op 0v zouden staan.. maar die schieten dan ineens omhoog naar bv 5 v per stuk... tja als het script dat allemaal bij elkaar optelt komt ie gauw aan 25v...

    ligt niet aan script hoor.. zit m volgens mij in het JD-IO boardje...
    Zijn ook lekker duidelijk daar welke firmware de laatste is.. op de site 0.5 maar in de repository zie ik 1.3 1.5 2.0 maar weer met een oudere datum....
    Heeft er iemand hier een JD-IO boardje die wel werkt? en welke FW dan?
     
  14. Yov

    Yov

    Lid geworden:
    28 sep 2010
    Berichten:
    497
    Iemand die tips heeft over volgende ?
    Ik heb de Zaggometry geïnstalleerd en de basis stappen doorlopen nu krijg ik het volgende :
    T1 (gevonden GPS-en) start al aan 39 en loopt op tot 45
    T2 (gelockte gps-en) start aan 39 en blijft hier ook.
    Galt start aan 0 na reset en loopt geleidelijk op tot zelf 50.

    wat is er fout ?
     
  15. Richardoe

    Richardoe

    Lid geworden:
    15 jun 2014
    Berichten:
    441
    Locatie:
    Omg. Groningen
    Lastig zo te zeggen, graag iets meer info. ik gok dat je op je zender kijkt? dan denk ik dat je die niet goed ingesteld hebt staan. Je zender denkt namelijk dat het graden celcius is en converteert die dan naar Fahrenheit. Dus kijk eens goed naar je instellingen van je zender.

    Zender moet op Metric staan. Vrijwel onderaan in je Radio Setup.

    [​IMG]
     
    Laatst bewerkt: 30 mei 2015
  16. Yov

    Yov

    Lid geworden:
    28 sep 2010
    Berichten:
    497
    @Richardoe thx dit zal het geweest zijn ! ;)

    Ik heb jouw script even geïnstalleerd maar ik krijg geen info. Vermoedelijk zal dit zijn omdat jouwe gescreven is voor de naza32 en ik de V2 gebruik.
     
  17. Richardoe

    Richardoe

    Lid geworden:
    15 jun 2014
    Berichten:
    441
    Locatie:
    Omg. Groningen
    Dan heb je denk ik de verkeerde, er staat er hier in deze thread 1 speciaal voor de zaggo, heb je die gebruikt (bestaat uit 3 scripts) als je 1 script hebt is het voor de naze32
     
  18. Yov

    Yov

    Lid geworden:
    28 sep 2010
    Berichten:
    497
    Ok ik had nog even heel vlug diagonaal dit topic doorlezen en had begrepen dat de laatste verzie op post 17 stond;)! (maar niet dat dit voor de naza 32 is ;)) ik heb alles inmiddels gevonden! :) waarvoor dank!

    Op de eerste pagina krijg ik de IOC mode telkens op MAN deze veranderd niet met de setting van de zender ? (ik heb nog niet uitvoerig kunnen testen wegens geen goed weer vandaag )
     
    Laatst bewerkt: 31 mei 2015
  19. Richardoe

    Richardoe

    Lid geworden:
    15 jun 2014
    Berichten:
    441
    Locatie:
    Omg. Groningen
    Waarschijnlijk heb je de mode dan op een andere switch zitten dan ik in dat script vanuit ga, kan je aanpassen in script en testen met opentx companion
     
  20. casperb71

    casperb71

    Lid geworden:
    5 feb 2012
    Berichten:
    285
    Locatie:
    Huizen
    Heb een modelaan gemaakt die overeen komt met die op de zender. De BMP en 3 lua-scripts heb ik in die map geplaatst en zie nu wel de "beperkte" data, maar GEEN afbeeldingen.
    In welke map plaats ik dan de bmp-files en zijn mij lua telemetriefiles files (30-10-2014) wel juist?

    lua01.jpg

    Zie ook geen voltage en andere data
     

Deel Deze Pagina