Všechno co souvisí s modelářskými vysílači, výběr, programování, napájení
ú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
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
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.
č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.
č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.
č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.
č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.
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.