🐛 Fix / refactor shared PID (#24673)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
committed by
Scott Lahteine
parent
e04e18a590
commit
aa28358267
@ -2140,7 +2140,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case HOTENDPID_KP:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Kp Value"));
|
||||
Draw_Float(thermalManager.temp_hotend[0].pid.Kp, row, false, 100);
|
||||
Draw_Float(thermalManager.temp_hotend[0].pid.p(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_hotend[0].pid.Kp, 0, 5000, 100, thermalManager.updatePID);
|
||||
@ -2148,7 +2148,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case HOTENDPID_KI:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Ki Value"));
|
||||
Draw_Float(unscalePID_i(thermalManager.temp_hotend[0].pid.Ki), row, false, 100);
|
||||
Draw_Float(thermalManager.temp_hotend[0].pid.i(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_hotend[0].pid.Ki, 0, 5000, 100, thermalManager.updatePID);
|
||||
@ -2156,7 +2156,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case HOTENDPID_KD:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Kd Value"));
|
||||
Draw_Float(unscalePID_d(thermalManager.temp_hotend[0].pid.Kd), row, false, 100);
|
||||
Draw_Float(thermalManager.temp_hotend[0].pid.d(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_hotend[0].pid.Kd, 0, 5000, 100, thermalManager.updatePID);
|
||||
@ -2207,7 +2207,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case BEDPID_KP:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Kp Value"));
|
||||
Draw_Float(thermalManager.temp_bed.pid.Kp, row, false, 100);
|
||||
Draw_Float(thermalManager.temp_bed.pid.p(), row, false, 100);
|
||||
}
|
||||
else {
|
||||
Modify_Value(thermalManager.temp_bed.pid.Kp, 0, 5000, 100, thermalManager.updatePID);
|
||||
@ -2216,7 +2216,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case BEDPID_KI:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Ki Value"));
|
||||
Draw_Float(unscalePID_i(thermalManager.temp_bed.pid.Ki), row, false, 100);
|
||||
Draw_Float(thermalManager.temp_bed.pid.i(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_bed.pid.Ki, 0, 5000, 100, thermalManager.updatePID);
|
||||
@ -2224,7 +2224,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case BEDPID_KD:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Kd Value"));
|
||||
Draw_Float(unscalePID_d(thermalManager.temp_bed.pid.Kd), row, false, 100);
|
||||
Draw_Float(thermalManager.temp_bed.pid.d(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_bed.pid.Kd, 0, 5000, 100, thermalManager.updatePID);
|
||||
|
@ -2667,13 +2667,15 @@ void SetStepsY() { HMI_value.axis = Y_AXIS, SetPFloatOnClick( MIN_STEP, MAX_STEP
|
||||
void SetStepsZ() { HMI_value.axis = Z_AXIS, SetPFloatOnClick( MIN_STEP, MAX_STEP, UNITFDIGITS); }
|
||||
#if HAS_HOTEND
|
||||
void SetStepsE() { HMI_value.axis = E_AXIS; SetPFloatOnClick( MIN_STEP, MAX_STEP, UNITFDIGITS); }
|
||||
void SetHotendPidT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP); }
|
||||
#if ENABLED(PIDTEMP)
|
||||
void SetHotendPidT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP); }
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
void SetBedPidT() { SetPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); }
|
||||
#endif
|
||||
|
||||
#if HAS_HOTEND || HAS_HEATED_BED
|
||||
#if EITHER(PIDTEMP, PIDTEMPBED)
|
||||
void SetPidCycles() { SetPIntOnClick(3, 50); }
|
||||
void SetKp() { SetPFloatOnClick(0, 1000, 2); }
|
||||
void ApplyPIDi() {
|
||||
@ -3222,10 +3224,10 @@ void Draw_AdvancedSettings_Menu() {
|
||||
#if HAS_HOME_OFFSET
|
||||
MENU_ITEM_F(ICON_HomeOffset, MSG_SET_HOME_OFFSETS, onDrawSubMenu, Draw_HomeOffset_Menu);
|
||||
#endif
|
||||
#if HAS_HOTEND
|
||||
#if ENABLED(PIDTEMP)
|
||||
MENU_ITEM(ICON_PIDNozzle, F(STR_HOTEND_PID " Settings"), onDrawSubMenu, Draw_HotendPID_Menu);
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
MENU_ITEM(ICON_PIDbed, F(STR_BED_PID " Settings"), onDrawSubMenu, Draw_BedPID_Menu);
|
||||
#endif
|
||||
MENU_ITEM_F(ICON_FilSet, MSG_FILAMENT_SET, onDrawSubMenu, Draw_FilSet_Menu);
|
||||
@ -3668,10 +3670,10 @@ void Draw_Steps_Menu() {
|
||||
CurrentMenu->draw();
|
||||
}
|
||||
|
||||
#if HAS_HOTEND
|
||||
#if ENABLED(PIDTEMP)
|
||||
void Draw_HotendPID_Menu() {
|
||||
checkkey = Menu;
|
||||
if (SetMenu(HotendPIDMenu, F(STR_HOTEND_PID " Settings"),8)) {
|
||||
if (SetMenu(HotendPIDMenu, F(STR_HOTEND_PID " Settings"), 8)) {
|
||||
BACK_ITEM(Draw_AdvancedSettings_Menu);
|
||||
MENU_ITEM(ICON_PIDNozzle, F(STR_HOTEND_PID), onDrawMenuItem, HotendPID);
|
||||
EDIT_ITEM(ICON_PIDValue, F("Set" STR_KP), onDrawPFloat2Menu, SetKp, &thermalManager.temp_hotend[0].pid.Kp);
|
||||
@ -3687,10 +3689,10 @@ void Draw_Steps_Menu() {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAS_HEATED_BED
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
void Draw_BedPID_Menu() {
|
||||
checkkey = Menu;
|
||||
if (SetMenu(BedPIDMenu, F(STR_BED_PID " Settings"),8)) {
|
||||
if (SetMenu(BedPIDMenu, F(STR_BED_PID " Settings"), 8)) {
|
||||
BACK_ITEM(Draw_AdvancedSettings_Menu);
|
||||
MENU_ITEM(ICON_PIDNozzle, F(STR_BED_PID), onDrawMenuItem,BedPID);
|
||||
EDIT_ITEM(ICON_PIDValue, F("Set" STR_KP), onDrawPFloat2Menu, SetKp, &thermalManager.temp_bed.pid.Kp);
|
||||
|
@ -264,7 +264,9 @@ void Draw_Motion_Menu();
|
||||
void Draw_Preheat1_Menu();
|
||||
void Draw_Preheat2_Menu();
|
||||
void Draw_Preheat3_Menu();
|
||||
void Draw_HotendPID_Menu();
|
||||
#if ENABLED(PIDTEMP)
|
||||
void Draw_HotendPID_Menu();
|
||||
#endif
|
||||
#endif
|
||||
void Draw_Temperature_Menu();
|
||||
void Draw_MaxSpeed_Menu();
|
||||
@ -273,7 +275,7 @@ void Draw_MaxAccel_Menu();
|
||||
void Draw_MaxJerk_Menu();
|
||||
#endif
|
||||
void Draw_Steps_Menu();
|
||||
#if HAS_HEATED_BED
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
void Draw_BedPID_Menu();
|
||||
#endif
|
||||
#if EITHER(HAS_BED_PROBE, BABYSTEPPING)
|
||||
|
@ -421,16 +421,16 @@ void DGUSTxHandler::PIDKp(DGUS_VP &vp) {
|
||||
default: return;
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
case DGUS_Data::Heater::BED:
|
||||
value = ExtUI::getBedPIDValues_Kp();
|
||||
value = ExtUI::getBedPID_Kp();
|
||||
break;
|
||||
#endif
|
||||
#if ENABLED(PIDTEMP)
|
||||
case DGUS_Data::Heater::H0:
|
||||
value = ExtUI::getPIDValues_Kp(ExtUI::E0);
|
||||
value = ExtUI::getPID_Kp(ExtUI::E0);
|
||||
break;
|
||||
#if HAS_MULTI_HOTEND
|
||||
case DGUS_Data::Heater::H1:
|
||||
value = ExtUI::getPIDValues_Kp(ExtUI::E1);
|
||||
value = ExtUI::getPID_Kp(ExtUI::E1);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
@ -447,16 +447,16 @@ void DGUSTxHandler::PIDKi(DGUS_VP &vp) {
|
||||
default: return;
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
case DGUS_Data::Heater::BED:
|
||||
value = ExtUI::getBedPIDValues_Ki();
|
||||
value = ExtUI::getBedPID_Ki();
|
||||
break;
|
||||
#endif
|
||||
#if ENABLED(PIDTEMP)
|
||||
case DGUS_Data::Heater::H0:
|
||||
value = ExtUI::getPIDValues_Ki(ExtUI::E0);
|
||||
value = ExtUI::getPID_Ki(ExtUI::E0);
|
||||
break;
|
||||
#if HAS_MULTI_HOTEND
|
||||
case DGUS_Data::Heater::H1:
|
||||
value = ExtUI::getPIDValues_Ki(ExtUI::E1);
|
||||
value = ExtUI::getPID_Ki(ExtUI::E1);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
@ -473,16 +473,16 @@ void DGUSTxHandler::PIDKd(DGUS_VP &vp) {
|
||||
default: return;
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
case DGUS_Data::Heater::BED:
|
||||
value = ExtUI::getBedPIDValues_Kd();
|
||||
value = ExtUI::getBedPID_Kd();
|
||||
break;
|
||||
#endif
|
||||
#if ENABLED(PIDTEMP)
|
||||
case DGUS_Data::Heater::H0:
|
||||
value = ExtUI::getPIDValues_Kd(ExtUI::E0);
|
||||
value = ExtUI::getPID_Kd(ExtUI::E0);
|
||||
break;
|
||||
#if HAS_MULTI_HOTEND
|
||||
case DGUS_Data::Heater::H1:
|
||||
value = ExtUI::getPIDValues_Kd(ExtUI::E1);
|
||||
value = ExtUI::getPID_Kd(ExtUI::E1);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
|
@ -459,17 +459,17 @@ void NextionTFT::PanelInfo(uint8_t req) {
|
||||
|
||||
case 37: // PID
|
||||
#if ENABLED(PIDTEMP)
|
||||
#define SEND_PID_INFO_0(A, B) SEND_VALasTXT(A, getPIDValues_K##B(E0))
|
||||
#define SEND_PID_INFO_0(A, B) SEND_VALasTXT(A, getPID_K##B(E0))
|
||||
#else
|
||||
#define SEND_PID_INFO_0(A, B) SEND_NA(A)
|
||||
#endif
|
||||
#if BOTH(PIDTEMP, HAS_MULTI_EXTRUDER)
|
||||
#define SEND_PID_INFO_1(A, B) SEND_VALasTXT(A, getPIDValues_K##B(E1))
|
||||
#define SEND_PID_INFO_1(A, B) SEND_VALasTXT(A, getPID_K##B(E1))
|
||||
#else
|
||||
#define SEND_PID_INFO_1(A, B) SEND_NA(A)
|
||||
#endif
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
#define SEND_PID_INFO_BED(A, B) SEND_VALasTXT(A, getBedPIDValues_K##B())
|
||||
#define SEND_PID_INFO_BED(A, B) SEND_VALasTXT(A, getBedPID_K##B())
|
||||
#else
|
||||
#define SEND_PID_INFO_BED(A, B) SEND_NA(A)
|
||||
#endif
|
||||
|
@ -976,32 +976,26 @@ namespace ExtUI {
|
||||
float getFeedrate_percent() { return feedrate_percentage; }
|
||||
|
||||
#if ENABLED(PIDTEMP)
|
||||
float getPIDValues_Kp(const extruder_t tool) { return PID_PARAM(Kp, tool); }
|
||||
float getPIDValues_Ki(const extruder_t tool) { return unscalePID_i(PID_PARAM(Ki, tool)); }
|
||||
float getPIDValues_Kd(const extruder_t tool) { return unscalePID_d(PID_PARAM(Kd, tool)); }
|
||||
float getPID_Kp(const extruder_t tool) { return thermalManager.temp_hotend[tool].pid.p(); }
|
||||
float getPID_Ki(const extruder_t tool) { return thermalManager.temp_hotend[tool].pid.i(); }
|
||||
float getPID_Kd(const extruder_t tool) { return thermalManager.temp_hotend[tool].pid.d(); }
|
||||
|
||||
void setPIDValues(const_float_t p, const_float_t i, const_float_t d, extruder_t tool) {
|
||||
thermalManager.temp_hotend[tool].pid.Kp = p;
|
||||
thermalManager.temp_hotend[tool].pid.Ki = scalePID_i(i);
|
||||
thermalManager.temp_hotend[tool].pid.Kd = scalePID_d(d);
|
||||
thermalManager.updatePID();
|
||||
void setPID(const_float_t p, const_float_t i, const_float_t d, extruder_t tool) {
|
||||
thermalManager.setPID(uint8_t(tool), p, i, d);
|
||||
}
|
||||
|
||||
void startPIDTune(const celsius_t temp, extruder_t tool) {
|
||||
thermalManager.PID_autotune(temp, (heater_id_t)tool, 8, true);
|
||||
thermalManager.PID_autotune(temp, heater_id_t(tool), 8, true);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
float getBedPIDValues_Kp() { return thermalManager.temp_bed.pid.Kp; }
|
||||
float getBedPIDValues_Ki() { return unscalePID_i(thermalManager.temp_bed.pid.Ki); }
|
||||
float getBedPIDValues_Kd() { return unscalePID_d(thermalManager.temp_bed.pid.Kd); }
|
||||
float getBedPID_Kp() { return thermalManager.temp_bed.pid.p(); }
|
||||
float getBedPID_Ki() { return thermalManager.temp_bed.pid.i(); }
|
||||
float getBedPID_Kd() { return thermalManager.temp_bed.pid.d(); }
|
||||
|
||||
void setBedPIDValues(const_float_t p, const_float_t i, const_float_t d) {
|
||||
thermalManager.temp_bed.pid.Kp = p;
|
||||
thermalManager.temp_bed.pid.Ki = scalePID_i(i);
|
||||
thermalManager.temp_bed.pid.Kd = scalePID_d(d);
|
||||
thermalManager.updatePID();
|
||||
void setBedPID(const_float_t p, const_float_t i, const_float_t d) {
|
||||
thermalManager.temp_bed.pid.set(p, i, d);
|
||||
}
|
||||
|
||||
void startBedPIDTune(const celsius_t temp) {
|
||||
|
@ -324,18 +324,18 @@ namespace ExtUI {
|
||||
#endif
|
||||
|
||||
#if ENABLED(PIDTEMP)
|
||||
float getPIDValues_Kp(const extruder_t);
|
||||
float getPIDValues_Ki(const extruder_t);
|
||||
float getPIDValues_Kd(const extruder_t);
|
||||
void setPIDValues(const_float_t, const_float_t , const_float_t , extruder_t);
|
||||
float getPID_Kp(const extruder_t);
|
||||
float getPID_Ki(const extruder_t);
|
||||
float getPID_Kd(const extruder_t);
|
||||
void setPID(const_float_t, const_float_t , const_float_t , extruder_t);
|
||||
void startPIDTune(const celsius_t, extruder_t);
|
||||
#endif
|
||||
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
float getBedPIDValues_Kp();
|
||||
float getBedPIDValues_Ki();
|
||||
float getBedPIDValues_Kd();
|
||||
void setBedPIDValues(const_float_t, const_float_t , const_float_t);
|
||||
float getBedPID_Kp();
|
||||
float getBedPID_Ki();
|
||||
float getBedPID_Kd();
|
||||
void setBedPID(const_float_t, const_float_t , const_float_t);
|
||||
void startBedPIDTune(const celsius_t);
|
||||
#endif
|
||||
|
||||
|
@ -209,37 +209,59 @@ void menu_backlash();
|
||||
|
||||
#if ENABLED(PID_EDIT_MENU)
|
||||
|
||||
float raw_Ki, raw_Kd; // place-holders for Ki and Kd edits
|
||||
// Placeholders for PID editing
|
||||
float raw_Kp, raw_Ki, raw_Kd;
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
float raw_Kc;
|
||||
#endif
|
||||
#if ENABLED(PID_FAN_SCALING)
|
||||
float raw_Kf;
|
||||
#endif
|
||||
|
||||
// Helpers for editing PID Ki & Kd values
|
||||
// grab the PID value out of the temp variable; scale it; then update the PID driver
|
||||
void copy_and_scalePID_i(const int8_t e) {
|
||||
// Helpers for editing PID Kp, Ki and Kd values
|
||||
void apply_PID_p(const int8_t e) {
|
||||
switch (e) {
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
case H_BED: thermalManager.temp_bed.pid.Ki = scalePID_i(raw_Ki); break;
|
||||
case H_BED: thermalManager.temp_bed.pid.set_Ki(raw_Ki); break;
|
||||
#endif
|
||||
#if ENABLED(PIDTEMPCHAMBER)
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.Ki = scalePID_i(raw_Ki); break;
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.set_Ki(raw_Ki); break;
|
||||
#endif
|
||||
default:
|
||||
#if ENABLED(PIDTEMP)
|
||||
PID_PARAM(Ki, e) = scalePID_i(raw_Ki);
|
||||
SET_HOTEND_PID(Kp, e, raw_Kp);
|
||||
thermalManager.updatePID();
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
void copy_and_scalePID_d(const int8_t e) {
|
||||
void apply_PID_i(const int8_t e) {
|
||||
switch (e) {
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
case H_BED: thermalManager.temp_bed.pid.Kd = scalePID_d(raw_Kd); break;
|
||||
case H_BED: thermalManager.temp_bed.pid.set_Ki(raw_Ki); break;
|
||||
#endif
|
||||
#if ENABLED(PIDTEMPCHAMBER)
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.Kd = scalePID_d(raw_Kd); break;
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.set_Ki(raw_Ki); break;
|
||||
#endif
|
||||
default:
|
||||
#if ENABLED(PIDTEMP)
|
||||
PID_PARAM(Kd, e) = scalePID_d(raw_Kd);
|
||||
SET_HOTEND_PID(Ki, e, raw_Ki);
|
||||
thermalManager.updatePID();
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
void apply_PID_d(const int8_t e) {
|
||||
switch (e) {
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
case H_BED: thermalManager.temp_bed.pid.set_Kd(raw_Kd); break;
|
||||
#endif
|
||||
#if ENABLED(PIDTEMPCHAMBER)
|
||||
case H_CHAMBER: thermalManager.temp_chamber.pid.set_Kd(raw_Kd); break;
|
||||
#endif
|
||||
default:
|
||||
#if ENABLED(PIDTEMP)
|
||||
SET_HOTEND_PID(Kd, e, raw_Kd);
|
||||
thermalManager.updatePID();
|
||||
#endif
|
||||
break;
|
||||
@ -291,16 +313,18 @@ void menu_backlash();
|
||||
|
||||
#if BOTH(PIDTEMP, PID_EDIT_MENU)
|
||||
#define __PID_HOTEND_MENU_ITEMS(N) \
|
||||
raw_Ki = unscalePID_i(PID_PARAM(Ki, N)); \
|
||||
raw_Kd = unscalePID_d(PID_PARAM(Kd, N)); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &PID_PARAM(Kp, N), 1, 9990); \
|
||||
EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ copy_and_scalePID_i(N); }); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ copy_and_scalePID_d(N); })
|
||||
raw_Kp = thermalManager.temp_hotend[N].pid.p(); \
|
||||
raw_Ki = thermalManager.temp_hotend[N].pid.i(); \
|
||||
raw_Kd = thermalManager.temp_hotend[N].pid.d(); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &raw_Kp, 1, 9990, []{ apply_PID_p(N); }); \
|
||||
EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ apply_PID_i(N); }); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ apply_PID_d(N); })
|
||||
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
#define _PID_HOTEND_MENU_ITEMS(N) \
|
||||
__PID_HOTEND_MENU_ITEMS(N); \
|
||||
EDIT_ITEM_N(float4, N, MSG_PID_C_E, &PID_PARAM(Kc, N), 1, 9990)
|
||||
raw_Kc = thermalManager.temp_hotend[N].pid.c(); \
|
||||
EDIT_ITEM_N(float4, N, MSG_PID_C_E, &raw_Kc, 1, 9990, []{ SET_HOTEND_PID(Kc, N, raw_Kc); thermalManager.updatePID(); });
|
||||
#else
|
||||
#define _PID_HOTEND_MENU_ITEMS(N) __PID_HOTEND_MENU_ITEMS(N)
|
||||
#endif
|
||||
@ -308,7 +332,8 @@ void menu_backlash();
|
||||
#if ENABLED(PID_FAN_SCALING)
|
||||
#define _HOTEND_PID_EDIT_MENU_ITEMS(N) \
|
||||
_PID_HOTEND_MENU_ITEMS(N); \
|
||||
EDIT_ITEM_N(float4, N, MSG_PID_F_E, &PID_PARAM(Kf, N), 1, 9990)
|
||||
raw_Kf = thermalManager.temp_hotend[N].pid.f(); \
|
||||
EDIT_ITEM_N(float4, N, MSG_PID_F_E, &raw_Kf, 1, 9990, []{ SET_HOTEND_PID(Kf, N, raw_Kf); thermalManager.updatePID(); });
|
||||
#else
|
||||
#define _HOTEND_PID_EDIT_MENU_ITEMS(N) _PID_HOTEND_MENU_ITEMS(N)
|
||||
#endif
|
||||
@ -321,11 +346,12 @@ void menu_backlash();
|
||||
|
||||
#if ENABLED(PID_EDIT_MENU) && EITHER(PIDTEMPBED, PIDTEMPCHAMBER)
|
||||
#define _PID_EDIT_ITEMS_TMPL(N,T) \
|
||||
raw_Ki = unscalePID_i(T.pid.Ki); \
|
||||
raw_Kd = unscalePID_d(T.pid.Kd); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &T.pid.Kp, 1, 9990); \
|
||||
EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ copy_and_scalePID_i(N); }); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ copy_and_scalePID_d(N); })
|
||||
raw_Kp = T.pid.p(); \
|
||||
raw_Ki = T.pid.i(); \
|
||||
raw_Kd = T.pid.d(); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &raw_Kp, 1, 9990, []{ apply_PID_p(N); }); \
|
||||
EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ apply_PID_i(N); }); \
|
||||
EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ apply_PID_d(N); })
|
||||
#endif
|
||||
|
||||
#if ENABLED(PIDTEMP)
|
||||
|
Reference in New Issue
Block a user