|
|
@ -181,19 +181,19 @@ uint16_t max_display_update_time = 0; |
|
|
|
|
|
|
|
void lcd_main_menu(); |
|
|
|
void lcd_tune_menu(); |
|
|
|
void lcd_prepare_menu(); |
|
|
|
void lcd_movement_menu(); |
|
|
|
void lcd_move_menu(); |
|
|
|
void lcd_control_menu(); |
|
|
|
void lcd_control_temperature_menu(); |
|
|
|
void lcd_control_motion_menu(); |
|
|
|
void lcd_configuration_menu(); |
|
|
|
void lcd_temperature_menu(); |
|
|
|
void lcd_advanced_settings_menu(); |
|
|
|
|
|
|
|
#if DISABLED(SLIM_LCD_MENUS) |
|
|
|
void lcd_control_temperature_preheat_material1_settings_menu(); |
|
|
|
void lcd_control_temperature_preheat_material2_settings_menu(); |
|
|
|
void lcd_configuration_temperature_preheat_material1_settings_menu(); |
|
|
|
void lcd_configuration_temperature_preheat_material2_settings_menu(); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE) |
|
|
|
void lcd_control_filament_menu(); |
|
|
|
void lcd_advanced_filament_menu(); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(LCD_INFO_MENU) |
|
|
@ -226,7 +226,7 @@ uint16_t max_display_update_time = 0; |
|
|
|
|
|
|
|
#if ENABLED(FWRETRACT) |
|
|
|
#include "../feature/fwretract.h" |
|
|
|
void lcd_control_retract_menu(); |
|
|
|
void lcd_config_retract_menu(); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION) |
|
|
@ -1093,6 +1093,12 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
|
#if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART) |
|
|
|
|
|
|
|
void lcd_autostart_sd() { card.beginautostart(); } |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
void lcd_main_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_WATCH); |
|
|
@ -1119,13 +1125,6 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
MENU_ITEM_EDIT_CALLBACK(bool, MSG_CASE_LIGHT, (bool*)&case_light_on, update_case_light); |
|
|
|
#endif |
|
|
|
|
|
|
|
if (planner.movesplanned() || IS_SD_PRINTING) |
|
|
|
MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu); |
|
|
|
else |
|
|
|
MENU_ITEM(submenu, MSG_PREPARE, lcd_prepare_menu); |
|
|
|
|
|
|
|
MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu); |
|
|
|
|
|
|
|
#if ENABLED(SDSUPPORT) |
|
|
|
if (card.cardOK) { |
|
|
|
if (card.isFileOpen()) { |
|
|
@ -1150,6 +1149,25 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
} |
|
|
|
#endif // SDSUPPORT
|
|
|
|
|
|
|
|
if (planner.movesplanned() || IS_SD_PRINTING) |
|
|
|
MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu); |
|
|
|
else { |
|
|
|
MENU_ITEM(submenu, MSG_MOTION, lcd_movement_menu); |
|
|
|
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_temperature_menu); |
|
|
|
MENU_ITEM(submenu, MSG_CONFIGURATION, lcd_configuration_menu); |
|
|
|
} |
|
|
|
|
|
|
|
#if ENABLED(ADVANCED_PAUSE_FEATURE) |
|
|
|
#if E_STEPPERS == 1 && DISABLED(FILAMENT_LOAD_UNLOAD_GCODES) |
|
|
|
if (thermalManager.targetHotEnoughToExtrude(active_extruder)) |
|
|
|
MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600 B0")); |
|
|
|
else |
|
|
|
MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_temp_menu_e0_filament_change); |
|
|
|
#else |
|
|
|
MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_change_filament_menu); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(LCD_INFO_MENU) |
|
|
|
MENU_ITEM(submenu, MSG_INFO_MENU, lcd_info_menu); |
|
|
|
#endif |
|
|
@ -1158,6 +1176,23 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
MENU_ITEM(submenu, MSG_LED_CONTROL, lcd_led_menu); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// Switch power on/off
|
|
|
|
//
|
|
|
|
#if HAS_POWER_SWITCH |
|
|
|
if (powersupply_on) |
|
|
|
MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81")); |
|
|
|
else |
|
|
|
MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80")); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// Autostart
|
|
|
|
//
|
|
|
|
#if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART) |
|
|
|
MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd); |
|
|
|
#endif |
|
|
|
|
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
@ -1167,17 +1202,6 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
|
#if HAS_M206_COMMAND |
|
|
|
/**
|
|
|
|
* Set the home offset based on the current_position |
|
|
|
*/ |
|
|
|
void lcd_set_home_offsets() { |
|
|
|
// M428 Command
|
|
|
|
enqueue_and_echo_commands_P(PSTR("M428")); |
|
|
|
lcd_return_to_status(); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY) || ENABLED(MESH_EDIT_GFX_OVERLAY) |
|
|
|
|
|
|
|
void _lcd_zoffset_overlay_gfx(const float zvalue) { |
|
|
@ -1511,20 +1535,6 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// Change filament
|
|
|
|
//
|
|
|
|
#if ENABLED(ADVANCED_PAUSE_FEATURE) |
|
|
|
#if E_STEPPERS == 1 && DISABLED(FILAMENT_LOAD_UNLOAD_GCODES) |
|
|
|
if (thermalManager.targetHotEnoughToExtrude(active_extruder)) |
|
|
|
MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600 B0")); |
|
|
|
else |
|
|
|
MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_temp_menu_e0_filament_change); |
|
|
|
#else |
|
|
|
MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_change_filament_menu); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
@ -1578,7 +1588,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Prepare" submenu items |
|
|
|
* "Temperature" submenu items |
|
|
|
* |
|
|
|
*/ |
|
|
|
void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb, const int16_t fan) { |
|
|
@ -1691,7 +1701,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
void lcd_preheat_m1_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_PREPARE); |
|
|
|
MENU_BACK(MSG_TEMPERATURE); |
|
|
|
#if HOTENDS == 1 |
|
|
|
#if HAS_HEATED_BED |
|
|
|
MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_m1_e0); |
|
|
@ -1743,7 +1753,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
void lcd_preheat_m2_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_PREPARE); |
|
|
|
MENU_BACK(MSG_TEMPERATURE); |
|
|
|
#if HOTENDS == 1 |
|
|
|
#if HAS_HEATED_BED |
|
|
|
MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_m2_e0); |
|
|
@ -1823,12 +1833,6 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART) |
|
|
|
|
|
|
|
void lcd_autostart_sd() { card.beginautostart(); } |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(EEPROM_SETTINGS) |
|
|
|
static void lcd_store_settings() { lcd_completion_feedback(settings.save()); } |
|
|
|
static void lcd_load_settings() { lcd_completion_feedback(settings.load()); } |
|
|
@ -1898,7 +1902,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Prepare" > "Level Bed" handlers |
|
|
|
* "Motion" > "Level Bed" handlers |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
@ -2545,7 +2549,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
/**
|
|
|
|
* UBL System submenu |
|
|
|
* |
|
|
|
* << Prepare |
|
|
|
* << Motion |
|
|
|
* - Manually Build Mesh >> |
|
|
|
* - Activate UBL >> |
|
|
|
* - Deactivate UBL >> |
|
|
@ -2558,7 +2562,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
void _lcd_ubl_level_bed() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_PREPARE); |
|
|
|
MENU_BACK(MSG_MOTION); |
|
|
|
MENU_ITEM(gcode, MSG_UBL_ACTIVATE_MESH, PSTR("G29 A")); |
|
|
|
MENU_ITEM(gcode, MSG_UBL_DEACTIVATE_MESH, PSTR("G29 D")); |
|
|
|
MENU_ITEM(submenu, MSG_UBL_STEP_BY_STEP_MENU, _lcd_ubl_step_by_step); |
|
|
@ -2585,7 +2589,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
/**
|
|
|
|
* Step 1: Bed Level entry-point |
|
|
|
* |
|
|
|
* << Prepare |
|
|
|
* << Motion |
|
|
|
* Auto Home (if homing needed) |
|
|
|
* Leveling On/Off (if data exists, and homed) |
|
|
|
* Fade Height: --- (Req: ENABLE_LEVELING_FADE_HEIGHT) |
|
|
@ -2598,7 +2602,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
*/ |
|
|
|
void lcd_bed_leveling() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_PREPARE); |
|
|
|
MENU_BACK(MSG_MOTION); |
|
|
|
|
|
|
|
const bool is_homed = all_axes_known(); |
|
|
|
|
|
|
@ -2656,11 +2660,11 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Prepare" submenu |
|
|
|
* "Movement" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
|
void lcd_prepare_menu() { |
|
|
|
void lcd_movement_menu() { |
|
|
|
START_MENU(); |
|
|
|
|
|
|
|
//
|
|
|
@ -2727,92 +2731,11 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
MENU_ITEM(function, MSG_LEVEL_CORNERS, _lcd_level_bed_corners); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if HAS_M206_COMMAND && DISABLED(SLIM_LCD_MENUS) |
|
|
|
//
|
|
|
|
// Set Home Offsets
|
|
|
|
//
|
|
|
|
MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// Disable Steppers
|
|
|
|
//
|
|
|
|
MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); |
|
|
|
|
|
|
|
//
|
|
|
|
// Change filament
|
|
|
|
//
|
|
|
|
#if ENABLED(ADVANCED_PAUSE_FEATURE) |
|
|
|
if (!IS_SD_FILE_OPEN) { |
|
|
|
#if E_STEPPERS == 1 && DISABLED(FILAMENT_LOAD_UNLOAD_GCODES) |
|
|
|
if (thermalManager.targetHotEnoughToExtrude(active_extruder)) |
|
|
|
MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600 B0")); |
|
|
|
else |
|
|
|
MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_temp_menu_e0_filament_change); |
|
|
|
#else |
|
|
|
MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_change_filament_menu); |
|
|
|
#endif |
|
|
|
} |
|
|
|
#endif // ADVANCED_PAUSE_FEATURE
|
|
|
|
|
|
|
|
#if HAS_TEMP_HOTEND |
|
|
|
|
|
|
|
//
|
|
|
|
// Cooldown
|
|
|
|
//
|
|
|
|
bool has_heat = false; |
|
|
|
HOTEND_LOOP() if (thermalManager.target_temperature[HOTEND_INDEX]) { has_heat = true; break; } |
|
|
|
#if HAS_HEATED_BED |
|
|
|
if (thermalManager.target_temperature_bed) has_heat = true; |
|
|
|
#endif |
|
|
|
if (has_heat) MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown); |
|
|
|
|
|
|
|
//
|
|
|
|
// Preheat for Material 1 and 2
|
|
|
|
//
|
|
|
|
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_4 != 0 || HAS_HEATED_BED |
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_1, lcd_preheat_m1_menu); |
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_2, lcd_preheat_m2_menu); |
|
|
|
#else |
|
|
|
MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_m1_e0_only); |
|
|
|
MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_m2_e0_only); |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif // HAS_TEMP_HOTEND
|
|
|
|
|
|
|
|
//
|
|
|
|
// BLTouch Self-Test and Reset
|
|
|
|
//
|
|
|
|
#if ENABLED(BLTOUCH) |
|
|
|
MENU_ITEM(gcode, MSG_BLTOUCH_SELFTEST, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_SELFTEST))); |
|
|
|
if (!endstops.z_probe_enabled && TEST_BLTOUCH()) |
|
|
|
MENU_ITEM(gcode, MSG_BLTOUCH_RESET, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_RESET))); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// Switch power on/off
|
|
|
|
//
|
|
|
|
#if HAS_POWER_SWITCH |
|
|
|
if (powersupply_on) |
|
|
|
MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81")); |
|
|
|
else |
|
|
|
MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80")); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// Autostart
|
|
|
|
//
|
|
|
|
#if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART) |
|
|
|
MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// Delta Calibration
|
|
|
|
//
|
|
|
|
#if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION) |
|
|
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu); |
|
|
|
#endif |
|
|
|
|
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
@ -2991,7 +2914,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Prepare" > "Move Axis" submenu |
|
|
|
* "Motion" > "Move Axis" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
@ -3143,7 +3066,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Prepare" > "Move Xmm" > "Move XYZ" submenu |
|
|
|
* "Motion" > "Move Xmm" > "Move XYZ" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
@ -3199,7 +3122,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Prepare" > "Move Axis" submenu |
|
|
|
* "Motion" > "Move Axis" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
@ -3221,7 +3144,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
void lcd_move_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_PREPARE); |
|
|
|
MENU_BACK(MSG_MOTION); |
|
|
|
|
|
|
|
#if HAS_SOFTWARE_ENDSTOPS && ENABLED(SOFT_ENDSTOPS_MENU_ITEM) |
|
|
|
MENU_ITEM_EDIT(bool, MSG_LCD_SOFT_ENDSTOPS, &soft_endstops_enabled); |
|
|
@ -3310,7 +3233,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Control" submenu |
|
|
|
* "Configuration" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
@ -3332,30 +3255,31 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
static void lcd_init_eeprom_confirm() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_CONTROL); |
|
|
|
MENU_BACK(MSG_ADVANCED_SETTINGS); |
|
|
|
MENU_ITEM(function, MSG_INIT_EEPROM, lcd_init_eeprom); |
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
void lcd_control_menu() { |
|
|
|
void lcd_configuration_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_MAIN); |
|
|
|
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu); |
|
|
|
MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu); |
|
|
|
|
|
|
|
#if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE) |
|
|
|
MENU_ITEM(submenu, MSG_FILAMENT, lcd_control_filament_menu); |
|
|
|
#elif ENABLED(LIN_ADVANCE) |
|
|
|
MENU_ITEM_EDIT(float52, MSG_ADVANCE_K, &planner.extruder_advance_K, 0, 999); |
|
|
|
MENU_ITEM(submenu, MSG_ADVANCED_SETTINGS, lcd_advanced_settings_menu); |
|
|
|
|
|
|
|
//
|
|
|
|
// Delta Calibration
|
|
|
|
//
|
|
|
|
#if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION) |
|
|
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if HAS_LCD_CONTRAST |
|
|
|
MENU_ITEM_EDIT_CALLBACK(int3, MSG_CONTRAST, &lcd_contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX, lcd_callback_set_contrast, true); |
|
|
|
#endif |
|
|
|
#if ENABLED(FWRETRACT) |
|
|
|
MENU_ITEM(submenu, MSG_RETRACT, lcd_control_retract_menu); |
|
|
|
MENU_ITEM(submenu, MSG_RETRACT, lcd_config_retract_menu); |
|
|
|
#endif |
|
|
|
#if ENABLED(DAC_STEPPER_CURRENT) |
|
|
|
MENU_ITEM(submenu, MSG_DRIVE_STRENGTH, lcd_dac_menu); |
|
|
@ -3368,6 +3292,12 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
MENU_ITEM(submenu, MSG_BLTOUCH, bltouch_menu); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if DISABLED(SLIM_LCD_MENUS) |
|
|
|
// Preheat configurations
|
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_1_SETTINGS, lcd_configuration_temperature_preheat_material1_settings_menu); |
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_2_SETTINGS, lcd_configuration_temperature_preheat_material2_settings_menu); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(EEPROM_SETTINGS) |
|
|
|
MENU_ITEM(function, MSG_STORE_EEPROM, lcd_store_settings); |
|
|
|
MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings); |
|
|
@ -3375,10 +3305,6 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
MENU_ITEM(function, MSG_RESTORE_FAILSAFE, lcd_factory_settings); |
|
|
|
|
|
|
|
#if ENABLED(EEPROM_SETTINGS) && DISABLED(SLIM_LCD_MENUS) |
|
|
|
MENU_ITEM(submenu, MSG_INIT_EEPROM, lcd_init_eeprom_confirm); |
|
|
|
#endif |
|
|
|
|
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
@ -3464,16 +3390,12 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Control" > "Temperature" submenu |
|
|
|
* "Temperature" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
void lcd_control_temperature_menu() { |
|
|
|
void lcd_temperature_menu() { |
|
|
|
START_MENU(); |
|
|
|
|
|
|
|
//
|
|
|
|
// ^ Control
|
|
|
|
//
|
|
|
|
MENU_BACK(MSG_CONTROL); |
|
|
|
MENU_BACK(MSG_MAIN); |
|
|
|
|
|
|
|
//
|
|
|
|
// Nozzle:
|
|
|
@ -3526,6 +3448,42 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
#endif |
|
|
|
#endif // FAN_COUNT > 0
|
|
|
|
|
|
|
|
#if HAS_TEMP_HOTEND |
|
|
|
|
|
|
|
//
|
|
|
|
// Cooldown
|
|
|
|
//
|
|
|
|
bool has_heat = false; |
|
|
|
HOTEND_LOOP() if (thermalManager.target_temperature[HOTEND_INDEX]) { has_heat = true; break; } |
|
|
|
#if HAS_TEMP_BED |
|
|
|
if (thermalManager.target_temperature_bed) has_heat = true; |
|
|
|
#endif |
|
|
|
if (has_heat) MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown); |
|
|
|
|
|
|
|
//
|
|
|
|
// Preheat for Material 1 and 2
|
|
|
|
//
|
|
|
|
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_4 != 0 || HAS_HEATED_BED |
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_1, lcd_preheat_m1_menu); |
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_2, lcd_preheat_m2_menu); |
|
|
|
#else |
|
|
|
MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_m1_e0_only); |
|
|
|
MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_m2_e0_only); |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif // HAS_TEMP_HOTEND
|
|
|
|
|
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Advanced Settings" -> "Temperature" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
void lcd_advanced_temperature_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_ADVANCED_SETTINGS); |
|
|
|
//
|
|
|
|
// Autotemp, Min, Max, Fact
|
|
|
|
//
|
|
|
@ -3587,24 +3545,12 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
#endif // PIDTEMP
|
|
|
|
|
|
|
|
#if DISABLED(SLIM_LCD_MENUS) |
|
|
|
//
|
|
|
|
// Preheat Material 1 conf
|
|
|
|
//
|
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_1_SETTINGS, lcd_control_temperature_preheat_material1_settings_menu); |
|
|
|
|
|
|
|
//
|
|
|
|
// Preheat Material 2 conf
|
|
|
|
//
|
|
|
|
MENU_ITEM(submenu, MSG_PREHEAT_2_SETTINGS, lcd_control_temperature_preheat_material2_settings_menu); |
|
|
|
#endif |
|
|
|
|
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
|
#if DISABLED(SLIM_LCD_MENUS) |
|
|
|
|
|
|
|
void _lcd_control_temperature_preheat_settings_menu(const uint8_t material) { |
|
|
|
void _lcd_configuration_temperature_preheat_settings_menu(const uint8_t material) { |
|
|
|
#if HOTENDS > 4 |
|
|
|
#define MINTEMP_ALL MIN5(HEATER_0_MINTEMP, HEATER_1_MINTEMP, HEATER_2_MINTEMP, HEATER_3_MINTEMP, HEATER_4_MINTEMP) |
|
|
|
#define MAXTEMP_ALL MAX5(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP) |
|
|
@ -3622,7 +3568,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
#define MAXTEMP_ALL HEATER_0_MAXTEMP |
|
|
|
#endif |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_TEMPERATURE); |
|
|
|
MENU_BACK(MSG_CONFIGURATION); |
|
|
|
MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &lcd_preheat_fan_speed[material], 0, 255); |
|
|
|
#if HAS_TEMP_HOTEND |
|
|
|
MENU_ITEM_EDIT(int3, MSG_NOZZLE, &lcd_preheat_hotend_temp[material], MINTEMP_ALL, MAXTEMP_ALL - 15); |
|
|
@ -3641,14 +3587,14 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
* "Temperature" > "Preheat Material 1 conf" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
void lcd_control_temperature_preheat_material1_settings_menu() { _lcd_control_temperature_preheat_settings_menu(0); } |
|
|
|
void lcd_configuration_temperature_preheat_material1_settings_menu() { _lcd_configuration_temperature_preheat_settings_menu(0); } |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Temperature" > "Preheat Material 2 conf" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
void lcd_control_temperature_preheat_material2_settings_menu() { _lcd_control_temperature_preheat_settings_menu(1); } |
|
|
|
void lcd_configuration_temperature_preheat_material2_settings_menu() { _lcd_configuration_temperature_preheat_settings_menu(1); } |
|
|
|
|
|
|
|
void _reset_acceleration_rates() { planner.reset_acceleration_rates(); } |
|
|
|
#if ENABLED(DISTINCT_E_FACTORS) |
|
|
@ -3688,9 +3634,9 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
#endif |
|
|
|
|
|
|
|
// M203 / M205 Velocity options
|
|
|
|
void lcd_control_motion_velocity_menu() { |
|
|
|
void lcd_advanced_velocity_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_MOTION); |
|
|
|
MENU_BACK(MSG_ADVANCED_SETTINGS); |
|
|
|
|
|
|
|
// M203 Max Feedrate
|
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_A, &planner.max_feedrate_mm_s[A_AXIS], 1, 999); |
|
|
@ -3724,9 +3670,9 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
} |
|
|
|
|
|
|
|
// M201 / M204 Accelerations
|
|
|
|
void lcd_control_motion_acceleration_menu() { |
|
|
|
void lcd_advanced_acceleration_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_MOTION); |
|
|
|
MENU_BACK(MSG_ADVANCED_SETTINGS); |
|
|
|
|
|
|
|
// M204 P Acceleration
|
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float5, MSG_ACC, &planner.acceleration, 10, 99000); |
|
|
@ -3763,9 +3709,9 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
} |
|
|
|
|
|
|
|
// M205 Jerk
|
|
|
|
void lcd_control_motion_jerk_menu() { |
|
|
|
void lcd_advanced_jerk_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_MOTION); |
|
|
|
MENU_BACK(MSG_ADVANCED_SETTINGS); |
|
|
|
|
|
|
|
#if ENABLED(JUNCTION_DEVIATION) |
|
|
|
MENU_ITEM_EDIT_CALLBACK(float43, MSG_JUNCTION_DEVIATION, &planner.junction_deviation_mm, 0.01f, 0.3f, planner.recalculate_max_e_jerk); |
|
|
@ -3784,9 +3730,9 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
} |
|
|
|
|
|
|
|
// M92 Steps-per-mm
|
|
|
|
void lcd_control_motion_steps_per_mm_menu() { |
|
|
|
void lcd_advanced_steps_per_mm_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_MOTION); |
|
|
|
MENU_BACK(MSG_ADVANCED_SETTINGS); |
|
|
|
|
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_ASTEPS, &planner.axis_steps_per_mm[A_AXIS], 5, 9999, _planner_refresh_positioning); |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_BSTEPS, &planner.axis_steps_per_mm[B_AXIS], 5, 9999, _planner_refresh_positioning); |
|
|
@ -3816,13 +3762,24 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Control" > "Motion" submenu |
|
|
|
* "Advanced Settings" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
|
void lcd_control_motion_menu() { |
|
|
|
#if HAS_M206_COMMAND |
|
|
|
/**
|
|
|
|
* Set the home offset based on the current_position |
|
|
|
*/ |
|
|
|
void lcd_set_home_offsets() { |
|
|
|
// M428 Command
|
|
|
|
enqueue_and_echo_commands_P(PSTR("M428")); |
|
|
|
lcd_return_to_status(); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
void lcd_advanced_settings_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_CONTROL); |
|
|
|
MENU_BACK(MSG_CONFIGURATION); |
|
|
|
|
|
|
|
#if ENABLED(BABYSTEP_ZPROBE_OFFSET) |
|
|
|
MENU_ITEM(submenu, MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset); |
|
|
@ -3832,37 +3789,65 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
#if DISABLED(SLIM_LCD_MENUS) |
|
|
|
|
|
|
|
#if HAS_M206_COMMAND |
|
|
|
//
|
|
|
|
// Set Home Offsets
|
|
|
|
//
|
|
|
|
MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets); |
|
|
|
#endif |
|
|
|
|
|
|
|
// M203 / M205 - Feedrate items
|
|
|
|
MENU_ITEM(submenu, MSG_VELOCITY, lcd_control_motion_velocity_menu); |
|
|
|
MENU_ITEM(submenu, MSG_VELOCITY, lcd_advanced_velocity_menu); |
|
|
|
|
|
|
|
// M201 - Acceleration items
|
|
|
|
MENU_ITEM(submenu, MSG_ACCELERATION, lcd_control_motion_acceleration_menu); |
|
|
|
MENU_ITEM(submenu, MSG_ACCELERATION, lcd_advanced_acceleration_menu); |
|
|
|
|
|
|
|
// M205 - Max Jerk
|
|
|
|
MENU_ITEM(submenu, MSG_JERK, lcd_control_motion_jerk_menu); |
|
|
|
MENU_ITEM(submenu, MSG_JERK, lcd_advanced_jerk_menu); |
|
|
|
|
|
|
|
// M92 - Steps Per mm
|
|
|
|
MENU_ITEM(submenu, MSG_STEPS_PER_MM, lcd_control_motion_steps_per_mm_menu); |
|
|
|
MENU_ITEM(submenu, MSG_STEPS_PER_MM, lcd_advanced_steps_per_mm_menu); |
|
|
|
|
|
|
|
#endif // !SLIM_LCD_MENUS
|
|
|
|
|
|
|
|
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_advanced_temperature_menu); |
|
|
|
|
|
|
|
#if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE) |
|
|
|
MENU_ITEM(submenu, MSG_FILAMENT, lcd_advanced_filament_menu); |
|
|
|
#elif ENABLED(LIN_ADVANCE) |
|
|
|
MENU_ITEM_EDIT(float32, MSG_ADVANCE_K, &planner.extruder_advance_K, 0, 999); |
|
|
|
#endif |
|
|
|
|
|
|
|
// M540 S - Abort on endstop hit when SD printing
|
|
|
|
#if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) |
|
|
|
MENU_ITEM_EDIT(bool, MSG_ENDSTOP_ABORT, &planner.abort_on_endstop_hit); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// BLTouch Self-Test and Reset
|
|
|
|
//
|
|
|
|
#if ENABLED(BLTOUCH) |
|
|
|
MENU_ITEM(gcode, MSG_BLTOUCH_SELFTEST, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_SELFTEST))); |
|
|
|
if (!endstops.z_probe_enabled && TEST_BLTOUCH()) |
|
|
|
MENU_ITEM(gcode, MSG_BLTOUCH_RESET, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_RESET))); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(EEPROM_SETTINGS) && DISABLED(SLIM_LCD_MENUS) |
|
|
|
MENU_ITEM(submenu, MSG_INIT_EEPROM, lcd_init_eeprom_confirm); |
|
|
|
#endif |
|
|
|
|
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
|
#if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE) |
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Control" > "Filament" submenu |
|
|
|
* "Advanced Settings" > "Filament" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
void lcd_control_filament_menu() { |
|
|
|
void lcd_advanced_filament_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_CONTROL); |
|
|
|
MENU_BACK(MSG_ADVANCED_SETTINGS); |
|
|
|
|
|
|
|
#if ENABLED(LIN_ADVANCE) |
|
|
|
MENU_ITEM_EDIT(float52, MSG_ADVANCE_K, &planner.extruder_advance_K, 0, 999); |
|
|
@ -3941,12 +3926,12 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Control" > "Retract" submenu |
|
|
|
* "Configuration" > "Retract" submenu |
|
|
|
* |
|
|
|
*/ |
|
|
|
#if ENABLED(FWRETRACT) |
|
|
|
|
|
|
|
void lcd_control_retract_menu() { |
|
|
|
void lcd_config_retract_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_CONTROL); |
|
|
|
MENU_ITEM_EDIT_CALLBACK(bool, MSG_AUTORETRACT, &fwretract.autoretract_enabled, fwretract.refresh_autoretract); |
|
|
@ -4378,7 +4363,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
#if E_STEPPERS > 1 || ENABLED(FILAMENT_LOAD_UNLOAD_GCODES) |
|
|
|
void lcd_change_filament_menu() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_PREPARE); |
|
|
|
MENU_BACK(MSG_MAIN); |
|
|
|
|
|
|
|
// Change filament
|
|
|
|
#if E_STEPPERS == 1 |
|
|
|