Changes after reviews
parent
2e0334c114
commit
48659bd6ec
|
@ -202,7 +202,7 @@
|
|||
},
|
||||
|
||||
"sensorDataFlashNotFound": {
|
||||
"message": "No dataflash <br />chip found",
|
||||
"message": "No dataflash <br>chip found",
|
||||
"description": "Text of the dataflash image in the header of the page."
|
||||
},
|
||||
"sensorDataFlashFreeSpace": {
|
||||
|
@ -255,10 +255,10 @@
|
|||
"message": "Show update notifications for unstable versions of the configurator"
|
||||
},
|
||||
"configuratorUpdateNotice": {
|
||||
"message": "You are using an outdated version of the <b>Betaflight Configurator</b>.<br />$t(configuratorUpdateHelp.message)"
|
||||
"message": "You are using an outdated version of the <b>Betaflight Configurator</b>.<br>$t(configuratorUpdateHelp.message)"
|
||||
},
|
||||
"configuratorUpdateHelp": {
|
||||
"message": "Using a newer version of the firmware with an outdated version of Configurator means that changing some settings will result in a <strong>corrupted firmware configuration and a non-working craft</strong>. Furthermore, some features of the firmware will only be configurable in CLI.<br /><strong>Betaflight Configurator version <b>$1</b> is available for download online</strong>, please visit <a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\">this page</a> to download and install the latest version with fixes and improvements.<br />Please close the configurator window before updating."
|
||||
"message": "Using a newer version of the firmware with an outdated version of Configurator means that changing some settings will result in a <strong>corrupted firmware configuration and a non-working craft</strong>. Furthermore, some features of the firmware will only be configurable in CLI.<br><strong>Betaflight Configurator version <b>$1</b> is available for download online</strong>, please visit <a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\">this page</a> to download and install the latest version with fixes and improvements.<br>Please close the configurator window before updating."
|
||||
},
|
||||
"configuratorUpdateWebsite": {
|
||||
"message": "Go to Release Website"
|
||||
|
@ -534,13 +534,13 @@
|
|||
"message": "Please <strong>fix these problems before attempting to fly your craft</strong>."
|
||||
},
|
||||
"reportProblemsDialogAPI_VERSION_MAX_SUPPORTED": {
|
||||
"message": "<strong>the version of configurator that you are using ($3) is older than the firmware you are using ($4)</strong>.<br />$t(configuratorUpdateHelp.message)"
|
||||
"message": "<strong>the version of configurator that you are using ($3) is older than the firmware you are using ($4)</strong>.<br>$t(configuratorUpdateHelp.message)"
|
||||
},
|
||||
"reportProblemsDialogMOTOR_PROTOCOL_DISABLED": {
|
||||
"message": "<strong>there is no motor output protocol selected</strong>.<br />Please select a motor output protocol appropriate for your ESCs in '$t(configurationEscFeatures.message)' on the '$t(tabMotorTesting.message)' tab.<br />$t(escProtocolDisabledMessage.message)"
|
||||
"message": "<strong>there is no motor output protocol selected</strong>.<br>Please select a motor output protocol appropriate for your ESCs in '$t(configurationEscFeatures.message)' on the '$t(tabMotorTesting.message)' tab.<br>$t(escProtocolDisabledMessage.message)"
|
||||
},
|
||||
"reportProblemsDialogACC_NEEDS_CALIBRATION": {
|
||||
"message": "<strong>the accelerometer is enabled but it is not calibrated</strong>.<br />If you plan to use the accelerometer, please follow the instructions for '$t(initialSetupButtonCalibrateAccel.message)' on the '$t(tabSetup.message)' tab. If any function that requires the accelerometer (auto level modes, GPS rescue, ...) is enabled, arming of the craft will be disabled until the accelerometer has been calibrated.<br />If you are not planning on using the accelerometer it is recommended that you disable it in '$t(configurationSystem.message)' on the '$t(tabConfiguration.message)' tab."
|
||||
"message": "<strong>the accelerometer is enabled but it is not calibrated</strong>.<br>If you plan to use the accelerometer, please follow the instructions for '$t(initialSetupButtonCalibrateAccel.message)' on the '$t(tabSetup.message)' tab. If any function that requires the accelerometer (auto level modes, GPS rescue, ...) is enabled, arming of the craft will be disabled until the accelerometer has been calibrated.<br>If you are not planning on using the accelerometer it is recommended that you disable it in '$t(configurationSystem.message)' on the '$t(tabConfiguration.message)' tab."
|
||||
},
|
||||
|
||||
"infoVersionOs": {
|
||||
|
@ -763,7 +763,7 @@
|
|||
},
|
||||
|
||||
"initialSetupBackupAndRestoreApiVersion": {
|
||||
"message": "<span class=\"message-negative\">Backup and restore functionality disabled.</span> You have firmware with API version <span class=\"message-negative\">$1</span>, backup and restore requires <span class=\"message-positive\">$2</span>. Please backup your settings via the CLI, see Betaflight documentation for procedure."
|
||||
"message": "<span class=\"message-negative\">Backup and restore functionality disabled.</span> You have firmware with API version <span class=\"message-negative\">$1</span>, backup and restore requires <span class=\"message-positive\">$2</span>. Please backup your settings via the CLI, see Betaflight documentation for procedure."
|
||||
},
|
||||
"initialSetupButtonCalibrateAccel": {
|
||||
"message": "Calibrate Accelerometer"
|
||||
|
@ -1192,7 +1192,7 @@
|
|||
"message": "ESC/Motor Features"
|
||||
},
|
||||
"configurationFeaturesHelp": {
|
||||
"message": "<strong>Note:</strong> Not all combinations of features are valid. When the flight controller firmware detects invalid feature combinations conflicting features will be disabled.<br /><strong>Note:</strong> Configure serial ports <span class=\"message-negative\">before</span> enabling the features that will use the ports."
|
||||
"message": "<strong>Note:</strong> Not all combinations of features are valid. When the flight controller firmware detects invalid feature combinations conflicting features will be disabled.<br /><strong>Note:</strong> Configure serial ports <span class=\"message-negative\">before</span> enabling the features that will use the ports."
|
||||
},
|
||||
"configurationSerialRXHelp": {
|
||||
"message": "<strong>Note:</strong> Remember to configure a Serial Port (via Ports tab) and choose a Serial Receiver Provider when using RX_SERIAL feature."
|
||||
|
@ -1282,7 +1282,7 @@
|
|||
"message": "Motor Idle Throttle Value [percent]"
|
||||
},
|
||||
"configurationDigitalIdlePercentHelp": {
|
||||
"message": "The 'DShot idle' value is the percent of maximum throttle that is sent to the ESCs when the throttle at minimum stick position and the craft is armed. Increase it to gain more idle speed and avoid desyncs. Too high and the craft feels floaty."
|
||||
"message": "The 'DShot idle' value is the percent of maximum throttle that is sent to the ESCs when the throttle at minimum stick position and the craft is armed. Increase it to gain more idle speed and avoid desyncs. Too high and the craft feels floaty."
|
||||
},
|
||||
"configurationMotorPoles": {
|
||||
"message": "Motor poles",
|
||||
|
@ -1493,7 +1493,7 @@
|
|||
"message": "Dynamic Notch values change"
|
||||
},
|
||||
"dialogDynFiltersChangeNote": {
|
||||
"message": "<span class=\"message-negative\"><b>WARNING: Some dynamic notch values have been changed to default values</b></span> because the RPM filtering has been activated/deactivated.<br /> Please, check before flying."
|
||||
"message": "<span class=\"message-negative\"><b>WARNING: Some dynamic notch values have been changed to default values</b></span> because the RPM filtering has been activated/deactivated.<br> Please, check before flying."
|
||||
},
|
||||
"dialogDynFiltersConfirm": {
|
||||
"message": "OK"
|
||||
|
@ -1517,16 +1517,16 @@
|
|||
"message": "Peripherals"
|
||||
},
|
||||
"portsHelp": {
|
||||
"message": "<strong>Note:</strong> not all combinations are valid. When the flight controller firmware detects this the serial port configuration will be reset."
|
||||
"message": "<strong>Note:</strong> not all combinations are valid. When the flight controller firmware detects this the serial port configuration will be reset."
|
||||
},
|
||||
"portsVtxTableNotSet": {
|
||||
"message": "<span class=\"message-negative\">WARNING:</span> The VTX table has not been set up correctly and without it VTX control will not be possible. Please set up the VTX table in $t(tabVtx.message) tab."
|
||||
},
|
||||
"portsMSPHelp": {
|
||||
"message": "<strong>Note:</strong> Do <span class=\"message-negative\">NOT</span> disable MSP on the first serial port unless you know what you are doing. You may have to reflash and erase your configuration if you do."
|
||||
"message": "<strong>Note:</strong> Do <span class=\"message-negative\">NOT</span> disable MSP on the first serial port unless you know what you are doing. You may have to reflash and erase your configuration if you do."
|
||||
},
|
||||
"portsFirmwareUpgradeRequired": {
|
||||
"message": "Firmware upgrade <span class=\"message-negative\">required</span>. Serial port configurations of firmware < 1.8.0 is not supported."
|
||||
"message": "Firmware upgrade <span class=\"message-negative\">required</span>. Serial port configurations of firmware < 1.8.0 is not supported."
|
||||
},
|
||||
"portsButtonSave": {
|
||||
"message": "Save and Reboot"
|
||||
|
@ -1692,7 +1692,7 @@
|
|||
"description": "Auto Factor parameter for RC smoothing"
|
||||
},
|
||||
"receiverRcSmoothingAutoFactorHelp": {
|
||||
"message": "Adjusts the Auto factor calculation, 10 is the default factor to delay ratio. Increasing the number will smooth RC inputs more, while also adding delay. This may be useful for unreliable RC connections or for cinematic flying.<br />Be careful with numbers approaching 50, input delay will become noticeable.<br />Use the CLI command rc_smoothing_info while TX and RX are powered to see the automatically calculated RC smoothing cutoffs. ",
|
||||
"message": "Adjusts the Auto factor calculation, 10 is the default factor to delay ratio. Increasing the number will smooth RC inputs more, while also adding delay. This may be useful for unreliable RC connections or for cinematic flying.<br>Be careful with numbers approaching 50, input delay will become noticeable.<br>Use the CLI command rc_smoothing_info while TX and RX are powered to see the automatically calculated RC smoothing cutoffs. ",
|
||||
"description": "Auto Factor parameter help message"
|
||||
},
|
||||
"receiverRcFeedforwardTypeSelect": {
|
||||
|
@ -1786,7 +1786,7 @@
|
|||
"message": "Transition"
|
||||
},
|
||||
"pidTuningFeedforwardTransitionHelp": {
|
||||
"message": "With this parameter, the Feedforward term can be reduced near the center of the sticks, which results in smoother end of flips and rolls.<br /> The value represents a point of stick deflection: 0 - stick centered, 1 - full deflection. When the stick is above that point, Feedforward is kept constant at its configured value. When the stick is positioned below that point, Feedforward is reduced proportionally, reaching 0 at the stick center position.<br /> Value of 1 gives maximum smoothing effect, while value of 0 keeps the Feedforward fixed at its configured value over the whole stick range."
|
||||
"message": "With this parameter, the Feedforward term can be reduced near the center of the sticks, which results in smoother end of flips and rolls.<br>The value represents a point of stick deflection: 0 - stick centered, 1 - full deflection. When the stick is above that point, Feedforward is kept constant at its configured value. When the stick is positioned below that point, Feedforward is reduced proportionally, reaching 0 at the stick center position.<br>Value of 1 gives maximum smoothing effect, while value of 0 keeps the Feedforward fixed at its configured value over the whole stick range."
|
||||
},
|
||||
"pidTuningDtermSetpointTransition": {
|
||||
"message": "D Setpoint transition"
|
||||
|
@ -1795,10 +1795,10 @@
|
|||
"message": "D Setpoint Weight"
|
||||
},
|
||||
"pidTuningDtermSetpointTransitionHelp": {
|
||||
"message": "With this parameter, D Setpoint Weight can be reduced near the center of the sticks, which results in smoother end of flips and rolls.<br /> The value represents a point of stick deflection: 0 - stick centered, 1 - full deflection. When the stick is above that point, Setpoint Weight is kept constant at its configured value. When the stick is positioned below that point, Setpoint Weight is reduced proportionally, reaching 0 at the stick center position.<br /> Value of 1 gives maximum smoothing effect, while value of 0 keeps the Setpoint Weight fixed at its configured value over the whole stick range."
|
||||
"message": "With this parameter, D Setpoint Weight can be reduced near the center of the sticks, which results in smoother end of flips and rolls.<br> The value represents a point of stick deflection: 0 - stick centered, 1 - full deflection. When the stick is above that point, Setpoint Weight is kept constant at its configured value. When the stick is positioned below that point, Setpoint Weight is reduced proportionally, reaching 0 at the stick center position.<br>Value of 1 gives maximum smoothing effect, while value of 0 keeps the Setpoint Weight fixed at its configured value over the whole stick range."
|
||||
},
|
||||
"pidTuningDtermSetpointHelp": {
|
||||
"message": "This parameter determines the stick accelerating effect within derivative component.<br /> Value of 0 equals to old Measuemenent method where D only tracks gyro, while value of 1 equals to old Error method with equal gyro and stick tracking ratio.<br /> Lower value equals to slower/smoother stick response, while higher value provides more stick acceleration response.<br /> Note that RC interpolation is recommended to be enabled with higher values to prevent control kicks making noise."
|
||||
"message": "This parameter determines the stick accelerating effect within derivative component.<br> Value of 0 equals to old Measuemenent method where D only tracks gyro, while value of 1 equals to old Error method with equal gyro and stick tracking ratio.<br> Lower value equals to slower/smoother stick response, while higher value provides more stick acceleration response.<br>Note that RC interpolation is recommended to be enabled with higher values to prevent control kicks making noise."
|
||||
},
|
||||
"pidTuningDtermSetpointTransitionWarning": {
|
||||
"message": "<span class=\"message-negative\"><strong>$t(warningTitle.message):<\/strong> The use of a D Setpoint transition greater than 0 and less than 0.1 is highly discouraged. Doing so may lead instability and reduced stick responsiveness as the sticks cross the centre point.<\/span>"
|
||||
|
@ -1834,14 +1834,14 @@
|
|||
"message": "Proportional"
|
||||
},
|
||||
"pidTuningProportionalHelp": {
|
||||
"message": "Controls the strength of how tightly the machine tracks the sticks (the Setpoint).<br /><br />Higher value (gains) provide tighter tracking, but can cause overshoot if too high in proportion to the Derivative (D-term). Think of the P-term as the spring on a car.",
|
||||
"message": "Controls the strength of how tightly the machine tracks the sticks (the Setpoint).<br /><br />Higher value (gains) provide tighter tracking, but can cause overshoot if too high in proportion to the Derivative (D-term). Think of the P-term as the spring on a car.",
|
||||
"description": "Proportional Term helpicon message on PID table titlebar"
|
||||
},
|
||||
"pidTuningIntegral": {
|
||||
"message": "Integral"
|
||||
},
|
||||
"pidTuningIntegralHelp": {
|
||||
"message": "Controls the strength of how tightly the machine holds the overall position of the Setpoint.<br />Similar to Proportional, but for longer biases on the craft such as an offset center of gravity (CoG) or persistent outside influence (steady wind).<br /><br />Higher gains provide tighter tracking (e.g.: in sweeping turns), but can make the craft feel stiff for commanded stick inputs.<br />If extremely high in proportion to the D-term, can cause slow oscillations.",
|
||||
"message": "Controls the strength of how tightly the machine holds the overall position of the Setpoint.<br>Similar to Proportional, but for longer biases on the craft such as an offset center of gravity (CoG) or persistent outside influence (steady wind).<br /><br />Higher gains provide tighter tracking (e.g.: in sweeping turns), but can make the craft feel stiff for commanded stick inputs.<br>If extremely high in proportion to the D-term, can cause slow oscillations.",
|
||||
"description": "Integral Term helpicon message on PID table titlebar"
|
||||
},
|
||||
"pidTuningDerivative": {
|
||||
|
@ -1858,7 +1858,7 @@
|
|||
"message": "Feedforward"
|
||||
},
|
||||
"pidTuningFeedforwardHelp": {
|
||||
"message": "Is an additional pushing term (spring) based on stick input. FF helps the P-term push the craft for commanded stick moves.<br /><br />The P-term pushes based on the difference between the commanded Setpoint (deg/sec) and the gyro reading of current rotational rate (deg/sec). FF pushes based on the commanded change of the sticks alone.<br /><br />Higher values (gains) will result in a more sharp machine response to stick input.<br />Too high of values may result in some overshoot, increased motor heat, and motor saturation (where motors can not keep up with the desired rate of change).<br />Lower or zero (0) values will result in a slower and smoother response to stick inputs.",
|
||||
"message": "Is an additional pushing term (spring) based on stick input. FF helps the P-term push the craft for commanded stick moves.<br><br>The P-term pushes based on the difference between the commanded Setpoint (deg/sec) and the gyro reading of current rotational rate (deg/sec). FF pushes based on the commanded change of the sticks alone.<br><br>Higher values (gains) will result in a more sharp machine response to stick input.<br>Too high of values may result in some overshoot, increased motor heat, and motor saturation (where motors can not keep up with the desired rate of change).<br>Lower or zero (0) values will result in a slower and smoother response to stick inputs.",
|
||||
"description": "Feedforward Term helpicon message on PID table titlebar"
|
||||
},
|
||||
"pidTuningMaxRateWarning": {
|
||||
|
@ -1966,9 +1966,6 @@
|
|||
"pidTuningResetProfile": {
|
||||
"message": "Reset all profile values"
|
||||
},
|
||||
"pidTuningResetWarning": {
|
||||
"message": "<strong>Warning:</strong><br /><br />Resets profile values to defaults and <strong class=\"message-negative\">permanently saves</strong> PID and D Filter settings.<br /><br /><strong class=\"message-negative\">This action is irreversible.</strong>"
|
||||
},
|
||||
"pidTuningProfileReset": {
|
||||
"message": "Loaded default profile values."
|
||||
},
|
||||
|
@ -1990,11 +1987,15 @@
|
|||
"pidTuningEepromSaved": {
|
||||
"message": "EEPROM <span class=\"message-positive\">saved</span>"
|
||||
},
|
||||
|
||||
"receiverHelp": {
|
||||
"message": "Please read receiver chapter of the documentation. Configure serial port (if required), receiver mode (serial/ppm/pwm), provider (for serial receivers), bind receiver, set channel map, configure channel endpoints/range on TX so that all channels go from ~1000 to ~2000. Set midpoint (default 1500), trim channels to 1500, configure stick deadband, verify behaviour when TX is off or out of range.<br /><span class=\"message-negative\">IMPORTANT:</span> Before flying read failsafe chapter of documentation and configure failsafe."
|
||||
},
|
||||
"tuningHelp": {
|
||||
"message": "<b>Tuning tips</b><br /><span class=\"message-negative\">IMPORTANT:</span> It is important to verify motor temperatures during first flights. The higher the filter value gets the better it may fly, but you also will get more noise into the motors. <br />Default value of 100Hz is optimal, but for noiser setups you can try lowering Dterm filter to 50Hz and possibly also the gyro filter."
|
||||
"message": "<b>Tuning tips</b><br /><span class=\"message-negative\">IMPORTANT:</span> It is important to verify motor temperatures during first flights. The higher the filter value gets the better it may fly, but you also will get more noise into the motors. <br>Default value of 100Hz is optimal, but for noiser setups you can try lowering Dterm filter to 50Hz and possibly also the gyro filter."
|
||||
},
|
||||
"tuningHelpSliders": {
|
||||
"message": "We recommend using the sliders to adjust filtering. <br />Make relatively small changes, test fly and check motor temperature after each change.<br />Moving the sliders to the right gives higher cutoff values; this may improve prop-wash, but lets more noise through to the motors, making them hotter, possibly hot enough to burn out.<br />Most clean builds with rpm filtering will be OK with gyro filtering hard right.<br />In contrast, be very cautious when moving D filter sliders to the right!<br /> Unusually high or low filter settings may cause flyaways on arming. The defaults are safe for typical 5\" quads.<br /><strong>Note:</strong> Changing profiles will only change the D-term filter settings. Gyro filter settings are the same for all profiles.",
|
||||
"message": "We recommend using the sliders to adjust filtering. <br>Make relatively small changes, test fly and check motor temperature after each change.<br>Moving the sliders to the right gives higher cutoff values; this may improve prop-wash, but lets more noise through to the motors, making them hotter, possibly hot enough to burn out.<br>Most clean builds with rpm filtering will be OK with gyro filtering hard right.<br>In contrast, be very cautious when moving D filter sliders to the right!<br> Unusually high or low filter settings may cause flyaways on arming. The defaults are safe for typical 5\" quads.<br><strong>Note:</strong> Changing profiles will only change the D-term filter settings. Gyro filter settings are the same for all profiles.",
|
||||
"description": "Filter tuning subtab note"
|
||||
},
|
||||
"filterWarning": {
|
||||
|
@ -2005,12 +2006,9 @@
|
|||
"description": "Pidtuning slider mode can be OFF, RP or RPY"
|
||||
},
|
||||
"pidTuningSliderModeHelp": {
|
||||
"message": "<strong>Pid Tuning Slider Mode</strong><br /><br />Pidtuning slider mode can be:<br /><br />• OFF - no sliders, enter values manually<br />• RP - sliders control Roll and Pitch only, enter Yaw values manually<br />• RPY - sliders control all PID values<br /><br /><strong class=\"message-negative\">Important:</strong><br /><br />Please save after changing slider mode before changing other settings."
|
||||
"message": "<strong>Pid Tuning Slider Mode</strong><br><br>Pidtuning slider mode can be:<br><br>• OFF - no sliders, enter values manually<br>• RP - sliders control Roll and Pitch only, enter Yaw values manually<br>• RPY - sliders control all PID values<br><br><strong class=\"message-negative\">Important:</strong><br><br>Please save after changing slider mode before changing other settings."
|
||||
},
|
||||
|
||||
"receiverHelp": {
|
||||
"message": "Please read receiver chapter of the documentation. Configure serial port (if required), receiver mode (serial/ppm/pwm), provider (for serial receivers), bind receiver, set channel map, configure channel endpoints/range on TX so that all channels go from ~1000 to ~2000. Set midpoint (default 1500), trim channels to 1500, configure stick deadband, verify behaviour when TX is off or out of range.<br /><span class=\"message-negative\">IMPORTANT:</span> Before flying read failsafe chapter of documentation and configure failsafe."
|
||||
},
|
||||
"receiverThrottleMid": {
|
||||
"message": "Throttle MID"
|
||||
},
|
||||
|
@ -2307,7 +2305,7 @@
|
|||
"message": "Your flight controller's firmware does not support transponder functionality."
|
||||
},
|
||||
"transponderInformation": {
|
||||
"message": "Transponders systems allow race organizers to time your laps. The transponder is fitted to your aircraft and when your aircraft passes the timing gate the track-side receiver registers your code and records your laptime. When fitting an IR based transponder your should ensure that it points outward from your aircraft towards the track-side receivers and that the light beam is not obstructed by your airframe, battery-straps, cables, propellers, etc."
|
||||
"message": "Transponders systems allow race organizers to time your laps. The transponder is fitted to your aircraft and when your aircraft passes the timing gate the track-side receiver registers your code and records your laptime. When fitting an IR based transponder your should ensure that it points outward from your aircraft towards the track-side receivers and that the light beam is not obstructed by your airframe, battery-straps, cables, propellers, etc."
|
||||
},
|
||||
"transponderConfigurationType": {
|
||||
"message": "Transponder type"
|
||||
|
@ -2346,7 +2344,7 @@
|
|||
"message": "Hexadecimal digits only, 0-9, A-F"
|
||||
},
|
||||
"transponderHelp1": {
|
||||
"message": "Configure your transponder code here. Note: Only valid codes will be recognised by race timing systems. Valid transponder codes can be obtained from <a href=\"http://seriouslypro.com/transponder-codes\" target=\"_blank\" rel=\"noopener noreferrer\">Seriously Pro</a>."
|
||||
"message": "Configure your transponder code here. Note: Only valid codes will be recognised by race timing systems. Valid transponder codes can be obtained from <a href=\"http://seriouslypro.com/transponder-codes\" target=\"_blank\" rel=\"noopener noreferrer\">Seriously Pro</a>."
|
||||
},
|
||||
"transponderHelp2": {
|
||||
"message": "For more information please visit <a href=\"http://www.arcitimer.com/\" title=\"aRCiTimer\" target=\"_blank\" rel=\"noopener noreferrer\">aRCiTimer site</a>"
|
||||
|
@ -2751,7 +2749,7 @@
|
|||
},
|
||||
|
||||
"cliInfo": {
|
||||
"message": "<strong>Note:</strong> Leaving CLI tab or pressing Disconnect will <strong>automatically</strong> send \"<strong>exit</strong>\" to the board. With the latest firmware this will make the controller <strong>restart</strong> and unsaved changes will be <strong>lost</strong>.<p><strong><span class=\"message-negative\">Warning:</span></strong> Some commands in CLI can result in arbitrary signals being sent on the motor output pins. This can cause motors to spin up if a battery is connected. Therefore it is highly recommended to make sure that <strong>no battery is connected before entering commands in CLI</strong>."
|
||||
"message": "<strong>Note:</strong> Leaving CLI tab or pressing Disconnect will <strong>automatically</strong> send \"<strong>exit</strong>\" to the board. With the latest firmware this will make the controller <strong>restart</strong> and unsaved changes will be <strong>lost</strong>.<p><strong><span class=\"message-negative\">Warning:</span></strong> Some commands in CLI can result in arbitrary signals being sent on the motor output pins. This can cause motors to spin up if a battery is connected. Therefore it is highly recommended to make sure that <strong>no battery is connected before entering commands in CLI</strong>."
|
||||
},
|
||||
"cliInputPlaceholder": {
|
||||
"message": "Write your command here. Press Tab for AutoComplete."
|
||||
|
@ -2884,7 +2882,7 @@
|
|||
"message": "Save flash to file... (unsupported)"
|
||||
},
|
||||
"dataflashSavetoFileNote": {
|
||||
"message": "Directly saving flash to file is slow and inherently prone to error / file corruption.<br />In some cases it will work for small files, but this is not supported and support requests for it will be closed without comment - use Mass Storage mode instead."
|
||||
"message": "Directly saving flash to file is slow and inherently prone to error / file corruption.<br>In some cases it will work for small files, but this is not supported and support requests for it will be closed without comment - use Mass Storage mode instead."
|
||||
},
|
||||
"dataflashSaveFileDepreciationHint": {
|
||||
"message": "This method is slow and inherently prone to error / file corruption, because the MSP connection itself has intrinsic, fundamental limitations that make it unsuitable for file transfers. It may work for small log files only. Do not create support requests if file transfers fail when saved using this method. The recommended method is to use '<b>$t(onboardLoggingRebootMscText.message)</b>' (below) to activate the Mass Storage Mode, and access your flight controller as a storage device to download the log files."
|
||||
|
@ -2927,7 +2925,7 @@
|
|||
"message": "No card inserted"
|
||||
},
|
||||
"sdcardStatusReboot": {
|
||||
"message": "Fatal error<br />Reboot to retry"
|
||||
"message": "Fatal error<br>Reboot to retry"
|
||||
},
|
||||
"sdcardStatusReady": {
|
||||
"message": "Card ready"
|
||||
|
@ -2979,7 +2977,7 @@
|
|||
"message": "Download manually."
|
||||
},
|
||||
"firmwareFlasherTargetWarning": {
|
||||
"message": "<span class=\"message-negative\">IMPORTANT</span>: Ensure you flash a file appropriate for your target. Flashing a binary for the wrong target can cause <span class=\"message-negative\">bad</span> things to happen."
|
||||
"message": "<span class=\"message-negative\">IMPORTANT</span>: Ensure you flash a file appropriate for your target. Flashing a binary for the wrong target can cause <span class=\"message-negative\">bad</span> things to happen."
|
||||
},
|
||||
|
||||
"firmwareFlasherPath": {
|
||||
|
@ -3010,7 +3008,7 @@
|
|||
"message": "Select or auto-detect your board to see available online firmware releases - Select the correct firmware appropriate for your board."
|
||||
},
|
||||
"firmwareFlasherOnlineSelectBoardHint": {
|
||||
"message": "Starting with Betaflight 4.1, Betaflight is introducing support for <strong>Unified Targets</strong>. The concept of Unified Targets means that the same firmware .hex file can be used for all boards using the same MCU (F4, F7). To make the different boards work with the same firmware, a specific configuration file is deployed alongside the firmware when a Unified Target is flashed.<br />This version of Betaflight configurator supports flashing of Unified Targets with the respective board specific configurations in one step. The different firmware types that are available for each board are shown in the drop-down as follows:<br /><br /><strong><board name></strong> or<br /><strong><board name> (Legacy)</strong>:<br />non-unified target, or pre-4.1 versions of the firmware for Unified Targets.<br /><br /><strong><board name> (<manufacturer id>)</strong>:<br />(4 character manufacturer id)<br />Unified Target.<br /><br /><strong>Please use Unified Targets where available.</strong> If you encounter problems using a Unified Target, please open an <a href=\"https://github.com/betaflight/betaflight/issues\" target=\"_blank\" rel=\"noopener noreferrer\">issue</a> and then use the non-unified target until the issue has been resolved."
|
||||
"message": "Starting with Betaflight 4.1, Betaflight is introducing support for <strong>Unified Targets</strong>. The concept of Unified Targets means that the same firmware .hex file can be used for all boards using the same MCU (F4, F7). To make the different boards work with the same firmware, a specific configuration file is deployed alongside the firmware when a Unified Target is flashed.<br>This version of Betaflight configurator supports flashing of Unified Targets with the respective board specific configurations in one step. The different firmware types that are available for each board are shown in the drop-down as follows:<br /><br /><strong><board name></strong> or<br><strong><board name> (Legacy)</strong>:<br>non-unified target, or pre-4.1 versions of the firmware for Unified Targets.<br /><br /><strong><board name> (<manufacturer id>)</strong>:<br>(4 character manufacturer id)<br>Unified Target.<br /><br /><strong>Please use Unified Targets where available.</strong> If you encounter problems using a Unified Target, please open an <a href=\"https://github.com/betaflight/betaflight/issues\" target=\"_blank\" rel=\"noopener noreferrer\">issue</a> and then use the non-unified target until the issue has been resolved."
|
||||
},
|
||||
"firmwareFlasherOnlineSelectFirmwareVersionDescription": {
|
||||
"message": "Select firmware version for your board."
|
||||
|
@ -3581,7 +3579,7 @@
|
|||
"message": "Scale Factor [%]"
|
||||
},
|
||||
"pidTuningMotorLimitHelp": {
|
||||
"message": "Motor output linear scale factor (as percentage). Reduces ESC current and motor heat when using higher cell count batteries, e.g. When using a 6S battery on a craft that has motors, props and tuning designed for 4S, try setting the value at 66%; when using a 4S battery on a craft intended for 3S, try 75%.<br />Always make sure that all of your components can support the voltage of the battery you are using."
|
||||
"message": "Motor output linear scale factor (as percentage). Reduces ESC current and motor heat when using higher cell count batteries, e.g. When using a 6S battery on a craft that has motors, props and tuning designed for 4S, try setting the value at 66%; when using a 4S battery on a craft intended for 3S, try 75%.<br>Always make sure that all of your components can support the voltage of the battery you are using."
|
||||
},
|
||||
"pidTuningCellCount": {
|
||||
"message": "Cell Count"
|
||||
|
@ -3593,7 +3591,8 @@
|
|||
"message": "Profile independent Filter Settings"
|
||||
},
|
||||
"pidTuningFilterSlidersHelp": {
|
||||
"message": "Sliders to adjust the gyro and D-term filters.<br /><br />Stronger filtering (sliders to left, lower cutoff frequencies) keeps motors cooler by removing more noise, but also increases gyro signal delay (phase delay) to the PID loop. This may worsen prop-wash and can make resonant oscillations worse. Less responsive quads eg X-Class often do well with stronger filtering. <br /><br />Less Filtering (sliders to the right, higher cutoff frequencies) reduces gyro signal delay, and often improves propwash. Moving the gyro lowpass filter right is usually OK, but motors may get warm. Moving the D filter to the right is usually not required, and can quickly result in very hot motors."
|
||||
"message": "Sliders to adjust the gyro and D-term filters.<br><br>Stronger filtering (sliders to left, lower cutoff frequencies) keeps motors cooler by removing more noise, but also increases gyro signal delay (phase delay) to the PID loop. This may worsen prop-wash and can make resonant oscillations worse. Less responsive quads eg X-Class often do well with stronger filtering. <br><br>Less Filtering (sliders to the right, higher cutoff frequencies) reduces gyro signal delay, and often improves propwash. Moving the gyro lowpass filter right is usually OK, but motors may get warm. Moving the D filter to the right is usually not required, and can quickly result in very hot motors.",
|
||||
"description": "Overall helpicon message for filter tuning sliders"
|
||||
},
|
||||
"pidTuningSliderLowFiltering": {
|
||||
"message": "Less Filtering",
|
||||
|
@ -3643,6 +3642,14 @@
|
|||
"message": "<strong>Note:</strong> Sliders range is restricted because you are not in expert mode. This range should be suitable for most builds and beginners.",
|
||||
"description": "Sliders restricted message"
|
||||
},
|
||||
"pidTuningPidSlidersNonExpertMode": {
|
||||
"message": "<strong>Note:</strong> Slider access and range is restricted because you are not in expert mode. Basic mode should be suitable for most builds and beginners.",
|
||||
"description": "Firmware Pid sliders restricted message"
|
||||
},
|
||||
"pidTuningFilterSlidersNonExpertMode": {
|
||||
"message": "<strong>Note:</strong> Sliders range is restricted because you are not in expert mode. This range should be suitable for most builds and beginners.",
|
||||
"description": "Firmware filter sliders restricted message"
|
||||
},
|
||||
"pidTuningSliderLow": {
|
||||
"message": "Low",
|
||||
"description": "Tuning Slider Low header"
|
||||
|
@ -3737,7 +3744,7 @@
|
|||
"description": "Pitch-Roll Ratio tuning slider helpicon message"
|
||||
},
|
||||
"pidTuningPitchPIGainSlider": {
|
||||
"message": "Pitch Tracking:<br /><i><small>Pitch:Roll P & I</small></i>",
|
||||
"message": "Pitch Tracking:<br><i><small>Pitch:Roll P & I & FF</small></i>",
|
||||
"description": "Pitch P & I slider label"
|
||||
},
|
||||
"pidTuningPitchPIGainSliderHelp": {
|
||||
|
@ -3982,7 +3989,7 @@
|
|||
"description": "Cutoff value of the I Term Relax"
|
||||
},
|
||||
"pidTuningItermRelaxCutoffHelp": {
|
||||
"message": "Lower values suppress bounce-back after flips in low authority quads, high values increase high-rate turn precision for racing.<br />Set to 30-40 for racing, 15 for responsive freestyle builds, 10 for heavier freestyle quads, 3-5 for X-class."
|
||||
"message": "Lower values suppress bounce-back after flips in low authority quads, high values increase high-rate turn precision for racing.<br>Set to 30-40 for racing, 15 for responsive freestyle builds, 10 for heavier freestyle quads, 3-5 for X-class."
|
||||
},
|
||||
"pidTuningAbsoluteControlGain": {
|
||||
"message": "Absolute Control"
|
||||
|
@ -4235,7 +4242,7 @@
|
|||
"message": "To calibrate, use a multimeter to measure the actual voltage / current draw on your craft (with a battery plugged in), and enter the values below. Then, with the same battery still plugged in, click [Calibrate]."
|
||||
},
|
||||
"powerCalibrationManagerNote": {
|
||||
"message": "<strong>Note:</strong> Before calibrating the scale make sure that divider and multiplier for voltage and offset for amperage is set properly.<br />Leaving the values at 0 will not apply calibration.</br><strong>Remember to remove propellers before plugging in a battery!</strong>"
|
||||
"message": "<strong>Note:</strong> Before calibrating the scale make sure that divider and multiplier for voltage and offset for amperage is set properly.<br>Leaving the values at 0 will not apply calibration.</br><strong>Remember to remove propellers before plugging in a battery!</strong>"
|
||||
},
|
||||
"powerCalibrationManagerWarning": {
|
||||
"message": "<span class=\"message-negative\">Warning:</span> The battery <span class=\"message-negative\">is not plugged in</span> or voltage and amperage meter sources are <span class=\"message-negative\">not set properly.</span> Make sure that the voltage and/or amperage are reading a value above 0. Otherwise you will not be able to calibrate using this tool."
|
||||
|
@ -4256,7 +4263,7 @@
|
|||
"message": "Discard Calibration"
|
||||
},
|
||||
"powerCalibrationConfirmHelp": {
|
||||
"message": "New calibrated scales are shown here. <br />Applying them will set the scales but <strong>will not save them.</strong></br> <br />After saving make sure that the new voltage and current are correct.</br>"
|
||||
"message": "New calibrated scales are shown here. <br>Applying them will set the scales but <strong>will not save them.</strong></br> <br>After saving make sure that the new voltage and current are correct.</br>"
|
||||
},
|
||||
"powerVoltageHead": {
|
||||
"message": "Voltage Meter"
|
||||
|
@ -5136,7 +5143,7 @@
|
|||
"description": "One of the elements of the OSD"
|
||||
},
|
||||
"osdDescElementEfficiency": {
|
||||
"message": "Instantaneous battery consumption in mAh/distance. (Requires valid GPS fix)"
|
||||
"message": "Instantaneous battery consumption in mAh/distance. (Requires valid GPS fix)"
|
||||
},
|
||||
"osdTextTotalFlights": {
|
||||
"message": "Total flights",
|
||||
|
@ -5584,7 +5591,7 @@
|
|||
},
|
||||
|
||||
"vtxHelp": {
|
||||
"message": "Here you can configure the values for your Video Transmitter (VTX). You can view and change the transmission values, including the VTX Tables, if the flight controller and the VTX support it.<br />To set up your VTX use the following steps:<br />1. Go to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/betaflight/betaflight/wiki/VTX-tables\">this</a> page;<br />2. Find the appropriate VTX configuration file for your country and your VTX model and download it;<br />3. Click '$t(vtxButtonLoadFile.message)' below, select the VTX configuration file, load it;<br />4. Verify that the settings are correct;<br />5. Click '$t(vtxButtonSave.message)' to store the VTX settings on the flight controller.<br />6. Optionally click '$t(vtxButtonSaveLua.message)' to save a lua configuration file you can use with the betaflight lua scripts (See more <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/betaflight/betaflight-tx-lua-scripts/\">here</a>.)",
|
||||
"message": "Here you can configure the values for your Video Transmitter (VTX). You can view and change the transmission values, including the VTX Tables, if the flight controller and the VTX support it.<br>To set up your VTX use the following steps:<br>1. Go to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/betaflight/betaflight/wiki/VTX-tables\">this</a> page;<br>2. Find the appropriate VTX configuration file for your country and your VTX model and download it;<br>3. Click '$t(vtxButtonLoadFile.message)' below, select the VTX configuration file, load it;<br>4. Verify that the settings are correct;<br>5. Click '$t(vtxButtonSave.message)' to store the VTX settings on the flight controller.<br>6. Optionally click '$t(vtxButtonSaveLua.message)' to save a lua configuration file you can use with the betaflight lua scripts (See more <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/betaflight/betaflight-tx-lua-scripts/\">here</a>.)",
|
||||
"description": "Introduction message in the VTX tab"
|
||||
},
|
||||
"vtxMessageNotSupported": {
|
||||
|
@ -5752,7 +5759,7 @@
|
|||
"description": "Help for the number of power levels field of the VTX Table element in the VTX tab"
|
||||
},
|
||||
"vtxTablePowerLevelsTableHelp": {
|
||||
"message": "This table represents the different values of power that can be used for the VTX. They are divided into two: <br /><b>- $t(vtxTablePowerLevelsValue.message):</b> each power level requires a value that is defined by the hardware manufacturer. Ask your manufacturer for the correct value or consult the Betaflight wiki of VTX Tables to grab some samples. <br /><b>- $t(vtxTablePowerLevelsLabel.message):</b> you can put here the label you want for each power level value. It can be numbers (25, 200, 600, 1.2), letters (OFF, MIN, MAX) or a mix of them. <br /><br />You must configure <b>only</b> the power levels that are legal at your country.",
|
||||
"message": "This table represents the different values of power that can be used for the VTX. They are divided into two: <br><b>- $t(vtxTablePowerLevelsValue.message):</b> each power level requires a value that is defined by the hardware manufacturer. Ask your manufacturer for the correct value or consult the Betaflight wiki of VTX Tables to grab some samples. <br><b>- $t(vtxTablePowerLevelsLabel.message):</b> you can put here the label you want for each power level value. It can be numbers (25, 200, 600, 1.2), letters (OFF, MIN, MAX) or a mix of them. <br /><br />You must configure <b>only</b> the power levels that are legal at your country.",
|
||||
"description": "Help for the table of power levels (value-label) that appears in the VTX tab"
|
||||
},
|
||||
"vtxTablePowerLevelsValue": {
|
||||
|
@ -5788,7 +5795,7 @@
|
|||
"description": "Text of one of the titles of the VTX Table element in the VTX tab"
|
||||
},
|
||||
"vtxTableBandsChannelsTableHelp": {
|
||||
"message": "This table represents all the frequencies that can be used for your VTX. You can have several bands and for each band you must configure:<br /><b>- $t(vtxTableBandTitleName.message):</b> Name that you want to assign to this band, like BOSCAM_A, FATSHARK or RACEBAND.<br /><b>- $t(vtxTableBandTitleLetter.message):</b> Short letter that references the band.<br /><b>- $t(vtxTableBandTitleFactory.message):</b> This indicates if it is a factory band. If enabled Betaflight sends to the VTX a band and channel number. The VTX will then use its built-in frequency table and the frequencies configured here are only to show the value in the OSD and other places. If it is not enabled, then Betaflight will send to the VTX the real frequency configured here.<br /><b>- Frequencies:</b> Frequencies for this band.<br /><br />Remember that not all frequencies are legal at your country. You must put a value of <b>zero</b> to each frequency index that you are not allowed to use to disable it.",
|
||||
"message": "This table represents all the frequencies that can be used for your VTX. You can have several bands and for each band you must configure:<br><b>- $t(vtxTableBandTitleName.message):</b> Name that you want to assign to this band, like BOSCAM_A, FATSHARK or RACEBAND.<br><b>- $t(vtxTableBandTitleLetter.message):</b> Short letter that references the band.<br><b>- $t(vtxTableBandTitleFactory.message):</b> This indicates if it is a factory band. If enabled Betaflight sends to the VTX a band and channel number. The VTX will then use its built-in frequency table and the frequencies configured here are only to show the value in the OSD and other places. If it is not enabled, then Betaflight will send to the VTX the real frequency configured here.<br><b>- Frequencies:</b> Frequencies for this band.<br /><br />Remember that not all frequencies are legal at your country. You must put a value of <b>zero</b> to each frequency index that you are not allowed to use to disable it.",
|
||||
"description": "Help for the table of bands-channels that appears in the VTX tab"
|
||||
},
|
||||
|
||||
|
@ -5825,7 +5832,7 @@
|
|||
"description": "Save Lua script button in the VTX tab"
|
||||
},
|
||||
"vtxLuaFileHelp" :{
|
||||
"message": "The '$t(vtxButtonSaveLua.message)' button will allow you to save a <i>mcuid</i>.lua file containing the VTX table configuration that can be used with the <a href=\"https://github.com/betaflight/betaflight-tx-lua-scripts/\" target=\"_blank\" rel=\"noopener noreferrer\">Betaflight TX Lua Scripts</a>.<br /><br />Version 1.6.0 and above can use the file as is, but for older versions of the scripts it should be renamed to match the modelname on the TX.",
|
||||
"message": "The '$t(vtxButtonSaveLua.message)' button will allow you to save a <i>mcuid</i>.lua file containing the VTX table configuration that can be used with the <a href=\"https://github.com/betaflight/betaflight-tx-lua-scripts/\" target=\"_blank\" rel=\"noopener noreferrer\">Betaflight TX Lua Scripts</a>.<br><br>Version 1.6.0 and above can use the file as is, but for older versions of the scripts it should be renamed to match the modelname on the TX.",
|
||||
"description": "Tooltip message for the Save Lua script button in the VTX tab"
|
||||
},
|
||||
"vtxButtonLoadFile": {
|
||||
|
@ -5862,10 +5869,10 @@
|
|||
"message": "ESC/Motor protocol"
|
||||
},
|
||||
"configurationEscProtocolHelp": {
|
||||
"message": "Select your motor protocol. <br />Make sure to verify the protocol is supported by your ESC, this information should be on the makers website. <br /> <b>Be carefull using DSHOT900 and DSHOT1200 as not many ESC's support it!</b>"
|
||||
"message": "Select your motor protocol. <br>Make sure to verify the protocol is supported by your ESC, this information should be on the makers website. <br> <b>Be carefull using DSHOT900 and DSHOT1200 as not many ESC's support it!</b>"
|
||||
},
|
||||
"configurationEscProtocolHelpNoDSHOT1200": {
|
||||
"message": "Select your motor protocol. <br />Make sure to verify the protocol is supported by your ESC, this information should be on the makers website."
|
||||
"message": "Select your motor protocol. <br>Make sure to verify the protocol is supported by your ESC, this information should be on the makers website."
|
||||
},
|
||||
"configurationunsyndePwm": {
|
||||
"message": "Motor PWM speed Separated from PID speed"
|
||||
|
@ -5878,7 +5885,7 @@
|
|||
"description": "Feature for the ESC/Motor"
|
||||
},
|
||||
"configurationDshotBidirHelp": {
|
||||
"message": "Sends ESC data to the FC via DShot telemetry. Required by RPM Filtering and dynamic idle. <br /> <br />Note: Requires a compatible ESC with appropriate firmware, eg JESC, Jazzmac, BLHeli-32.",
|
||||
"message": "Sends ESC data to the FC via DShot telemetry. Required by RPM Filtering and dynamic idle. <br> <br>Note: Requires a compatible ESC with appropriate firmware, eg JESC, Jazzmac, BLHeli-32.",
|
||||
"description": "Description of the Bidirectional DShot feature of the ESC/Motor"
|
||||
},
|
||||
"configurationGyroSyncDenom": {
|
||||
|
@ -5979,10 +5986,10 @@
|
|||
"message": "<b>Derivative from Error</b> provides more direct stick response and is mostly prefered for Racing.<br /><br /><b>Derivative from Measurement</b> provides smoother stick response what is more usefull for freestyling"
|
||||
},
|
||||
"pidTuningPidControllerTip": {
|
||||
"message": "<b>Legacy vs Betaflight (float):</b> PID scaling and PID logic is exactly the same. Not necessarily retune needed. Legacy is old betaflight evolved rewrite, which is basic PID controller based on integer math. Betaflight PID controller uses floating point math and has many new features specifically designed for multirotor applications <br /> <b>Float vs Integer:</b> PID scaling and PID logic is exactly the same. No retune needed. F1 boards have no onboard FPU and floating point math increases CPU load and integer math will improve performance, but float math might gain slightly more precision."
|
||||
"message": "<b>Legacy vs Betaflight (float):</b> PID scaling and PID logic is exactly the same. Not necessarily retune needed. Legacy is old betaflight evolved rewrite, which is basic PID controller based on integer math. Betaflight PID controller uses floating point math and has many new features specifically designed for multirotor applications <br> <b>Float vs Integer:</b> PID scaling and PID logic is exactly the same. No retune needed. F1 boards have no onboard FPU and floating point math increases CPU load and integer math will improve performance, but float math might gain slightly more precision."
|
||||
},
|
||||
"pidTuningFilterTip": {
|
||||
"message": "<b>Gyro Soft Filter:</b> Lowpass filter for gyro. Use lower value for more filtering.<br /><b>D Term Filter:</b> Lowpass filter for Dterm. Can affect D tuning. Use lower value for more filtering. <br /><b>Yaw Filter:</b> Filters yaw output. It can help on setups with noisy yaw axis."
|
||||
"message": "<b>Gyro Soft Filter:</b> Lowpass filter for gyro. Use lower value for more filtering.<br><b>D Term Filter:</b> Lowpass filter for Dterm. Can affect D tuning. Use lower value for more filtering. <br><b>Yaw Filter:</b> Filters yaw output. It can help on setups with noisy yaw axis."
|
||||
},
|
||||
"pidTuningRatesTip": {
|
||||
"message": "Play with the rates and see how those affect the stick curve"
|
||||
|
|
|
@ -748,6 +748,11 @@
|
|||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .disabledSliders .tuningSlider::-webkit-slider-runnable-track {
|
||||
background: linear-gradient(90deg, rgb(197, 197, 197) -50%, rgb(241, 241, 241) 50%, rgb(197, 197, 197) 150%);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .tuningSlider::-webkit-slider-thumb {
|
||||
-webkit-appearance: none;
|
||||
width: 23px;
|
||||
|
@ -761,6 +766,20 @@
|
|||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.tab-pid_tuning .disabledSliders .tuningSlider::-webkit-slider-thumb {
|
||||
-webkit-appearance: none;
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
border-radius: 50%;
|
||||
background: transparent;
|
||||
border: solid 1px #828885;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
bottom: 5px;
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
|
||||
.tab-pid_tuning .sliderLabels tr {
|
||||
border-bottom: 1px solid var(--subtleAccent);
|
||||
}
|
||||
|
|
|
@ -132,27 +132,31 @@ TuningSliders.initialize = function() {
|
|||
|
||||
TuningSliders.setExpertMode = function() {
|
||||
this.expertMode = isExpertModeEnabled();
|
||||
$('#slidersPidsBox, #slidersFilterBox').toggleClass('nonExpertModeSliders', !this.expertMode);
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
// TODO: reset nonExpertModeSliders - changes after first movement
|
||||
|
||||
$('.tab-pid_tuning .DMaxGainSlider').toggle(this.expertMode);
|
||||
$('.tab-pid_tuning .advancedSlider').toggle(this.expertMode);
|
||||
$('.tab-pid_tuning .masterSlider').toggle(this.expertMode);
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
document.getElementById('sliderDMaxGain').disabled = !this.expertMode;
|
||||
document.getElementById('sliderIGain').disabled = !this.expertMode;
|
||||
document.getElementById('sliderRollPitchRatio').disabled = !this.expertMode;
|
||||
document.getElementById('sliderPitchPIGain').disabled = !this.expertMode;
|
||||
document.getElementById('sliderMasterMultiplier').disabled = !this.expertMode;
|
||||
|
||||
$('.advancedSlider').toggleClass('disabledSliders', !this.expertMode);
|
||||
$('.tab-pid_tuning .legacySlider').hide();
|
||||
$('.legacyNonExpertModeSlidersNote').hide();
|
||||
$('.subtab-pid .nonExpertModeSlidersNote').toggle(!this.pidSlidersUnavailable && !this.expertMode);
|
||||
$('.subtab-filter .nonExpertModeSlidersNote').toggle((!this.GyroSliderUnavailable || !this.DTermSliderUnavailable) && !this.expertMode);
|
||||
} else {
|
||||
const dMinShow = parseInt($('.pid_tuning input[name="dMinRoll"]').val()) !== 0;
|
||||
$('.tab-pid_tuning .DMaxGainSlider').toggle(this.expertMode && dMinShow);
|
||||
$('.tab-pid_tuning .advancedSlider').hide();
|
||||
$('.tab-pid_tuning .DMaxGainSlider').hide();
|
||||
$('#slidersPidsBox, #slidersFilterBox').toggleClass('nonExpertModeSliders', !this.expertMode);
|
||||
$('.tab-pid_tuning .baseSlider').hide();
|
||||
$('.tab-pid_tuning .advancedSlider').hide();
|
||||
$('.nonExpertModeSlidersNote').hide();
|
||||
$('.subtab-pid .legacyNonExpertModeSlidersNote').toggle(!this.pidSlidersUnavailable && !this.expertMode);
|
||||
$('.subtab-filter .legacyNonExpertModeSlidersNote').toggle((!this.GyroSliderUnavailable || !this.DTermSliderUnavailable) && !this.expertMode);
|
||||
}
|
||||
};
|
||||
|
||||
TuningSliders.scaleSliderValue = function(value) {
|
||||
if (value > 0) {
|
||||
if (value > 1) {
|
||||
return Math.round(((value - 1) * 2 + 1) * 100) / 100;
|
||||
} else {
|
||||
return value;
|
||||
|
@ -160,7 +164,7 @@ TuningSliders.scaleSliderValue = function(value) {
|
|||
};
|
||||
|
||||
TuningSliders.downscaleSliderValue = function(value) {
|
||||
if (value > 0) {
|
||||
if (value > 1) {
|
||||
return (value - 1) / 2 + 1;
|
||||
} else {
|
||||
return value;
|
||||
|
@ -188,14 +192,15 @@ TuningSliders.initPidSlidersPosition = function() {
|
|||
$('output[name="sliderPitchPIGain-number"]').val(this.sliderPitchPIGain);
|
||||
$('output[name="sliderMasterMultiplier-number"]').val(this.sliderMasterMultiplier);
|
||||
|
||||
$('#sliderDGain').val(this.downscaleSliderValue(this.sliderDGain));
|
||||
$('#sliderPIGain').val(this.downscaleSliderValue(this.sliderPIGain));
|
||||
$('#sliderDGain').val(this.sliderDGain);
|
||||
$('#sliderPIGain').val(this.sliderPIGain);
|
||||
$('#sliderFeedforwardGain').val(this.sliderFeedforwardGain);
|
||||
$('#sliderDMaxGain').val(this.sliderDMaxGain);
|
||||
$('#sliderIGain').val(this.downscaleSliderValue(this.sliderIGain));
|
||||
$('#sliderRollPitchRatio').val(this.downscaleSliderValue(this.sliderRollPitchRatio));
|
||||
$('#sliderPitchPIGain').val(this.downscaleSliderValue(this.sliderPitchPIGain));
|
||||
$('#sliderMasterMultiplier').val(this.downscaleSliderValue(this.sliderMasterMultiplier));
|
||||
$('#sliderIGain').val(this.sliderIGain);
|
||||
$('#sliderRollPitchRatio').val(this.sliderRollPitchRatio);
|
||||
$('#sliderPitchPIGain').val(this.sliderPitchPIGain);
|
||||
$('#sliderMasterMultiplier').val(this.sliderMasterMultiplier);
|
||||
|
||||
} else {
|
||||
// used to estimate PID slider positions based on PIDF values, and set respective slider position
|
||||
// provides only an estimation due to limitation of feature without firmware support, to be improved in later versions
|
||||
|
@ -221,16 +226,16 @@ TuningSliders.initPidSlidersPosition = function() {
|
|||
};
|
||||
|
||||
TuningSliders.initGyroFilterSliderPosition = function() {
|
||||
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
this.sliderGyroFilterMultiplier = Math.floor((FC.FILTER_CONFIG.gyro_lowpass_dyn_min_hz + FC.FILTER_CONFIG.gyro_lowpass_dyn_max_hz + FC.FILTER_CONFIG.gyro_lowpass2_hz) /
|
||||
(this.FILTER_DEFAULT.gyro_lowpass_dyn_min_hz + this.FILTER_DEFAULT.gyro_lowpass_dyn_max_hz + this.FILTER_DEFAULT.gyro_lowpass2_hz) * 100) / 100;
|
||||
} else {
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
this.sliderGyroFilter = FC.TUNING_SLIDERS.slider_gyro_filter;
|
||||
this.sliderGyroFilterMultiplier = FC.TUNING_SLIDERS.slider_gyro_filter_multiplier / 100;
|
||||
} else {
|
||||
this.sliderGyroFilterMultiplier = Math.floor((FC.FILTER_CONFIG.gyro_lowpass_dyn_min_hz + FC.FILTER_CONFIG.gyro_lowpass_dyn_max_hz + FC.FILTER_CONFIG.gyro_lowpass2_hz) /
|
||||
(this.FILTER_DEFAULT.gyro_lowpass_dyn_min_hz + this.FILTER_DEFAULT.gyro_lowpass_dyn_max_hz + this.FILTER_DEFAULT.gyro_lowpass2_hz) * 100) / 100;
|
||||
}
|
||||
|
||||
$('#sliderGyroFilterMultiplier').val(this.sliderGyroFilterMultiplier);
|
||||
$('output[name="sliderGyroFilterMultiplier-number"]').val(this.sliderGyroFilterMultiplier);
|
||||
$('#sliderGyroFilterMultiplier').val(this.downscaleSliderValue(this.sliderGyroFilterMultiplier));
|
||||
};
|
||||
|
||||
TuningSliders.initDTermFilterSliderPosition = function() {
|
||||
|
@ -246,23 +251,6 @@ TuningSliders.initDTermFilterSliderPosition = function() {
|
|||
$('#sliderDTermFilterMultiplier').val(this.sliderDTermFilterMultiplier);
|
||||
};
|
||||
|
||||
TuningSliders.resetDefault = function() {
|
||||
FC.TUNING_SLIDERS.slider_pids_mode = this.SLIDER_DEFAULT.slider_pids_mode;
|
||||
FC.TUNING_SLIDERS.slider_d_gain = this.SLIDER_DEFAULT.slider_d_gain;
|
||||
FC.TUNING_SLIDERS.slider_pi_gain = this.SLIDER_DEFAULT.slider_pi_gain;
|
||||
FC.TUNING_SLIDERS.slider_feedforward_gain = this.SLIDER_DEFAULT.slider_feedforward_gain;
|
||||
FC.TUNING_SLIDERS.slider_dmax_gain = this.SLIDER_DEFAULT.slider_dmax_gain;
|
||||
FC.TUNING_SLIDERS.slider_i_gain = this.SLIDER_DEFAULT.slider_i_gain;
|
||||
FC.TUNING_SLIDERS.slider_roll_pitch_ratio = this.SLIDER_DEFAULT.slider_roll_pitch_ratio;
|
||||
FC.TUNING_SLIDERS.slider_pitch_pi_gain = this.SLIDER_DEFAULT.slider_pitch_pi_gain;
|
||||
FC.TUNING_SLIDERS.slider_master_multiplier = this.SLIDER_DEFAULT.slider_master_multiplier;
|
||||
|
||||
FC.TUNING_SLIDERS.slider_gyro_filter = this.SLIDER_DEFAULT.slider_gyro_filter;
|
||||
FC.TUNING_SLIDERS.slider_gyro_filter_multiplier = this.SLIDER_DEFAULT.slider_gyro_filter_multiplier;
|
||||
FC.TUNING_SLIDERS.slider_dterm_filter = this.SLIDER_DEFAULT.slider_dterm_filter;
|
||||
FC.TUNING_SLIDERS.slider_dterm_filter_multiplier = this.SLIDER_DEFAULT.slider_dterm_filter_multiplier;
|
||||
};
|
||||
|
||||
TuningSliders.resetPidSliders = function() {
|
||||
if (!this.cachedPidSliderValues) {
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
|
@ -306,7 +294,7 @@ TuningSliders.resetGyroFilterSlider = function() {
|
|||
this.initGyroFilterSliderPosition();
|
||||
} else {
|
||||
this.sliderGyroFilterMultiplier = 1;
|
||||
$('#sliderGyroFilterMultiplier').val(this.downscaleSliderValue(this.sliderGyroFilterMultiplier));
|
||||
$('#sliderGyroFilterMultiplier').val(this.sliderGyroFilterMultiplier);
|
||||
}
|
||||
this.FilterReset = true;
|
||||
this.calculateNewGyroFilters();
|
||||
|
@ -326,7 +314,7 @@ TuningSliders.resetDTermFilterSlider = function() {
|
|||
this.initDTermFilterSliderPosition();
|
||||
} else {
|
||||
this.sliderDTermFilterMultiplier = 1;
|
||||
$('#sliderDTermFilterMultiplier').val(this.downscaleSliderValue(this.sliderDTermFilterMultiplier));
|
||||
$('#sliderDTermFilterMultiplier').val(this.sliderDTermFilterMultiplier);
|
||||
}
|
||||
this.FilterReset = true;
|
||||
this.calculateNewDTermFilters();
|
||||
|
@ -376,29 +364,35 @@ TuningSliders.updateSlidersWarning = function(slidersUnavailable = false) {
|
|||
const WARNING_P_GAIN = 70;
|
||||
let WARNING_I_GAIN = 120;
|
||||
const WARNING_DMAX_GAIN = 60;
|
||||
const WARNING_DMIN_GAIN = 40;
|
||||
let WARNING_DMIN_GAIN = 40;
|
||||
let condition;
|
||||
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
WARNING_I_GAIN = 2.5 * FC.PIDS[1][0];
|
||||
WARNING_I_GAIN = 2.5 * FC.PIDS[0][0];
|
||||
WARNING_DMIN_GAIN = 42;
|
||||
condition = FC.PIDS[0][0] > WARNING_P_GAIN || FC.PIDS[0][1] > WARNING_I_GAIN || FC.PIDS[0][2] > WARNING_DMAX_GAIN || FC.ADVANCED_TUNING.dMinRoll > WARNING_DMIN_GAIN;
|
||||
} else {
|
||||
condition = FC.PIDS[1][0] > WARNING_P_GAIN || FC.PIDS[1][1] > WARNING_I_GAIN || FC.PIDS[1][2] > WARNING_DMAX_GAIN || FC.ADVANCED_TUNING.dMinPitch > WARNING_DMIN_GAIN;
|
||||
}
|
||||
$('.subtab-pid .slidersWarning').toggle((FC.PIDS[1][0] > WARNING_P_GAIN || FC.PIDS[1][1] > WARNING_I_GAIN || FC.PIDS[1][2] > WARNING_DMAX_GAIN ||
|
||||
FC.ADVANCED_TUNING.dMinPitch > WARNING_DMIN_GAIN) && !slidersUnavailable);
|
||||
$('.subtab-pid .slidersWarning').toggle(condition && !slidersUnavailable);
|
||||
};
|
||||
|
||||
TuningSliders.updateFilterSlidersWarning = function(gyroSliderUnavailable = false, DTermSliderUnavailable = false) {
|
||||
const WARNING_FILTER_LOW_GAIN = 0.7;
|
||||
let WARNING_FILTER_GYRO_HIGH_GAIN = 1.4;
|
||||
let WARNING_FILTER_DTERM_HIGH_GAIN = 1.4;
|
||||
let WARNING_FILTER_GYRO_LOW_GAIN = 0.7;
|
||||
let WARNING_FILTER_GYRO_HIGH_GAIN = 1.25;
|
||||
let WARNING_FILTER_DTERM_LOW_GAIN = 0.7;
|
||||
const WARNING_FILTER_DTERM_HIGH_GAIN = 1.25;
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
WARNING_FILTER_GYRO_HIGH_GAIN = 1.5;
|
||||
WARNING_FILTER_DTERM_HIGH_GAIN = 1.1;
|
||||
WARNING_FILTER_GYRO_LOW_GAIN = 0.45;
|
||||
WARNING_FILTER_GYRO_HIGH_GAIN = 1.55;
|
||||
WARNING_FILTER_DTERM_LOW_GAIN = 0.75;
|
||||
}
|
||||
$('.subtab-filter .slidersWarning').toggle(((this.sliderGyroFilterMultiplier >= WARNING_FILTER_GYRO_HIGH_GAIN ||
|
||||
this.sliderGyroFilterMultiplier <= WARNING_FILTER_LOW_GAIN) && !gyroSliderUnavailable) ||
|
||||
this.sliderGyroFilterMultiplier <= WARNING_FILTER_GYRO_LOW_GAIN) && !gyroSliderUnavailable) ||
|
||||
((this.sliderDTermFilterMultiplier >= WARNING_FILTER_DTERM_HIGH_GAIN ||
|
||||
this.sliderDTermFilterMultiplier <= WARNING_FILTER_LOW_GAIN) && !DTermSliderUnavailable));
|
||||
this.sliderDTermFilterMultiplier <= WARNING_FILTER_DTERM_LOW_GAIN) && !DTermSliderUnavailable));
|
||||
};
|
||||
|
||||
|
||||
TuningSliders.updatePidSlidersDisplay = function() {
|
||||
// check if pid values changed manually by comparing the current values with those calculated by the sliders,
|
||||
// if all of them are equal the values haven't been changed manually
|
||||
|
@ -434,7 +428,6 @@ TuningSliders.updatePidSlidersDisplay = function() {
|
|||
if (this.sliderPidsMode === 0) {
|
||||
this.pidSlidersUnavailable = true;
|
||||
}
|
||||
this.setExpertMode();
|
||||
}
|
||||
|
||||
$('.tuningPIDSliders').toggle(!this.pidSlidersUnavailable);
|
||||
|
@ -594,7 +587,7 @@ TuningSliders.legacyCalculatePids = function(updateSlidersOnly = false) {
|
|||
|
||||
this.updateFormPids(updateSlidersOnly);
|
||||
TABS.pid_tuning.updatePIDColors();
|
||||
|
||||
this.updateSlidersWarning();
|
||||
};
|
||||
|
||||
TuningSliders.calculateNewPids = function(updateSlidersOnly = false) {
|
||||
|
@ -634,6 +627,7 @@ TuningSliders.calculateLegacyGyroFilters = function() {
|
|||
FC.FILTER_CONFIG.gyro_lowpass_type = this.FILTER_DEFAULT.gyro_lowpass_type;
|
||||
FC.FILTER_CONFIG.gyro_lowpass2_type = this.FILTER_DEFAULT.gyro_lowpass2_type;
|
||||
|
||||
this.updateFilterSlidersWarning();
|
||||
this.updateLowpassValues();
|
||||
};
|
||||
|
||||
|
@ -645,6 +639,7 @@ TuningSliders.calculateLegacyDTermFilters = function() {
|
|||
FC.FILTER_CONFIG.dterm_lowpass_type = this.FILTER_DEFAULT.dterm_lowpass_type;
|
||||
FC.FILTER_CONFIG.dterm_lowpass2_type = this.FILTER_DEFAULT.dterm_lowpass2_type;
|
||||
|
||||
this.updateFilterSlidersWarning();
|
||||
this.updateLowpassValues();
|
||||
};
|
||||
|
||||
|
|
|
@ -871,8 +871,8 @@ const FC = {
|
|||
];
|
||||
} else if (semver.gte(this.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
versionPidDefaults = [
|
||||
45, 90, 40, 30, 120,
|
||||
47, 94, 46, 34, 125,
|
||||
45, 80, 40, 30, 120,
|
||||
47, 84, 46, 34, 125,
|
||||
45, 90, 0, 0, 120,
|
||||
];
|
||||
}
|
||||
|
|
|
@ -252,7 +252,7 @@ function startProcess() {
|
|||
const tabName = $(self).text();
|
||||
|
||||
if (GUI.active_tab === 'pid_tuning') {
|
||||
if (TABS.pid_tuning.sliderPositionHasChanged || TABS.pid_tuning.sliderModeHasChanged) {
|
||||
if (TABS.pid_tuning.sliderRetainPosition || TABS.pid_tuning.sliderRetainMode || TABS.pid_tuning.sliderRetainConfiguration) {
|
||||
TuningSliders.restoreInitialSettings();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,9 +22,10 @@ TABS.pid_tuning = {
|
|||
activeSubtab: 'pid',
|
||||
analyticsChanges: {},
|
||||
|
||||
sliderPositionHasChanged: false,
|
||||
sliderChanges: {},
|
||||
sliderModeHasChanged: false,
|
||||
sliderRetainMode: false,
|
||||
sliderRetainPosition: false,
|
||||
sliderRetainConfiguration: false,
|
||||
};
|
||||
|
||||
TABS.pid_tuning.initialize = function (callback) {
|
||||
|
@ -483,9 +484,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
$('.rates_type').hide();
|
||||
}
|
||||
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
$('.resetwarning').attr("title", i18n.getMessage("pidTuningResetWarning"));
|
||||
} else {
|
||||
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
// Previous html attributes for legacy sliders
|
||||
$('.pid_tuning .ROLL input[name="p"]').attr("max", "200");
|
||||
$('.pid_tuning .ROLL input[name="i"]').attr("max", "200");
|
||||
|
@ -498,9 +497,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
$('.pid_tuning .YAW input[name="p"]').attr("max", "200");
|
||||
$('.pid_tuning .YAW input[name="i"]').attr("max", "200");
|
||||
$('.pid_tuning .YAW input[name="d"]').attr("max", "200");
|
||||
$('.pid_tuning .YAW input[name="dMinPitch"]').attr("max", "1000");
|
||||
$('#sliderDTermFilterMultiplier').attr({ "min": "0.5", "max": "1.5", "step": "0.025" });
|
||||
$('#sliderGyroFilterMultipier').attr({ "min": "0.5", "max": "1.5", "step": "0.025" });
|
||||
$('.pid_tuning .YAW input[name="dMinPitch"]').attr("max", "100");
|
||||
}
|
||||
|
||||
// Feedforward
|
||||
|
@ -1370,32 +1367,16 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
updatePidDisplay();
|
||||
});
|
||||
|
||||
$('#resetProfile').on('click', function() {
|
||||
$('#resetProfile').on('click', function(){
|
||||
self.updating = true;
|
||||
self.sliderRetainConfiguration = true;
|
||||
|
||||
function refresh () {
|
||||
self.refresh(() => {
|
||||
MSP.promise(MSPCodes.MSP_SET_RESET_CURR_PID).then(function () {
|
||||
self.refresh(function () {
|
||||
self.updating = false;
|
||||
|
||||
GUI.log(i18n.getMessage('pidTuningProfileReset'));
|
||||
});
|
||||
}
|
||||
|
||||
MSP.promise(MSPCodes.MSP_SET_RESET_CURR_PID).then(() => {
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
TuningSliders.resetDefault();
|
||||
MSP.promise(MSPCodes.MSP_SET_TUNING_SLIDERS, mspHelper.crunch(MSPCodes.MSP_SET_TUNING_SLIDERS)).then(() => {
|
||||
MSP.promise(MSPCodes.MSP_EEPROM_WRITE).then(() => {
|
||||
self.sliderPositionHasChanged = false;
|
||||
self.sliderModeHasChanged = false;
|
||||
self.sliderChanges = {};
|
||||
GUI.log(i18n.getMessage('pidTuningEepromSaved'));
|
||||
refresh();
|
||||
});
|
||||
});
|
||||
} else {
|
||||
refresh();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1914,16 +1895,17 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
TuningSliders.initialize();
|
||||
|
||||
// UNSCALED non expert slider constrain values
|
||||
const NON_EXPERT_SLIDER_MAX = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 1.2 : 1.25;
|
||||
const NON_EXPERT_SLIDER_MIN = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 0.85 : 0.7;
|
||||
const NON_EXPERT_SLIDER_MIN_FF = 0.7;
|
||||
const NON_EXPERT_SLIDER_MAX_FF = 1.35;
|
||||
const NON_EXPERT_SLIDER_MAX = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 1.4 : 1.25;
|
||||
const NON_EXPERT_SLIDER_MIN = 0.7;
|
||||
|
||||
const SLIDER_STEP_LOWER = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 0.025 : 0.05;
|
||||
const SLIDER_STEP_LOWER = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 0.05 : 0.1;
|
||||
const SLIDER_STEP_UPPER = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? 0.05 : 0.1;
|
||||
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
TuningSliders.saveInitialSettings();
|
||||
if (!self.sliderRetainConfiguration) {
|
||||
TuningSliders.saveInitialSettings();
|
||||
}
|
||||
|
||||
const initialConfiguration = TuningSliders.initialSettings;
|
||||
|
||||
// we only target the range target type.
|
||||
|
@ -1935,11 +1917,11 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
|
||||
if (item in initialConfiguration) {
|
||||
if (value !== initialConfiguration[item]) {
|
||||
self.sliderPositionHasChanged = true;
|
||||
self.sliderRetainPosition = true;
|
||||
} else {
|
||||
delete self.sliderChanges[item];
|
||||
if (Object.keys(self.sliderChanges).length === 0) {
|
||||
self.sliderPositionHasChanged = false;
|
||||
self.sliderRetainPosition = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1947,7 +1929,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
e.stopPropagation();
|
||||
}
|
||||
|
||||
function disableSlideronManualChange(e, angle) {
|
||||
function disableSliderOnManualChange(e, angle) {
|
||||
const sliderPidsModeSelectElement = $('#sliderPidsModeSelect');
|
||||
const mode = parseInt(sliderPidsModeSelectElement.val());
|
||||
if (mode > 0) {
|
||||
|
@ -1955,7 +1937,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
e.preventDefault();
|
||||
} else {
|
||||
sliderPidsModeSelectElement.val(0).trigger('change');
|
||||
self.sliderModeHasChanged = true;
|
||||
self.sliderRetainMode = true;
|
||||
}
|
||||
} else {
|
||||
self.updateGuiElements();
|
||||
|
@ -1963,7 +1945,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function HandleEventParams(param) {
|
||||
return (e) => disableSlideronManualChange(e, param);
|
||||
return (e) => disableSliderOnManualChange(e, param);
|
||||
}
|
||||
|
||||
document.querySelectorAll('.sliderLabels').forEach(elem => elem.addEventListener('change', sliderHandler));
|
||||
|
@ -2026,32 +2008,31 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
|
||||
if (!TuningSliders.expertMode) {
|
||||
if (slider.val() > NON_EXPERT_SLIDER_MAX) {
|
||||
slider.val(slider.is('#sliderFeedforwardGain') ? NON_EXPERT_SLIDER_MAX_FF : NON_EXPERT_SLIDER_MAX);
|
||||
slider.val(NON_EXPERT_SLIDER_MAX);
|
||||
} else if (slider.val() < NON_EXPERT_SLIDER_MIN) {
|
||||
slider.val(slider.is('#sliderFeedforwardGain') ? NON_EXPERT_SLIDER_MIN_FF : NON_EXPERT_SLIDER_MIN);
|
||||
slider.val(NON_EXPERT_SLIDER_MIN);
|
||||
}
|
||||
}
|
||||
|
||||
const sliderValue = isInt(slider.val()) ? parseInt(slider.val()) : parseFloat(slider.val());
|
||||
const scaledValue = TuningSliders.scaleSliderValue(sliderValue);
|
||||
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
if (slider.is('#sliderDGain')) {
|
||||
TuningSliders.sliderDGain = scaledValue;
|
||||
TuningSliders.sliderDGain = sliderValue;
|
||||
} else if (slider.is('#sliderPIGain')) {
|
||||
TuningSliders.sliderPIGain = scaledValue;
|
||||
TuningSliders.sliderPIGain = sliderValue;
|
||||
} else if (slider.is('#sliderFeedforwardGain')) {
|
||||
TuningSliders.sliderFeedforwardGain = sliderValue;
|
||||
} else if (slider.is('#sliderDMaxGain')) {
|
||||
TuningSliders.sliderDMaxGain = sliderValue;
|
||||
} else if (slider.is('#sliderIGain')) {
|
||||
TuningSliders.sliderIGain = scaledValue;
|
||||
TuningSliders.sliderIGain = sliderValue;
|
||||
} else if (slider.is('#sliderRollPitchRatio')) {
|
||||
TuningSliders.sliderRollPitchRatio = scaledValue;
|
||||
TuningSliders.sliderRollPitchRatio = sliderValue;
|
||||
} else if (slider.is('#sliderPitchPIGain')) {
|
||||
TuningSliders.sliderPitchPIGain = scaledValue;
|
||||
TuningSliders.sliderPitchPIGain = sliderValue;
|
||||
} else if (slider.is('#sliderMasterMultiplier')) {
|
||||
TuningSliders.sliderMasterMultiplier = scaledValue;
|
||||
TuningSliders.sliderMasterMultiplier = sliderValue;
|
||||
}
|
||||
} else {
|
||||
if (slider.is('#sliderMasterMultiplierLegacy')) {
|
||||
|
@ -2109,8 +2090,8 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
value = FC.DEFAULT_TUNING_SLIDERS.slider_master_multiplier / 100;
|
||||
TuningSliders.sliderMasterMultiplier = value;
|
||||
}
|
||||
slider.val(TuningSliders.downscaleSliderValue(value));
|
||||
} else {
|
||||
value = 1;
|
||||
if (slider.is('#sliderMasterMultiplierLegacy')) {
|
||||
TuningSliders.sliderMasterMultiplierLegacy = 1;
|
||||
} else if (slider.is('#sliderPDRatio')) {
|
||||
|
@ -2121,6 +2102,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
TuningSliders.sliderFeedforwardGainLegacy = 1;
|
||||
}
|
||||
}
|
||||
slider.val(value);
|
||||
|
||||
TuningSliders.calculateNewPids();
|
||||
TuningSliders.updatePidSlidersDisplay();
|
||||
|
@ -2130,7 +2112,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
//set Slider PID mode to RPY when re-enabling Sliders
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
$('#sliderPidsModeSelect').val(2).trigger('change');
|
||||
self.sliderModeHasChanged = true;
|
||||
self.sliderRetainMode = true;
|
||||
}
|
||||
// if values were previously changed manually and then sliders are reactivated, reset pids to previous valid values if available, else default
|
||||
TuningSliders.resetPidSliders();
|
||||
|
@ -2156,7 +2138,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
}
|
||||
if (!TuningSliders.expertMode) {
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
const NON_EXPERT_SLIDER_MIN_GYRO = 0.4;
|
||||
const NON_EXPERT_SLIDER_MIN_GYRO = 0.5;
|
||||
const NON_EXPERT_SLIDER_MAX_GYRO = 1.5;
|
||||
const NON_EXPERT_SLIDER_MIN_DTERM = 0.8;
|
||||
const NON_EXPERT_SLIDER_MAX_DTERM = 1.2;
|
||||
|
@ -2182,14 +2164,14 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
const sliderValue = isInt(slider.val()) ? parseInt(slider.val()) : parseFloat(slider.val());
|
||||
const newValue = semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44) ? sliderValue : TuningSliders.scaleSliderValue(sliderValue);
|
||||
if (slider.is('#sliderGyroFilterMultiplier')) {
|
||||
TuningSliders.sliderGyroFilterMultiplier = newValue;
|
||||
TuningSliders.sliderGyroFilterMultiplier = sliderValue;
|
||||
TuningSliders.calculateNewGyroFilters();
|
||||
self.analyticsChanges['GyroFilterTuningSlider'] = "On";
|
||||
} else if (slider.is('#sliderDTermFilterMultiplier')) {
|
||||
TuningSliders.sliderDTermFilterMultiplier = newValue;
|
||||
TuningSliders.sliderDTermFilterMultiplier = sliderValue;
|
||||
TuningSliders.calculateNewDTermFilters();
|
||||
self.analyticsChanges['DTermFilterTuningSlider'] = "On";
|
||||
}
|
||||
|
@ -2208,7 +2190,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
});
|
||||
// enable Filter sliders button
|
||||
$('a.buttonFilterTuningSliders').click(function() {
|
||||
self.sliderModeHasChanged = true;
|
||||
self.sliderRetainMode = true;
|
||||
if (TuningSliders.GyroSliderUnavailable) {
|
||||
//set Slider mode to ON when re-enabling Sliders
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_44)) {
|
||||
|
@ -2314,9 +2296,12 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
return MSP.promise(MSPCodes.MSP_EEPROM_WRITE);
|
||||
}).then(function () {
|
||||
self.updating = false;
|
||||
self.sliderPositionHasChanged = false;
|
||||
self.sliderModeHasChanged = false;
|
||||
|
||||
self.sliderRetainPosition = false;
|
||||
self.sliderRetainMode = false;
|
||||
self.sliderChanges = {};
|
||||
self.sliderRetainConfiguration = false;
|
||||
|
||||
self.setDirty(false);
|
||||
|
||||
GUI.log(i18n.getMessage('pidTuningEepromSaved'));
|
||||
|
@ -2426,7 +2411,7 @@ TABS.pid_tuning.cleanup = function (callback) {
|
|||
TABS.pid_tuning.refresh = function (callback) {
|
||||
const self = this;
|
||||
|
||||
if ((self.sliderPositionHasChanged || self.sliderModeHasChanged) && !self.updating) {
|
||||
if ((self.sliderRetainPosition || self.sliderRetainMode) && !self.updating) {
|
||||
TuningSliders.restoreInitialSettings();
|
||||
}
|
||||
|
||||
|
|
|
@ -39,11 +39,9 @@
|
|||
<div class="default_btn copyrateprofilebtn">
|
||||
<a href="#" id="copyRateProfile" i18n="pidTuningCopyRateProfile"></a>
|
||||
</div>
|
||||
<span class="cf_tip resetwarning">
|
||||
<div class="default_btn resetbt">
|
||||
<a href="#" id="resetProfile" i18n="pidTuningResetProfile"></a>
|
||||
</div>
|
||||
</span>
|
||||
<div class="default_btn resetbt">
|
||||
<a href="#" id="resetProfile" i18n="pidTuningResetProfile"></a>
|
||||
</div>
|
||||
<div class="default_btn show showAllPids">
|
||||
<a href="#" id="showAllPids" i18n="pidTuningShowAllPids"></a>
|
||||
</div>
|
||||
|
@ -166,7 +164,7 @@
|
|||
</table>
|
||||
</div>
|
||||
|
||||
<div class="gui_box topspacer nonExpertModeSlidersNote">
|
||||
<div class="gui_box topspacer legacyNonExpertModeSlidersNote">
|
||||
<p i18n="pidTuningSlidersNonExpertMode"></p>
|
||||
</div>
|
||||
|
||||
|
@ -257,7 +255,7 @@
|
|||
<output type="number" name="sliderDGain-number"></output>
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input type="range" min="0.5" max="1.5" step="0.025" class="tuningSlider" id="sliderDGain" />
|
||||
<input type="range" min="0.0" max="2.0" step="0.05" class="tuningSlider" id="sliderDGain" />
|
||||
</td>
|
||||
<td>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningDGainSliderHelp"></div>
|
||||
|
@ -271,7 +269,7 @@
|
|||
<output type="number" name="sliderPIGain-number"></output>
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input type="range" min="0.5" max="1.5" step="0.025" class="tuningSlider" id="sliderPIGain" />
|
||||
<input type="range" min="0.0" max="2.0" step="0.05" class="tuningSlider" id="sliderPIGain" />
|
||||
</td>
|
||||
<td>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningPIGainSliderHelp"></div>
|
||||
|
@ -294,7 +292,7 @@
|
|||
<tr class="advancedSlider">
|
||||
<td colspan="6" class="sliderDivider"><hr /></td>
|
||||
</tr>
|
||||
<tr class="DMaxGainSlider">
|
||||
<tr class="advancedSlider">
|
||||
<td>
|
||||
<span i18n="pidTuningDMaxGainSlider"></span>
|
||||
</td>
|
||||
|
@ -316,7 +314,7 @@
|
|||
<output type="number" name="sliderIGain-number"></output>
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input type="range" min="0.5" max="1.5" step="0.025" class="tuningSlider" id="sliderIGain" />
|
||||
<input type="range" min="0.0" max="2.0" step="0.05" class="tuningSlider" id="sliderIGain" />
|
||||
</td>
|
||||
<td>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningIGainSliderHelp"></div>
|
||||
|
@ -330,7 +328,7 @@
|
|||
<output type="number" name="sliderRollPitchRatio-number"></output>
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input type="range" min="0.5" max="1.5" step="0.025" class="tuningSlider" id="sliderRollPitchRatio" />
|
||||
<input type="range" min="0.0" max="2.0" step="0.05" class="tuningSlider" id="sliderRollPitchRatio" />
|
||||
</td>
|
||||
<td>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningRollPitchRatioSliderHelp"></div>
|
||||
|
@ -344,7 +342,7 @@
|
|||
<output type="number" name="sliderPitchPIGain-number"></output>
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input type="range" min="0.5" max="1.5" step="0.025" class="tuningSlider" id="sliderPitchPIGain" />
|
||||
<input type="range" min="0.0" max="2.0" step="0.05" class="tuningSlider" id="sliderPitchPIGain" />
|
||||
</td>
|
||||
<td>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningPitchPIGainSliderHelp"></div>
|
||||
|
@ -358,7 +356,7 @@
|
|||
<output type="number" name="sliderMasterMultiplier-number"></output>
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input type="range" min="0.5" max="1.5" step="0.025" class="tuningSlider" id="sliderMasterMultiplier" />
|
||||
<input type="range" min="0.0" max="2.0" step="0.05" class="tuningSlider" id="sliderMasterMultiplier" />
|
||||
</td>
|
||||
<td>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningMasterSliderHelp"></div>
|
||||
|
@ -368,6 +366,10 @@
|
|||
</table>
|
||||
</div>
|
||||
|
||||
<div class="gui_box topspacer nonExpertModeSlidersNote">
|
||||
<p i18n="pidTuningPidSlidersNonExpertMode"></p>
|
||||
</div>
|
||||
|
||||
<!-- BARO, MAG, GPS -->
|
||||
<div id="pid_baro_mag_gps" class="pid_optional needed_by_ALT needed_by_VEL needed_by_MAG needed_by_Pos needed_by_PosR needed_by_NavR gui_box grey topspacer pid_tuning">
|
||||
<table class="pid_titlebar needed_by_ALT needed_by_VEL needed_by_MAG">
|
||||
|
@ -1113,7 +1115,7 @@
|
|||
</td>
|
||||
</table>
|
||||
</div>
|
||||
<div class="gui_box topspacer nonExpertModeSlidersNote">
|
||||
<div class="gui_box topspacer legacyNonExpertModeSlidersNote">
|
||||
<p i18n="pidTuningSlidersNonExpertMode"></p>
|
||||
</div>
|
||||
|
||||
|
@ -1173,6 +1175,10 @@
|
|||
</table>
|
||||
</div>
|
||||
|
||||
<div class="gui_box topspacer nonExpertModeSlidersNote">
|
||||
<p i18n="pidTuningFilterSlidersNonExpertMode"></p>
|
||||
</div>
|
||||
|
||||
<div class="cf_column two_columns">
|
||||
<div class="gui_box grey topspacer pid_filter two_columns_first">
|
||||
<table class="pid_titlebar new_rates">
|
||||
|
|
Loading…
Reference in New Issue