Skip to content

Commit

Permalink
✨Sheet Profile Testing
Browse files Browse the repository at this point in the history
Automatically adjust Z Probe Offset with M851 based on selected Sheet Profile.

*** Beta feature! *** Use at your own risk!
  • Loading branch information
thisiskeithb committed Nov 4, 2021
1 parent 03cd94f commit ce95085
Show file tree
Hide file tree
Showing 3 changed files with 172 additions and 0 deletions.
41 changes: 41 additions & 0 deletions Marlin/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -3805,6 +3805,47 @@
//#define CONFIG_MENU_ITEM_5_CONFIRM
#endif

/**
* Sheet Profiles
* *** Beta feature! ***
*
* Automatically adjust Z Probe Offset with M851 based on selected Sheet Profile.
*
* BABYSTEP_ZPROBE_OFFSET is currently required as it provides a simplified Z probe offset experience.
*/
#define SHEET_PROFILES_MENU
#if BOTH(SHEET_PROFILES_MENU, BABYSTEP_ZPROBE_OFFSET)
//#define SHEET_PROFILES_TITLE "Sheet Profiles"
//#define SHEET_PROFILES_SCRIPT_DONE "M117 New Sheet Selected"
//#define SHEET_PROFILES_SCRIPT_AUDIBLE_FEEDBACK
#define SHEET_PROFILES_SCRIPT_RETURN // Return to status screen after sheet is selected
#define SHEET_PROFILES_ONLY_IDLE // Only show sheet profile menu when the machine is idle
#define SHEET_PROFILES_AUTO_SAVE // Send M500 after after sheet is selected

//
// Sheet Profiles - Up to 25 are supported without changes
//
#define SHEET_1_DESC "Satin" // Prusa Powder-coated Satin Spring Steel Sheet
#define SHEET_1_OFFSET -1.21
#define SHEET_1_CONFIRM // Show a confirmation dialog before this action

#define SHEET_2_DESC "Ultistik" // ULTISTIK Premium Powder Coated Ultem (PEI) Build Plate
#define SHEET_2_OFFSET -1.15
#define SHEET_2_CONFIRM

#define SHEET_3_DESC "Smooth" // Prusa Smooth PEI Spring Steel Sheet
#define SHEET_3_OFFSET -0.08
#define SHEET_3_CONFIRM

#define SHEET_4_DESC "Textured" // Prusa Textured PEI Spring Steel Sheet
#define SHEET_4_OFFSET -1.0
#define SHEET_4_CONFIRM

#define SHEET_5_DESC "Garolite" // Garolite/Phenolic LE attached to a generic spring steel sheet
#define SHEET_5_OFFSET -1.2
#define SHEET_5_CONFIRM
#endif

