Browse Source

Apply GRID_LOOP

vanilla_fb_2.0.x
Scott Lahteine 5 years ago
parent
commit
2b9d2dce16
  1. 15
      Marlin/src/feature/bedlevel/ubl/ubl.cpp
  2. 28
      Marlin/src/gcode/bedlevel/M420.cpp

15
Marlin/src/feature/bedlevel/ubl/ubl.cpp

@ -49,14 +49,13 @@
void unified_bed_leveling::report_current_mesh() { void unified_bed_leveling::report_current_mesh() {
if (!leveling_is_valid()) return; if (!leveling_is_valid()) return;
SERIAL_ECHO_MSG(" G29 I99"); SERIAL_ECHO_MSG(" G29 I99");
LOOP_L_N(x, GRID_MAX_POINTS_X) GRID_LOOP(x, y)
for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++) if (!isnan(z_values[x][y])) {
if (!isnan(z_values[x][y])) { SERIAL_ECHO_START();
SERIAL_ECHO_START(); SERIAL_ECHOPAIR(" M421 I", int(x), " J", int(y));
SERIAL_ECHOPAIR(" M421 I", int(x), " J", int(y)); SERIAL_ECHOLNPAIR_F_P(SP_Z_STR, z_values[x][y], 4);
SERIAL_ECHOLNPAIR_F_P(SP_Z_STR, z_values[x][y], 4); serial_delay(75); // Prevent Printrun from exploding
serial_delay(75); // Prevent Printrun from exploding }
}
} }
void unified_bed_leveling::report_state() { void unified_bed_leveling::report_state() {

28
Marlin/src/gcode/bedlevel/M420.cpp

@ -155,21 +155,18 @@ void GcodeSuite::M420() {
// Get the sum and average of all mesh values // Get the sum and average of all mesh values
float mesh_sum = 0; float mesh_sum = 0;
for (uint8_t x = GRID_MAX_POINTS_X; x--;) GRID_LOOP(x, y) mesh_sum += Z_VALUES(x, y);
for (uint8_t y = GRID_MAX_POINTS_Y; y--;)
mesh_sum += Z_VALUES(x, y);
const float zmean = mesh_sum / float(GRID_MAX_POINTS); const float zmean = mesh_sum / float(GRID_MAX_POINTS);
#else #else
// Find the low and high mesh values // Find the low and high mesh values
float lo_val = 100, hi_val = -100; float lo_val = 100, hi_val = -100;
for (uint8_t x = GRID_MAX_POINTS_X; x--;) GRID_LOOP(x, y) {
for (uint8_t y = GRID_MAX_POINTS_Y; y--;) { const float z = Z_VALUES(x, y);
const float z = Z_VALUES(x, y); NOMORE(lo_val, z);
NOMORE(lo_val, z); NOLESS(hi_val, z);
NOLESS(hi_val, z); }
}
// Take the mean of the lowest and highest // Take the mean of the lowest and highest
const float zmean = (lo_val + hi_val) / 2.0 + cval; const float zmean = (lo_val + hi_val) / 2.0 + cval;
@ -179,13 +176,12 @@ void GcodeSuite::M420() {
if (!NEAR_ZERO(zmean)) { if (!NEAR_ZERO(zmean)) {
set_bed_leveling_enabled(false); set_bed_leveling_enabled(false);
// Subtract the mean from all values // Subtract the mean from all values
for (uint8_t x = GRID_MAX_POINTS_X; x--;) GRID_LOOP(x, y) {
for (uint8_t y = GRID_MAX_POINTS_Y; y--;) { Z_VALUES(x, y) -= zmean;
Z_VALUES(x, y) -= zmean; #if ENABLED(EXTENSIBLE_UI)
#if ENABLED(EXTENSIBLE_UI) ExtUI::onMeshUpdate(x, y, Z_VALUES(x, y));
ExtUI::onMeshUpdate(x, y, Z_VALUES(x, y)); #endif
#endif }
}
#if ENABLED(ABL_BILINEAR_SUBDIVISION) #if ENABLED(ABL_BILINEAR_SUBDIVISION)
bed_level_virt_interpolate(); bed_level_virt_interpolate();
#endif #endif

Loading…
Cancel
Save