diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 48511ef188..5149a09391 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -153,7 +153,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, _7p_6_centre = probe_points >= 5 && probe_points <= 7, _7p_9_centre = probe_points >= 8; - #if DISABLED(PROBE_MANUALLY) + #if HAS_BED_PROBE const float dx = (X_PROBE_OFFSET_FROM_EXTRUDER), dy = (Y_PROBE_OFFSET_FROM_EXTRUDER); #endif @@ -164,10 +164,10 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, if (!_7p_no_intermediates && !_7p_4_intermediates && !_7p_11_intermediates) { // probe the center z_at_pt[CEN] += - #if ENABLED(PROBE_MANUALLY) - lcd_probe_pt(0, 0) - #else + #if HAS_BED_PROBE probe_pt(dx, dy, stow_after_each, 1, false) + #else + lcd_probe_pt(0, 0) #endif ; } @@ -179,10 +179,10 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, const float a = RADIANS(210 + (360 / NPP) * (axis - 1)), r = delta_calibration_radius * 0.1; z_at_pt[CEN] += - #if ENABLED(PROBE_MANUALLY) - lcd_probe_pt(cos(a) * r, sin(a) * r) - #else + #if HAS_BED_PROBE probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1) + #else + lcd_probe_pt(cos(a) * r, sin(a) * r) #endif ; } @@ -208,10 +208,10 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, r = delta_calibration_radius * (1 + 0.1 * (zig_zag ? circle : - circle)), interpol = FMOD(axis, 1); const float z_temp = - #if ENABLED(PROBE_MANUALLY) - lcd_probe_pt(cos(a) * r, sin(a) * r) - #else + #if HAS_BED_PROBE probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1) + #else + lcd_probe_pt(cos(a) * r, sin(a) * r) #endif ; // split probe point to neighbouring calibration points @@ -242,7 +242,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, return 0.00001; } -#if DISABLED(PROBE_MANUALLY) +#if HAS_BED_PROBE static void G33_auto_tune() { float z_at_pt[NPP + 1] = { 0.0 }, @@ -366,7 +366,7 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points, SERIAL_EOL(); } -#endif // !PROBE_MANUALLY +#endif // HAS_BED_PROBE /** * G33 - Delta '1-4-7-point' Auto-Calibration @@ -488,10 +488,10 @@ void GcodeSuite::G33() { } if (auto_tune) { - #if ENABLED(PROBE_MANUALLY) - SERIAL_PROTOCOLLNPGM("A probe is needed for auto-tune"); - #else + #if HAS_BED_PROBE G33_auto_tune(); + #else + SERIAL_PROTOCOLLNPGM("A probe is needed for auto-tune"); #endif G33_CLEANUP(); return; @@ -556,7 +556,7 @@ void GcodeSuite::G33() { #define Z2(I) ZP(2, I) #define Z1(I) ZP(1, I) - #if ENABLED(PROBE_MANUALLY) + #if !HAS_BED_PROBE test_precision = 0.00; // forced end #endif @@ -638,7 +638,7 @@ void GcodeSuite::G33() { if ((zero_std_dev >= test_precision && iterations > force_iterations) || zero_std_dev <= calibration_precision) { // end iterations SERIAL_PROTOCOLPGM("Calibration OK"); SERIAL_PROTOCOL_SP(32); - #if DISABLED(PROBE_MANUALLY) + #if HAS_BED_PROBE if (zero_std_dev >= test_precision && !_1p_calibration) SERIAL_PROTOCOLPGM("rolling back."); else diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index c87a8eddae..201c8e973d 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -379,7 +379,7 @@ private: #endif #endif - #if PROBE_SELECTED && ENABLED(DELTA_AUTO_CALIBRATION) + #if ENABLED(DELTA_AUTO_CALIBRATION) static void G33(); #endif diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index f5125fb6a1..6be8a1a6f2 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -468,13 +468,6 @@ */ #define HAS_Z_SERVO_ENDSTOP (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0) -/** - * UBL has its own manual probing, so this just causes trouble. - */ -#if ENABLED(AUTO_BED_LEVELING_UBL) - #undef PROBE_MANUALLY -#endif - /** * Set a flag for any enabled probe */ diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index 8799d22d54..df480d59b9 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -22,7 +22,7 @@ /** * Conditionals_adv.h - * Defines that depend on advanced onfiguration. + * Defines that depend on advanced configuration. */ #ifndef CONDITIONALS_ADV_H diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index afa2ddcec4..34c662e66c 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -1114,11 +1114,6 @@ // Add commands that need sub-codes to this list #define USE_GCODE_SUBCODES ENABLED(G38_PROBE_TARGET) || ENABLED(CNC_COORDINATE_SYSTEMS) -// MESH_BED_LEVELING overrides PROBE_MANUALLY -#if ENABLED(MESH_BED_LEVELING) - #undef PROBE_MANUALLY -#endif - // Parking Extruder #if ENABLED(PARKING_EXTRUDER) #ifndef PARKING_EXTRUDER_GRAB_DISTANCE diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 5ce74c3f31..3f78f5c603 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -586,10 +586,8 @@ static_assert(1 >= 0 #error "You probably want to use Max Endstops for DELTA!" #elif ENABLED(ENABLE_LEVELING_FADE_HEIGHT) && DISABLED(AUTO_BED_LEVELING_BILINEAR) && !UBL_DELTA #error "ENABLE_LEVELING_FADE_HEIGHT on DELTA requires AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL." - #elif ENABLED(DELTA_AUTO_CALIBRATION) && !PROBE_SELECTED - #error "DELTA_AUTO_CALIBRATION requires a probe: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, Z Servo." - #elif ENABLED(DELTA_AUTO_CALIBRATION) && ENABLED(PROBE_MANUALLY) && DISABLED(ULTIPANEL) - #error "DELTA_AUTO_CALIBRATION requires an LCD controller with PROBE_MANUALLY." + #elif ENABLED(DELTA_AUTO_CALIBRATION) && !(HAS_BED_PROBE || ENABLED(ULTIPANEL)) + #error "DELTA_AUTO_CALIBRATION requires a probe or LCD Controller." #elif ABL_GRID #if (GRID_MAX_POINTS_X & 1) == 0 || (GRID_MAX_POINTS_Y & 1) == 0 #error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be odd numbers." @@ -631,7 +629,7 @@ static_assert(1 >= 0 , "Please enable only one probe option: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo." ); -#if PROBE_SELECTED +#if HAS_BED_PROBE /** * Z_PROBE_SLED is incompatible with DELTA @@ -679,7 +677,7 @@ static_assert(1 >= 0 #if !HAS_Z_MIN_PROBE_PIN #error "Z_MIN_PROBE_ENDSTOP requires the Z_MIN_PROBE_PIN to be defined." #endif - #elif DISABLED(PROBE_MANUALLY) + #else #error "You must enable either Z_MIN_PROBE_ENDSTOP or Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use a probe." #endif @@ -701,14 +699,14 @@ static_assert(1 >= 0 /** * Require some kind of probe for bed leveling and probe testing */ - #if OLDSCHOOL_ABL + #if OLDSCHOOL_ABL && !PROBE_SELECTED #error "Auto Bed Leveling requires one of these: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or a Z Servo." #endif -#endif + #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) + #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe: FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo." + #endif -#if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) && !HAS_BED_PROBE - #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe: FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo." #endif /** @@ -743,6 +741,9 @@ static_assert(1 >= 0 * Unified Bed Leveling */ + // Hide PROBE_MANUALLY from the rest of the code + #undef PROBE_MANUALLY + #if IS_SCARA #error "AUTO_BED_LEVELING_UBL does not yet support SCARA printers." #elif DISABLED(EEPROM_SETTINGS) @@ -760,7 +761,8 @@ static_assert(1 >= 0 #if ENABLED(ENABLE_MESH_EDIT_GFX_OVERLAY) && !ENABLED(DOGLCD) #error "ENABLE_MESH_EDIT_GFX_OVERLAY requires a DOGLCD." #endif -#elif HAS_ABL + +#elif OLDSCHOOL_ABL /** * Auto Bed Leveling @@ -809,6 +811,9 @@ static_assert(1 >= 0 #elif ENABLED(MESH_BED_LEVELING) + // Hide PROBE_MANUALLY from the rest of the code + #undef PROBE_MANUALLY + /** * Mesh Bed Leveling */ @@ -827,8 +832,8 @@ static_assert(1 >= 0 #if ENABLED(LCD_BED_LEVELING) #if DISABLED(ULTIPANEL) #error "LCD_BED_LEVELING requires an LCD controller." - #elif DISABLED(MESH_BED_LEVELING) && !(HAS_ABL && ENABLED(PROBE_MANUALLY)) - #error "LCD_BED_LEVELING requires MESH_BED_LEVELING or PROBE_MANUALLY with auto bed leveling enabled." + #elif !(ENABLED(MESH_BED_LEVELING) || (OLDSCHOOL_ABL && ENABLED(PROBE_MANUALLY))) + #error "LCD_BED_LEVELING requires MESH_BED_LEVELING or ABL with PROBE_MANUALLY." #endif #endif diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp index 1c5108cc7f..510dd8bd47 100644 --- a/Marlin/src/lcd/ultralcd.cpp +++ b/Marlin/src/lcd/ultralcd.cpp @@ -155,6 +155,8 @@ uint16_t max_display_update_time = 0; extern bool powersupply_on; #endif + float move_menu_scale; + //////////////////////////////////////////// ///////////////// Menu Tree //////////////// //////////////////////////////////////////// @@ -2679,28 +2681,9 @@ void kill_screen(const char* lcd_msg) { END_MENU(); } - float move_menu_scale; - - #if ENABLED(DELTA_CALIBRATION_MENU) + #if ENABLED(DELTA_CALIBRATION_MENU) || (ENABLED(DELTA_AUTO_CALIBRATION) && !HAS_BED_PROBE) void lcd_move_z(); - void lcd_delta_calibrate_menu(); - - void _lcd_calibrate_homing() { - if (lcdDrawUpdate) lcd_implementation_drawmenu_static(LCD_HEIGHT >= 4 ? 1 : 0, PSTR(MSG_LEVEL_BED_HOMING)); - lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; - if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) - lcd_goto_previous_menu(); - } - - void _lcd_delta_calibrate_home() { - #if HAS_LEVELING - reset_bed_level(); // After calibration bed-level data is no longer valid - #endif - - enqueue_and_echo_commands_P(PSTR("G28")); - lcd_goto_screen(_lcd_calibrate_homing); - } void _man_probe_pt(const float &rx, const float &ry) { #if HAS_LEVELING @@ -2720,6 +2703,10 @@ void kill_screen(const char* lcd_msg) { lcd_goto_screen(lcd_move_z); } + #endif // DELTA_CALIBRATION_MENU || (DELTA_AUTO_CALIBRATION && !HAS_BED_PROBE) + + #if ENABLED(DELTA_AUTO_CALIBRATION) && !HAS_BED_PROBE + float lcd_probe_pt(const float &rx, const float &ry) { _man_probe_pt(rx, ry); KEEPALIVE_STATE(PAUSED_FOR_USER); @@ -2731,6 +2718,26 @@ void kill_screen(const char* lcd_msg) { return current_position[Z_AXIS]; } + #endif // DELTA_AUTO_CALIBRATION && !HAS_BED_PROBE + + #if ENABLED(DELTA_CALIBRATION_MENU) + + void _lcd_calibrate_homing() { + if (lcdDrawUpdate) lcd_implementation_drawmenu_static(LCD_HEIGHT >= 4 ? 1 : 0, PSTR(MSG_LEVEL_BED_HOMING)); + lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; + if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) + lcd_goto_previous_menu(); + } + + void _lcd_delta_calibrate_home() { + #if HAS_LEVELING + reset_bed_level(); // After calibration bed-level data is no longer valid + #endif + + enqueue_and_echo_commands_P(PSTR("G28")); + lcd_goto_screen(_lcd_calibrate_homing); + } + void _goto_tower_x() { _man_probe_pt(cos(RADIANS(210)) * delta_calibration_radius, sin(RADIANS(210)) * delta_calibration_radius); } void _goto_tower_y() { _man_probe_pt(cos(RADIANS(330)) * delta_calibration_radius, sin(RADIANS(330)) * delta_calibration_radius); } void _goto_tower_z() { _man_probe_pt(cos(RADIANS( 90)) * delta_calibration_radius, sin(RADIANS( 90)) * delta_calibration_radius); } diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h index 4f87d4b86c..8d4d2ea65b 100644 --- a/Marlin/src/lcd/ultralcd.h +++ b/Marlin/src/lcd/ultralcd.h @@ -118,7 +118,7 @@ float lcd_z_offset_edit(); #endif - #if ENABLED(DELTA_CALIBRATION_MENU) + #if ENABLED(DELTA_AUTO_CALIBRATION) && !HAS_BED_PROBE float lcd_probe_pt(const float &rx, const float &ry); #endif