/**
* User-defined buttons to run custom G-code.
* Up to 25 may be defined.
Expand Down
1 change: 1 addition & 0 deletions Marlin/src/lcd/language/language_en.h
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ namespace Language_en {
LSTR MSG_MESH_Y = _UxGT("Index Y");
LSTR MSG_MESH_EDIT_Z = _UxGT("Z Value");
LSTR MSG_CUSTOM_COMMANDS = _UxGT("Custom Commands");
LSTR MSG_SHEET_PROFILES = _UxGT("Sheet Profiles");
LSTR MSG_M48_TEST = _UxGT("M48 Probe Test");
LSTR MSG_M48_POINT = _UxGT("M48 Point");
LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Probe out of bounds");
Expand Down
130 changes: 130 additions & 0 deletions Marlin/src/lcd/menu/menu_configuration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,126 @@ void menu_advanced_settings();

#endif // CUSTOM_MENU_CONFIG

#if ENABLED(SHEET_PROFILES_MENU)

void _lcd_sheet_menu_configuration_gcode(PGM_P const cmd) {
queue.inject_P(cmd);
TERN_(SHEET_PROFILES_SCRIPT_AUDIBLE_FEEDBACK, ui.completion_feedback());
TERN_(SHEET_PROFILES_SCRIPT_RETURN, ui.return_to_status());
}

void sheet_menu_configuration() {
START_MENU();
BACK_ITEM(MSG_MAIN);

#define HAS_SHEET_CONF(N) (defined(SHEET_##N##_DESC) && defined(SHEET_##N##_OFFSET))

#ifdef SHEET_PROFILES_SCRIPT_DONE
#define _DONE_SCRIPT "\n" SHEET_PROFILES_SCRIPT_DONE
#else
#define _DONE_SCRIPT ""
#endif

#if ENABLED(SHEET_PROFILES_AUTO_SAVE)
#define _SAVE_SCRIPT "\nM500"
#else
#define _SAVE_SCRIPT ""
#endif

#define SHEET_GCODE_LAMBDA_CONF(N) []{ _lcd_sheet_menu_configuration_gcode(PSTR("M851 Z" STRINGIFY(SHEET_##N##_OFFSET) _SAVE_SCRIPT "\nM117 " SHEET_##N##_DESC " Sheet: " STRINGIFY(SHEET_##N##_OFFSET) _DONE_SCRIPT)); }
//#define _SHEET_CONF(N) ACTION_ITEM_P(PSTR(SHEET_##N##_DESC " Sheet: " STRINGIFY(SHEET_##N##_OFFSET)), SHEET_GCODE_LAMBDA_CONF(N));
#define _SHEET_CONF(N) ACTION_ITEM_P(PSTR(SHEET_##N##_DESC " Loaded"), SHEET_GCODE_LAMBDA_CONF(N));
#define _SHEET_CONF_CONFIRM(N) \
SUBMENU_P(PSTR(SHEET_##N##_DESC ": " STRINGIFY(SHEET_##N##_OFFSET)), []{ \
MenuItem_confirm::confirm_screen( \
SHEET_GCODE_LAMBDA_CONF(N), \
ui.goto_previous_screen, \
PSTR("Load " SHEET_##N##_DESC " Sheet?") \
); \
})

#define SHEET_CONF(N) do{ if (ENABLED(SHEET_##N##_CONFIRM)) _SHEET_CONF_CONFIRM(N); else _SHEET_CONF(N); }while(0)

#if HAS_SHEET_CONF(1)
SHEET_CONF(1);
#endif
#if HAS_SHEET_CONF(2)
SHEET_CONF(2);
#endif
#if HAS_SHEET_CONF(3)
SHEET_CONF(3);
#endif
#if HAS_SHEET_CONF(4)
SHEET_CONF(4);
#endif
#if HAS_SHEET_CONF(5)
SHEET_CONF(5);
#endif
#if HAS_SHEET_CONF(6)
SHEET_CONF(6);
#endif
#if HAS_SHEET_CONF(7)
SHEET_CONF(7);
#endif
#if HAS_SHEET_CONF(8)
SHEET_CONF(8);
#endif
#if HAS_SHEET_CONF(9)
SHEET_CONF(9);
#endif
#if HAS_SHEET_CONF(10)
SHEET_CONF(10);
#endif
#if HAS_SHEET_CONF(11)
SHEET_CONF(11);
#endif
#if HAS_SHEET_CONF(12)
SHEET_CONF(12);
#endif
#if HAS_SHEET_CONF(13)
SHEET_CONF(13);
#endif
#if HAS_SHEET_CONF(14)
SHEET_CONF(14);
#endif
#if HAS_SHEET_CONF(15)
SHEET_CONF(15);
#endif
#if HAS_SHEET_CONF(16)
SHEET_CONF(16);
#endif
#if HAS_SHEET_CONF(17)
SHEET_CONF(17);
#endif
#if HAS_SHEET_CONF(18)
SHEET_CONF(18);
#endif
#if HAS_SHEET_CONF(19)
SHEET_CONF(19);
#endif
#if HAS_SHEET_CONF(20)
SHEET_CONF(20);
#endif
#if HAS_SHEET_CONF(21)
SHEET_CONF(21);
#endif
#if HAS_SHEET_CONF(22)
SHEET_CONF(22);
#endif
#if HAS_SHEET_CONF(23)
SHEET_CONF(23);
#endif
#if HAS_SHEET_CONF(24)
SHEET_CONF(24);
#endif
#if HAS_SHEET_CONF(25)
SHEET_CONF(25);
#endif
END_MENU();
}

#endif // SHEET_PROFILES_MENU

void menu_configuration() {
const bool busy = printer_busy();

Expand All @@ -476,6 +596,16 @@ void menu_configuration() {
}
#endif

#if ENABLED(SHEET_PROFILES_MENU)
if (TERN1(SHEET_PROFILES_ONLY_IDLE, !busy)) {
#ifdef SHEET_PROFILES_TITLE
SUBMENU_P(PSTR(SHEET_PROFILES_TITLE), sheet_menu_configuration);
#else
SUBMENU(MSG_SHEET_PROFILES, sheet_menu_configuration);
#endif
}
#endif

SUBMENU(MSG_ADVANCED_SETTINGS, menu_advanced_settings);

#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
Expand Down

0 comments on commit ce95085

Please sign in to comment.