forked from MarlinFirmware/Marlin
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Tramming Wizard submenu option (MarlinFirmware#20000)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
- Loading branch information
Showing
9 changed files
with
184 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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[]; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters