From 3ac8166410c7c26a80c200766385b62491fbbc64 Mon Sep 17 00:00:00 2001 From: Knutwurst <36196269+knutwurst@users.noreply.github.com> Date: Sat, 15 May 2021 21:15:52 +0200 Subject: [PATCH] Add automatic mesh grid rebuild feature for chiron --- Marlin/Configuration.h | 10 ++++++++- Marlin/src/lcd/anycubic_touchscreen.cpp | 28 +++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index b5efda24..535e2e74 100755 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -88,7 +88,7 @@ * */ #if ENABLED(KNUTWURST_CHIRON) - #define KNUTWURST_TFT_LEVELING + //#define KNUTWURST_TFT_LEVELING #endif @@ -1716,6 +1716,14 @@ // Probe along the Y axis, advancing X after each column //#define PROBE_Y_FIRST + /* + #if ENABLED(KNUTWURST_TFT_LEVELING) + #define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE + #define MIN_PROBE_EDGE_RIGHT (MIN_PROBE_EDGE_LEFT + 380) + #define MIN_PROBE_EDGE_FRONT (MIN_PROBE_EDGE + 9) + #define MIN_PROBE_EDGE_BACK (MIN_PROBE_EDGE_FRONT + 380) + #endif + */ #if ENABLED(AUTO_BED_LEVELING_BILINEAR) diff --git a/Marlin/src/lcd/anycubic_touchscreen.cpp b/Marlin/src/lcd/anycubic_touchscreen.cpp index 7bc06ebe..a29dc37e 100755 --- a/Marlin/src/lcd/anycubic_touchscreen.cpp +++ b/Marlin/src/lcd/anycubic_touchscreen.cpp @@ -66,9 +66,29 @@ char _conv[8]; SAVE_zprobe_zoffset = probe.offset.z; #else SERIAL_ECHOPAIR("MEANL_L:", 0xaa); - probe.offset = NOZZLE_TO_PROBE_OFFSET; + constexpr float dpo[] = NOZZLE_TO_PROBE_OFFSET; + probe.offset.z = dpo[Z_AXIS]; #endif -} + } + + void initializeGrid() { + reset_bed_level(); + + // Initialize a grid with the given dimensions + bilinear_grid_spacing[X_AXIS] = (MIN_PROBE_EDGE_RIGHT - MIN_PROBE_EDGE_LEFT) / (GRID_MAX_POINTS_X - 1); + bilinear_grid_spacing[Y_AXIS] = (MIN_PROBE_EDGE_BACK - MIN_PROBE_EDGE_FRONT) / (GRID_MAX_POINTS_Y - 1); + bilinear_start[X_AXIS] = MIN_PROBE_EDGE_LEFT; + bilinear_start[Y_AXIS] = MIN_PROBE_EDGE_FRONT; + + constexpr float dpo[] = NOZZLE_TO_PROBE_OFFSET; + probe.offset.z = dpo[Z_AXIS]; + + 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] = (float)-2.0; + } + } + } #endif #if ENABLED(POWER_OUTAGE_TEST) @@ -596,6 +616,9 @@ void AnycubicTouchscreenClass::HandleSpecialMenu() { SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults"); queue.inject_P(PSTR("M502")); + #if ENABLED(KNUTWURST_TFT_LEVELING) + initializeGrid(); + #endif buzzer.tone(105, 1661); buzzer.tone(210, 1108); } @@ -1996,6 +2019,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() } break; case 35: //RESET AUTOBED DATE //M1000 + initializeGrid(); break; case 36: // A36 auto leveling (Old Anycubic TFT) if( (planner.movesplanned()) || (card.isPrinting()) ) {