PROBE_MANUALLY etc.
This commit is contained in:
		| @@ -487,7 +487,7 @@ | |||||||
|   // Delta calibration menu |   // Delta calibration menu | ||||||
|   // uncomment to add three points calibration menu option. |   // uncomment to add three points calibration menu option. | ||||||
|   // See http://minow.blogspot.com/index.html#4918805519571907051 |   // See http://minow.blogspot.com/index.html#4918805519571907051 | ||||||
|   #define DELTA_CALIBRATION_MENU |   //#define DELTA_CALIBRATION_MENU | ||||||
|  |  | ||||||
|   // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results) |   // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results) | ||||||
|   #define DELTA_AUTO_CALIBRATION |   #define DELTA_AUTO_CALIBRATION | ||||||
| @@ -506,7 +506,7 @@ | |||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) |   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) | ||||||
|     // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes |     // Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes | ||||||
|     #define DELTA_CALIBRATION_RADIUS 73.5 // mm |     #define DELTA_CALIBRATION_RADIUS 73.5 // mm | ||||||
|     // Set the steprate for papertest probing |     // Set the steprate for papertest probing | ||||||
|     #define PROBE_MANUALLY_STEP 0.025 |     #define PROBE_MANUALLY_STEP 0.025 | ||||||
|   | |||||||
| @@ -506,7 +506,7 @@ | |||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) |   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) | ||||||
|     // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes |     // Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes | ||||||
|     #define DELTA_CALIBRATION_RADIUS 73.5 // mm |     #define DELTA_CALIBRATION_RADIUS 73.5 // mm | ||||||
|     // Set the steprate for papertest probing |     // Set the steprate for papertest probing | ||||||
|     #define PROBE_MANUALLY_STEP 0.025 |     #define PROBE_MANUALLY_STEP 0.025 | ||||||
|   | |||||||
| @@ -496,7 +496,7 @@ | |||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) |   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) | ||||||
|     // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes |     // Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes | ||||||
|     #define DELTA_CALIBRATION_RADIUS 121.5 // mm |     #define DELTA_CALIBRATION_RADIUS 121.5 // mm | ||||||
|     // Set the steprate for papertest probing |     // Set the steprate for papertest probing | ||||||
|     #define PROBE_MANUALLY_STEP 0.025 |     #define PROBE_MANUALLY_STEP 0.025 | ||||||
|   | |||||||
| @@ -496,7 +496,7 @@ | |||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) |   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) | ||||||
|     // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes |     // Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes | ||||||
|     #define DELTA_CALIBRATION_RADIUS 78.0 // mm |     #define DELTA_CALIBRATION_RADIUS 78.0 // mm | ||||||
|     // Set the steprate for papertest probing |     // Set the steprate for papertest probing | ||||||
|     #define PROBE_MANUALLY_STEP 0.025 |     #define PROBE_MANUALLY_STEP 0.025 | ||||||
|   | |||||||
| @@ -482,7 +482,7 @@ | |||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) |   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) | ||||||
|     // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes |     // Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes | ||||||
|     #define DELTA_CALIBRATION_RADIUS 110.0 // mm |     #define DELTA_CALIBRATION_RADIUS 110.0 // mm | ||||||
|     // Set the steprate for papertest probing |     // Set the steprate for papertest probing | ||||||
|     #define PROBE_MANUALLY_STEP 0.025 |     #define PROBE_MANUALLY_STEP 0.025 | ||||||
|   | |||||||
| @@ -500,7 +500,7 @@ | |||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) |   #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU) | ||||||
|     // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS for non-eccentric probes |     // Set the radius for the calibration probe points - max 0.9 * DELTA_PRINTABLE_RADIUS for non-eccentric probes | ||||||
|     #define DELTA_CALIBRATION_RADIUS 121.5 // mm |     #define DELTA_CALIBRATION_RADIUS 121.5 // mm | ||||||
|     // Set the steprate for papertest probing |     // Set the steprate for papertest probing | ||||||
|     #define PROBE_MANUALLY_STEP 0.025 |     #define PROBE_MANUALLY_STEP 0.025 | ||||||
|   | |||||||
| @@ -180,7 +180,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, | |||||||
|                     r = delta_calibration_radius * 0.1; |                     r = delta_calibration_radius * 0.1; | ||||||
|         z_at_pt[CEN] += |         z_at_pt[CEN] += | ||||||
|           #if HAS_BED_PROBE |           #if HAS_BED_PROBE | ||||||
|             probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1) |             probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1, false) | ||||||
|           #else |           #else | ||||||
|             lcd_probe_pt(cos(a) * r, sin(a) * r) |             lcd_probe_pt(cos(a) * r, sin(a) * r) | ||||||
|           #endif |           #endif | ||||||
| @@ -209,7 +209,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, | |||||||
|                       interpol = FMOD(axis, 1); |                       interpol = FMOD(axis, 1); | ||||||
|           const float z_temp = |           const float z_temp = | ||||||
|             #if HAS_BED_PROBE |             #if HAS_BED_PROBE | ||||||
|               probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1) |               probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1, false) | ||||||
|             #else |             #else | ||||||
|               lcd_probe_pt(cos(a) * r, sin(a) * r) |               lcd_probe_pt(cos(a) * r, sin(a) * r) | ||||||
|             #endif |             #endif | ||||||
| @@ -225,7 +225,6 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, | |||||||
|           z_at_pt[axis] /= _7P_STEP / steps; |           z_at_pt[axis] /= _7P_STEP / steps; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     float S1 = z_at_pt[CEN], |     float S1 = z_at_pt[CEN], | ||||||
|           S2 = sq(z_at_pt[CEN]); |           S2 = sq(z_at_pt[CEN]); | ||||||
|     int16_t N = 1; |     int16_t N = 1; | ||||||
| @@ -263,6 +262,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, | |||||||
|  |  | ||||||
|     LOOP_XYZ(axis) { |     LOOP_XYZ(axis) { | ||||||
|       delta_endstop_adj[axis] -= 1.0; |       delta_endstop_adj[axis] -= 1.0; | ||||||
|  |       recalc_delta_settings(); | ||||||
|  |  | ||||||
|       endstops.enable(true); |       endstops.enable(true); | ||||||
|       if (!home_delta()) return; |       if (!home_delta()) return; | ||||||
| @@ -276,6 +276,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, | |||||||
|       LOOP_CAL_ALL(axis) z_at_pt[axis] -= z_at_pt_base[axis]; |       LOOP_CAL_ALL(axis) z_at_pt[axis] -= z_at_pt_base[axis]; | ||||||
|       print_G33_results(z_at_pt, true, true); |       print_G33_results(z_at_pt, true, true); | ||||||
|       delta_endstop_adj[axis] += 1.0; |       delta_endstop_adj[axis] += 1.0; | ||||||
|  |       recalc_delta_settings(); | ||||||
|       switch (axis) { |       switch (axis) { | ||||||
|         case A_AXIS : |         case A_AXIS : | ||||||
|           h_fac += 4.0 / (Z03(CEN) +Z01(__A)                               +Z32(_CA) +Z32(_AB)); // Offset by X-tower end-stop |           h_fac += 4.0 / (Z03(CEN) +Z01(__A)                               +Z32(_CA) +Z32(_AB)); // Offset by X-tower end-stop | ||||||
| @@ -293,7 +294,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, | |||||||
|  |  | ||||||
|     for (int8_t zig_zag = -1; zig_zag < 2; zig_zag += 2) { |     for (int8_t zig_zag = -1; zig_zag < 2; zig_zag += 2) { | ||||||
|       delta_radius += 1.0 * zig_zag; |       delta_radius += 1.0 * zig_zag; | ||||||
|       recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim); |       recalc_delta_settings(); | ||||||
|  |  | ||||||
|       endstops.enable(true); |       endstops.enable(true); | ||||||
|       if (!home_delta()) return; |       if (!home_delta()) return; | ||||||
| @@ -306,7 +307,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, | |||||||
|       LOOP_CAL_ALL(axis) z_at_pt[axis] -= z_at_pt_base[axis]; |       LOOP_CAL_ALL(axis) z_at_pt[axis] -= z_at_pt_base[axis]; | ||||||
|       print_G33_results(z_at_pt, true, true); |       print_G33_results(z_at_pt, true, true); | ||||||
|       delta_radius -= 1.0 * zig_zag; |       delta_radius -= 1.0 * zig_zag; | ||||||
|       recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim); |       recalc_delta_settings(); | ||||||
|       r_fac -= zig_zag * 6.0 / (Z03(__A) +Z03(__B) +Z03(__C) +Z03(_BC) +Z03(_CA) +Z03(_AB)); // Offset by delta radius |       r_fac -= zig_zag * 6.0 / (Z03(__A) +Z03(__B) +Z03(__C) +Z03(_BC) +Z03(_CA) +Z03(_AB)); // Offset by delta radius | ||||||
|     } |     } | ||||||
|     r_fac /= 2.0; |     r_fac /= 2.0; | ||||||
| @@ -319,7 +320,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, | |||||||
|       z_temp = MAX3(delta_endstop_adj[A_AXIS], delta_endstop_adj[B_AXIS], delta_endstop_adj[C_AXIS]); |       z_temp = MAX3(delta_endstop_adj[A_AXIS], delta_endstop_adj[B_AXIS], delta_endstop_adj[C_AXIS]); | ||||||
|       delta_height -= z_temp; |       delta_height -= z_temp; | ||||||
|       LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp; |       LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp; | ||||||
|       recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim); |       recalc_delta_settings(); | ||||||
|  |  | ||||||
|       endstops.enable(true); |       endstops.enable(true); | ||||||
|       if (!home_delta()) return; |       if (!home_delta()) return; | ||||||
| @@ -339,7 +340,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, | |||||||
|       z_temp = MAX3(delta_endstop_adj[A_AXIS], delta_endstop_adj[B_AXIS], delta_endstop_adj[C_AXIS]); |       z_temp = MAX3(delta_endstop_adj[A_AXIS], delta_endstop_adj[B_AXIS], delta_endstop_adj[C_AXIS]); | ||||||
|       delta_height -= z_temp; |       delta_height -= z_temp; | ||||||
|       LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp; |       LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp; | ||||||
|       recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim); |       recalc_delta_settings(); | ||||||
|       switch (axis) { |       switch (axis) { | ||||||
|         case A_AXIS : |         case A_AXIS : | ||||||
|           a_fac += 4.0 / (          Z06(__B) -Z06(__C)           +Z06(_CA) -Z06(_AB)); // Offset by alpha tower angle |           a_fac += 4.0 / (          Z06(__B) -Z06(__C)           +Z06(_CA) -Z06(_AB)); // Offset by alpha tower angle | ||||||
| @@ -626,7 +627,7 @@ void GcodeSuite::G33() { | |||||||
|       delta_height -= z_temp; |       delta_height -= z_temp; | ||||||
|       LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp; |       LOOP_XYZ(axis) delta_endstop_adj[axis] -= z_temp; | ||||||
|     } |     } | ||||||
|     recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim); |     recalc_delta_settings(); | ||||||
|     NOMORE(zero_std_dev_min, zero_std_dev); |     NOMORE(zero_std_dev_min, zero_std_dev); | ||||||
|  |  | ||||||
|     // print report |     // print report | ||||||
|   | |||||||
| @@ -55,7 +55,7 @@ | |||||||
|     if (parser.seen('X')) delta_tower_angle_trim[A_AXIS] = parser.value_float(); |     if (parser.seen('X')) delta_tower_angle_trim[A_AXIS] = parser.value_float(); | ||||||
|     if (parser.seen('Y')) delta_tower_angle_trim[B_AXIS] = parser.value_float(); |     if (parser.seen('Y')) delta_tower_angle_trim[B_AXIS] = parser.value_float(); | ||||||
|     if (parser.seen('Z')) delta_tower_angle_trim[C_AXIS] = parser.value_float(); |     if (parser.seen('Z')) delta_tower_angle_trim[C_AXIS] = parser.value_float(); | ||||||
|     recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim); |     recalc_delta_settings(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| #elif IS_SCARA | #elif IS_SCARA | ||||||
|   | |||||||
| @@ -752,8 +752,8 @@ | |||||||
| #ifndef MSG_DELTA_HEIGHT_CALIBRATE | #ifndef MSG_DELTA_HEIGHT_CALIBRATE | ||||||
|   #define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Set Delta Height") |   #define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Set Delta Height") | ||||||
| #endif | #endif | ||||||
| #ifndef MSG_DELTA_DIAG_ROG | #ifndef MSG_DELTA_DIAG_ROD | ||||||
|   #define MSG_DELTA_DIAG_ROG                  _UxGT("Diag Rod") |   #define MSG_DELTA_DIAG_ROD                  _UxGT("Diag Rod") | ||||||
| #endif | #endif | ||||||
| #ifndef MSG_DELTA_HEIGHT | #ifndef MSG_DELTA_HEIGHT | ||||||
|   #define MSG_DELTA_HEIGHT                    _UxGT("Height") |   #define MSG_DELTA_HEIGHT                    _UxGT("Height") | ||||||
|   | |||||||
| @@ -205,7 +205,7 @@ uint16_t max_display_update_time = 0; | |||||||
|     void lcd_control_retract_menu(); |     void lcd_control_retract_menu(); | ||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   #if ENABLED(DELTA_CALIBRATION_MENU) |   #if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION) | ||||||
|     void lcd_delta_calibrate_menu(); |     void lcd_delta_calibrate_menu(); | ||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
| @@ -2559,7 +2559,7 @@ void kill_screen(const char* lcd_msg) { | |||||||
|     // Move Axis |     // Move Axis | ||||||
|     // |     // | ||||||
|     #if ENABLED(DELTA) |     #if ENABLED(DELTA) | ||||||
|       if (axis_homed[Z_AXIS]) |       if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) | ||||||
|     #endif |     #endif | ||||||
|         MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu); |         MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu); | ||||||
|  |  | ||||||
| @@ -2674,7 +2674,7 @@ void kill_screen(const char* lcd_msg) { | |||||||
|     // |     // | ||||||
|     // Delta Calibration |     // Delta Calibration | ||||||
|     // |     // | ||||||
|     #if ENABLED(DELTA_CALIBRATION_MENU) |     #if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION) | ||||||
|       MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu); |       MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu); | ||||||
|     #endif |     #endif | ||||||
|  |  | ||||||
| @@ -2743,22 +2743,22 @@ void kill_screen(const char* lcd_msg) { | |||||||
|     void _goto_tower_z() { _man_probe_pt(cos(RADIANS( 90)) * delta_calibration_radius, sin(RADIANS( 90)) * delta_calibration_radius); } |     void _goto_tower_z() { _man_probe_pt(cos(RADIANS( 90)) * delta_calibration_radius, sin(RADIANS( 90)) * delta_calibration_radius); } | ||||||
|     void _goto_center()  { _man_probe_pt(0,0); } |     void _goto_center()  { _man_probe_pt(0,0); } | ||||||
|  |  | ||||||
|     void _lcd_set_delta_height() { |   #endif // DELTA_CALIBRATION_MENU | ||||||
|       update_software_endstops(Z_AXIS); |  | ||||||
|     } |   #if ENABLED(DELTA_CALIBRATION_MENU) || ENABLED(DELTA_AUTO_CALIBRATION) | ||||||
|  |  | ||||||
|     void lcd_delta_settings() { |     void lcd_delta_settings() { | ||||||
|       START_MENU(); |       START_MENU(); | ||||||
|       MENU_BACK(MSG_DELTA_CALIBRATE); |       MENU_BACK(MSG_DELTA_CALIBRATE); | ||||||
|       MENU_ITEM_EDIT(float52, MSG_DELTA_DIAG_ROG, &delta_diagonal_rod, DELTA_DIAGONAL_ROD - 5.0, DELTA_DIAGONAL_ROD + 5.0); |       MENU_ITEM_EDIT_CALLBACK(float52, MSG_DELTA_DIAG_ROD, &delta_diagonal_rod, delta_diagonal_rod - 5.0, delta_diagonal_rod + 5.0, recalc_delta_settings); | ||||||
|       MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52, MSG_DELTA_HEIGHT, &delta_height, delta_height - 10.0, delta_height + 10.0, _lcd_set_delta_height); |       MENU_ITEM_EDIT_CALLBACK(float52, MSG_DELTA_HEIGHT, &delta_height, delta_height - 10.0, delta_height + 10.0, recalc_delta_settings); | ||||||
|       MENU_ITEM_EDIT(float43, "Ex", &delta_endstop_adj[A_AXIS], -5.0, 5.0); |       MENU_ITEM_EDIT_CALLBACK(float43, "Ex", &delta_endstop_adj[A_AXIS], -5.0, 5.0, recalc_delta_settings); | ||||||
|       MENU_ITEM_EDIT(float43, "Ey", &delta_endstop_adj[B_AXIS], -5.0, 5.0); |       MENU_ITEM_EDIT_CALLBACK(float43, "Ey", &delta_endstop_adj[B_AXIS], -5.0, 5.0, recalc_delta_settings); | ||||||
|       MENU_ITEM_EDIT(float43, "Ez", &delta_endstop_adj[C_AXIS], -5.0, 5.0); |       MENU_ITEM_EDIT_CALLBACK(float43, "Ez", &delta_endstop_adj[C_AXIS], -5.0, 5.0, recalc_delta_settings); | ||||||
|       MENU_ITEM_EDIT(float52, MSG_DELTA_RADIUS, &delta_radius, DELTA_RADIUS - 5.0, DELTA_RADIUS + 5.0); |       MENU_ITEM_EDIT_CALLBACK(float52, MSG_DELTA_RADIUS, &delta_radius, delta_radius - 5.0, delta_radius + 5.0, recalc_delta_settings); | ||||||
|       MENU_ITEM_EDIT(float43, "Tx", &delta_tower_angle_trim[A_AXIS], -5.0, 5.0); |       MENU_ITEM_EDIT_CALLBACK(float43, "Tx", &delta_tower_angle_trim[A_AXIS], -5.0, 5.0, recalc_delta_settings); | ||||||
|       MENU_ITEM_EDIT(float43, "Ty", &delta_tower_angle_trim[B_AXIS], -5.0, 5.0); |       MENU_ITEM_EDIT_CALLBACK(float43, "Ty", &delta_tower_angle_trim[B_AXIS], -5.0, 5.0, recalc_delta_settings); | ||||||
|       MENU_ITEM_EDIT(float43, "Tz", &delta_tower_angle_trim[C_AXIS], -5.0, 5.0); |       MENU_ITEM_EDIT_CALLBACK(float43, "Tz", &delta_tower_angle_trim[C_AXIS], -5.0, 5.0, recalc_delta_settings); | ||||||
|       END_MENU(); |       END_MENU(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -2766,7 +2766,6 @@ void kill_screen(const char* lcd_msg) { | |||||||
|       START_MENU(); |       START_MENU(); | ||||||
|       MENU_BACK(MSG_MAIN); |       MENU_BACK(MSG_MAIN); | ||||||
|       #if ENABLED(DELTA_AUTO_CALIBRATION) |       #if ENABLED(DELTA_AUTO_CALIBRATION) | ||||||
|         MENU_ITEM(submenu, MSG_DELTA_SETTINGS, lcd_delta_settings); |  | ||||||
|         MENU_ITEM(gcode, MSG_DELTA_AUTO_CALIBRATE, PSTR("G33")); |         MENU_ITEM(gcode, MSG_DELTA_AUTO_CALIBRATE, PSTR("G33")); | ||||||
|         MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1")); |         MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1")); | ||||||
|         #if ENABLED(EEPROM_SETTINGS) |         #if ENABLED(EEPROM_SETTINGS) | ||||||
| @@ -2774,17 +2773,20 @@ void kill_screen(const char* lcd_msg) { | |||||||
|           MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings); |           MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings); | ||||||
|         #endif |         #endif | ||||||
|       #endif |       #endif | ||||||
|       MENU_ITEM(submenu, MSG_AUTO_HOME, _lcd_delta_calibrate_home); |       MENU_ITEM(submenu, MSG_DELTA_SETTINGS, lcd_delta_settings); | ||||||
|       if (axis_homed[Z_AXIS]) { |       #if ENABLED(DELTA_CALIBRATION_MENU) | ||||||
|         MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_X, _goto_tower_x); |         MENU_ITEM(submenu, MSG_AUTO_HOME, _lcd_delta_calibrate_home); | ||||||
|         MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_Y, _goto_tower_y); |         if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) { | ||||||
|         MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_Z, _goto_tower_z); |           MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_X, _goto_tower_x); | ||||||
|         MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_CENTER, _goto_center); |           MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_Y, _goto_tower_y); | ||||||
|       } |           MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_Z, _goto_tower_z); | ||||||
|  |           MENU_ITEM(submenu, MSG_DELTA_CALIBRATE_CENTER, _goto_center); | ||||||
|  |         } | ||||||
|  |       #endif | ||||||
|       END_MENU(); |       END_MENU(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   #endif // DELTA_CALIBRATION_MENU |   #endif // DELTA_CALIBRATION_MENU || DELTA_AUTO_CALIBRATION | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * If the most recent manual move hasn't been fed to the planner yet, |    * If the most recent manual move hasn't been fed to the planner yet, | ||||||
|   | |||||||
| @@ -225,7 +225,7 @@ void MarlinSettings::postprocess() { | |||||||
|   // Make sure delta kinematics are updated before refreshing the |   // Make sure delta kinematics are updated before refreshing the | ||||||
|   // planner position so the stepper counts will be set correctly. |   // planner position so the stepper counts will be set correctly. | ||||||
|   #if ENABLED(DELTA) |   #if ENABLED(DELTA) | ||||||
|     recalc_delta_settings(delta_radius, delta_diagonal_rod, delta_tower_angle_trim); |     recalc_delta_settings(); | ||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   // Refresh steps_to_mm with the reciprocal of axis_steps_per_mm |   // Refresh steps_to_mm with the reciprocal of axis_steps_per_mm | ||||||
|   | |||||||
| @@ -56,18 +56,20 @@ float delta_safe_distance_from_top(); | |||||||
|  * Recalculate factors used for delta kinematics whenever |  * Recalculate factors used for delta kinematics whenever | ||||||
|  * settings have been changed (e.g., by M665). |  * settings have been changed (e.g., by M665). | ||||||
|  */ |  */ | ||||||
| void recalc_delta_settings(const float radius, const float diagonal_rod, const float tower_angle_trim[ABC]) { | void recalc_delta_settings() { | ||||||
|   const float trt[ABC] = DELTA_RADIUS_TRIM_TOWER, |   const float trt[ABC] = DELTA_RADIUS_TRIM_TOWER, | ||||||
|               drt[ABC] = DELTA_DIAGONAL_ROD_TRIM_TOWER; |               drt[ABC] = DELTA_DIAGONAL_ROD_TRIM_TOWER; | ||||||
|   delta_tower[A_AXIS][X_AXIS] = cos(RADIANS(210 + tower_angle_trim[A_AXIS])) * (radius + trt[A_AXIS]); // front left tower |   delta_tower[A_AXIS][X_AXIS] = cos(RADIANS(210 + delta_tower_angle_trim[A_AXIS])) * (delta_radius + trt[A_AXIS]); // front left tower | ||||||
|   delta_tower[A_AXIS][Y_AXIS] = sin(RADIANS(210 + tower_angle_trim[A_AXIS])) * (radius + trt[A_AXIS]); |   delta_tower[A_AXIS][Y_AXIS] = sin(RADIANS(210 + delta_tower_angle_trim[A_AXIS])) * (delta_radius + trt[A_AXIS]); | ||||||
|   delta_tower[B_AXIS][X_AXIS] = cos(RADIANS(330 + tower_angle_trim[B_AXIS])) * (radius + trt[B_AXIS]); // front right tower |   delta_tower[B_AXIS][X_AXIS] = cos(RADIANS(330 + delta_tower_angle_trim[B_AXIS])) * (delta_radius + trt[B_AXIS]); // front right tower | ||||||
|   delta_tower[B_AXIS][Y_AXIS] = sin(RADIANS(330 + tower_angle_trim[B_AXIS])) * (radius + trt[B_AXIS]); |   delta_tower[B_AXIS][Y_AXIS] = sin(RADIANS(330 + delta_tower_angle_trim[B_AXIS])) * (delta_radius + trt[B_AXIS]); | ||||||
|   delta_tower[C_AXIS][X_AXIS] = cos(RADIANS( 90 + tower_angle_trim[C_AXIS])) * (radius + trt[C_AXIS]); // back middle tower |   delta_tower[C_AXIS][X_AXIS] = cos(RADIANS( 90 + delta_tower_angle_trim[C_AXIS])) * (delta_radius + trt[C_AXIS]); // back middle tower | ||||||
|   delta_tower[C_AXIS][Y_AXIS] = sin(RADIANS( 90 + tower_angle_trim[C_AXIS])) * (radius + trt[C_AXIS]); |   delta_tower[C_AXIS][Y_AXIS] = sin(RADIANS( 90 + delta_tower_angle_trim[C_AXIS])) * (delta_radius + trt[C_AXIS]); | ||||||
|   delta_diagonal_rod_2_tower[A_AXIS] = sq(diagonal_rod + drt[A_AXIS]); |   delta_diagonal_rod_2_tower[A_AXIS] = sq(delta_diagonal_rod + drt[A_AXIS]); | ||||||
|   delta_diagonal_rod_2_tower[B_AXIS] = sq(diagonal_rod + drt[B_AXIS]); |   delta_diagonal_rod_2_tower[B_AXIS] = sq(delta_diagonal_rod + drt[B_AXIS]); | ||||||
|   delta_diagonal_rod_2_tower[C_AXIS] = sq(diagonal_rod + drt[C_AXIS]); |   delta_diagonal_rod_2_tower[C_AXIS] = sq(delta_diagonal_rod + drt[C_AXIS]); | ||||||
|  |   update_software_endstops(Z_AXIS); | ||||||
|  |   axis_homed[X_AXIS] = axis_homed[Y_AXIS] = axis_homed[Z_AXIS] = false; | ||||||
| } | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|   | |||||||
| @@ -43,7 +43,7 @@ extern float delta_tower[ABC][2], | |||||||
|  * Recalculate factors used for delta kinematics whenever |  * Recalculate factors used for delta kinematics whenever | ||||||
|  * settings have been changed (e.g., by M665). |  * settings have been changed (e.g., by M665). | ||||||
|  */ |  */ | ||||||
| void recalc_delta_settings(const float radius, const float diagonal_rod, const float tower_angle_trim[ABC]); | void recalc_delta_settings(); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Delta Inverse Kinematics |  * Delta Inverse Kinematics | ||||||
|   | |||||||
| @@ -509,10 +509,9 @@ static bool do_probe_move(const float z, const float fr_mm_m) { | |||||||
|  * @details Used by probe_pt to do a single Z probe. |  * @details Used by probe_pt to do a single Z probe. | ||||||
|  *          Leaves current_position[Z_AXIS] at the height where the probe triggered. |  *          Leaves current_position[Z_AXIS] at the height where the probe triggered. | ||||||
|  * |  * | ||||||
|  * @param  short_move Flag for a shorter probe move towards the bed |  | ||||||
|  * @return The raw Z position where the probe was triggered |  * @return The raw Z position where the probe was triggered | ||||||
|  */ |  */ | ||||||
| static float run_z_probe(const bool short_move=true) { | static float run_z_probe() { | ||||||
|  |  | ||||||
|   #if ENABLED(DEBUG_LEVELING_FEATURE) |   #if ENABLED(DEBUG_LEVELING_FEATURE) | ||||||
|     if (DEBUGGING(LEVELING)) DEBUG_POS(">>> run_z_probe", current_position); |     if (DEBUGGING(LEVELING)) DEBUG_POS(">>> run_z_probe", current_position); | ||||||
| @@ -549,8 +548,8 @@ static float run_z_probe(const bool short_move=true) { | |||||||
|     } |     } | ||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   // move down slowly to find bed |   // Move down slowly to find bed, not too far | ||||||
|   if (do_probe_move(-10 + (short_move ? 0 : -(Z_MAX_LENGTH)), Z_PROBE_SPEED_SLOW)) return NAN; |   if (do_probe_move(-10, Z_PROBE_SPEED_SLOW)) return NAN; | ||||||
|  |  | ||||||
|   #if ENABLED(DEBUG_LEVELING_FEATURE) |   #if ENABLED(DEBUG_LEVELING_FEATURE) | ||||||
|     if (DEBUGGING(LEVELING)) DEBUG_POS("<<< run_z_probe", current_position); |     if (DEBUGGING(LEVELING)) DEBUG_POS("<<< run_z_probe", current_position); | ||||||
| @@ -589,12 +588,11 @@ float probe_pt(const float &rx, const float &ry, const bool stow, const uint8_t | |||||||
|  |  | ||||||
|   const float nx = rx - (X_PROBE_OFFSET_FROM_EXTRUDER), ny = ry - (Y_PROBE_OFFSET_FROM_EXTRUDER); |   const float nx = rx - (X_PROBE_OFFSET_FROM_EXTRUDER), ny = ry - (Y_PROBE_OFFSET_FROM_EXTRUDER); | ||||||
|  |  | ||||||
|   if (printable |   if (!printable | ||||||
|     ? !position_is_reachable(nx, ny) |     ? !position_is_reachable(nx, ny) | ||||||
|     : !position_is_reachable_by_probe(rx, ry) |     : !position_is_reachable_by_probe(rx, ry) | ||||||
|   ) return NAN; |   ) return NAN; | ||||||
|  |  | ||||||
|  |  | ||||||
|   const float old_feedrate_mm_s = feedrate_mm_s; |   const float old_feedrate_mm_s = feedrate_mm_s; | ||||||
|  |  | ||||||
|   #if ENABLED(DELTA) |   #if ENABLED(DELTA) | ||||||
| @@ -602,12 +600,6 @@ float probe_pt(const float &rx, const float &ry, const bool stow, const uint8_t | |||||||
|       do_blocking_move_to_z(delta_clip_start_height); |       do_blocking_move_to_z(delta_clip_start_height); | ||||||
|   #endif |   #endif | ||||||
|  |  | ||||||
|   #if HAS_SOFTWARE_ENDSTOPS |  | ||||||
|     // Store the status of the soft endstops and disable if we're probing a non-printable location |  | ||||||
|     static bool enable_soft_endstops = soft_endstops_enabled; |  | ||||||
|     if (!printable) soft_endstops_enabled = false; |  | ||||||
|   #endif |  | ||||||
|  |  | ||||||
|   feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S; |   feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S; | ||||||
|  |  | ||||||
|   // Move the probe to the given XY |   // Move the probe to the given XY | ||||||
| @@ -615,7 +607,7 @@ float probe_pt(const float &rx, const float &ry, const bool stow, const uint8_t | |||||||
|  |  | ||||||
|   float measured_z = NAN; |   float measured_z = NAN; | ||||||
|   if (!DEPLOY_PROBE()) { |   if (!DEPLOY_PROBE()) { | ||||||
|     measured_z = run_z_probe(printable); |     measured_z = run_z_probe(); | ||||||
|  |  | ||||||
|     if (!stow) |     if (!stow) | ||||||
|       do_blocking_move_to_z(current_position[Z_AXIS] + Z_CLEARANCE_BETWEEN_PROBES, MMM_TO_MMS(Z_PROBE_SPEED_FAST)); |       do_blocking_move_to_z(current_position[Z_AXIS] + Z_CLEARANCE_BETWEEN_PROBES, MMM_TO_MMS(Z_PROBE_SPEED_FAST)); | ||||||
| @@ -623,11 +615,6 @@ float probe_pt(const float &rx, const float &ry, const bool stow, const uint8_t | |||||||
|       if (STOW_PROBE()) measured_z = NAN; |       if (STOW_PROBE()) measured_z = NAN; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   #if HAS_SOFTWARE_ENDSTOPS |  | ||||||
|     // Restore the soft endstop status |  | ||||||
|     soft_endstops_enabled = enable_soft_endstops; |  | ||||||
|   #endif |  | ||||||
|  |  | ||||||
|   if (verbose_level > 2) { |   if (verbose_level > 2) { | ||||||
|     SERIAL_PROTOCOLPGM("Bed X: "); |     SERIAL_PROTOCOLPGM("Bed X: "); | ||||||
|     SERIAL_PROTOCOL_F(LOGICAL_X_POSITION(rx), 3); |     SERIAL_PROTOCOL_F(LOGICAL_X_POSITION(rx), 3); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user