|
|
@ -467,6 +467,7 @@
|
|
|
|
//
|
|
|
|
//
|
|
|
|
SERIAL_PROTOCOLLNPGM("Manually probing unreachable mesh locations.");
|
|
|
|
SERIAL_PROTOCOLLNPGM("Manually probing unreachable mesh locations.");
|
|
|
|
do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
|
|
|
|
|
|
|
|
if (!g29_x_flag && !g29_y_flag) {
|
|
|
|
if (!g29_x_flag && !g29_y_flag) {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Use a good default location for the path.
|
|
|
|
* Use a good default location for the path.
|
|
|
@ -910,12 +911,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
static void echo_and_take_a_measurement() { SERIAL_PROTOCOLLNPGM(" and take a measurement."); }
|
|
|
|
static void echo_and_take_a_measurement() { SERIAL_PROTOCOLLNPGM(" and take a measurement."); }
|
|
|
|
|
|
|
|
|
|
|
|
float unified_bed_leveling::measure_business_card_thickness(float in_height) {
|
|
|
|
float unified_bed_leveling::measure_business_card_thickness(const float in_height) {
|
|
|
|
has_control_of_lcd_panel = true;
|
|
|
|
has_control_of_lcd_panel = true;
|
|
|
|
save_ubl_active_state_and_disable(); // Disable bed level correction for probing
|
|
|
|
save_ubl_active_state_and_disable(); // Disable bed level correction for probing
|
|
|
|
|
|
|
|
|
|
|
|
do_blocking_move_to_z(in_height);
|
|
|
|
do_blocking_move_to(0.5 * (MESH_MAX_X - (MESH_MIN_X)), 0.5 * (MESH_MAX_Y - (MESH_MIN_Y)), in_height);
|
|
|
|
do_blocking_move_to_xy(0.5 * (MESH_MAX_X - (MESH_MIN_X)), 0.5 * (MESH_MAX_Y - (MESH_MIN_Y)));
|
|
|
|
|
|
|
|
//, min(planner.max_feedrate_mm_s[X_AXIS], planner.max_feedrate_mm_s[Y_AXIS]) / 2.0);
|
|
|
|
//, min(planner.max_feedrate_mm_s[X_AXIS], planner.max_feedrate_mm_s[Y_AXIS]) / 2.0);
|
|
|
|
stepper.synchronize();
|
|
|
|
stepper.synchronize();
|
|
|
|
|
|
|
|
|
|
|
@ -944,8 +944,6 @@
|
|
|
|
SERIAL_PROTOCOLLNPGM("mm thick.");
|
|
|
|
SERIAL_PROTOCOLLNPGM("mm thick.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
in_height = current_position[Z_AXIS]; // do manual probing at lower height
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
has_control_of_lcd_panel = false;
|
|
|
|
has_control_of_lcd_panel = false;
|
|
|
|
|
|
|
|
|
|
|
|
restore_ubl_active_state_and_leave();
|
|
|
|
restore_ubl_active_state_and_leave();
|
|
|
@ -958,8 +956,8 @@
|
|
|
|
has_control_of_lcd_panel = true;
|
|
|
|
has_control_of_lcd_panel = true;
|
|
|
|
|
|
|
|
|
|
|
|
save_ubl_active_state_and_disable(); // we don't do bed level correction because we want the raw data when we probe
|
|
|
|
save_ubl_active_state_and_disable(); // we don't do bed level correction because we want the raw data when we probe
|
|
|
|
do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
|
|
|
|
do_blocking_move_to_xy(rx, ry);
|
|
|
|
do_blocking_move_to(rx, ry, Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
|
|
|
|
|
|
|
|
lcd_return_to_status();
|
|
|
|
lcd_return_to_status();
|
|
|
|
|
|
|
|
|
|
|
@ -974,11 +972,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
if (!position_is_reachable(xProbe, yProbe)) break; // SHOULD NOT OCCUR (find_closest_mesh_point only returns reachable points)
|
|
|
|
if (!position_is_reachable(xProbe, yProbe)) break; // SHOULD NOT OCCUR (find_closest_mesh_point only returns reachable points)
|
|
|
|
|
|
|
|
|
|
|
|
do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LCD_MESSAGEPGM(MSG_UBL_MOVING_TO_NEXT);
|
|
|
|
LCD_MESSAGEPGM(MSG_UBL_MOVING_TO_NEXT);
|
|
|
|
|
|
|
|
|
|
|
|
do_blocking_move_to_xy(xProbe, yProbe);
|
|
|
|
do_blocking_move_to(xProbe, yProbe, Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
do_blocking_move_to_z(z_clearance);
|
|
|
|
do_blocking_move_to_z(z_clearance);
|
|
|
|
|
|
|
|
|
|
|
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
|
|
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
|
|
@ -1035,8 +1031,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
restore_ubl_active_state_and_leave();
|
|
|
|
restore_ubl_active_state_and_leave();
|
|
|
|
KEEPALIVE_STATE(IN_HANDLER);
|
|
|
|
KEEPALIVE_STATE(IN_HANDLER);
|
|
|
|
do_blocking_move_to_z(Z_CLEARANCE_DEPLOY_PROBE);
|
|
|
|
do_blocking_move_to(rx, ry, Z_CLEARANCE_DEPLOY_PROBE);
|
|
|
|
do_blocking_move_to_xy(rx, ry);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif // NEWPANEL
|
|
|
|
#endif // NEWPANEL
|
|
|
@ -1486,8 +1481,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
LCD_MESSAGEPGM(MSG_UBL_FINE_TUNE_MESH);
|
|
|
|
LCD_MESSAGEPGM(MSG_UBL_FINE_TUNE_MESH);
|
|
|
|
|
|
|
|
|
|
|
|
do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
do_blocking_move_to(rx, ry, Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
do_blocking_move_to_xy(rx, ry);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint16_t not_done[16];
|
|
|
|
uint16_t not_done[16];
|
|
|
|
memset(not_done, 0xFF, sizeof(not_done));
|
|
|
|
memset(not_done, 0xFF, sizeof(not_done));
|
|
|
@ -1510,8 +1504,7 @@
|
|
|
|
if (isnan(new_z)) // if the mesh point is invalid, set it to 0.0 so it can be edited
|
|
|
|
if (isnan(new_z)) // if the mesh point is invalid, set it to 0.0 so it can be edited
|
|
|
|
new_z = 0.0;
|
|
|
|
new_z = 0.0;
|
|
|
|
|
|
|
|
|
|
|
|
do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES); // Move the nozzle to where we are going to edit
|
|
|
|
do_blocking_move_to(rawx, rawy, Z_CLEARANCE_BETWEEN_PROBES); // Move the nozzle to the edit point
|
|
|
|
do_blocking_move_to_xy(rawx, rawy);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
new_z = FLOOR(new_z * 1000.0) * 0.001; // Chop off digits after the 1000ths place
|
|
|
|
new_z = FLOOR(new_z * 1000.0) * 0.001; // Chop off digits after the 1000ths place
|
|
|
|
|
|
|
|
|
|
|
@ -1571,9 +1564,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
if (do_ubl_mesh_map) display_map(g29_map_type);
|
|
|
|
if (do_ubl_mesh_map) display_map(g29_map_type);
|
|
|
|
restore_ubl_active_state_and_leave();
|
|
|
|
restore_ubl_active_state_and_leave();
|
|
|
|
do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
do_blocking_move_to_xy(rx, ry);
|
|
|
|
do_blocking_move_to(rx, ry, Z_CLEARANCE_BETWEEN_PROBES);
|
|
|
|
|
|
|
|
|
|
|
|
LCD_MESSAGEPGM(MSG_UBL_DONE_EDITING_MESH);
|
|
|
|
LCD_MESSAGEPGM(MSG_UBL_DONE_EDITING_MESH);
|
|
|
|
SERIAL_ECHOLNPGM("Done Editing Mesh");
|
|
|
|
SERIAL_ECHOLNPGM("Done Editing Mesh");
|
|
|
|