Speaka
4 years ago
committed by
Scott Lahteine
9 changed files with 184 additions and 19 deletions
@ -0,0 +1,59 @@ |
|||||
|
/**
|
||||
|
* Marlin 3D Printer Firmware |
||||
|
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
|
* |
||||
|
* Based on Sprinter and grbl. |
||||
|
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
#include "../inc/MarlinConfigPre.h" |
||||
|
|
||||
|
#if !WITHIN(TRAMMING_SCREW_THREAD, 30, 51) || TRAMMING_SCREW_THREAD % 10 > 1 |
||||
|
#error "TRAMMING_SCREW_THREAD must be equal to 30, 31, 40, 41, 50, or 51." |
||||
|
#endif |
||||
|
|
||||
|
constexpr xy_pos_t screws_tilt_adjust_pos[] = TRAMMING_POINT_XY; |
||||
|
|
||||
|
#define G35_PROBE_COUNT COUNT(screws_tilt_adjust_pos) |
||||
|
static_assert(G35_PROBE_COUNT >= 3, "TRAMMING_POINT_XY requires at least 3 XY positions."); |
||||
|
|
||||
|
extern const char point_name_1[], point_name_2[], point_name_3[] |
||||
|
#ifdef TRAMMING_POINT_NAME_4 |
||||
|
, point_name_4[] |
||||
|
#ifdef TRAMMING_POINT_NAME_5 |
||||
|
, point_name_5[] |
||||
|
#endif |
||||
|
#endif |
||||
|
; |
||||
|
|
||||
|
#define _NR_TRAM_NAMES 2 |
||||
|
#ifdef TRAMMING_POINT_NAME_3 |
||||
|
#undef _NR_TRAM_NAMES |
||||
|
#define _NR_TRAM_NAMES 3 |
||||
|
#ifdef TRAMMING_POINT_NAME_4 |
||||
|
#undef _NR_TRAM_NAMES |
||||
|
#define _NR_TRAM_NAMES 4 |
||||
|
#ifdef TRAMMING_POINT_NAME_5 |
||||
|
#undef _NR_TRAM_NAMES |
||||
|
#define _NR_TRAM_NAMES 5 |
||||
|
#endif |
||||
|
#endif |
||||
|
#endif |
||||
|
static_assert(_NR_TRAM_NAMES >= G35_PROBE_COUNT, "Define enough TRAMMING_POINT_NAME_s for all TRAMMING_POINT_XY entries."); |
||||
|
#undef _NR_TRAM_NAMES |
||||
|
|
||||
|
extern PGM_P const tramming_point_name[]; |
@ -0,0 +1,93 @@ |
|||||
|
/**
|
||||
|
* Marlin 3D Printer Firmware |
||||
|
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
|
* |
||||
|
* Based on Sprinter and grbl. |
||||
|
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
//
|
||||
|
// Bed Tramming Wizard
|
||||
|
//
|
||||
|
|
||||
|
#include "../../inc/MarlinConfigPre.h" |
||||
|
|
||||
|
#if BOTH(HAS_LCD_MENU, ASSISTED_TRAMMING_WIZARD) |
||||
|
|
||||
|
#include "menu_item.h" |
||||
|
|
||||
|
#include "../../feature/tramming.h" |
||||
|
|
||||
|
#include "../../module/motion.h" |
||||
|
#include "../../module/probe.h" |
||||
|
#include "../../gcode/queue.h" |
||||
|
|
||||
|
//#define DEBUG_OUT 1
|
||||
|
#include "../../core/debug_out.h" |
||||
|
|
||||
|
float z_measured[G35_PROBE_COUNT] = { 0 }; |
||||
|
static uint8_t tram_index = 0; |
||||
|
|
||||
|
bool probe_single_point() { |
||||
|
const float z_probed_height = probe.probe_at_point(screws_tilt_adjust_pos[tram_index], PROBE_PT_RAISE, 0, true); |
||||
|
DEBUG_ECHOLNPAIR("probe_single_point: ", z_probed_height, "mm"); |
||||
|
z_measured[tram_index] = z_probed_height; |
||||
|
return !isnan(z_probed_height); |
||||
|
} |
||||
|
|
||||
|
void _menu_single_probe(const uint8_t point) { |
||||
|
tram_index = point; |
||||
|
DEBUG_ECHOLNPAIR("Screen: single probe screen Arg:", point); |
||||
|
START_MENU(); |
||||
|
STATIC_ITEM(MSG_LEVEL_CORNERS, SS_LEFT); |
||||
|
STATIC_ITEM(MSG_LAST_VALUE_SP, SS_LEFT, ftostr42_52(z_measured[0] - z_measured[point])); // Print diff
|
||||
|
ACTION_ITEM(MSG_UBL_BC_INSERT2, []{ if (probe_single_point()) ui.refresh(); }); |
||||
|
ACTION_ITEM(MSG_BUTTON_DONE, []{ ui.goto_previous_screen_no_defer(); }); // Back
|
||||
|
END_MENU(); |
||||
|
} |
||||
|
|
||||
|
void tramming_wizard_menu() { |
||||
|
DEBUG_ECHOLNPAIR("Screen: tramming_wizard_menu"); |
||||
|
START_MENU(); |
||||
|
STATIC_ITEM(MSG_SELECT_ORIGIN); |
||||
|
|
||||
|
// Draw a menu item for each tramming point
|
||||
|
LOOP_L_N(i, G35_PROBE_COUNT) |
||||
|
SUBMENU_N_P(i, (char*)pgm_read_ptr(&tramming_point_name[i]), []{ _menu_single_probe(MenuItemBase::itemIndex); }); |
||||
|
|
||||
|
ACTION_ITEM(MSG_BUTTON_DONE, []{ ui.goto_previous_screen_no_defer(); }); |
||||
|
END_MENU(); |
||||
|
} |
||||
|
|
||||
|
// Init the wizard and enter the submenu
|
||||
|
void goto_tramming_wizard() { |
||||
|
DEBUG_ECHOLNPAIR("Screen: goto_tramming_wizard", 1); |
||||
|
tram_index = 0; |
||||
|
ui.defer_status_screen(); |
||||
|
//probe_single_point(); // Probe first point to get differences
|
||||
|
|
||||
|
// Inject G28, wait for homing to complete,
|
||||
|
set_all_unhomed(); |
||||
|
queue.inject_P(G28_STR); |
||||
|
ui.goto_screen([]{ |
||||
|
_lcd_draw_homing(); |
||||
|
if (all_axes_homed()) |
||||
|
ui.goto_screen(tramming_wizard_menu); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
#endif // HAS_LCD_MENU && ASSISTED_TRAMMING_WIZARD
|
Loading…
Reference in new issue