diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 53af44709..79e091dc5 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -789,6 +789,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 73a9f8974..39bbb5905 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3771,30 +3771,48 @@ inline void gcode_G28() { #endif // AUTO_BED_LEVELING_LINEAR - bool zig = abl_grid_points_y & 1; //always end at [RIGHT_PROBE_BED_POSITION, BACK_PROBE_BED_POSITION] + #if ENABLED(PROBE_Y_FIRST) + #define PR_OUTER_VAR xCount + #define PR_OUTER_END abl_grid_points_x + #define PR_INNER_VAR yCount + #define PR_INNER_END abl_grid_points_y + #else + #define PR_OUTER_VAR yCount + #define PR_OUTER_END abl_grid_points_y + #define PR_INNER_VAR xCount + #define PR_INNER_END abl_grid_points_x + #endif - for (uint8_t yCount = 0; yCount < abl_grid_points_y; yCount++) { - float yBase = front_probe_bed_position + yGridSpacing * yCount; - yProbe = floor(yBase + (yBase < 0 ? 0 : 0.5)); + #if ENABLED(MAKERARM_SCARA) + bool zig = true; + #else + bool zig = PR_OUTER_END & 1; //always end at [RIGHT_PROBE_BED_POSITION, BACK_PROBE_BED_POSITION] + #endif - int8_t xStart, xStop, xInc; + for (uint8_t PR_OUTER_VAR = 0; PR_OUTER_VAR < PR_OUTER_END; PR_OUTER_VAR++) { + + int8_t inStart, inStop, inInc; if (zig) { - xStart = 0; - xStop = abl_grid_points_x; - xInc = 1; + inStart = 0; + inStop = PR_INNER_END; + inInc = 1; } else { - xStart = abl_grid_points_x - 1; - xStop = -1; - xInc = -1; + inStart = PR_INNER_END - 1; + inStop = -1; + inInc = -1; } zig = !zig; - for (int8_t xCount = xStart; xCount != xStop; xCount += xInc) { - float xBase = left_probe_bed_position + xGridSpacing * xCount; + for (int8_t PR_INNER_VAR = inStart; PR_INNER_VAR != inStop; PR_INNER_VAR += inInc) { + + float xBase = left_probe_bed_position + xGridSpacing * xCount, + yBase = front_probe_bed_position + yGridSpacing * yCount; + xProbe = floor(xBase + (xBase < 0 ? 0 : 0.5)); + yProbe = floor(yBase + (yBase < 0 ? 0 : 0.5)); #if ENABLED(AUTO_BED_LEVELING_LINEAR) indexIntoAB[xCount][yCount] = ++probePointCounter; diff --git a/Marlin/example_configurations/Cartesio/Configuration.h b/Marlin/example_configurations/Cartesio/Configuration.h index df5249e11..c796a696e 100644 --- a/Marlin/example_configurations/Cartesio/Configuration.h +++ b/Marlin/example_configurations/Cartesio/Configuration.h @@ -789,6 +789,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 7eb6fa2c9..252493abd 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -772,6 +772,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/Felix/DUAL/Configuration.h b/Marlin/example_configurations/Felix/DUAL/Configuration.h index 062f97311..c1d4524f8 100644 --- a/Marlin/example_configurations/Felix/DUAL/Configuration.h +++ b/Marlin/example_configurations/Felix/DUAL/Configuration.h @@ -770,6 +770,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 6114fb40a..8b6d00334 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -781,6 +781,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/Marlin/example_configurations/Hephestos_2/Configuration.h index e034ca661..4fab4a3de 100644 --- a/Marlin/example_configurations/Hephestos_2/Configuration.h +++ b/Marlin/example_configurations/Hephestos_2/Configuration.h @@ -783,6 +783,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index a1e191674..ffcdedf7e 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -806,6 +806,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/K8400/Configuration.h b/Marlin/example_configurations/K8400/Configuration.h index 961127a63..fed16b97a 100644 --- a/Marlin/example_configurations/K8400/Configuration.h +++ b/Marlin/example_configurations/K8400/Configuration.h @@ -789,6 +789,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/K8400/Dual-head/Configuration.h b/Marlin/example_configurations/K8400/Dual-head/Configuration.h index f7725822e..5584181ff 100644 --- a/Marlin/example_configurations/K8400/Dual-head/Configuration.h +++ b/Marlin/example_configurations/K8400/Dual-head/Configuration.h @@ -789,6 +789,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index 24ccf1fee..b88108134 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -789,6 +789,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index eb2775715..58352cb99 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -787,6 +787,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index dbba6bcaa..9afd49d19 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -804,6 +804,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h index c68ddfd6d..04045dde9 100644 --- a/Marlin/example_configurations/TAZ4/Configuration.h +++ b/Marlin/example_configurations/TAZ4/Configuration.h @@ -810,6 +810,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 75f206f52..e48e1bb8b 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -781,6 +781,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 474a88cfa..a83aca861 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -789,6 +789,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h index 0de779f81..78207fea3 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -881,6 +881,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index cc55f62dd..45b9a8f14 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -875,6 +875,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index e570ac9b7..608a9bf26 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -878,6 +878,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index 4562647c3..4a07b9bb5 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -879,6 +879,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h index 5b6389dfd..242a7db47 100644 --- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h @@ -881,6 +881,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 76d4049b0..2808750af 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -792,6 +792,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index bdc2630f3..b75fe0b84 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -785,6 +785,9 @@ // The Z probe minimum outer margin (to validate G29 parameters). #define MIN_PROBE_EDGE 10 + // Probe along the Y axis, advancing X after each column + //#define PROBE_Y_FIRST + #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe.