mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-07-01 01:57:52 +00:00
LOLI RX configuration script
This commit is contained in:
parent
b613345da4
commit
52e8d87ab1
@ -180,5 +180,5 @@
|
|||||||
79,0,WFLY2,RF20x,0,CH5,CH6,CH7,CH8,CH9,CH10
|
79,0,WFLY2,RF20x,0,CH5,CH6,CH7,CH8,CH9,CH10
|
||||||
80,0,E016Hv2,E016Hv2,1,TakLan,EmStop,Flip,Calib,HLess,RTH
|
80,0,E016Hv2,E016Hv2,1,TakLan,EmStop,Flip,Calib,HLess,RTH
|
||||||
81,0,E010r5,E010r5,1,Flip,LED,CALIB,HLess,RTH,GLIDE
|
81,0,E010r5,E010r5,1,Flip,LED,CALIB,HLess,RTH,GLIDE
|
||||||
82,0,LOLI,0,CH5,CH6,CH7,CH8,1SwSePpPw,2SwSePw,3SwSe,4SwSe,5SwSeSb,6SwSe,7SwSePw,8SwSe
|
82,0,LOLI,LOLI,0,CH5,CH6,CH7,CH8,1SwSePpPw,2SwSePw,3SwSe,4SwSe,5SwSeSb,6SwSe,7SwSePw,8SwSe
|
||||||
83,0,E129,E129,1,TakLan,EmStop,TrimA,TrimE,TrimR
|
83,0,E129,E129,1,TakLan,EmStop,TrimA,TrimE,TrimR
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
local toolName = "TNS|Multi chan namer|TNE"
|
local toolName = "TNS|Multi channels namer|TNE"
|
||||||
|
|
||||||
---- #########################################################################
|
---- #########################################################################
|
||||||
---- # #
|
---- # #
|
||||||
|
221
Lua_scripts/MultiLOLI.lua
Normal file
221
Lua_scripts/MultiLOLI.lua
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
|
||||||
|
local toolName = "TNS|Multi LOLI RX config|TNE"
|
||||||
|
|
||||||
|
---- #########################################################################
|
||||||
|
---- # #
|
||||||
|
---- # Copyright (C) OpenTX #
|
||||||
|
-----# #
|
||||||
|
---- # License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html #
|
||||||
|
---- # #
|
||||||
|
---- # This program is free software; you can redistribute it and/or modify #
|
||||||
|
---- # it under the terms of the GNU General Public License version 2 as #
|
||||||
|
---- # published by the Free Software Foundation. #
|
||||||
|
---- # #
|
||||||
|
---- # This program is distributed in the hope that it will be useful #
|
||||||
|
---- # but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||||
|
---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||||
|
---- # GNU General Public License for more details. #
|
||||||
|
---- # #
|
||||||
|
---- #########################################################################
|
||||||
|
|
||||||
|
local loli_nok = false
|
||||||
|
local channels={ { 768, "PWM", 100, 102, "PPM", 50, -768, "Servo", 0, -2048, "Switch", -100 }, -- CH1
|
||||||
|
{ 768, "PWM", 100, -768, "Servo", 0, -2048, "Switch", -100 }, -- CH2
|
||||||
|
{ -768, "Servo", 0, -2048, "Switch", -100 }, -- CH3
|
||||||
|
{ -768, "Servo", 0, -2048, "Switch", -100 }, -- CH4
|
||||||
|
{ 102, "SBUS", 50, -768, "Servo", 0, -2048, "Switch", -100 }, -- CH5
|
||||||
|
{ -768, "Servo", 0, -2048, "Switch", -100 }, -- CH6
|
||||||
|
{ 768, "PWM", 100, -768, "Servo", 0, -2048, "Switch", -100 }, -- CH7
|
||||||
|
{ -768, "Servo", 0, -2048, "Switch", -100 } } -- CH8
|
||||||
|
|
||||||
|
local sel = 1
|
||||||
|
local edit = false
|
||||||
|
|
||||||
|
local blink = 0
|
||||||
|
local BLINK_SPEED = 15
|
||||||
|
|
||||||
|
local function drawScreenTitle(title)
|
||||||
|
if LCD_W == 480 then
|
||||||
|
lcd.drawFilledRectangle(0, 0, LCD_W, 30, TITLE_BGCOLOR)
|
||||||
|
lcd.drawText(1, 5, title, MENU_TITLE_COLOR)
|
||||||
|
else
|
||||||
|
lcd.drawScreenTitle(title, 0, 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function LOLI_Draw_LCD(event)
|
||||||
|
local line = 0
|
||||||
|
|
||||||
|
lcd.clear()
|
||||||
|
|
||||||
|
--Display settings
|
||||||
|
local lcd_opt = 0
|
||||||
|
if LCD_W == 480 then
|
||||||
|
drawScreenTitle("Multi - LOLI RX configuration tool")
|
||||||
|
x_pos = 152
|
||||||
|
x_inc = 90
|
||||||
|
y_pos = 40
|
||||||
|
y_inc = 20
|
||||||
|
else
|
||||||
|
x_pos = 5
|
||||||
|
x_inc = 30
|
||||||
|
y_pos = 1
|
||||||
|
y_inc = 8
|
||||||
|
lcd_opt = SMLSIZE
|
||||||
|
end
|
||||||
|
|
||||||
|
--Multi Module detection
|
||||||
|
if loli_nok then
|
||||||
|
if LCD_W == 480 then
|
||||||
|
lcd.drawText(10,50,"The LOLI protocol is not selected...", lcd_opt)
|
||||||
|
else
|
||||||
|
--Draw on LCD_W=128
|
||||||
|
lcd.drawText(2,17,"LOLI protocol not selected...",SMLSIZE)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
--Display current config
|
||||||
|
if LCD_W == 480 then
|
||||||
|
line = line + 1
|
||||||
|
lcd.drawText(x_pos, y_pos+y_inc*line -2, "Channel", lcd_opt)
|
||||||
|
lcd.drawText(x_pos+x_inc, y_pos+y_inc*line -2, "Function", lcd_opt)
|
||||||
|
lcd.drawRectangle(x_pos-4, y_pos+y_inc*line -4 , 2*x_inc +2, 188)
|
||||||
|
lcd.drawLine(x_pos-4, y_pos+y_inc*line +18, x_pos-4 +2*x_inc +1, y_pos+y_inc*line +18, SOLID, 0)
|
||||||
|
lcd.drawLine(x_pos+x_inc -5, y_pos+y_inc*line -4, x_pos+x_inc -5, y_pos+y_inc*line -5 +188, SOLID, 0)
|
||||||
|
line = line + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local out
|
||||||
|
for i = 1, 8 do
|
||||||
|
out = getValue("ch"..(i+8))
|
||||||
|
lcd.drawText(x_pos, y_pos+y_inc*line, "CH"..i, lcd_opt)
|
||||||
|
for j = 1, #channels[i], 3 do
|
||||||
|
if out > channels[i][j] then
|
||||||
|
if sel == i then
|
||||||
|
invert = INVERS
|
||||||
|
if edit == true then
|
||||||
|
blink = blink + 1
|
||||||
|
if blink > BLINK_SPEED then
|
||||||
|
invert = 0
|
||||||
|
if blink > BLINK_SPEED * 2 then
|
||||||
|
blink = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
invert = 0
|
||||||
|
end
|
||||||
|
lcd.drawText(x_pos+x_inc, y_pos+y_inc*line, channels[i][j+1], lcd_opt + invert)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
line = line + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function LOLI_Change_Value(dir)
|
||||||
|
local pos = 0
|
||||||
|
local out
|
||||||
|
--look for the current position
|
||||||
|
out = getValue("ch"..(sel+8))
|
||||||
|
for j = 1, #channels[sel], 3 do
|
||||||
|
if out > channels[sel][j] then
|
||||||
|
pos = j
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--decrement or increment
|
||||||
|
if dir < 0 and pos > 1 then
|
||||||
|
pos = pos - 3
|
||||||
|
elseif dir > 0 and pos + 3 < #channels[sel] then
|
||||||
|
pos = pos + 3
|
||||||
|
else
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
--delete all mixers for the selected channel
|
||||||
|
local num_mix = model.getMixesCount(sel-1 +8)
|
||||||
|
for i = 1, num_mix do
|
||||||
|
model.deleteMix(sel-1 +8, 0);
|
||||||
|
end
|
||||||
|
|
||||||
|
--create new mixer
|
||||||
|
local source_max = getFieldInfo("cyc1")
|
||||||
|
|
||||||
|
local val = { name = channels[sel][pos+1],
|
||||||
|
source = source_max.id - 1, -- MAX=100 on TX16S
|
||||||
|
weight = channels[sel][pos+2],
|
||||||
|
offset = 0,
|
||||||
|
switch = 0,
|
||||||
|
multiplex = 0,
|
||||||
|
curveType = 0,
|
||||||
|
curveValue = 0,
|
||||||
|
flightModes = 0,
|
||||||
|
carryTrim = false,
|
||||||
|
mixWarn = 0,
|
||||||
|
delayUp = 0,
|
||||||
|
delayDown = 0,
|
||||||
|
speedUp = 0,
|
||||||
|
speedDown = 0 }
|
||||||
|
model.insertMix(sel-1 +8, 0, val)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function LOLI_Menu(event)
|
||||||
|
if event == EVT_VIRTUAL_NEXT then
|
||||||
|
if edit == false then
|
||||||
|
-- not changing a value
|
||||||
|
if sel < 8 then
|
||||||
|
sel = sel + 1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- need to inc the value
|
||||||
|
LOLI_Change_Value(1)
|
||||||
|
end
|
||||||
|
elseif event == EVT_VIRTUAL_PREV then
|
||||||
|
if edit == false then
|
||||||
|
-- not changing a value
|
||||||
|
if sel > 1 then
|
||||||
|
sel = sel - 1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- need to dec the value
|
||||||
|
LOLI_Change_Value(-1)
|
||||||
|
end
|
||||||
|
elseif event == EVT_VIRTUAL_ENTER then
|
||||||
|
if edit == false then
|
||||||
|
edit = true
|
||||||
|
blink = BLINK_SPEED
|
||||||
|
else
|
||||||
|
edit = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Init
|
||||||
|
local function LOLI_Init()
|
||||||
|
local module_conf = model.getModule(0)
|
||||||
|
if module_conf["Type"] ~= 6 or module_conf["protocol"] ~= 82 then
|
||||||
|
module_conf = model.getModule(1)
|
||||||
|
if module_conf["Type"] ~= 6 or module_conf["protocol"] ~= 82 then
|
||||||
|
loli_nok = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Main
|
||||||
|
local function LOLI_Run(event)
|
||||||
|
if event == nil then
|
||||||
|
error("Cannot be run as a model script!")
|
||||||
|
return 2
|
||||||
|
elseif event == EVT_VIRTUAL_EXIT then
|
||||||
|
return 2
|
||||||
|
else
|
||||||
|
LOLI_Menu(event)
|
||||||
|
LOLI_Draw_LCD(event)
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return { init=LOLI_Init, run=LOLI_Run }
|
@ -13,7 +13,7 @@ If you like this project and want to support further development please consider
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
## MultiChannelsUpdater.lua
|
## MultiChannelsUpdater
|
||||||
|
|
||||||
Automatically name the channels based on the loaded Multi protocol and sub protocol including the module channel order convention.
|
Automatically name the channels based on the loaded Multi protocol and sub protocol including the module channel order convention.
|
||||||
|
|
||||||
@ -21,6 +21,24 @@ Need OpenTX 2.3.9 or above. Located on the radio SD card under \SCRIPTS\TOOLS. T
|
|||||||
|
|
||||||
[](https://www.youtube.com/watch?v=L58ayXuewyA)
|
[](https://www.youtube.com/watch?v=L58ayXuewyA)
|
||||||
|
|
||||||
|
## MultiLOLI
|
||||||
|
|
||||||
|
Script to set the channels function (switch, servo, pwm, ppm, sbus) on a [LOLI RX](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/blob/master/Protocols_Details.md#loli---82)
|
||||||
|
|
||||||
|
[](https://www.youtube.com/watch?v=e698pQxfv-A)
|
||||||
|
|
||||||
|
## Graupner HoTT
|
||||||
|
|
||||||
|
Enable text configuration of the HoTT RX and sensors: Vario, GPS, ESC, GAM and EAM.
|
||||||
|
|
||||||
|
Need OpenTX 2.3.9 or above. Located on the radio SD card under \SCRIPTS\TOOLS.
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- Menu/MDL/Model is used to cycle through the detected sensors.
|
||||||
|
- It's normal to lose the telemetry feed while using the text mode configuration. Telemetry will resume properly if the script is exited by doing a short press on the exit button.
|
||||||
|
|
||||||
|
[](https://www.youtube.com/watch?v=81wd8NlF3Qw)
|
||||||
|
|
||||||
## DSM Forward Programming
|
## DSM Forward Programming
|
||||||
|
|
||||||
This is a work in progress. It's only available for color screens (Horus, TX16S, T16, T18...).
|
This is a work in progress. It's only available for color screens (Horus, TX16S, T16, T18...).
|
||||||
@ -36,15 +54,3 @@ Need OpenTX 2.3.10 nightly or above. Located on the radio SD card under \SCRIPTS
|
|||||||
Lua telemetry script from [feathering on RCGroups](https://www.rcgroups.com/forums/showpost.php?p=46033341&postcount=20728) to facilitate setting the Gain Parameters on the Blade 150S FBL. It doesn't use Forward Programming but instead it just reads telemetry data from the Multi-module and displays it on a telemetry display.
|
Lua telemetry script from [feathering on RCGroups](https://www.rcgroups.com/forums/showpost.php?p=46033341&postcount=20728) to facilitate setting the Gain Parameters on the Blade 150S FBL. It doesn't use Forward Programming but instead it just reads telemetry data from the Multi-module and displays it on a telemetry display.
|
||||||
|
|
||||||
It is very similar to the Telemetry Based Text Generator functionality on Spektrum transmitters where one doesn't need to rely on the angle of the swashplate to determine selection/value.
|
It is very similar to the Telemetry Based Text Generator functionality on Spektrum transmitters where one doesn't need to rely on the angle of the swashplate to determine selection/value.
|
||||||
|
|
||||||
## Graupner HoTT.ua
|
|
||||||
|
|
||||||
Enable text configuration of the HoTT RX and sensors: Vario, GPS, ESC, GAM and EAM.
|
|
||||||
|
|
||||||
Need OpenTX 2.3.9 or above. Located on the radio SD card under \SCRIPTS\TOOLS.
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
- Menu/MDL/Model is used to cycle through the detected sensors.
|
|
||||||
- It's normal to lose the telemetry feed while using the text mode configuration. Telemetry will resume properly if the script is exited by doing a short press on the exit button.
|
|
||||||
|
|
||||||
[](https://www.youtube.com/watch?v=81wd8NlF3Qw)
|
|
||||||
|
@ -1322,10 +1322,10 @@ Features:
|
|||||||
Config on | For channel | Switch | Servo | PPM | SBUS | PWM
|
Config on | For channel | Switch | Servo | PPM | SBUS | PWM
|
||||||
----|-----|-------|----|------|---|------
|
----|-----|-------|----|------|---|------
|
||||||
CH9 | CH1 | -100% | 0% | +50% | - | +100%
|
CH9 | CH1 | -100% | 0% | +50% | - | +100%
|
||||||
CH10| CH2 | -100% | 0% | - | - | -
|
CH10| CH2 | -100% | 0% | - | - | +100%
|
||||||
CH11| CH3 | -100% | 0% | - | - | -
|
CH11| CH3 | -100% | 0% | - | - | -
|
||||||
CH12| CH4 | -100% | 0% | - | - | -
|
CH12| CH4 | -100% | 0% | - | - | -
|
||||||
CH13| CH5 | -100% | 0% | - | +50% | +100%
|
CH13| CH5 | -100% | 0% | - | +50% | -
|
||||||
CH14| CH6 | -100% | 0% | | - | -
|
CH14| CH6 | -100% | 0% | | - | -
|
||||||
CH15| CH7 | -100% | 0% | - | - | +100%
|
CH15| CH7 | -100% | 0% | - | - | +100%
|
||||||
CH16| CH8 | -100% | 0% | - | - | -
|
CH16| CH8 | -100% | 0% | - | - | -
|
||||||
|
Loading…
x
Reference in New Issue
Block a user