mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-14 20:10:18 +03:00
Add PID adjustment from AUX transmitter channel (#5584)
* Scale PIDs using aux channels * Add control via variables and documentation * Use USE_TXPID * Removed OWNER_TXPID * Use PWM_RANGE_MIDDLE * Fix typos * Move Tx PID arrays into pidProfile_t * Move macro to pidUpdateRate function * Enable TXPID on REVONANO * Add support for direct setting of adjustments from aux channel * Change variable name from adjustmentScale to adjustmentScale to avoid confusion * Update documentation * Change variable name from adjustmentScale to adjustmentScale to avoid confusion * Only adjust settings if adjustment channel has changed value * Fix formatting * Use pidAudioModes_e type in ADJUSTMENT_PID_AUDIO setting. Only allow absolute override of settings of ADJUSTMENT_MODE_STEP. * Add example 6 * Fix checking of adjustment mode * Fix USE_PID_AUDIO code. Broke SPRACINGF7DUAL.
This commit is contained in:
parent
a1d10b49f4
commit
6f088d0fd2
4 changed files with 296 additions and 41 deletions
|
@ -1053,7 +1053,7 @@ static void cliSerialPassthrough(char *cmdline)
|
|||
|
||||
static void printAdjustmentRange(uint8_t dumpMask, const adjustmentRange_t *adjustmentRanges, const adjustmentRange_t *defaultAdjustmentRanges)
|
||||
{
|
||||
const char *format = "adjrange %u %u %u %u %u %u %u";
|
||||
const char *format = "adjrange %u %u %u %u %u %u %u %u %u";
|
||||
// print out adjustment ranges channel settings
|
||||
for (uint32_t i = 0; i < MAX_ADJUSTMENT_RANGE_COUNT; i++) {
|
||||
const adjustmentRange_t *ar = &adjustmentRanges[i];
|
||||
|
@ -1065,7 +1065,9 @@ static void printAdjustmentRange(uint8_t dumpMask, const adjustmentRange_t *adju
|
|||
&& ar->range.endStep == arDefault->range.endStep
|
||||
&& ar->adjustmentFunction == arDefault->adjustmentFunction
|
||||
&& ar->auxSwitchChannelIndex == arDefault->auxSwitchChannelIndex
|
||||
&& ar->adjustmentIndex == arDefault->adjustmentIndex;
|
||||
&& ar->adjustmentIndex == arDefault->adjustmentIndex
|
||||
&& ar->adjustmentCenter == arDefault->adjustmentCenter
|
||||
&& ar->adjustmentScale == arDefault->adjustmentScale;
|
||||
cliDefaultPrintLinef(dumpMask, equalsDefault, format,
|
||||
i,
|
||||
arDefault->adjustmentIndex,
|
||||
|
@ -1073,7 +1075,9 @@ static void printAdjustmentRange(uint8_t dumpMask, const adjustmentRange_t *adju
|
|||
MODE_STEP_TO_CHANNEL_VALUE(arDefault->range.startStep),
|
||||
MODE_STEP_TO_CHANNEL_VALUE(arDefault->range.endStep),
|
||||
arDefault->adjustmentFunction,
|
||||
arDefault->auxSwitchChannelIndex
|
||||
arDefault->auxSwitchChannelIndex,
|
||||
arDefault->adjustmentCenter,
|
||||
arDefault->adjustmentScale
|
||||
);
|
||||
}
|
||||
cliDumpPrintLinef(dumpMask, equalsDefault, format,
|
||||
|
@ -1083,7 +1087,9 @@ static void printAdjustmentRange(uint8_t dumpMask, const adjustmentRange_t *adju
|
|||
MODE_STEP_TO_CHANNEL_VALUE(ar->range.startStep),
|
||||
MODE_STEP_TO_CHANNEL_VALUE(ar->range.endStep),
|
||||
ar->adjustmentFunction,
|
||||
ar->auxSwitchChannelIndex
|
||||
ar->auxSwitchChannelIndex,
|
||||
ar->adjustmentCenter,
|
||||
ar->adjustmentScale
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1142,6 +1148,23 @@ static void cliAdjustmentRange(char *cmdline)
|
|||
memset(ar, 0, sizeof(adjustmentRange_t));
|
||||
cliShowParseError();
|
||||
}
|
||||
|
||||
// Optional arguments
|
||||
ar->adjustmentCenter = 0;
|
||||
ar->adjustmentScale = 0;
|
||||
|
||||
ptr = nextArg(ptr);
|
||||
if (ptr) {
|
||||
val = atoi(ptr);
|
||||
ar->adjustmentCenter = val;
|
||||
validArgumentCount++;
|
||||
}
|
||||
ptr = nextArg(ptr);
|
||||
if (ptr) {
|
||||
val = atoi(ptr);
|
||||
ar->adjustmentScale = val;
|
||||
validArgumentCount++;
|
||||
}
|
||||
} else {
|
||||
cliShowArgumentRangeError("index", 0, MAX_ADJUSTMENT_RANGE_COUNT - 1);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue