zprobe_offset => probe_offset
This commit is contained in:
parent
3819f79945
commit
4e8d9fe59b
@ -79,36 +79,36 @@ void safe_delay(millis_t ms) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
SERIAL_ECHOPAIR("Probe Offset X:", zprobe_offset[X_AXIS], " Y:", zprobe_offset[Y_AXIS], " Z:", zprobe_offset[Z_AXIS]);
|
SERIAL_ECHOPAIR("Probe Offset X:", probe_offset[X_AXIS], " Y:", probe_offset[Y_AXIS], " Z:", probe_offset[Z_AXIS]);
|
||||||
if (zprobe_offset[X_AXIS] > 0)
|
if (probe_offset[X_AXIS] > 0)
|
||||||
SERIAL_ECHOPGM(" (Right");
|
SERIAL_ECHOPGM(" (Right");
|
||||||
else if (zprobe_offset[X_AXIS] < 0)
|
else if (probe_offset[X_AXIS] < 0)
|
||||||
SERIAL_ECHOPGM(" (Left");
|
SERIAL_ECHOPGM(" (Left");
|
||||||
else if (zprobe_offset[Y_AXIS] != 0)
|
else if (probe_offset[Y_AXIS] != 0)
|
||||||
SERIAL_ECHOPGM(" (Middle");
|
SERIAL_ECHOPGM(" (Middle");
|
||||||
else
|
else
|
||||||
SERIAL_ECHOPGM(" (Aligned With");
|
SERIAL_ECHOPGM(" (Aligned With");
|
||||||
|
|
||||||
if (zprobe_offset[Y_AXIS] > 0) {
|
if (probe_offset[Y_AXIS] > 0) {
|
||||||
#if IS_SCARA
|
#if IS_SCARA
|
||||||
SERIAL_ECHOPGM("-Distal");
|
SERIAL_ECHOPGM("-Distal");
|
||||||
#else
|
#else
|
||||||
SERIAL_ECHOPGM("-Back");
|
SERIAL_ECHOPGM("-Back");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (zprobe_offset[Y_AXIS] < 0) {
|
else if (probe_offset[Y_AXIS] < 0) {
|
||||||
#if IS_SCARA
|
#if IS_SCARA
|
||||||
SERIAL_ECHOPGM("-Proximal");
|
SERIAL_ECHOPGM("-Proximal");
|
||||||
#else
|
#else
|
||||||
SERIAL_ECHOPGM("-Front");
|
SERIAL_ECHOPGM("-Front");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (zprobe_offset[X_AXIS] != 0)
|
else if (probe_offset[X_AXIS] != 0)
|
||||||
SERIAL_ECHOPGM("-Center");
|
SERIAL_ECHOPGM("-Center");
|
||||||
|
|
||||||
if (zprobe_offset[Z_AXIS] < 0)
|
if (probe_offset[Z_AXIS] < 0)
|
||||||
SERIAL_ECHOPGM(" & Below");
|
SERIAL_ECHOPGM(" & Below");
|
||||||
else if (zprobe_offset[Z_AXIS] > 0)
|
else if (probe_offset[Z_AXIS] > 0)
|
||||||
SERIAL_ECHOPGM(" & Above");
|
SERIAL_ECHOPGM(" & Above");
|
||||||
else
|
else
|
||||||
SERIAL_ECHOPGM(" & Same Z as");
|
SERIAL_ECHOPGM(" & Same Z as");
|
||||||
|
@ -180,8 +180,8 @@
|
|||||||
// Add XY probe offset from extruder because probe_pt() subtracts them when
|
// Add XY probe offset from extruder because probe_pt() subtracts them when
|
||||||
// moving to the xy position to be measured. This ensures better agreement between
|
// moving to the xy position to be measured. This ensures better agreement between
|
||||||
// the current Z position after G28 and the mesh values.
|
// the current Z position after G28 and the mesh values.
|
||||||
const float current_xi = find_closest_x_index(current_position[X_AXIS] + zprobe_offset[X_AXIS]),
|
const float current_xi = find_closest_x_index(current_position[X_AXIS] + probe_offset[X_AXIS]),
|
||||||
current_yi = find_closest_y_index(current_position[Y_AXIS] + zprobe_offset[Y_AXIS]);
|
current_yi = find_closest_y_index(current_position[Y_AXIS] + probe_offset[Y_AXIS]);
|
||||||
|
|
||||||
if (!lcd) SERIAL_EOL();
|
if (!lcd) SERIAL_EOL();
|
||||||
for (int8_t j = GRID_MAX_POINTS_Y - 1; j >= 0; j--) {
|
for (int8_t j = GRID_MAX_POINTS_Y - 1; j >= 0; j--) {
|
||||||
|
@ -453,7 +453,7 @@
|
|||||||
SERIAL_ECHO(g29_y_pos);
|
SERIAL_ECHO(g29_y_pos);
|
||||||
SERIAL_ECHOLNPGM(").\n");
|
SERIAL_ECHOLNPGM(").\n");
|
||||||
}
|
}
|
||||||
probe_entire_mesh(g29_x_pos + zprobe_offset[X_AXIS], g29_y_pos + zprobe_offset[Y_AXIS],
|
probe_entire_mesh(g29_x_pos + probe_offset[X_AXIS], g29_y_pos + probe_offset[Y_AXIS],
|
||||||
parser.seen('T'), parser.seen('E'), parser.seen('U'));
|
parser.seen('T'), parser.seen('E'), parser.seen('U'));
|
||||||
|
|
||||||
report_current_position();
|
report_current_position();
|
||||||
@ -482,8 +482,8 @@
|
|||||||
g29_x_pos = X_HOME_POS;
|
g29_x_pos = X_HOME_POS;
|
||||||
g29_y_pos = Y_HOME_POS;
|
g29_y_pos = Y_HOME_POS;
|
||||||
#else // cartesian
|
#else // cartesian
|
||||||
g29_x_pos = zprobe_offset[X_AXIS] > 0 ? X_BED_SIZE : 0;
|
g29_x_pos = probe_offset[X_AXIS] > 0 ? X_BED_SIZE : 0;
|
||||||
g29_y_pos = zprobe_offset[Y_AXIS] < 0 ? Y_BED_SIZE : 0;
|
g29_y_pos = probe_offset[Y_AXIS] < 0 ? Y_BED_SIZE : 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -800,8 +800,8 @@
|
|||||||
restore_ubl_active_state_and_leave();
|
restore_ubl_active_state_and_leave();
|
||||||
|
|
||||||
do_blocking_move_to_xy(
|
do_blocking_move_to_xy(
|
||||||
constrain(rx - zprobe_offset[X_AXIS], MESH_MIN_X, MESH_MAX_X),
|
constrain(rx - probe_offset[X_AXIS], MESH_MIN_X, MESH_MAX_X),
|
||||||
constrain(ry - zprobe_offset[Y_AXIS], MESH_MIN_Y, MESH_MAX_Y)
|
constrain(ry - probe_offset[Y_AXIS], MESH_MIN_Y, MESH_MAX_Y)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1281,8 +1281,8 @@
|
|||||||
out_mesh.distance = -99999.9f;
|
out_mesh.distance = -99999.9f;
|
||||||
|
|
||||||
// Get our reference position. Either the nozzle or probe location.
|
// Get our reference position. Either the nozzle or probe location.
|
||||||
const float px = rx + (probe_as_reference == USE_PROBE_AS_REFERENCE ? zprobe_offset[X_AXIS] : 0),
|
const float px = rx + (probe_as_reference == USE_PROBE_AS_REFERENCE ? probe_offset[X_AXIS] : 0),
|
||||||
py = ry + (probe_as_reference == USE_PROBE_AS_REFERENCE ? zprobe_offset[Y_AXIS] : 0);
|
py = ry + (probe_as_reference == USE_PROBE_AS_REFERENCE ? probe_offset[Y_AXIS] : 0);
|
||||||
|
|
||||||
float best_so_far = 99999.99f;
|
float best_so_far = 99999.99f;
|
||||||
|
|
||||||
@ -1500,7 +1500,7 @@
|
|||||||
DEBUG_ECHOPAIR_F(" correction: ", get_z_correction(rx, ry), 7);
|
DEBUG_ECHOPAIR_F(" correction: ", get_z_correction(rx, ry), 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
measured_z -= get_z_correction(rx, ry) /* + zprobe_offset[Z_AXIS] */ ;
|
measured_z -= get_z_correction(rx, ry) /* + probe_offset[Z_AXIS] */ ;
|
||||||
|
|
||||||
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR_F(" final >>>---> ", measured_z, 7);
|
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR_F(" final >>>---> ", measured_z, 7);
|
||||||
|
|
||||||
@ -1712,7 +1712,7 @@
|
|||||||
adjust_mesh_to_mean(g29_c_flag, g29_constant);
|
adjust_mesh_to_mean(g29_c_flag, g29_constant);
|
||||||
|
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
SERIAL_ECHOLNPAIR_F("Probe Offset M851 Z", zprobe_offset[Z_AXIS], 7);
|
SERIAL_ECHOLNPAIR_F("Probe Offset M851 Z", probe_offset[Z_AXIS], 7);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SERIAL_ECHOLNPAIR("MESH_MIN_X " STRINGIFY(MESH_MIN_X) "=", MESH_MIN_X); serial_delay(50);
|
SERIAL_ECHOLNPAIR("MESH_MIN_X " STRINGIFY(MESH_MIN_X) "=", MESH_MIN_X); serial_delay(50);
|
||||||
|
@ -49,8 +49,8 @@ void GcodeSuite::G42() {
|
|||||||
if (hasJ) destination[Y_AXIS] = _GET_MESH_Y(iy);
|
if (hasJ) destination[Y_AXIS] = _GET_MESH_Y(iy);
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
if (parser.boolval('P')) {
|
if (parser.boolval('P')) {
|
||||||
if (hasI) destination[X_AXIS] -= zprobe_offset[X_AXIS];
|
if (hasI) destination[X_AXIS] -= probe_offset[X_AXIS];
|
||||||
if (hasJ) destination[Y_AXIS] -= zprobe_offset[Y_AXIS];
|
if (hasJ) destination[Y_AXIS] -= probe_offset[Y_AXIS];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -947,8 +947,8 @@ G29_TYPE GcodeSuite::G29() {
|
|||||||
planner.leveling_active = false;
|
planner.leveling_active = false;
|
||||||
|
|
||||||
// Use the last measured distance to the bed, if possible
|
// Use the last measured distance to the bed, if possible
|
||||||
if ( NEAR(current_position[X_AXIS], xProbe - zprobe_offset[X_AXIS])
|
if ( NEAR(current_position[X_AXIS], xProbe - probe_offset[X_AXIS])
|
||||||
&& NEAR(current_position[Y_AXIS], yProbe - zprobe_offset[Y_AXIS])
|
&& NEAR(current_position[Y_AXIS], yProbe - probe_offset[Y_AXIS])
|
||||||
) {
|
) {
|
||||||
const float simple_z = current_position[Z_AXIS] - measured_z;
|
const float simple_z = current_position[Z_AXIS] - measured_z;
|
||||||
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Probed Z", simple_z, " Matrix Z", converted[Z_AXIS], " Discrepancy ", simple_z - converted[Z_AXIS]);
|
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Probed Z", simple_z, " Matrix Z", converted[Z_AXIS], " Discrepancy ", simple_z - converted[Z_AXIS]);
|
||||||
|
@ -136,8 +136,8 @@
|
|||||||
destination[Z_AXIS] = current_position[Z_AXIS]; // Z is already at the right height
|
destination[Z_AXIS] = current_position[Z_AXIS]; // Z is already at the right height
|
||||||
|
|
||||||
#if HOMING_Z_WITH_PROBE
|
#if HOMING_Z_WITH_PROBE
|
||||||
destination[X_AXIS] -= zprobe_offset[X_AXIS];
|
destination[X_AXIS] -= probe_offset[X_AXIS];
|
||||||
destination[Y_AXIS] -= zprobe_offset[Y_AXIS];
|
destination[Y_AXIS] -= probe_offset[Y_AXIS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (position_is_reachable(destination[X_AXIS], destination[Y_AXIS])) {
|
if (position_is_reachable(destination[X_AXIS], destination[Y_AXIS])) {
|
||||||
|
@ -77,8 +77,8 @@ void GcodeSuite::M48() {
|
|||||||
float X_current = current_position[X_AXIS],
|
float X_current = current_position[X_AXIS],
|
||||||
Y_current = current_position[Y_AXIS];
|
Y_current = current_position[Y_AXIS];
|
||||||
|
|
||||||
const float X_probe_location = parser.linearval('X', X_current + zprobe_offset[X_AXIS]),
|
const float X_probe_location = parser.linearval('X', X_current + probe_offset[X_AXIS]),
|
||||||
Y_probe_location = parser.linearval('Y', Y_current + zprobe_offset[Y_AXIS]);
|
Y_probe_location = parser.linearval('Y', Y_current + probe_offset[Y_AXIS]);
|
||||||
|
|
||||||
if (!position_is_reachable_by_probe(X_probe_location, Y_probe_location)) {
|
if (!position_is_reachable_by_probe(X_probe_location, Y_probe_location)) {
|
||||||
SERIAL_ECHOLNPGM("? (X,Y) out of bounds.");
|
SERIAL_ECHOLNPGM("? (X,Y) out of bounds.");
|
||||||
@ -165,8 +165,8 @@ void GcodeSuite::M48() {
|
|||||||
while (angle < 0.0) angle += 360.0; // outside of this range. It looks like they behave correctly with
|
while (angle < 0.0) angle += 360.0; // outside of this range. It looks like they behave correctly with
|
||||||
// numbers outside of the range, but just to be safe we clamp them.
|
// numbers outside of the range, but just to be safe we clamp them.
|
||||||
|
|
||||||
X_current = X_probe_location - zprobe_offset[X_AXIS] + cos(RADIANS(angle)) * radius;
|
X_current = X_probe_location - probe_offset[X_AXIS] + cos(RADIANS(angle)) * radius;
|
||||||
Y_current = Y_probe_location - zprobe_offset[Y_AXIS] + sin(RADIANS(angle)) * radius;
|
Y_current = Y_probe_location - probe_offset[Y_AXIS] + sin(RADIANS(angle)) * radius;
|
||||||
|
|
||||||
#if DISABLED(DELTA)
|
#if DISABLED(DELTA)
|
||||||
LIMIT(X_current, X_MIN_POS, X_MAX_POS);
|
LIMIT(X_current, X_MIN_POS, X_MAX_POS);
|
||||||
|
@ -42,9 +42,9 @@
|
|||||||
&& active_extruder == 0
|
&& active_extruder == 0
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
zprobe_offset[Z_AXIS] += offs;
|
probe_offset[Z_AXIS] += offs;
|
||||||
SERIAL_ECHO_START();
|
SERIAL_ECHO_START();
|
||||||
SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET MSG_Z ": ", zprobe_offset[Z_AXIS]);
|
SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET MSG_Z ": ", probe_offset[Z_AXIS]);
|
||||||
}
|
}
|
||||||
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
||||||
else {
|
else {
|
||||||
|
@ -39,8 +39,8 @@
|
|||||||
* E Engage the probe for each probe (default 1)
|
* E Engage the probe for each probe (default 1)
|
||||||
*/
|
*/
|
||||||
void GcodeSuite::G30() {
|
void GcodeSuite::G30() {
|
||||||
const float xpos = parser.linearval('X', current_position[X_AXIS] + zprobe_offset[X_AXIS]),
|
const float xpos = parser.linearval('X', current_position[X_AXIS] + probe_offset[X_AXIS]),
|
||||||
ypos = parser.linearval('Y', current_position[Y_AXIS] + zprobe_offset[Y_AXIS]);
|
ypos = parser.linearval('Y', current_position[Y_AXIS] + probe_offset[Y_AXIS]);
|
||||||
|
|
||||||
if (!position_is_reachable_by_probe(xpos, ypos)) return;
|
if (!position_is_reachable_by_probe(xpos, ypos)) return;
|
||||||
|
|
||||||
|
@ -36,17 +36,17 @@ void GcodeSuite::M851() {
|
|||||||
// Show usage with no parameters
|
// Show usage with no parameters
|
||||||
if (!parser.seen("XYZ")) {
|
if (!parser.seen("XYZ")) {
|
||||||
SERIAL_ECHO_START();
|
SERIAL_ECHO_START();
|
||||||
SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET " X", zprobe_offset[X_AXIS],
|
SERIAL_ECHOLNPAIR(MSG_PROBE_OFFSET " X", probe_offset[X_AXIS],
|
||||||
" Y", zprobe_offset[Y_AXIS],
|
" Y", probe_offset[Y_AXIS],
|
||||||
" Z", zprobe_offset[Z_AXIS]);
|
" Z", probe_offset[Z_AXIS]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the modified offsets
|
// Get the modified offsets
|
||||||
const float offs[] = {
|
const float offs[] = {
|
||||||
parser.floatval('X', zprobe_offset[X_AXIS]),
|
parser.floatval('X', probe_offset[X_AXIS]),
|
||||||
parser.floatval('Y', zprobe_offset[Y_AXIS]),
|
parser.floatval('Y', probe_offset[Y_AXIS]),
|
||||||
parser.floatval('Z', zprobe_offset[Z_AXIS])
|
parser.floatval('Z', probe_offset[Z_AXIS])
|
||||||
};
|
};
|
||||||
|
|
||||||
// Error-check
|
// Error-check
|
||||||
@ -64,7 +64,7 @@ void GcodeSuite::M851() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Save the new offsets
|
// Save the new offsets
|
||||||
LOOP_XYZ(a) zprobe_offset[a] = offs[a];
|
LOOP_XYZ(a) probe_offset[a] = offs[a];
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // HAS_BED_PROBE
|
#endif // HAS_BED_PROBE
|
||||||
|
@ -708,7 +708,7 @@ namespace ExtUI {
|
|||||||
#if EXTRUDERS > 1
|
#if EXTRUDERS > 1
|
||||||
&& (linked_nozzles || active_extruder == 0)
|
&& (linked_nozzles || active_extruder == 0)
|
||||||
#endif
|
#endif
|
||||||
) zprobe_offset[Z_AXIS] += mm;
|
) probe_offset[Z_AXIS] += mm;
|
||||||
#else
|
#else
|
||||||
UNUSED(mm);
|
UNUSED(mm);
|
||||||
#endif
|
#endif
|
||||||
@ -746,7 +746,7 @@ namespace ExtUI {
|
|||||||
|
|
||||||
float getZOffset_mm() {
|
float getZOffset_mm() {
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
return zprobe_offset[Z_AXIS];
|
return probe_offset[Z_AXIS];
|
||||||
#elif ENABLED(BABYSTEP_DISPLAY_TOTAL)
|
#elif ENABLED(BABYSTEP_DISPLAY_TOTAL)
|
||||||
return babystep.axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1];
|
return babystep.axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1];
|
||||||
#else
|
#else
|
||||||
@ -757,7 +757,7 @@ namespace ExtUI {
|
|||||||
void setZOffset_mm(const float value) {
|
void setZOffset_mm(const float value) {
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
if (WITHIN(value, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX))
|
if (WITHIN(value, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX))
|
||||||
zprobe_offset[Z_AXIS] = value;
|
probe_offset[Z_AXIS] = value;
|
||||||
#elif ENABLED(BABYSTEP_DISPLAY_TOTAL)
|
#elif ENABLED(BABYSTEP_DISPLAY_TOTAL)
|
||||||
babystep.add_mm(Z_AXIS, (value - babystep.axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1]));
|
babystep.add_mm(Z_AXIS, (value - babystep.axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1]));
|
||||||
#else
|
#else
|
||||||
|
@ -402,7 +402,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
|
|||||||
ui.encoderPosition = 0;
|
ui.encoderPosition = 0;
|
||||||
|
|
||||||
const float diff = planner.steps_to_mm[Z_AXIS] * babystep_increment,
|
const float diff = planner.steps_to_mm[Z_AXIS] * babystep_increment,
|
||||||
new_probe_offset = zprobe_offset[Z_AXIS] + diff,
|
new_probe_offset = probe_offset[Z_AXIS] + diff,
|
||||||
new_offs =
|
new_offs =
|
||||||
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
||||||
do_probe ? new_probe_offset : hotend_offset[Z_AXIS][active_extruder] - diff
|
do_probe ? new_probe_offset : hotend_offset[Z_AXIS][active_extruder] - diff
|
||||||
@ -414,7 +414,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
|
|||||||
|
|
||||||
babystep.add_steps(Z_AXIS, babystep_increment);
|
babystep.add_steps(Z_AXIS, babystep_increment);
|
||||||
|
|
||||||
if (do_probe) zprobe_offset[Z_AXIS] = new_offs;
|
if (do_probe) probe_offset[Z_AXIS] = new_offs;
|
||||||
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
#if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
|
||||||
else hotend_offset[Z_AXIS][active_extruder] = new_offs;
|
else hotend_offset[Z_AXIS][active_extruder] = new_offs;
|
||||||
#endif
|
#endif
|
||||||
@ -428,10 +428,10 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
|
|||||||
draw_edit_screen(PSTR(MSG_Z_OFFSET), ftostr43sign(hotend_offset[Z_AXIS][active_extruder]));
|
draw_edit_screen(PSTR(MSG_Z_OFFSET), ftostr43sign(hotend_offset[Z_AXIS][active_extruder]));
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
draw_edit_screen(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(zprobe_offset[Z_AXIS]));
|
draw_edit_screen(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(probe_offset[Z_AXIS]));
|
||||||
|
|
||||||
#if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
|
#if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
|
||||||
if (do_probe) _lcd_zoffset_overlay_gfx(zprobe_offset[Z_AXIS]);
|
if (do_probe) _lcd_zoffset_overlay_gfx(probe_offset[Z_AXIS]);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -279,7 +279,7 @@ void menu_bed_leveling() {
|
|||||||
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
||||||
MENU_ITEM(submenu, MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset);
|
MENU_ITEM(submenu, MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset);
|
||||||
#elif HAS_BED_PROBE
|
#elif HAS_BED_PROBE
|
||||||
MENU_ITEM_EDIT(float52, MSG_ZPROBE_ZOFFSET, &zprobe_offset[Z_AXIS], Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX);
|
MENU_ITEM_EDIT(float52, MSG_ZPROBE_ZOFFSET, &probe_offset[Z_AXIS], Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(LEVEL_BED_CORNERS)
|
#if ENABLED(LEVEL_BED_CORNERS)
|
||||||
|
@ -347,7 +347,7 @@ void menu_configuration() {
|
|||||||
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
||||||
MENU_ITEM(submenu, MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset);
|
MENU_ITEM(submenu, MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset);
|
||||||
#elif HAS_BED_PROBE
|
#elif HAS_BED_PROBE
|
||||||
MENU_ITEM_EDIT(float52, MSG_ZPROBE_ZOFFSET, &zprobe_offset[Z_AXIS], Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX);
|
MENU_ITEM_EDIT(float52, MSG_ZPROBE_ZOFFSET, &probe_offset[Z_AXIS], Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const bool busy = printer_busy();
|
const bool busy = printer_busy();
|
||||||
|
@ -176,7 +176,7 @@ typedef struct SettingsDataStruct {
|
|||||||
// HAS_BED_PROBE
|
// HAS_BED_PROBE
|
||||||
//
|
//
|
||||||
|
|
||||||
float zprobe_offset[XYZ];
|
float probe_offset[XYZ];
|
||||||
|
|
||||||
//
|
//
|
||||||
// ABL_PLANAR
|
// ABL_PLANAR
|
||||||
@ -613,8 +613,8 @@ void MarlinSettings::postprocess() {
|
|||||||
// Probe Z Offset
|
// Probe Z Offset
|
||||||
//
|
//
|
||||||
{
|
{
|
||||||
_FIELD_TEST(zprobe_offset[Z_AXIS]);
|
_FIELD_TEST(probe_offset[Z_AXIS]);
|
||||||
EEPROM_WRITE(zprobe_offset);
|
EEPROM_WRITE(probe_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -1415,10 +1415,10 @@ void MarlinSettings::postprocess() {
|
|||||||
// Probe Z Offset
|
// Probe Z Offset
|
||||||
//
|
//
|
||||||
{
|
{
|
||||||
_FIELD_TEST(zprobe_offset[Z_AXIS]);
|
_FIELD_TEST(probe_offset[Z_AXIS]);
|
||||||
|
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
float (&zpo)[XYZ] = zprobe_offset;
|
float (&zpo)[XYZ] = probe_offset;
|
||||||
#else
|
#else
|
||||||
float zpo[XYZ];
|
float zpo[XYZ];
|
||||||
#endif
|
#endif
|
||||||
@ -2322,7 +2322,7 @@ void MarlinSettings::reset() {
|
|||||||
#endif
|
#endif
|
||||||
constexpr float dpo[XYZ] = NOZZLE_TO_PROBE_OFFSET;
|
constexpr float dpo[XYZ] = NOZZLE_TO_PROBE_OFFSET;
|
||||||
static_assert(COUNT(dpo) == 3, "NOZZLE_TO_PROBE_OFFSET must contain offsets for X, Y, and Z.");
|
static_assert(COUNT(dpo) == 3, "NOZZLE_TO_PROBE_OFFSET must contain offsets for X, Y, and Z.");
|
||||||
LOOP_XYZ(a) zprobe_offset[a] = dpo[a];
|
LOOP_XYZ(a) probe_offset[a] = dpo[a];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -3071,9 +3071,9 @@ void MarlinSettings::reset() {
|
|||||||
say_units(true);
|
say_units(true);
|
||||||
}
|
}
|
||||||
CONFIG_ECHO_START();
|
CONFIG_ECHO_START();
|
||||||
SERIAL_ECHOLNPAIR(" M851 X", LINEAR_UNIT(zprobe_offset[X_AXIS]),
|
SERIAL_ECHOLNPAIR(" M851 X", LINEAR_UNIT(probe_offset[X_AXIS]),
|
||||||
" Y", LINEAR_UNIT(zprobe_offset[Y_AXIS]),
|
" Y", LINEAR_UNIT(probe_offset[Y_AXIS]),
|
||||||
" Z", LINEAR_UNIT(zprobe_offset[Z_AXIS]));
|
" Z", LINEAR_UNIT(probe_offset[Z_AXIS]));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -233,7 +233,7 @@ void home_delta() {
|
|||||||
// Move all carriages together linearly until an endstop is hit.
|
// Move all carriages together linearly until an endstop is hit.
|
||||||
destination[Z_AXIS] = (delta_height
|
destination[Z_AXIS] = (delta_height
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
- zprobe_offset[Z_AXIS]
|
- probe_offset[Z_AXIS]
|
||||||
#endif
|
#endif
|
||||||
+ 10);
|
+ 10);
|
||||||
buffer_line_to_destination(homing_feedrate(X_AXIS));
|
buffer_line_to_destination(homing_feedrate(X_AXIS));
|
||||||
|
@ -505,7 +505,7 @@ void restore_feedrate_and_scaling() {
|
|||||||
soft_endstop[axis].min = base_min_pos(axis);
|
soft_endstop[axis].min = base_min_pos(axis);
|
||||||
soft_endstop[axis].max = (axis == Z_AXIS ? delta_height
|
soft_endstop[axis].max = (axis == Z_AXIS ? delta_height
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
- zprobe_offset[Z_AXIS]
|
- probe_offset[Z_AXIS]
|
||||||
#endif
|
#endif
|
||||||
: base_max_pos(axis));
|
: base_max_pos(axis));
|
||||||
|
|
||||||
@ -1340,7 +1340,7 @@ void set_axis_is_at_home(const AxisEnum axis) {
|
|||||||
#elif ENABLED(DELTA)
|
#elif ENABLED(DELTA)
|
||||||
current_position[axis] = (axis == Z_AXIS ? delta_height
|
current_position[axis] = (axis == Z_AXIS ? delta_height
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
- zprobe_offset[Z_AXIS]
|
- probe_offset[Z_AXIS]
|
||||||
#endif
|
#endif
|
||||||
: base_home_pos(axis));
|
: base_home_pos(axis));
|
||||||
#else
|
#else
|
||||||
@ -1354,9 +1354,9 @@ void set_axis_is_at_home(const AxisEnum axis) {
|
|||||||
if (axis == Z_AXIS) {
|
if (axis == Z_AXIS) {
|
||||||
#if HOMING_Z_WITH_PROBE
|
#if HOMING_Z_WITH_PROBE
|
||||||
|
|
||||||
current_position[Z_AXIS] -= zprobe_offset[Z_AXIS];
|
current_position[Z_AXIS] -= probe_offset[Z_AXIS];
|
||||||
|
|
||||||
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("*** Z HOMED WITH PROBE (Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) ***\n> zprobe_offset[Z_AXIS] = ", zprobe_offset[Z_AXIS]);
|
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("*** Z HOMED WITH PROBE (Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) ***\n> probe_offset[Z_AXIS] = ", probe_offset[Z_AXIS]);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ void homeaxis(const AxisEnum axis);
|
|||||||
// Return true if the both nozzle and the probe can reach the given point.
|
// Return true if the both nozzle and the probe can reach the given point.
|
||||||
// Note: This won't work on SCARA since the probe offset rotates with the arm.
|
// Note: This won't work on SCARA since the probe offset rotates with the arm.
|
||||||
inline bool position_is_reachable_by_probe(const float &rx, const float &ry) {
|
inline bool position_is_reachable_by_probe(const float &rx, const float &ry) {
|
||||||
return position_is_reachable(rx - zprobe_offset[X_AXIS], ry - zprobe_offset[Y_AXIS])
|
return position_is_reachable(rx - probe_offset[X_AXIS], ry - probe_offset[Y_AXIS])
|
||||||
&& position_is_reachable(rx, ry, ABS(MIN_PROBE_EDGE));
|
&& position_is_reachable(rx, ry, ABS(MIN_PROBE_EDGE));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -313,7 +313,7 @@ void homeaxis(const AxisEnum axis);
|
|||||||
* nozzle must be be able to reach +10,-10.
|
* nozzle must be be able to reach +10,-10.
|
||||||
*/
|
*/
|
||||||
inline bool position_is_reachable_by_probe(const float &rx, const float &ry) {
|
inline bool position_is_reachable_by_probe(const float &rx, const float &ry) {
|
||||||
return position_is_reachable(rx - zprobe_offset[X_AXIS], ry - zprobe_offset[Y_AXIS])
|
return position_is_reachable(rx - probe_offset[X_AXIS], ry - probe_offset[Y_AXIS])
|
||||||
&& WITHIN(rx, probe_min_x() - slop, probe_max_x() + slop)
|
&& WITHIN(rx, probe_min_x() - slop, probe_max_x() + slop)
|
||||||
&& WITHIN(ry, probe_min_y() - slop, probe_max_y() + slop);
|
&& WITHIN(ry, probe_min_y() - slop, probe_max_y() + slop);
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
#include "../feature/backlash.h"
|
#include "../feature/backlash.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
float zprobe_offset[XYZ]; // Initialized by settings.load()
|
float probe_offset[XYZ]; // Initialized by settings.load()
|
||||||
|
|
||||||
#if ENABLED(BLTOUCH)
|
#if ENABLED(BLTOUCH)
|
||||||
#include "../feature/bltouch.h"
|
#include "../feature/bltouch.h"
|
||||||
@ -91,7 +91,7 @@ float probe_min_x() {
|
|||||||
#if ENABLED(DELTA) || IS_SCARA
|
#if ENABLED(DELTA) || IS_SCARA
|
||||||
PROBE_X_MIN, MESH_MIN_X
|
PROBE_X_MIN, MESH_MIN_X
|
||||||
#else
|
#else
|
||||||
(X_MIN_BED) + (MIN_PROBE_EDGE), (X_MIN_POS) + zprobe_offset[X_AXIS]
|
(X_MIN_BED) + (MIN_PROBE_EDGE), (X_MIN_POS) + probe_offset[X_AXIS]
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -100,7 +100,7 @@ float probe_max_x() {
|
|||||||
#if ENABLED(DELTA) || IS_SCARA
|
#if ENABLED(DELTA) || IS_SCARA
|
||||||
PROBE_X_MAX, MESH_MAX_X
|
PROBE_X_MAX, MESH_MAX_X
|
||||||
#else
|
#else
|
||||||
(X_MAX_BED) - (MIN_PROBE_EDGE), (X_MAX_POS) + zprobe_offset[X_AXIS]
|
(X_MAX_BED) - (MIN_PROBE_EDGE), (X_MAX_POS) + probe_offset[X_AXIS]
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -109,7 +109,7 @@ float probe_min_y() {
|
|||||||
#if ENABLED(DELTA) || IS_SCARA
|
#if ENABLED(DELTA) || IS_SCARA
|
||||||
PROBE_Y_MIN, MESH_MIN_Y
|
PROBE_Y_MIN, MESH_MIN_Y
|
||||||
#else
|
#else
|
||||||
(Y_MIN_BED) + (MIN_PROBE_EDGE), (Y_MIN_POS) + zprobe_offset[Y_AXIS]
|
(Y_MIN_BED) + (MIN_PROBE_EDGE), (Y_MIN_POS) + probe_offset[Y_AXIS]
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -118,7 +118,7 @@ float probe_max_y() {
|
|||||||
#if ENABLED(DELTA) || IS_SCARA
|
#if ENABLED(DELTA) || IS_SCARA
|
||||||
PROBE_Y_MAX, MESH_MAX_Y
|
PROBE_Y_MAX, MESH_MAX_Y
|
||||||
#else
|
#else
|
||||||
(Y_MAX_BED) - (MIN_PROBE_EDGE), (Y_MAX_POS) + zprobe_offset[Y_AXIS]
|
(Y_MAX_BED) - (MIN_PROBE_EDGE), (Y_MAX_POS) + probe_offset[Y_AXIS]
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -300,7 +300,7 @@ inline void do_probe_raise(const float z_raise) {
|
|||||||
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("do_probe_raise(", z_raise, ")");
|
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("do_probe_raise(", z_raise, ")");
|
||||||
|
|
||||||
float z_dest = z_raise;
|
float z_dest = z_raise;
|
||||||
if (zprobe_offset[Z_AXIS] < 0) z_dest -= zprobe_offset[Z_AXIS];
|
if (probe_offset[Z_AXIS] < 0) z_dest -= probe_offset[Z_AXIS];
|
||||||
|
|
||||||
NOMORE(z_dest, Z_MAX_POS);
|
NOMORE(z_dest, Z_MAX_POS);
|
||||||
|
|
||||||
@ -580,7 +580,7 @@ static float run_z_probe() {
|
|||||||
|
|
||||||
// Stop the probe before it goes too low to prevent damage.
|
// Stop the probe before it goes too low to prevent damage.
|
||||||
// If Z isn't known then probe to -10mm.
|
// If Z isn't known then probe to -10mm.
|
||||||
const float z_probe_low_point = TEST(axis_known_position, Z_AXIS) ? -zprobe_offset[Z_AXIS] + Z_PROBE_LOW_POINT : -10.0;
|
const float z_probe_low_point = TEST(axis_known_position, Z_AXIS) ? -probe_offset[Z_AXIS] + Z_PROBE_LOW_POINT : -10.0;
|
||||||
|
|
||||||
// Double-probing does a fast probe followed by a slow probe
|
// Double-probing does a fast probe followed by a slow probe
|
||||||
#if TOTAL_PROBING == 2
|
#if TOTAL_PROBING == 2
|
||||||
@ -605,7 +605,7 @@ static float run_z_probe() {
|
|||||||
|
|
||||||
// If the nozzle is well over the travel height then
|
// If the nozzle is well over the travel height then
|
||||||
// move down quickly before doing the slow probe
|
// move down quickly before doing the slow probe
|
||||||
const float z = Z_CLEARANCE_DEPLOY_PROBE + 5.0 + (zprobe_offset[Z_AXIS] < 0 ? -zprobe_offset[Z_AXIS] : 0);
|
const float z = Z_CLEARANCE_DEPLOY_PROBE + 5.0 + (probe_offset[Z_AXIS] < 0 ? -probe_offset[Z_AXIS] : 0);
|
||||||
if (current_position[Z_AXIS] > z) {
|
if (current_position[Z_AXIS] > z) {
|
||||||
// Probe down fast. If the probe never triggered, raise for probe clearance
|
// Probe down fast. If the probe never triggered, raise for probe clearance
|
||||||
if (!do_probe_move(z, MMM_TO_MMS(Z_PROBE_SPEED_FAST)))
|
if (!do_probe_move(z, MMM_TO_MMS(Z_PROBE_SPEED_FAST)))
|
||||||
@ -735,8 +735,8 @@ float probe_at_point(const float &rx, const float &ry, const ProbePtRaise raise_
|
|||||||
float nx = rx, ny = ry;
|
float nx = rx, ny = ry;
|
||||||
if (probe_relative) {
|
if (probe_relative) {
|
||||||
if (!position_is_reachable_by_probe(rx, ry)) return NAN; // The given position is in terms of the probe
|
if (!position_is_reachable_by_probe(rx, ry)) return NAN; // The given position is in terms of the probe
|
||||||
nx -= zprobe_offset[X_AXIS]; // Get the nozzle position
|
nx -= probe_offset[X_AXIS]; // Get the nozzle position
|
||||||
ny -= zprobe_offset[Y_AXIS];
|
ny -= probe_offset[Y_AXIS];
|
||||||
}
|
}
|
||||||
else if (!position_is_reachable(nx, ny)) return NAN; // The given position is in terms of the nozzle
|
else if (!position_is_reachable(nx, ny)) return NAN; // The given position is in terms of the nozzle
|
||||||
|
|
||||||
@ -757,7 +757,7 @@ float probe_at_point(const float &rx, const float &ry, const ProbePtRaise raise_
|
|||||||
|
|
||||||
float measured_z = NAN;
|
float measured_z = NAN;
|
||||||
if (!DEPLOY_PROBE()) {
|
if (!DEPLOY_PROBE()) {
|
||||||
measured_z = run_z_probe() + zprobe_offset[Z_AXIS];
|
measured_z = run_z_probe() + probe_offset[Z_AXIS];
|
||||||
|
|
||||||
const bool big_raise = raise_after == PROBE_PT_BIG_RAISE;
|
const bool big_raise = raise_after == PROBE_PT_BIG_RAISE;
|
||||||
if (big_raise || raise_after == PROBE_PT_RAISE)
|
if (big_raise || raise_after == PROBE_PT_RAISE)
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#if HAS_BED_PROBE
|
#if HAS_BED_PROBE
|
||||||
|
|
||||||
extern float zprobe_offset[XYZ];
|
extern float probe_offset[XYZ];
|
||||||
bool set_probe_deployed(const bool deploy);
|
bool set_probe_deployed(const bool deploy);
|
||||||
#ifdef Z_AFTER_PROBING
|
#ifdef Z_AFTER_PROBING
|
||||||
void move_z_after_probing();
|
void move_z_after_probing();
|
||||||
@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
constexpr float zprobe_offset[XYZ] = { 0 };
|
constexpr float probe_offset[XYZ] = { 0 };
|
||||||
#define DEPLOY_PROBE()
|
#define DEPLOY_PROBE()
|
||||||
#define STOW_PROBE()
|
#define STOW_PROBE()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user