1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-17 13:25:22 +03:00

Merge pull request #1423 from iNavFlight/MrD-Mixer-improvements

Updated fixed wing mixer to improve the ease of use
This commit is contained in:
Paweł Spychalski 2022-01-25 09:11:00 +01:00 committed by GitHub
commit cb07674c3f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 50 additions and 58 deletions

View file

@ -3574,9 +3574,6 @@
"platformConfiguration": { "platformConfiguration": {
"message": "Platform configuration" "message": "Platform configuration"
}, },
"platformHasFlaps": {
"message": "Has flaps"
},
"mixerPreset": { "mixerPreset": {
"message": "Mixer preset" "message": "Mixer preset"
}, },

View file

@ -999,7 +999,7 @@ var FC = {
'RC Channel 8', // 11 'RC Channel 8', // 11
'Gimbal Pitch', // 12 'Gimbal Pitch', // 12
'Gimbal Roll', // 13 'Gimbal Roll', // 13
'Flaps', // 14 'Flaperon Mode', // 14
'RC Channel 9', // 15 'RC Channel 9', // 15
'RC Channel 10', // 16 'RC Channel 10', // 16
'RC Channel 11', // 17 'RC Channel 11', // 17

View file

@ -2,10 +2,12 @@
const SERVO_GIMBAL_PITCH = 0, const SERVO_GIMBAL_PITCH = 0,
SERVO_GIMBAL_ROLL = 1, SERVO_GIMBAL_ROLL = 1,
SERVO_ELEVATOR = 2, SERVO_ELEVATOR = 1,
SERVO_FLAPPERON_1 = 3, SERVO_ELEVON_1 = 1,
SERVO_FLAPPERON_2 = 4, SERVO_ELEVON_2 = 2,
SERVO_RUDDER = 5, SERVO_FLAPPERON_1 = 2,
SERVO_FLAPPERON_2 = 3,
SERVO_RUDDER = 4,
SERVO_BICOPTER_LEFT = 4, SERVO_BICOPTER_LEFT = 4,
SERVO_BICOPTER_RIGHT = 5, SERVO_BICOPTER_RIGHT = 5,
SERVO_DUALCOPTER_LEFT = 4, SERVO_DUALCOPTER_LEFT = 4,
@ -162,10 +164,10 @@ const mixerList = [
new MotorMixRule(1.0, 0.0, 0.0, 0.0), new MotorMixRule(1.0, 0.0, 0.0, 0.0),
], ],
servoMixer: [ servoMixer: [
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 50, 0), new ServoMixRule(SERVO_ELEVON_1, INPUT_STABILIZED_ROLL, 50, 0),
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_PITCH, 50, 0), new ServoMixRule(SERVO_ELEVON_1, INPUT_STABILIZED_PITCH, 50, 0),
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, -50, 0), new ServoMixRule(SERVO_ELEVON_2, INPUT_STABILIZED_ROLL, -50, 0),
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_PITCH, 50, 0), new ServoMixRule(SERVO_ELEVON_2, INPUT_STABILIZED_PITCH, 50, 0),
] ]
}, // 8 }, // 8
{ {
@ -181,10 +183,10 @@ const mixerList = [
new MotorMixRule(1.0, 0.0, 0.0, -0.1) new MotorMixRule(1.0, 0.0, 0.0, -0.1)
], ],
servoMixer: [ servoMixer: [
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 50, 0), new ServoMixRule(SERVO_ELEVON_1, INPUT_STABILIZED_ROLL, 50, 0),
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_PITCH, 50, 0), new ServoMixRule(SERVO_ELEVON_1, INPUT_STABILIZED_PITCH, 50, 0),
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, -50, 0), new ServoMixRule(SERVO_ELEVON_2, INPUT_STABILIZED_ROLL, -50, 0),
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_PITCH, 50, 0), new ServoMixRule(SERVO_ELEVON_2, INPUT_STABILIZED_PITCH, 50, 0),
] ]
}, // 27 }, // 27
{ {
@ -289,6 +291,7 @@ const mixerList = [
enabled: true, enabled: true,
legacy: true, legacy: true,
platform: PLATFORM_AIRPLANE, platform: PLATFORM_AIRPLANE,
hasFlaps: true,
motorMixer: [ motorMixer: [
new MotorMixRule(1.0, 0.0, 0.0, 0.0), new MotorMixRule(1.0, 0.0, 0.0, 0.0),
new MotorMixRule(1.0, 0.0, 0.0, 0.0), new MotorMixRule(1.0, 0.0, 0.0, 0.0),
@ -296,9 +299,9 @@ const mixerList = [
servoMixer: [ servoMixer: [
new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0), new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0),
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0), new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0),
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0), /*new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0),*/
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0), new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0),
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, -100, 0), /*new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, -100, 0),*/
new ServoMixRule(SERVO_RUDDER, INPUT_STABILIZED_YAW, 100, 0), new ServoMixRule(SERVO_RUDDER, INPUT_STABILIZED_YAW, 100, 0),
] ]
}, // 14 }, // 14
@ -448,6 +451,7 @@ const mixerList = [
enabled: true, enabled: true,
legacy: false, legacy: false,
platform: PLATFORM_AIRPLANE, platform: PLATFORM_AIRPLANE,
hasFlaps: true,
motorMixer: [ motorMixer: [
new MotorMixRule(1.0, 0.0, 0.0, 0.3), new MotorMixRule(1.0, 0.0, 0.0, 0.3),
new MotorMixRule(1.0, 0.0, 0.0, -0.3) new MotorMixRule(1.0, 0.0, 0.0, -0.3)
@ -455,9 +459,9 @@ const mixerList = [
servoMixer: [ servoMixer: [
new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0), new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0),
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0), new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0),
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0), /*new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0),*/
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0), new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0),
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, -100, 0), /*new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, -100, 0),*/
new ServoMixRule(SERVO_RUDDER, INPUT_STABILIZED_YAW, 100, 0), new ServoMixRule(SERVO_RUDDER, INPUT_STABILIZED_YAW, 100, 0),
] ]
}, },
@ -469,16 +473,19 @@ const mixerList = [
enabled: true, enabled: true,
legacy: false, legacy: false,
platform: PLATFORM_AIRPLANE, platform: PLATFORM_AIRPLANE,
hasFlaps: true,
motorMixer: [ motorMixer: [
new MotorMixRule(1.0, 0.0, 0.0, 0.0), new MotorMixRule(1.0, 0.0, 0.0, 0.0),
], ],
servoMixer: [ servoMixer: [
new ServoMixRule(1, INPUT_STABILIZED_ROLL, 100, 0),
/*new ServoMixRule(1, INPUT_FEATURE_FLAPS, 100, 0),*/
new ServoMixRule(2, INPUT_STABILIZED_ROLL, 100, 0), new ServoMixRule(2, INPUT_STABILIZED_ROLL, 100, 0),
new ServoMixRule(3, INPUT_STABILIZED_ROLL, 100, 0), /*new ServoMixRule(2, INPUT_FEATURE_FLAPS, 100, 0),*/
new ServoMixRule(4, INPUT_STABILIZED_PITCH, 50, 0), new ServoMixRule(3, INPUT_STABILIZED_PITCH, 50, 0),
new ServoMixRule(4, INPUT_STABILIZED_YAW, -50, 0), new ServoMixRule(3, INPUT_STABILIZED_YAW, -50, 0),
new ServoMixRule(5, INPUT_STABILIZED_PITCH, -50, 0), new ServoMixRule(4, INPUT_STABILIZED_PITCH, -50, 0),
new ServoMixRule(5, INPUT_STABILIZED_YAW, -50, 0) new ServoMixRule(4, INPUT_STABILIZED_YAW, -50, 0)
] ]
}, },
{ {
@ -493,11 +500,11 @@ const mixerList = [
new MotorMixRule(1.0, 0.0, 0.0, 0.0), new MotorMixRule(1.0, 0.0, 0.0, 0.0),
], ],
servoMixer: [ servoMixer: [
new ServoMixRule(2, INPUT_STABILIZED_ROLL, 100, 0), new ServoMixRule(1, INPUT_STABILIZED_ROLL, 100, 0),
new ServoMixRule(3, INPUT_STABILIZED_PITCH, 50, 0), new ServoMixRule(2, INPUT_STABILIZED_PITCH, 50, 0),
new ServoMixRule(2, INPUT_STABILIZED_YAW, -50, 0),
new ServoMixRule(3, INPUT_STABILIZED_PITCH, -50, 0),
new ServoMixRule(3, INPUT_STABILIZED_YAW, -50, 0), new ServoMixRule(3, INPUT_STABILIZED_YAW, -50, 0),
new ServoMixRule(4, INPUT_STABILIZED_PITCH, -50, 0),
new ServoMixRule(4, INPUT_STABILIZED_YAW, -50, 0),
] ]
}, },
{ {
@ -508,13 +515,16 @@ const mixerList = [
enabled: true, enabled: true,
legacy: false, legacy: false,
platform: PLATFORM_AIRPLANE, platform: PLATFORM_AIRPLANE,
hasFlaps: true,
motorMixer: [ motorMixer: [
new MotorMixRule(1.0, 0.0, 0.0, 0.0), new MotorMixRule(1.0, 0.0, 0.0, 0.0),
], ],
servoMixer: [ servoMixer: [
new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0), new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0),
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0), new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0),
/*new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0),*/
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0), new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0),
/*new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, 100, 0),*/
] ]
}, },
{ {

View file

@ -84,6 +84,12 @@
} }
.mixer_btn_add { .mixer_btn_add {
float: right;
margin: 15px 0 10px;
}
.mixer_btn_logic {
float: left;
margin: 15px 0 10px; margin: 15px 0 10px;
} }

