1
0
Fork 0
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:
SteveCEvans 2018-04-17 13:23:44 +01:00 committed by Michael Keller
parent a1d10b49f4
commit 6f088d0fd2
4 changed files with 296 additions and 41 deletions

View file

@ -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);
}