Switch to full style
Všechno co souvisí s modelářskými vysílači, výběr, programování, napájení
Odeslat odpověď

JETI LUA jazyk - skripty

úte 24.10.2017 22:53

Nenasel jsem tady nic blizsiho ohledne programovani aplikaci do vysilace JETI. Jelikoz mi neco chybelo a to u drona jak mam prepnute mody tak jsem si napsal jednoduchy skriptik, ktery mi to zobrazi. Urcite bzy to slo mnohem zdokonalit, ale na to, ze u toho sedim cca 2 hodiny mi to staci. Clovek musi nejak zacit. Cist tu dokumentaci LUA je otresne a pripada mi, ze ani debugger to nekdy nepobira a nebo netusim jak jej k tomu prinutit.

A tady je ten bastl. Na zaklade prepnuteho tripolohoveho prepinace to zobrazuje text. Prepinace se definuji prozatim jako lokalni promenne. Urcite by slo udelat pLoad a pSave, ale nejak se mi nedari. No a u toho jak je to prepnute staci v podminkach prohodit znamenka.

Kód:
local appName = "NazaV2 - FlightMode"
local flightMode
local iocMode
local sw_fm, sw_ioc

-- Load switch for flight mode
local function switch1Changed(value)
  sw_fm = value
  system.pSave("sw_fm", value)
end

-- Load switch for IOC mode
local function switch2Changed(value)
  sw_ioc = value
  system.pSave("sw_ioc", value)
end

local function getFlightMode(switch)
  local val_flightmode = system.getInputsVal(switch)
  if(val_flightmode) == 1 then
    return "GPS Atti"
  elseif(val_flightmode) == 0 then
    return "Atti"
  else
    return "Manual"
  end
end

local function getIOC(switch)
  local val_ioc = system.getInputsVal(switch)
  if(val_ioc)  == 1 then
    return "Home Lock"
  elseif (val_ioc) == 0 then
    return "Course Lock"
  else
    return "OFF"
  end
end

-- Initial form for setup switch
local function initForm()
  form.addRow(2)
  form.addLabel({label="Flight Mode switch"})
  form.addInputbox(sw_fm, true, switch1Changed)

  form.addRow(2)
  form.addLabel({label="IOC switch"})
  form.addInputbox(sw_ioc, true, switch2Changed)
end

-- Print interactive form in MAIN MENU
local function printForm()
  lcd.drawLine(0,50, 310,50)
  lcd.drawText(5,73,"Flight mode:")
  lcd.drawText(300 - lcd.getTextWidth(FONT_MAXI, getFlightMode(sw_fm)),60, getFlightMode(sw_fm), FONT_MAXI)

  lcd.drawText(5,118,"IOC:")
  lcd.drawText(300 - lcd.getTextWidth(FONT_MAXI, getIOC(sw_ioc)),105, getIOC(sw_ioc), FONT_MAXI)
end

-- Print Telemetry widget
local function printTelemetry1Form()
  lcd.drawText((151 - lcd.getTextWidth(FONT_BIG, getFlightMode(sw_fm)))/2, 10, getFlightMode(sw_fm), FONT_BIG)
  lcd.drawText((151 - lcd.getTextWidth(FONT_BIG, getIOC(sw_ioc)))/2, 35, getIOC(sw_ioc), FONT_BIG)
end

-- During initialization the application registers a form in side the main menu
local function init()
  system.registerForm(1, MENU_MAIN, appName, initForm, nil, printForm)
  system.registerTelemetry(1, appName, 2, printTelemetry1Form)
  sw_fm = system.pLoad("sw_fm")
  sw_ioc = system.pLoad("sw_ioc")
end

return {init=init, author="Petr Haton", version="1.0",name=appName}
Naposledy upravil hates dne pát 27.10.2017 20:13, celkově upraveno 1

Re: JETI LUA jazyk - skripty

stř 25.10.2017 7:33

Debugger používáš ten co je na RCgroups ?

A nechceš dat ten kód na GitHub ?


Jinak par veci k jetibLua ma Tero na stránkách - RCthoughts

Re: JETI LUA jazyk - skripty

stř 25.10.2017 14:26

Presne tento debugger pouzivam. Je ale takovej divnej. Hlavne nesedi prirazeni prepinaci v programu s prepinaci na radiu. Dale je to trosku rozsypane ale da se to zkousnout.

horsi je, ze pokud to chce clcovek nacpat do radia tak to musi mit pripojene ale na odzkouseni to musi zase odpojit z MASS STORAGE a tak porad dokola.

Re: JETI LUA jazyk - skripty

čtv 26.10.2017 21:51

hates píše:Presne tento debugger pouzivam. Je ale takovej divnej. Hlavne nesedi prirazeni prepinaci v programu s prepinaci na radiu. Dale je to trosku rozsypane ale da se to zkousnout.

horsi je, ze pokud to chce clcovek nacpat do radia tak to musi mit pripojene ale na odzkouseni to musi zase odpojit z MASS STORAGE a tak porad dokola.

Zkus si naistalovat JETI studio ze stránek jeti. Je tam emulátor DC-24 pro testování LUA scriptů. Dej prosím vědět zda funguje.

Re: JETI LUA jazyk - skripty

čtv 26.10.2017 23:12

kdyz jsem to zkousel drive tak jsem s tim mel problemy. Jinak vcera jsem ten skript zkusil prepsat do stavu, ze je ozne si zvolit prijimace a dalsi veci + v pripade stazeneho plynu to zacne rvat a hlasit. Po testu v debbugeru vse OK ale jak jsem to prenesl na druhe PC a pretahl do radia tak prestala appka fungovat.

Tak jsem zacal od zacatku a pridal jsem do puvodniho skriptu pouze moznost zvolit si prepinace. Bohuzel mi pripada ze to je nejake divne pLoad a pSave funguje pouze do te doby dokud je aktivni model. Staci radio vypnout a znovu zapnout nebo model zmeni a zmenit zpet a clovek o persistentni data prijde tak ze musi appku odstranit a znovu naloadovat. a nastavit.

Re: JETI LUA jazyk - skripty

čtv 26.10.2017 23:14

a pitome je ze jeti studio mi bezi na firemnim NB, ale tam mam zase zablokovane USB a BIOS tak ze nemam moznost pripojit radio jelikoz se chova jako Mass Storage/ Pokud by se chovalo jinak na jinem protokolo tak bych nemel problem. Stacilo by mi aby nepripojovalo pametovou kartu ale komunikovalo pres vlastni driver.

Re: JETI LUA jazyk - skripty

čtv 26.10.2017 23:39

tak jsem to vyskousel v jeti studio a chova se to korektne. Bohuzel v radiuu ee. Musim ten kod prelezt znovu.

Re: JETI LUA jazyk - skripty

pát 27.10.2017 20:12

Podarilo se. Nakonec jsem to upravil do stavu, ze je mozne si zvolit prepinace, na ktere to reaguje. Tento modul nedela to, ze by prepinal mody, ale je to spise o tom, ze clovek na radiu vi v jakem modu ma copteru. To ze jsem si to mohl prepinat a ukazuje mi to dioda je pekne, ale ja mam diodu tak, ze pokud mam kopteru ve vzduchu tak netusim co na ni blika a nebo pokud je ve vetsi vzdalenosti, tak ta didoda nemusi byt zretelna. Nastaveni polohy prepinacu si ale musi kazdy nastavit i s pomoci assistenta aby to melo spravne hlasky.

V puvodnim vlakne jsem ten skript upravil. Pokud by bylo mozne vkladat lua skripty tak jej klidne dam jako prilohu.
Odeslat odpověď