From a1878cd1c0194205a4b5d9cf12cd169043e5dff5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 16 Aug 2017 02:27:50 -0500 Subject: [PATCH] Add "Level Corners" menu option --- Marlin/Conditionals_post.h | 7 ++ Marlin/Configuration.h | 1 + .../AlephObjects/TAZ4/Configuration.h | 1 + .../AliExpress/CL-260/Configuration.h | 1 + .../Anet/A6/Configuration.h | 1 + .../Anet/A8/Configuration.h | 1 + .../BQ/Hephestos/Configuration.h | 1 + .../BQ/Hephestos_2/Configuration.h | 1 + .../BQ/WITBOX/Configuration.h | 1 + .../Cartesio/Configuration.h | 1 + .../Creality/CR-10/Configuration.h | 1 + .../Felix/Configuration.h | 1 + .../Felix/DUAL/Configuration.h | 1 + .../Folger Tech/i3-2020/Configuration.h | 1 + .../Geeetech/GT2560/Configuration.h | 1 + .../Geeetech/I3_Pro_X-GT2560/Configuration.h | 1 + .../Infitary/i3-M508/Configuration.h | 1 + .../Malyan/M150/Configuration.h | 1 + .../RepRapWorld/Megatronics/Configuration.h | 1 + .../RigidBot/Configuration.h | 1 + .../SCARA/Configuration.h | 1 + .../TinyBoy2/Configuration.h | 1 + .../Velleman/K8200/Configuration.h | 1 + .../Velleman/K8400/Configuration.h | 1 + .../Velleman/K8400/Dual-head/Configuration.h | 1 + .../adafruit/ST7565/Configuration.h | 1 + .../FLSUN/auto_calibrate/Configuration.h | 1 + .../delta/FLSUN/kossel_mini/Configuration.h | 1 + .../delta/generic/Configuration.h | 1 + .../delta/kossel_mini/Configuration.h | 1 + .../delta/kossel_pro/Configuration.h | 1 + .../delta/kossel_xl/Configuration.h | 1 + .../gCreate/gMax1.5+/Configuration.h | 1 + .../makibox/Configuration.h | 1 + .../tvrrug/Round2/Configuration.h | 1 + .../wt150/Configuration.h | 1 + Marlin/language_en.h | 6 ++ Marlin/ultralcd.cpp | 78 +++++++++++++++++-- 38 files changed, 118 insertions(+), 8 deletions(-) diff --git a/Marlin/Conditionals_post.h b/Marlin/Conditionals_post.h index e3878ecb9b..ca38296b3d 100644 --- a/Marlin/Conditionals_post.h +++ b/Marlin/Conditionals_post.h @@ -89,6 +89,13 @@ #define IS_KINEMATIC (ENABLED(DELTA) || IS_SCARA) #define IS_CARTESIAN !IS_KINEMATIC + /** + * No adjustable bed on non-cartesians + */ + #if IS_KINEMATIC + #undef LEVEL_BED_CORNERS + #endif + /** * SCARA cannot use SLOWDOWN and requires QUICKHOME */ diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 12d394fc3b..340f67dc87 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -940,6 +940,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/AlephObjects/TAZ4/Configuration.h b/Marlin/example_configurations/AlephObjects/TAZ4/Configuration.h index ce9250eb9e..c7ddc5163b 100644 --- a/Marlin/example_configurations/AlephObjects/TAZ4/Configuration.h +++ b/Marlin/example_configurations/AlephObjects/TAZ4/Configuration.h @@ -960,6 +960,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/AliExpress/CL-260/Configuration.h b/Marlin/example_configurations/AliExpress/CL-260/Configuration.h index 5cbd95adf3..097a78b102 100644 --- a/Marlin/example_configurations/AliExpress/CL-260/Configuration.h +++ b/Marlin/example_configurations/AliExpress/CL-260/Configuration.h @@ -940,6 +940,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Anet/A6/Configuration.h b/Marlin/example_configurations/Anet/A6/Configuration.h index 3198263934..f94d783faf 100644 --- a/Marlin/example_configurations/Anet/A6/Configuration.h +++ b/Marlin/example_configurations/Anet/A6/Configuration.h @@ -1083,6 +1083,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Anet/A8/Configuration.h b/Marlin/example_configurations/Anet/A8/Configuration.h index 537a90468a..0d03b63015 100644 --- a/Marlin/example_configurations/Anet/A8/Configuration.h +++ b/Marlin/example_configurations/Anet/A8/Configuration.h @@ -946,6 +946,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/BQ/Hephestos/Configuration.h b/Marlin/example_configurations/BQ/Hephestos/Configuration.h index fd956dcdfd..c544996bc5 100644 --- a/Marlin/example_configurations/BQ/Hephestos/Configuration.h +++ b/Marlin/example_configurations/BQ/Hephestos/Configuration.h @@ -931,6 +931,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/BQ/Hephestos_2/Configuration.h b/Marlin/example_configurations/BQ/Hephestos_2/Configuration.h index fdba13b249..b4d0bb45fe 100644 --- a/Marlin/example_configurations/BQ/Hephestos_2/Configuration.h +++ b/Marlin/example_configurations/BQ/Hephestos_2/Configuration.h @@ -941,6 +941,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/BQ/WITBOX/Configuration.h b/Marlin/example_configurations/BQ/WITBOX/Configuration.h index b8fbc1266f..be954db5f0 100644 --- a/Marlin/example_configurations/BQ/WITBOX/Configuration.h +++ b/Marlin/example_configurations/BQ/WITBOX/Configuration.h @@ -931,6 +931,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Cartesio/Configuration.h b/Marlin/example_configurations/Cartesio/Configuration.h index 9360232d63..6e59b16a6a 100644 --- a/Marlin/example_configurations/Cartesio/Configuration.h +++ b/Marlin/example_configurations/Cartesio/Configuration.h @@ -939,6 +939,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Creality/CR-10/Configuration.h b/Marlin/example_configurations/Creality/CR-10/Configuration.h index 53e703b811..a35a6be4e0 100644 --- a/Marlin/example_configurations/Creality/CR-10/Configuration.h +++ b/Marlin/example_configurations/Creality/CR-10/Configuration.h @@ -950,6 +950,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 5b99d6dbac..b916aa9850 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -922,6 +922,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Felix/DUAL/Configuration.h b/Marlin/example_configurations/Felix/DUAL/Configuration.h index eeaaf0e7f9..dc122e8778 100644 --- a/Marlin/example_configurations/Felix/DUAL/Configuration.h +++ b/Marlin/example_configurations/Felix/DUAL/Configuration.h @@ -922,6 +922,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Folger Tech/i3-2020/Configuration.h b/Marlin/example_configurations/Folger Tech/i3-2020/Configuration.h index b0a8758404..8fac726688 100644 --- a/Marlin/example_configurations/Folger Tech/i3-2020/Configuration.h +++ b/Marlin/example_configurations/Folger Tech/i3-2020/Configuration.h @@ -945,6 +945,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Geeetech/GT2560/Configuration.h b/Marlin/example_configurations/Geeetech/GT2560/Configuration.h index 6cbc46bc06..c896359ff3 100644 --- a/Marlin/example_configurations/Geeetech/GT2560/Configuration.h +++ b/Marlin/example_configurations/Geeetech/GT2560/Configuration.h @@ -955,6 +955,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Geeetech/I3_Pro_X-GT2560/Configuration.h b/Marlin/example_configurations/Geeetech/I3_Pro_X-GT2560/Configuration.h index d7e024dcec..f44de66dd6 100644 --- a/Marlin/example_configurations/Geeetech/I3_Pro_X-GT2560/Configuration.h +++ b/Marlin/example_configurations/Geeetech/I3_Pro_X-GT2560/Configuration.h @@ -940,6 +940,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Infitary/i3-M508/Configuration.h b/Marlin/example_configurations/Infitary/i3-M508/Configuration.h index 872870a765..5f214be3c9 100644 --- a/Marlin/example_configurations/Infitary/i3-M508/Configuration.h +++ b/Marlin/example_configurations/Infitary/i3-M508/Configuration.h @@ -944,6 +944,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Malyan/M150/Configuration.h b/Marlin/example_configurations/Malyan/M150/Configuration.h index 5017382669..63eb4a3de7 100644 --- a/Marlin/example_configurations/Malyan/M150/Configuration.h +++ b/Marlin/example_configurations/Malyan/M150/Configuration.h @@ -968,6 +968,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index 0f575a8fce..c52f0a76b1 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -940,6 +940,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index ea744e8e82..98df154af6 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -938,6 +938,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index aa5dcdac6e..b9b67a3a75 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -952,6 +952,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/TinyBoy2/Configuration.h b/Marlin/example_configurations/TinyBoy2/Configuration.h index 480ba0a7a2..e7dae6db43 100644 --- a/Marlin/example_configurations/TinyBoy2/Configuration.h +++ b/Marlin/example_configurations/TinyBoy2/Configuration.h @@ -996,6 +996,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Velleman/K8200/Configuration.h b/Marlin/example_configurations/Velleman/K8200/Configuration.h index 959713d3dd..2226b058de 100644 --- a/Marlin/example_configurations/Velleman/K8200/Configuration.h +++ b/Marlin/example_configurations/Velleman/K8200/Configuration.h @@ -969,6 +969,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Velleman/K8400/Configuration.h b/Marlin/example_configurations/Velleman/K8400/Configuration.h index 48ed7f53fc..4fd5dd8f46 100644 --- a/Marlin/example_configurations/Velleman/K8400/Configuration.h +++ b/Marlin/example_configurations/Velleman/K8400/Configuration.h @@ -940,6 +940,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/Velleman/K8400/Dual-head/Configuration.h b/Marlin/example_configurations/Velleman/K8400/Dual-head/Configuration.h index 1c24b72171..ad15c2cbca 100644 --- a/Marlin/example_configurations/Velleman/K8400/Dual-head/Configuration.h +++ b/Marlin/example_configurations/Velleman/K8400/Dual-head/Configuration.h @@ -940,6 +940,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 4c99ee2f1a..698febfefc 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -940,6 +940,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h index 643d2e2eec..52115928bf 100644 --- a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h +++ b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h @@ -1068,6 +1068,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h index 82de18e31f..66f8d835db 100644 --- a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h @@ -1062,6 +1062,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index ce2b8ceec0..5b3aff5ad6 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -1057,6 +1057,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 75c03f697c..e912cc439e 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -1060,6 +1060,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index 259c923d06..e1d33834dd 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -1060,6 +1060,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h index 4231be0682..a4528e4ab9 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h @@ -1069,6 +1069,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/gCreate/gMax1.5+/Configuration.h b/Marlin/example_configurations/gCreate/gMax1.5+/Configuration.h index a870e8da8f..f2b3407509 100644 --- a/Marlin/example_configurations/gCreate/gMax1.5+/Configuration.h +++ b/Marlin/example_configurations/gCreate/gMax1.5+/Configuration.h @@ -954,6 +954,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 02f33df031..3533805ee8 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -943,6 +943,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 8212beb072..00095874d5 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -935,6 +935,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/example_configurations/wt150/Configuration.h b/Marlin/example_configurations/wt150/Configuration.h index 2c468a9420..d5e3cc9f44 100644 --- a/Marlin/example_configurations/wt150/Configuration.h +++ b/Marlin/example_configurations/wt150/Configuration.h @@ -945,6 +945,7 @@ #if ENABLED(LCD_BED_LEVELING) #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z_MIN_POS for LCD Z adjustment + #define LEVEL_BED_CORNERS // Add an option to move between corners #endif /** diff --git a/Marlin/language_en.h b/Marlin/language_en.h index b702ecdbb8..5e878ca769 100644 --- a/Marlin/language_en.h +++ b/Marlin/language_en.h @@ -156,6 +156,12 @@ #ifndef MSG_LEVEL_BED #define MSG_LEVEL_BED _UxGT("Level bed") #endif +#ifndef MSG_LEVEL_CORNERS + #define MSG_LEVEL_CORNERS _UxGT("Level corners") +#endif +#ifndef MSG_NEXT_CORNER + #define MSG_NEXT_CORNER _UxGT("Next corner") +#endif #ifndef MSG_EDITING_STOPPED #define MSG_EDITING_STOPPED _UxGT("Mesh Editing Stopped") #endif diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index c29c661a38..3176e43743 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -546,6 +546,11 @@ uint16_t max_display_update_time = 0; lcd_return_to_status(); } + void lcd_goto_previous_menu_no_defer() { + defer_return_to_status = false; + lcd_goto_previous_menu(); + } + #endif // ULTIPANEL /** @@ -971,7 +976,7 @@ void kill_screen(const char* lcd_msg) { #if ENABLED(BABYSTEPPING) void _lcd_babystep(const AxisEnum axis, const char* msg) { - if (lcd_clicked) { defer_return_to_status = false; return lcd_goto_previous_menu(); } + if (lcd_clicked) { return lcd_goto_previous_menu_no_defer(); } ENCODER_DIRECTION_NORMAL(); if (encoderPosition) { const int16_t babystep_increment = (int32_t)encoderPosition * (BABYSTEP_MULTIPLICATOR); @@ -994,7 +999,7 @@ void kill_screen(const char* lcd_msg) { #if ENABLED(BABYSTEP_ZPROBE_OFFSET) void lcd_babystep_zoffset() { - if (lcd_clicked) { defer_return_to_status = false; return lcd_goto_previous_menu(); } + if (lcd_clicked) { return lcd_goto_previous_menu_no_defer(); } defer_return_to_status = true; ENCODER_DIRECTION_NORMAL(); if (encoderPosition) { @@ -1545,7 +1550,52 @@ void kill_screen(const char* lcd_msg) { static void lcd_refresh_zprobe_zoffset() { refresh_zprobe_zoffset(); } #endif -#if ENABLED(LCD_BED_LEVELING) + + #if ENABLED(LEVEL_BED_CORNERS) + + /** + * Level corners, starting in the front-left corner. + */ + static int8_t bed_corner; + void _lcd_goto_next_corner() { + line_to_z(LOGICAL_Z_POSITION(4.0)); + switch (bed_corner) { + case 0: + current_position[X_AXIS] = X_MIN_BED + 10; + current_position[Y_AXIS] = Y_MIN_BED + 10; + break; + case 1: + current_position[X_AXIS] = X_MAX_BED - 10; + break; + case 2: + current_position[Y_AXIS] = Y_MAX_BED - 10; + break; + case 3: + current_position[X_AXIS] = X_MIN_BED + 10; + break; + } + planner.buffer_line_kinematic(current_position, MMM_TO_MMS(manual_feedrate_mm_m[X_AXIS]), active_extruder); + line_to_z(LOGICAL_Z_POSITION(0.0)); + if (++bed_corner > 3) bed_corner = 0; + } + + void _lcd_corner_submenu() { + START_MENU(); + MENU_ITEM(function, MSG_NEXT_CORNER, _lcd_goto_next_corner); + MENU_ITEM(function, MSG_BACK, lcd_goto_previous_menu_no_defer); + END_MENU(); + } + + void _lcd_level_bed_corners() { + defer_return_to_status = true; + lcd_goto_screen(_lcd_corner_submenu); + bed_corner = 0; + _lcd_goto_next_corner(); + } + + #endif // LEVEL_BED_CORNERS + + #if ENABLED(LCD_BED_LEVELING) /** * @@ -1788,10 +1838,11 @@ void kill_screen(const char* lcd_msg) { * << Prepare * Auto Home (if homing needed) * Leveling On/Off (if data exists, and homed) - * Level Bed * Fade Height: --- (Req: ENABLE_LEVELING_FADE_HEIGHT) * Mesh Z Offset: --- (Req: MESH_BED_LEVELING) * Z Probe Offset: --- (Req: HAS_BED_PROBE, Opt: BABYSTEP_ZPROBE_OFFSET) + * Level Bed > + * Level Corners > (if homed) * Load Settings (Req: EEPROM_SETTINGS) * Save Settings (Req: EEPROM_SETTINGS) */ @@ -1826,6 +1877,12 @@ void kill_screen(const char* lcd_msg) { MENU_ITEM(submenu, MSG_LEVEL_BED, _lcd_level_bed_continue); + #if ENABLED(LEVEL_BED_CORNERS) + // Move to the next corner for leveling + if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) + MENU_ITEM(function, MSG_LEVEL_CORNERS, _lcd_level_bed_corners); + #endif + #if ENABLED(EEPROM_SETTINGS) MENU_ITEM(function, MSG_LOAD_EEPROM, lcd_load_settings); MENU_ITEM(function, MSG_STORE_EEPROM, lcd_store_settings); @@ -2404,8 +2461,14 @@ void kill_screen(const char* lcd_msg) { if (!g29_in_progress) #endif MENU_ITEM(submenu, MSG_BED_LEVELING, lcd_bed_leveling); - #elif PLANNER_LEVELING - MENU_ITEM(gcode, MSG_BED_LEVELING, PSTR("G28\nG29")); + #else + #if PLANNER_LEVELING + MENU_ITEM(gcode, MSG_BED_LEVELING, PSTR("G28\nG29")); + #endif + #if ENABLED(LEVEL_BED_CORNERS) + if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) + MENU_ITEM(function, MSG_LEVEL_CORNERS, _lcd_level_bed_corners); + #endif #endif #if HAS_M206_COMMAND @@ -2538,8 +2601,7 @@ void kill_screen(const char* lcd_msg) { wait_for_user = true; while (wait_for_user) idle(); KEEPALIVE_STATE(IN_HANDLER); - defer_return_to_status = false; - lcd_goto_previous_menu(); + lcd_goto_previous_menu_no_defer(); return current_position[Z_AXIS]; }