View file

@ -15,12 +15,6 @@
<span data-i18n="platformType"></span> <span data-i18n="platformType"></span>
</label> </label>
</div> </div>
<div id="has-flaps-wrapper" class="checkbox">
<input type="checkbox" id="has-flaps" class="toggle" />
<label for="has-flaps">
<span data-i18n="platformHasFlaps"></span>
</label>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -118,12 +112,12 @@
</tbody> </tbody>
</table> </table>
<div class="btn default_btn narrow pull-left mixer_btn_add">
<a href="#" data-role="role-logic-conditions-open" data-i18n="tabLogicConditions"></a>
</div>
<div class="btn default_btn narrow pull-right green mixer_btn_add"> <div class="btn default_btn narrow pull-right green mixer_btn_add">
<a href="#" data-role="role-servo-add" data-i18n="servoMixerAdd"></a> <a href="#" data-role="role-servo-add" data-i18n="servoMixerAdd"></a>
</div> </div>
<div class="btn default_btn narrow pull-left mixer_btn_logic">
<a href="#" data-role="role-logic-conditions-open" data-i18n="tabLogicConditions"></a>
</div>
</div> </div>
</div> </div>

View file

@ -124,6 +124,10 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
GUI.fillSelect($row.find(".mix-rule-input"), FC.getServoMixInputNames(), servoRule.getInput()); GUI.fillSelect($row.find(".mix-rule-input"), FC.getServoMixInputNames(), servoRule.getInput());
if (!MIXER_CONFIG.hasFlaps) {
$row.find(".mix-rule-input").children('option[value="14"]').remove();
}
$row.find(".mix-rule-input").val(servoRule.getInput()).change(function () { $row.find(".mix-rule-input").val(servoRule.getInput()).change(function () {
servoRule.setInput($(this).val()); servoRule.setInput($(this).val());
updateFixedValueVisibility($row, $(this)); updateFixedValueVisibility($row, $(this));
@ -272,8 +276,6 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
let $platformSelect = $('#platform-type'), let $platformSelect = $('#platform-type'),
platforms = helper.platform.getList(), platforms = helper.platform.getList(),
$hasFlapsWrapper = $('#has-flaps-wrapper'),
$hasFlaps = $('#has-flaps'),
$mixerPreset = $('#mixer-preset'), $mixerPreset = $('#mixer-preset'),
$wizardButton = $("#mixer-wizard"); $wizardButton = $("#mixer-wizard");
@ -354,30 +356,12 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
} }
} }
$hasFlaps.prop("checked", MIXER_CONFIG.hasFlaps);
$hasFlaps.change(function () {
if ($(this).is(":checked")) {
MIXER_CONFIG.hasFlaps = 1;
} else {
MIXER_CONFIG.hasFlaps = 0;
}
});
$hasFlaps.change();
$platformSelect.change(function () { $platformSelect.change(function () {
MIXER_CONFIG.platformType = parseInt($platformSelect.val(), 10); MIXER_CONFIG.platformType = parseInt($platformSelect.val(), 10);
currentPlatform = helper.platform.getById(MIXER_CONFIG.platformType); currentPlatform = helper.platform.getById(MIXER_CONFIG.platformType);
var $platformSelectParent = $platformSelect.parent('.select'); var $platformSelectParent = $platformSelect.parent('.select');
if (currentPlatform.flapsPossible) {
$hasFlapsWrapper.removeClass('is-hidden');
$platformSelectParent.removeClass('no-bottom-border');
} else {
$hasFlapsWrapper.addClass('is-hidden');
$platformSelectParent.addClass('no-bottom-border');
}
fillMixerPreset(); fillMixerPreset();
$mixerPreset.change(); $mixerPreset.change();
}); });
@ -430,6 +414,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
$('#load-mixer-button').click(function () { $('#load-mixer-button').click(function () {
helper.mixer.loadServoRules(currentMixerPreset); helper.mixer.loadServoRules(currentMixerPreset);
helper.mixer.loadMotorRules(currentMixerPreset); helper.mixer.loadMotorRules(currentMixerPreset);
MIXER_CONFIG.hasFlaps = (currentMixerPreset.hasFlaps === true) ? true : false;
renderServoMixRules(); renderServoMixRules();
renderMotorMixRules(); renderMotorMixRules();
renderOutputMapping(); renderOutputMapping();