|
@ -49,10 +49,33 @@ |
|
|
* With mesh-based leveling only: |
|
|
* With mesh-based leveling only: |
|
|
* |
|
|
* |
|
|
* C Center mesh on the mean of the lowest and highest |
|
|
* C Center mesh on the mean of the lowest and highest |
|
|
|
|
|
* |
|
|
|
|
|
* With MARLIN_DEV_MODE: |
|
|
|
|
|
* S2 Create a simple random mesh and enable |
|
|
*/ |
|
|
*/ |
|
|
void GcodeSuite::M420() { |
|
|
void GcodeSuite::M420() { |
|
|
const bool seen_S = parser.seen('S'); |
|
|
const bool seen_S = parser.seen('S'), |
|
|
bool to_enable = seen_S ? parser.value_bool() : planner.leveling_active; |
|
|
to_enable = seen_S ? parser.value_bool() : planner.leveling_active; |
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(MARLIN_DEV_MODE) |
|
|
|
|
|
if (parser.intval('S') == 2) { |
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_BILINEAR) |
|
|
|
|
|
bilinear_start[X_AXIS] = MIN_PROBE_X; |
|
|
|
|
|
bilinear_start[Y_AXIS] = MIN_PROBE_Y; |
|
|
|
|
|
bilinear_grid_spacing[X_AXIS] = (MAX_PROBE_X - (MIN_PROBE_X)) / (GRID_MAX_POINTS_X - 1); |
|
|
|
|
|
bilinear_grid_spacing[Y_AXIS] = (MAX_PROBE_Y - (MIN_PROBE_Y)) / (GRID_MAX_POINTS_Y - 1); |
|
|
|
|
|
#endif |
|
|
|
|
|
for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++) |
|
|
|
|
|
for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++) |
|
|
|
|
|
Z_VALUES(x, y) = 0.001 * random(-200, 200); |
|
|
|
|
|
SERIAL_ECHOPGM("Simulated " STRINGIFY(GRID_MAX_POINTS_X) "x" STRINGIFY(GRID_MAX_POINTS_X) " mesh "); |
|
|
|
|
|
SERIAL_ECHOPAIR(" (", MIN_PROBE_X); |
|
|
|
|
|
SERIAL_CHAR(','); SERIAL_ECHO(MIN_PROBE_Y); |
|
|
|
|
|
SERIAL_ECHOPAIR(")-(", MAX_PROBE_X); |
|
|
|
|
|
SERIAL_CHAR(','); SERIAL_ECHO(MAX_PROBE_Y); |
|
|
|
|
|
SERIAL_ECHOLNPGM(")"); |
|
|
|
|
|
} |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
// If disabling leveling do it right away
|
|
|
// If disabling leveling do it right away
|
|
|
// (Don't disable for just M420 or M420 V)
|
|
|
// (Don't disable for just M420 or M420 V)
|
|
|