Make Autotune options into Menu Edit Items
This commit is contained in:
@@ -1067,6 +1067,33 @@ static void lcd_control_menu() {
|
||||
*
|
||||
*/
|
||||
|
||||
#if ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED)
|
||||
|
||||
#if ENABLED(PIDTEMP)
|
||||
int autotune_temp[EXTRUDERS] = { 150 };
|
||||
const int heater_maxtemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP);
|
||||
#endif
|
||||
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
int autotune_temp_bed = 70;
|
||||
#endif
|
||||
|
||||
static void _lcd_autotune(int e) {
|
||||
char cmd[30];
|
||||
sprintf_P(cmd, PSTR("M303 U1 E%d S%d"), e,
|
||||
#if ENABLED(PIDTEMP) && ENABLED(PIDTEMPBED)
|
||||
e < 0 ? autotune_temp_bed : autotune_temp[e]
|
||||
#elif ENABLED(PIDTEMPBED)
|
||||
autotune_temp_bed
|
||||
#else
|
||||
autotune_temp[e]
|
||||
#endif
|
||||
);
|
||||
enqueue_and_echo_command_now(cmd);
|
||||
}
|
||||
|
||||
#endif PIDTEMP || PIDTEMPBED
|
||||
|
||||
#if ENABLED(PIDTEMP)
|
||||
|
||||
// Helpers for editing PID Ki & Kd values
|
||||
@@ -1079,18 +1106,19 @@ static void lcd_control_menu() {
|
||||
PID_PARAM(Kd, e) = scalePID_d(raw_Kd);
|
||||
updatePID();
|
||||
}
|
||||
#define COPY_AND_SCALE(eindex) \
|
||||
#define _PIDTEMP_FUNCTIONS(eindex) \
|
||||
void copy_and_scalePID_i_E ## eindex() { copy_and_scalePID_i(eindex); } \
|
||||
void copy_and_scalePID_d_E ## eindex() { copy_and_scalePID_d(eindex); }
|
||||
void copy_and_scalePID_d_E ## eindex() { copy_and_scalePID_d(eindex); } \
|
||||
void lcd_autotune_callback_E ## eindex() { _lcd_autotune(eindex); }
|
||||
|
||||
COPY_AND_SCALE(0);
|
||||
_PIDTEMP_FUNCTIONS(0);
|
||||
#if ENABLED(PID_PARAMS_PER_EXTRUDER)
|
||||
#if EXTRUDERS > 1
|
||||
COPY_AND_SCALE(1);
|
||||
_PIDTEMP_FUNCTIONS(1);
|
||||
#if EXTRUDERS > 2
|
||||
COPY_AND_SCALE(2);
|
||||
_PIDTEMP_FUNCTIONS(2);
|
||||
#if EXTRUDERS > 3
|
||||
COPY_AND_SCALE(3);
|
||||
_PIDTEMP_FUNCTIONS(3);
|
||||
#endif //EXTRUDERS > 3
|
||||
#endif //EXTRUDERS > 2
|
||||
#endif //EXTRUDERS > 1
|
||||
@@ -1184,35 +1212,36 @@ static void lcd_control_temperature_menu() {
|
||||
//
|
||||
#if ENABLED(PIDTEMP)
|
||||
|
||||
#define _PID_MENU_ITEMS(ELABEL, eindex) \
|
||||
#define _PID_BASE_MENU_ITEMS(ELABEL, eindex) \
|
||||
raw_Ki = unscalePID_i(PID_PARAM(Ki, eindex)); \
|
||||
raw_Kd = unscalePID_d(PID_PARAM(Kd, eindex)); \
|
||||
MENU_ITEM_EDIT(float52, MSG_PID_P ELABEL, &PID_PARAM(Kp, eindex), 1, 9990); \
|
||||
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I ELABEL, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E ## eindex); \
|
||||
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, copy_and_scalePID_d_E ## eindex)
|
||||
|
||||
|
||||
#if ENABLED(PID_ADD_EXTRUSION_RATE)
|
||||
#define PID_MENU_ITEMS(ELABEL, eindex, AUTOTUNE_CMD) \
|
||||
_PID_MENU_ITEMS(ELABEL, eindex); \
|
||||
MENU_ITEM_EDIT(float3, MSG_PID_C ELABEL, &PID_PARAM(Kc, eindex), 1, 9990); \
|
||||
MENU_ITEM(gcode, MSG_PID_AUTOTUNE ELABEL, PSTR(AUTOTUNE_CMD))
|
||||
#define _PID_MENU_ITEMS(ELABEL, eindex) \
|
||||
_PID_BASE_MENU_ITEMS(ELABEL, eindex); \
|
||||
MENU_ITEM_EDIT(float3, MSG_PID_C ELABEL, &PID_PARAM(Kc, eindex), 1, 9990)
|
||||
#else
|
||||
#define PID_MENU_ITEMS(ELABEL, eindex, AUTOTUNE_CMD) \
|
||||
_PID_MENU_ITEMS(ELABEL, eindex); \
|
||||
MENU_ITEM(gcode, MSG_PID_AUTOTUNE ELABEL, PSTR(AUTOTUNE_CMD))
|
||||
#define _PID_MENU_ITEMS(ELABEL, eindex) _PID_BASE_MENU_ITEMS(ELABEL, eindex)
|
||||
#endif
|
||||
|
||||
#define PID_MENU_ITEMS(ELABEL, eindex) \
|
||||
_PID_MENU_ITEMS(ELABEL, eindex); \
|
||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_PID_AUTOTUNE ELABEL, &autotune_temp[eindex], 150, heater_maxtemp[eindex] - 15, lcd_autotune_callback_E ## eindex)
|
||||
|
||||
#if ENABLED(PID_PARAMS_PER_EXTRUDER) && EXTRUDERS > 1
|
||||
PID_MENU_ITEMS(MSG_E1, 0, "M303 U1");
|
||||
PID_MENU_ITEMS(MSG_E2, 1, "M303 U1 E1");
|
||||
PID_MENU_ITEMS(MSG_E1, 0);
|
||||
PID_MENU_ITEMS(MSG_E2, 1);
|
||||
#if EXTRUDERS > 2
|
||||
PID_MENU_ITEMS(MSG_E3, 2, "M303 U1 E2");
|
||||
PID_MENU_ITEMS(MSG_E3, 2);
|
||||
#if EXTRUDERS > 3
|
||||
PID_MENU_ITEMS(MSG_E4, 3, "M303 U1 E3");
|
||||
PID_MENU_ITEMS(MSG_E4, 3);
|
||||
#endif //EXTRUDERS > 3
|
||||
#endif //EXTRUDERS > 2
|
||||
#else //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1
|
||||
PID_MENU_ITEMS("", 0, "M303 U1");
|
||||
PID_MENU_ITEMS("", 0);
|
||||
#endif //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1
|
||||
|
||||
#endif //PIDTEMP
|
||||
|
Reference in New Issue
Block a user