|
|
@ -1310,42 +1310,46 @@ void lcd_quick_feedback(const bool clear_buttons) {
|
|
|
|
void lcd_babystep_zoffset() {
|
|
|
|
void lcd_babystep_zoffset() {
|
|
|
|
if (use_click()) { return lcd_goto_previous_menu_no_defer(); }
|
|
|
|
if (use_click()) { return lcd_goto_previous_menu_no_defer(); }
|
|
|
|
defer_return_to_status = true;
|
|
|
|
defer_return_to_status = true;
|
|
|
|
|
|
|
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
|
|
|
|
|
|
|
const bool do_probe = (active_extruder == 0);
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
constexpr bool do_probe = true;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
ENCODER_DIRECTION_NORMAL();
|
|
|
|
if (encoderPosition) {
|
|
|
|
if (encoderPosition) {
|
|
|
|
const int16_t babystep_increment = (int32_t)encoderPosition * (BABYSTEP_MULTIPLICATOR);
|
|
|
|
const int16_t babystep_increment = (int32_t)encoderPosition * (BABYSTEP_MULTIPLICATOR);
|
|
|
|
encoderPosition = 0;
|
|
|
|
encoderPosition = 0;
|
|
|
|
|
|
|
|
|
|
|
|
const float new_zoffset = zprobe_zoffset + planner.steps_to_mm[Z_AXIS] * babystep_increment;
|
|
|
|
const float diff = planner.steps_to_mm[Z_AXIS] * babystep_increment,
|
|
|
|
if (WITHIN(new_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) {
|
|
|
|
new_probe_offset = zprobe_zoffset + diff,
|
|
|
|
|
|
|
|
new_offs =
|
|
|
|
|
|
|
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
|
|
|
|
|
|
|
do_probe ? new_probe_offset : hotend_offset[Z_AXIS][active_extruder] - diff
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
new_probe_offset
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
;
|
|
|
|
|
|
|
|
if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
thermalManager.babystep_axis(Z_AXIS, babystep_increment);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (do_probe) zprobe_zoffset = new_offs;
|
|
|
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
|
|
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
|
|
|
if (active_extruder == 0)
|
|
|
|
else hotend_offset[Z_AXIS][active_extruder] = new_offs;
|
|
|
|
{
|
|
|
|
|
|
|
|
thermalManager.babystep_axis(Z_AXIS, babystep_increment);
|
|
|
|
|
|
|
|
zprobe_zoffset = new_zoffset;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
thermalManager.babystep_axis(Z_AXIS, babystep_increment);
|
|
|
|
|
|
|
|
hotend_offset[Z_AXIS][active_extruder] -= (planner.steps_to_mm[Z_AXIS] * babystep_increment);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
zprobe_zoffset = new_zoffset;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
|
|
|
|
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (lcdDrawUpdate) {
|
|
|
|
if (lcdDrawUpdate) {
|
|
|
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
|
|
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
|
|
|
if (active_extruder == 0) {
|
|
|
|
if (do_probe)
|
|
|
|
lcd_implementation_drawedit(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(zprobe_zoffset));
|
|
|
|
lcd_implementation_drawedit(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(zprobe_zoffset));
|
|
|
|
} else {
|
|
|
|
else
|
|
|
|
lcd_implementation_drawedit(PSTR(MSG_IDEX_Z_OFFSET), ftostr43sign(hotend_offset[Z_AXIS][active_extruder]));
|
|
|
|
lcd_implementation_drawedit(PSTR(MSG_IDEX_Z_OFFSET), ftostr43sign(hotend_offset[Z_AXIS][active_extruder]));
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
|
|
|
|
#if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
|
|
|
|
if (active_extruder == 0) {
|
|
|
|
if (do_probe) _lcd_zoffset_overlay_gfx(zprobe_zoffset);
|
|
|
|
_lcd_zoffset_overlay_gfx(zprobe_zoffset);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|