|
|
@ -1404,13 +1404,20 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
//
|
|
|
|
MENU_ITEM_EDIT(int3, MSG_SPEED, &feedrate_percentage, 10, 999); |
|
|
|
|
|
|
|
//
|
|
|
|
// Manual bed leveling, Bed Z:
|
|
|
|
//
|
|
|
|
#if ENABLED(MESH_BED_LEVELING) && ENABLED(LCD_BED_LEVELING) |
|
|
|
MENU_ITEM_EDIT(float43, MSG_BED_Z, &mbl.z_offset, -1, 1); |
|
|
|
#endif |
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
|
|
|
|
//
|
|
|
|
// Leveling Fade Height
|
|
|
|
//
|
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) && DISABLED(SLIM_LCD_MENUS) |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_Z_FADE_HEIGHT, &new_z_fade_height, 0.0, 100.0, _lcd_set_z_fade_height); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// Nozzle:
|
|
|
|
// Nozzle [1-4]:
|
|
|
@ -1883,7 +1890,7 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
#endif // LEVEL_BED_CORNERS
|
|
|
|
|
|
|
|
#if ENABLED(LCD_BED_LEVELING) |
|
|
|
#if ENABLED(LCD_BED_LEVELING) && (ENABLED(PROBE_MANUALLY) || ENABLED(MESH_BED_LEVELING)) |
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
@ -2045,76 +2052,6 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
enqueue_and_echo_commands_P(PSTR("G28")); |
|
|
|
} |
|
|
|
|
|
|
|
static bool new_level_state; |
|
|
|
void _lcd_toggle_bed_leveling() { set_bed_leveling_enabled(new_level_state); } |
|
|
|
|
|
|
|
/**
|
|
|
|
* Step 1: Bed Level entry-point |
|
|
|
* |
|
|
|
* << Prepare |
|
|
|
* Auto Home (if homing needed) |
|
|
|
* Leveling On/Off (if data exists, and homed) |
|
|
|
* Fade Height: --- (Req: ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
* Mesh Z Offset: --- (Req: MESH_BED_LEVELING) |
|
|
|
* Z Probe Offset: --- (Req: HAS_BED_PROBE, Opt: BABYSTEP_ZPROBE_OFFSET) |
|
|
|
* Level Bed > |
|
|
|
* Level Corners > (if homed) |
|
|
|
* Load Settings (Req: EEPROM_SETTINGS) |
|
|
|
* Save Settings (Req: EEPROM_SETTINGS) |
|
|
|
*/ |
|
|
|
void lcd_bed_leveling() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_PREPARE); |
|
|
|
|
|
|
|
#if DISABLED(MESH_BED_LEVELING) |
|
|
|
if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS])) |
|
|
|
MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); |
|
|
|
else |
|
|
|
#endif |
|
|
|
if (leveling_is_valid()) { |
|
|
|
new_level_state = planner.leveling_active; |
|
|
|
MENU_ITEM_EDIT_CALLBACK(bool, MSG_BED_LEVELING, &new_level_state, _lcd_toggle_bed_leveling); |
|
|
|
} |
|
|
|
|
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_Z_FADE_HEIGHT, &new_z_fade_height, 0.0, 100.0, _lcd_set_z_fade_height); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// MBL Z Offset
|
|
|
|
//
|
|
|
|
#if ENABLED(MESH_BED_LEVELING) |
|
|
|
MENU_ITEM_EDIT(float43, MSG_BED_Z, &mbl.z_offset, -1, 1); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(BABYSTEP_ZPROBE_OFFSET) |
|
|
|
MENU_ITEM(submenu, MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset); |
|
|
|
#elif HAS_BED_PROBE |
|
|
|
MENU_ITEM_EDIT(float52, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX); |
|
|
|
#endif |
|
|
|
|
|
|
|
MENU_ITEM(submenu, MSG_LEVEL_BED, _lcd_level_bed_continue); |
|
|
|
|
|
|
|
#if ENABLED(LEVEL_BED_CORNERS) |
|
|
|
// Move to the next corner for leveling
|
|
|
|
if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) |
|
|
|
MENU_ITEM(submenu, MSG_LEVEL_CORNERS, _lcd_level_bed_corners); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(EEPROM_SETTINGS) |
|
|
|
MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings); |
|
|
|
MENU_ITEM(function, MSG_STORE_EEPROM, lcd_store_settings); |
|
|
|
#endif |
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
void _lcd_goto_bed_leveling() { |
|
|
|
lcd_goto_screen(lcd_bed_leveling); |
|
|
|
new_z_fade_height = planner.z_fade_height; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#elif ENABLED(AUTO_BED_LEVELING_UBL) |
|
|
|
|
|
|
|
void _lcd_ubl_level_bed(); |
|
|
@ -2647,6 +2584,93 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
|
|
|
|
#endif // AUTO_BED_LEVELING_UBL
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(LCD_BED_LEVELING) || (PLANNER_LEVELING && DISABLED(SLIM_LCD_MENUS)) |
|
|
|
void _lcd_toggle_bed_leveling() { set_bed_leveling_enabled(!planner.leveling_active); } |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(LCD_BED_LEVELING) |
|
|
|
|
|
|
|
/**
|
|
|
|
* Step 1: Bed Level entry-point |
|
|
|
* |
|
|
|
* << Prepare |
|
|
|
* Auto Home (if homing needed) |
|
|
|
* Leveling On/Off (if data exists, and homed) |
|
|
|
* Fade Height: --- (Req: ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
* Mesh Z Offset: --- (Req: MESH_BED_LEVELING) |
|
|
|
* Z Probe Offset: --- (Req: HAS_BED_PROBE, Opt: BABYSTEP_ZPROBE_OFFSET) |
|
|
|
* Level Bed > |
|
|
|
* Level Corners > (if homed) |
|
|
|
* Load Settings (Req: EEPROM_SETTINGS) |
|
|
|
* Save Settings (Req: EEPROM_SETTINGS) |
|
|
|
*/ |
|
|
|
void lcd_bed_leveling() { |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_PREPARE); |
|
|
|
|
|
|
|
const bool is_homed = axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS]; |
|
|
|
|
|
|
|
// Auto Home if not using manual probing
|
|
|
|
#if DISABLED(PROBE_MANUALLY) && DISABLED(MESH_BED_LEVELING) |
|
|
|
if (!is_homed) MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); |
|
|
|
#endif |
|
|
|
|
|
|
|
// Level Bed
|
|
|
|
#if ENABLED(PROBE_MANUALLY) || ENABLED(MESH_BED_LEVELING) |
|
|
|
// Manual leveling uses a guided procedure
|
|
|
|
MENU_ITEM(submenu, MSG_LEVEL_BED, _lcd_level_bed_continue); |
|
|
|
#else |
|
|
|
// Automatic leveling can just run the G-code
|
|
|
|
MENU_ITEM(gcode, MSG_LEVEL_BED, is_homed ? PSTR("G29") : PSTR("G28\nG29")); |
|
|
|
#endif |
|
|
|
|
|
|
|
// Homed and leveling is valid? Then leveling can be toggled.
|
|
|
|
if (is_homed && leveling_is_valid()) { |
|
|
|
bool new_level_state = planner.leveling_active; |
|
|
|
MENU_ITEM_EDIT_CALLBACK(bool, MSG_BED_LEVELING, &new_level_state, _lcd_toggle_bed_leveling); |
|
|
|
} |
|
|
|
|
|
|
|
// Z Fade Height
|
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_Z_FADE_HEIGHT, &new_z_fade_height, 0.0, 100.0, _lcd_set_z_fade_height); |
|
|
|
#endif |
|
|
|
|
|
|
|
//
|
|
|
|
// MBL Z Offset
|
|
|
|
//
|
|
|
|
#if ENABLED(MESH_BED_LEVELING) |
|
|
|
MENU_ITEM_EDIT(float43, MSG_BED_Z, &mbl.z_offset, -1, 1); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(BABYSTEP_ZPROBE_OFFSET) |
|
|
|
MENU_ITEM(submenu, MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset); |
|
|
|
#elif HAS_BED_PROBE |
|
|
|
MENU_ITEM_EDIT(float52, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(LEVEL_BED_CORNERS) |
|
|
|
// Move to the next corner for leveling
|
|
|
|
if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) |
|
|
|
MENU_ITEM(submenu, MSG_LEVEL_CORNERS, _lcd_level_bed_corners); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(EEPROM_SETTINGS) |
|
|
|
MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings); |
|
|
|
MENU_ITEM(function, MSG_STORE_EEPROM, lcd_store_settings); |
|
|
|
#endif |
|
|
|
END_MENU(); |
|
|
|
} |
|
|
|
|
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
void _lcd_goto_bed_leveling() { |
|
|
|
lcd_goto_screen(lcd_bed_leveling); |
|
|
|
new_z_fade_height = planner.z_fade_height; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif // LCD_BED_LEVELING
|
|
|
|
|
|
|
|
/**
|
|
|
|
* |
|
|
|
* "Prepare" submenu |
|
|
@ -2683,26 +2707,44 @@ void lcd_quick_feedback(const bool clear_buttons) { |
|
|
|
// Level Bed
|
|
|
|
//
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_UBL) |
|
|
|
MENU_ITEM(submenu, MSG_UBL_LEVEL_BED, |
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
_lcd_goto_ubl_level_bed |
|
|
|
#else |
|
|
|
_lcd_ubl_level_bed |
|
|
|
#endif |
|
|
|
|
|
|
|
MENU_ITEM(submenu, MSG_UBL_LEVEL_BED, ( |
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
_lcd_goto_ubl_level_bed |
|
|
|
#else |
|
|
|
_lcd_ubl_level_bed |
|
|
|
#endif |
|
|
|
) |
|
|
|
); |
|
|
|
|
|
|
|
#elif ENABLED(LCD_BED_LEVELING) |
|
|
|
|
|
|
|
#if ENABLED(PROBE_MANUALLY) |
|
|
|
if (!g29_in_progress) |
|
|
|
#endif |
|
|
|
MENU_ITEM(submenu, MSG_BED_LEVELING, |
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
_lcd_goto_bed_leveling |
|
|
|
#else |
|
|
|
lcd_bed_leveling |
|
|
|
#endif |
|
|
|
|
|
|
|
MENU_ITEM(submenu, MSG_BED_LEVELING, ( |
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
_lcd_goto_bed_leveling |
|
|
|
#else |
|
|
|
lcd_bed_leveling |
|
|
|
#endif |
|
|
|
) |
|
|
|
); |
|
|
|
#elif PLANNER_LEVELING && DISABLED(PROBE_MANUALLY) && DISABLED(SLIM_LCD_MENUS) |
|
|
|
MENU_ITEM(gcode, MSG_BED_LEVELING, PSTR("G28\nG29")); |
|
|
|
|
|
|
|
#elif PLANNER_LEVELING && DISABLED(SLIM_LCD_MENUS) |
|
|
|
|
|
|
|
#if DISABLED(PROBE_MANUALLY) |
|
|
|
MENU_ITEM(gcode, MSG_LEVEL_BED, PSTR("G28\nG29")); |
|
|
|
#endif |
|
|
|
if (leveling_is_valid()) { |
|
|
|
bool new_level_state = planner.leveling_active; |
|
|
|
MENU_ITEM_EDIT_CALLBACK(bool, MSG_BED_LEVELING, &new_level_state, _lcd_toggle_bed_leveling); |
|
|
|
} |
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_Z_FADE_HEIGHT, &new_z_fade_height, 0.0, 100.0, _lcd_set_z_fade_height); |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
#if ENABLED(LEVEL_BED_CORNERS) && DISABLED(LCD_BED_LEVELING) |
|
|
|