Probe Wizard XY position (#20167)
This commit is contained in:
parent
7848096acb
commit
26d3caf97c
|
@ -1085,6 +1085,7 @@
|
||||||
//#define PROBE_OFFSET_WIZARD
|
//#define PROBE_OFFSET_WIZARD
|
||||||
#if ENABLED(PROBE_OFFSET_WIZARD)
|
#if ENABLED(PROBE_OFFSET_WIZARD)
|
||||||
#define PROBE_OFFSET_START -4.0 // Estimated nozzle-to-probe Z offset, plus a little extra
|
#define PROBE_OFFSET_START -4.0 // Estimated nozzle-to-probe Z offset, plus a little extra
|
||||||
|
//#define PROBE_OFFSET_WIZARD_XY_POS XY_CENTER // Set a convenient position to do the measurement
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -3447,7 +3448,7 @@
|
||||||
#define GANTRY_CALIBRATION_FEEDRATE 500 // Feedrate for correction move
|
#define GANTRY_CALIBRATION_FEEDRATE 500 // Feedrate for correction move
|
||||||
//#define GANTRY_CALIBRATION_TO_MIN // Enable to calibrate Z in the MIN direction
|
//#define GANTRY_CALIBRATION_TO_MIN // Enable to calibrate Z in the MIN direction
|
||||||
|
|
||||||
//#define GANTRY_CALIBRATION_SAFE_POSITION { X_CENTER, Y_CENTER } // Safe position for nozzle
|
//#define GANTRY_CALIBRATION_SAFE_POSITION XY_CENTER // Safe position for nozzle
|
||||||
//#define GANTRY_CALIBRATION_XY_PARK_FEEDRATE 3000 // XY Park Feedrate - MMM
|
//#define GANTRY_CALIBRATION_XY_PARK_FEEDRATE 3000 // XY Park Feedrate - MMM
|
||||||
//#define GANTRY_CALIBRATION_COMMANDS_PRE ""
|
//#define GANTRY_CALIBRATION_COMMANDS_PRE ""
|
||||||
#define GANTRY_CALIBRATION_COMMANDS_POST "G28" // G28 highly recommended to ensure an accurate position
|
#define GANTRY_CALIBRATION_COMMANDS_POST "G28" // G28 highly recommended to ensure an accurate position
|
||||||
|
|
|
@ -100,6 +100,7 @@
|
||||||
#define _Y_HALF_BED ((Y_BED_SIZE) / 2)
|
#define _Y_HALF_BED ((Y_BED_SIZE) / 2)
|
||||||
#define X_CENTER TERN(BED_CENTER_AT_0_0, 0, _X_HALF_BED)
|
#define X_CENTER TERN(BED_CENTER_AT_0_0, 0, _X_HALF_BED)
|
||||||
#define Y_CENTER TERN(BED_CENTER_AT_0_0, 0, _Y_HALF_BED)
|
#define Y_CENTER TERN(BED_CENTER_AT_0_0, 0, _Y_HALF_BED)
|
||||||
|
#define XY_CENTER { X_CENTER, Y_CENTER }
|
||||||
|
|
||||||
// Get the linear boundaries of the bed
|
// Get the linear boundaries of the bed
|
||||||
#define X_MIN_BED (X_CENTER - _X_HALF_BED)
|
#define X_MIN_BED (X_CENTER - _X_HALF_BED)
|
||||||
|
|
|
@ -622,7 +622,7 @@ public:
|
||||||
//
|
//
|
||||||
// Special handling if a move is underway
|
// Special handling if a move is underway
|
||||||
//
|
//
|
||||||
#if EITHER(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) || (ENABLED(LCD_BED_LEVELING) && EITHER(PROBE_MANUALLY, MESH_BED_LEVELING))
|
#if EITHER(DELTA_CALIBRATION_MENU, DELTA_AUTO_CALIBRATION) || (ENABLED(LCD_BED_LEVELING) && EITHER(PROBE_MANUALLY, MESH_BED_LEVELING)) || (ENABLED(PROBE_OFFSET_WIZARD) && defined(PROBE_OFFSET_WIZARD_XY_POS))
|
||||||
#define LCD_HAS_WAIT_FOR_MOVE 1
|
#define LCD_HAS_WAIT_FOR_MOVE 1
|
||||||
static bool wait_for_move;
|
static bool wait_for_move;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -220,7 +220,7 @@ void _lcd_draw_homing();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(PROBE_OFFSET_WIZARD)
|
#if ENABLED(PROBE_OFFSET_WIZARD)
|
||||||
void goto_probe_offset_wizard();
|
void home_and_goto_probe_offset_wizard();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(LCD_BED_LEVELING) || (HAS_LEVELING && DISABLED(SLIM_LCD_MENUS))
|
#if ENABLED(LCD_BED_LEVELING) || (HAS_LEVELING && DISABLED(SLIM_LCD_MENUS))
|
||||||
|
|
|
@ -488,7 +488,7 @@ void menu_backlash();
|
||||||
EDIT_ITEM(LCD_Z_OFFSET_TYPE, MSG_ZPROBE_ZOFFSET, &probe.offset.z, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX);
|
EDIT_ITEM(LCD_Z_OFFSET_TYPE, MSG_ZPROBE_ZOFFSET, &probe.offset.z, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX);
|
||||||
|
|
||||||
#if ENABLED(PROBE_OFFSET_WIZARD)
|
#if ENABLED(PROBE_OFFSET_WIZARD)
|
||||||
SUBMENU(MSG_PROBE_WIZARD, goto_probe_offset_wizard);
|
SUBMENU(MSG_PROBE_WIZARD, home_and_goto_probe_offset_wizard);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
END_MENU();
|
END_MENU();
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
#include "menu_item.h"
|
#include "menu_item.h"
|
||||||
#include "menu_addon.h"
|
#include "menu_addon.h"
|
||||||
|
#include "../../gcode/queue.h"
|
||||||
#include "../../module/motion.h"
|
#include "../../module/motion.h"
|
||||||
#include "../../module/planner.h"
|
#include "../../module/planner.h"
|
||||||
#include "../../module/probe.h"
|
#include "../../module/probe.h"
|
||||||
|
@ -120,22 +121,32 @@ void probe_offset_wizard_menu() {
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
void goto_probe_offset_wizard() {
|
#ifdef PROBE_OFFSET_WIZARD_XY_POS
|
||||||
ui.defer_status_screen();
|
|
||||||
|
|
||||||
prepare_for_calibration();
|
#define HAS_PROBE_OFFSET_WIZARD_XY_POS 1
|
||||||
|
|
||||||
probe.offset.z = PROBE_OFFSET_START;
|
inline void goto_probe_offset_wizard() {
|
||||||
|
if (ui.wait_for_move) return;
|
||||||
|
constexpr xy_pos_t wizard_pos = PROBE_OFFSET_WIZARD_XY_POS;
|
||||||
|
current_position = wizard_pos;
|
||||||
|
ui.wait_for_move = true;
|
||||||
|
line_to_current_position(MMM_TO_MMS(HOMING_FEEDRATE_XY)); // Could invoke idle()
|
||||||
|
ui.wait_for_move = false;
|
||||||
|
ui.synchronize();
|
||||||
|
prepare_for_calibration();
|
||||||
|
probe.offset.z = PROBE_OFFSET_START;
|
||||||
|
ui.goto_screen(probe_offset_wizard_menu);
|
||||||
|
ui.defer_status_screen();
|
||||||
|
}
|
||||||
|
|
||||||
set_all_unhomed();
|
#endif
|
||||||
|
|
||||||
|
void home_and_goto_probe_offset_wizard() {
|
||||||
queue.inject_P(G28_STR);
|
queue.inject_P(G28_STR);
|
||||||
|
|
||||||
ui.goto_screen([]{
|
ui.goto_screen([]{
|
||||||
_lcd_draw_homing();
|
_lcd_draw_homing();
|
||||||
if (all_axes_homed()) {
|
if (all_axes_homed())
|
||||||
ui.goto_screen(probe_offset_wizard_menu);
|
ui.goto_screen(TERN(HAS_PROBE_OFFSET_WIZARD_XY_POS, goto_probe_offset_wizard, probe_offset_wizard_menu));
|
||||||
ui.defer_status_screen();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue