Fix issues with no hotend / bed / fan (#18395)
This commit is contained in:
@ -298,7 +298,7 @@ void menu_advanced_settings();
|
||||
|
||||
#endif
|
||||
|
||||
#if DISABLED(SLIM_LCD_MENUS)
|
||||
#if PREHEAT_COUNT && DISABLED(SLIM_LCD_MENUS)
|
||||
|
||||
void _menu_configuration_preheat_settings(const uint8_t material) {
|
||||
#define _MINTEMP_ITEM(N) HEATER_##N##_MINTEMP,
|
||||
@ -307,12 +307,12 @@ void menu_advanced_settings();
|
||||
#define MAXTEMP_ALL _MAX(REPEAT(HOTENDS, _MAXTEMP_ITEM) 0)
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_CONFIGURATION);
|
||||
EDIT_ITEM(percent, MSG_FAN_SPEED, &ui.preheat_fan_speed[material], 0, 255);
|
||||
EDIT_ITEM(percent, MSG_FAN_SPEED, &ui.material_preset[material].fan_speed, 0, 255);
|
||||
#if HAS_TEMP_HOTEND
|
||||
EDIT_ITEM(int3, MSG_NOZZLE, &ui.preheat_hotend_temp[material], MINTEMP_ALL, MAXTEMP_ALL - HOTEND_OVERSHOOT);
|
||||
EDIT_ITEM(int3, MSG_NOZZLE, &ui.material_preset[material].hotend_temp, MINTEMP_ALL, MAXTEMP_ALL - HOTEND_OVERSHOOT);
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
EDIT_ITEM(int3, MSG_BED, &ui.preheat_bed_temp[material], BED_MINTEMP, BED_MAX_TARGET);
|
||||
EDIT_ITEM(int3, MSG_BED, &ui.material_preset[material].bed_temp, BED_MINTEMP, BED_MAX_TARGET);
|
||||
#endif
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
ACTION_ITEM(MSG_STORE_EEPROM, ui.store_settings);
|
||||
@ -322,6 +322,15 @@ void menu_advanced_settings();
|
||||
|
||||
void menu_preheat_material1_settings() { _menu_configuration_preheat_settings(0); }
|
||||
void menu_preheat_material2_settings() { _menu_configuration_preheat_settings(1); }
|
||||
#if PREHEAT_COUNT >= 3
|
||||
void menu_preheat_material3_settings() { _menu_configuration_preheat_settings(3); }
|
||||
#if PREHEAT_COUNT >= 4
|
||||
void menu_preheat_material4_settings() { _menu_configuration_preheat_settings(4); }
|
||||
#if PREHEAT_COUNT >= 5
|
||||
void menu_preheat_material5_settings() { _menu_configuration_preheat_settings(5); }
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@ -400,10 +409,19 @@ void menu_configuration() {
|
||||
EDIT_ITEM(bool, MSG_OUTAGE_RECOVERY, &recovery.enabled, recovery.changed);
|
||||
#endif
|
||||
|
||||
#if DISABLED(SLIM_LCD_MENUS)
|
||||
// Preheat configurations
|
||||
// Preheat configurations
|
||||
#if PREHEAT_COUNT && DISABLED(SLIM_LCD_MENUS)
|
||||
SUBMENU(MSG_PREHEAT_1_SETTINGS, menu_preheat_material1_settings);
|
||||
SUBMENU(MSG_PREHEAT_2_SETTINGS, menu_preheat_material2_settings);
|
||||
#if PREHEAT_COUNT >= 3
|
||||
SUBMENU(MSG_PREHEAT_3_SETTINGS, menu_preheat_material3_settings);
|
||||
#if PREHEAT_COUNT >= 4
|
||||
SUBMENU(MSG_PREHEAT_4_SETTINGS, menu_preheat_material4_settings);
|
||||
#if PREHEAT_COUNT >= 5
|
||||
SUBMENU(MSG_PREHEAT_5_SETTINGS, menu_preheat_material5_settings);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
|
@ -81,8 +81,8 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
|
||||
START_MENU();
|
||||
if (LCD_HEIGHT >= 4) STATIC_ITEM_P(change_filament_header(mode), SS_CENTER|SS_INVERT);
|
||||
BACK_ITEM(MSG_BACK);
|
||||
ACTION_ITEM(MSG_PREHEAT_1, []{ _change_filament(ui.preheat_hotend_temp[0]); });
|
||||
ACTION_ITEM(MSG_PREHEAT_2, []{ _change_filament(ui.preheat_hotend_temp[1]); });
|
||||
ACTION_ITEM(MSG_PREHEAT_1, []{ _change_filament(ui.material_preset[0].hotend_temp); });
|
||||
ACTION_ITEM(MSG_PREHEAT_2, []{ _change_filament(ui.material_preset[1].hotend_temp); });
|
||||
EDIT_ITEM_FAST(int3, MSG_PREHEAT_CUSTOM, &thermalManager.temp_hotend[_change_filament_extruder].target, EXTRUDE_MINTEMP, thermalManager.heater_maxtemp[extruder] - HOTEND_OVERSHOOT, []{
|
||||
_change_filament(thermalManager.temp_hotend[_change_filament_extruder].target);
|
||||
});
|
||||
|
@ -243,7 +243,7 @@ void menu_info_board() {
|
||||
STATIC_ITEM_P(PSTR(MACHINE_NAME)); // My3DPrinter
|
||||
STATIC_ITEM_P(PSTR(WEBSITE_URL)); // www.my3dprinter.com
|
||||
VALUE_ITEM_P(MSG_INFO_EXTRUDERS, STRINGIFY(EXTRUDERS), SS_CENTER); // Extruders: 2
|
||||
#if HAS_BED_LEVELING
|
||||
#if HAS_LEVELING
|
||||
STATIC_ITEM(
|
||||
TERN_(AUTO_BED_LEVELING_3POINT, MSG_3POINT_LEVELING) // 3-Point Leveling
|
||||
TERN_(AUTO_BED_LEVELING_LINEAR, MSG_LINEAR_LEVELING) // Linear Leveling
|
||||
|
@ -157,7 +157,9 @@ void menu_main() {
|
||||
SUBMENU(MSG_CUTTER(MENU), menu_spindle_laser);
|
||||
#endif
|
||||
|
||||
SUBMENU(MSG_TEMPERATURE, menu_temperature);
|
||||
#if HAS_TEMPERATURE
|
||||
SUBMENU(MSG_TEMPERATURE, menu_temperature);
|
||||
#endif
|
||||
|
||||
#if HAS_POWER_MONITOR
|
||||
MENU_ITEM(submenu, MSG_POWER_MONITOR, menu_power_monitor);
|
||||
|
@ -24,9 +24,9 @@
|
||||
// Temperature Menu
|
||||
//
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if HAS_LCD_MENU
|
||||
#if HAS_LCD_MENU && HAS_TEMPERATURE
|
||||
|
||||
#include "menu.h"
|
||||
#include "../../module/temperature.h"
|
||||
@ -39,23 +39,19 @@
|
||||
#include "../../module/tool_change.h"
|
||||
#endif
|
||||
|
||||
// Initialized by settings.load()
|
||||
int16_t MarlinUI::preheat_hotend_temp[2], MarlinUI::preheat_bed_temp[2];
|
||||
uint8_t MarlinUI::preheat_fan_speed[2];
|
||||
|
||||
//
|
||||
// "Temperature" submenu items
|
||||
//
|
||||
|
||||
void Temperature::lcd_preheat(const int16_t e, const int8_t indh, const int8_t indb) {
|
||||
#if HAS_HOTEND
|
||||
if (indh >= 0 && ui.preheat_hotend_temp[indh] > 0)
|
||||
setTargetHotend(_MIN(thermalManager.heater_maxtemp[e] - HOTEND_OVERSHOOT, ui.preheat_hotend_temp[indh]), e);
|
||||
if (indh >= 0 && ui.material_preset[indh].hotend_temp > 0)
|
||||
setTargetHotend(_MIN(thermalManager.heater_maxtemp[e] - HOTEND_OVERSHOOT, ui.material_preset[indh].hotend_temp), e);
|
||||
#else
|
||||
UNUSED(e); UNUSED(indh);
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
if (indb >= 0 && ui.preheat_bed_temp[indb] > 0) setTargetBed(ui.preheat_bed_temp[indb]);
|
||||
if (indb >= 0 && ui.material_preset[indb].bed_temp > 0) setTargetBed(ui.material_preset[indb].bed_temp);
|
||||
#else
|
||||
UNUSED(indb);
|
||||
#endif
|
||||
@ -64,7 +60,7 @@ void Temperature::lcd_preheat(const int16_t e, const int8_t indh, const int8_t i
|
||||
#if FAN_COUNT > 1
|
||||
active_extruder < FAN_COUNT ? active_extruder :
|
||||
#endif
|
||||
0), ui.preheat_fan_speed[indh]
|
||||
0), ui.material_preset[indh].fan_speed
|
||||
);
|
||||
#endif
|
||||
ui.return_to_status();
|
||||
@ -82,68 +78,66 @@ void Temperature::lcd_preheat(const int16_t e, const int8_t indh, const int8_t i
|
||||
|
||||
#if HAS_TEMP_HOTEND || HAS_HEATED_BED
|
||||
|
||||
#define _PREHEAT_ITEMS(M,N) do{ \
|
||||
ACTION_ITEM_N(N, MSG_PREHEAT_##M##_H, []{ _preheat_both(M-1, MenuItemBase::itemIndex); }); \
|
||||
ACTION_ITEM_N(N, MSG_PREHEAT_##M##_END_E, []{ _preheat_end(M-1, MenuItemBase::itemIndex); }); \
|
||||
}while(0)
|
||||
#if HAS_HEATED_BED
|
||||
#define PREHEAT_ITEMS(M,N) _PREHEAT_ITEMS(M,N)
|
||||
#if HAS_TEMP_HOTEND && HAS_HEATED_BED
|
||||
#define _PREHEAT_ITEMS(M,E) do{ \
|
||||
ACTION_ITEM_N_P(E, msg_preheat_h[M], []{ _preheat_both(M, MenuItemBase::itemIndex); }); \
|
||||
ACTION_ITEM_N_P(E, msg_preheat_end_e[M], []{ _preheat_end(M, MenuItemBase::itemIndex); }); \
|
||||
}while(0)
|
||||
#if HAS_HEATED_BED
|
||||
#define PREHEAT_ITEMS(M,E) _PREHEAT_ITEMS(M,E)
|
||||
#endif
|
||||
#else
|
||||
#define PREHEAT_ITEMS(M,N) \
|
||||
ACTION_ITEM_N(N, MSG_PREHEAT_##M##_H, []{ _preheat_end(M-1, MenuItemBase::itemIndex); })
|
||||
#define PREHEAT_ITEMS(M,E) ACTION_ITEM_N(E, msg_preheat_h[M], []{ _preheat_end(M, MenuItemBase::itemIndex); })
|
||||
#endif
|
||||
|
||||
void menu_preheat_m1() {
|
||||
void menu_preheat_m(const uint8_t m) {
|
||||
editable.int8 = m;
|
||||
#if HOTENDS == 1
|
||||
PGM_P msg_preheat[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1), GET_TEXT(MSG_PREHEAT_2), GET_TEXT(MSG_PREHEAT_3), GET_TEXT(MSG_PREHEAT_4), GET_TEXT(MSG_PREHEAT_5));
|
||||
PGM_P msg_preheat_end[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_END), GET_TEXT(MSG_PREHEAT_2_END), GET_TEXT(MSG_PREHEAT_3_END), GET_TEXT(MSG_PREHEAT_4_END), GET_TEXT(MSG_PREHEAT_5_END));
|
||||
#elif HAS_MULTI_HOTEND
|
||||
PGM_P msg_preheat_all[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_ALL), GET_TEXT(MSG_PREHEAT_2_ALL), GET_TEXT(MSG_PREHEAT_3_ALL), GET_TEXT(MSG_PREHEAT_4_ALL), GET_TEXT(MSG_PREHEAT_5_ALL));
|
||||
#endif
|
||||
PGM_P msg_preheat_end_e[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_END_E), GET_TEXT(MSG_PREHEAT_2_END_E), GET_TEXT(MSG_PREHEAT_3_END_E), GET_TEXT(MSG_PREHEAT_4_END_E), GET_TEXT(MSG_PREHEAT_5_END_E));
|
||||
PGM_P msg_preheat_bed[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_BEDONLY), GET_TEXT(MSG_PREHEAT_2_BEDONLY), GET_TEXT(MSG_PREHEAT_3_BEDONLY), GET_TEXT(MSG_PREHEAT_4_BEDONLY), GET_TEXT(MSG_PREHEAT_5_BEDONLY));
|
||||
PGM_P msg_preheat_h[] = ARRAY_N(PREHEAT_COUNT, GET_TEXT(MSG_PREHEAT_1_H), GET_TEXT(MSG_PREHEAT_2_H), GET_TEXT(MSG_PREHEAT_3_H), GET_TEXT(MSG_PREHEAT_4_H), GET_TEXT(MSG_PREHEAT_5_H));
|
||||
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_TEMPERATURE);
|
||||
#if HOTENDS == 1
|
||||
#if HAS_HEATED_BED
|
||||
ACTION_ITEM(MSG_PREHEAT_1, []{ _preheat_both(0, 0); });
|
||||
ACTION_ITEM(MSG_PREHEAT_1_END, []{ _preheat_end(0, 0); });
|
||||
ACTION_ITEM_P(msg_preheat[m], []{ _preheat_both(editable.int8, 0); });
|
||||
ACTION_ITEM_P(msg_preheat_end[m], []{ _preheat_end(editable.int8, 0); });
|
||||
#else
|
||||
ACTION_ITEM(MSG_PREHEAT_1, []{ _preheat_end(0, 0); });
|
||||
ACTION_ITEM_P(msg_preheat[m], []{ _preheat_end(editable.int8, 0); });
|
||||
#endif
|
||||
#elif HAS_MULTI_HOTEND
|
||||
#if HAS_HEATED_BED
|
||||
_PREHEAT_ITEMS(1,0);
|
||||
_PREHEAT_ITEMS(editable.int8,0);
|
||||
#endif
|
||||
LOOP_S_L_N(n, 1, HOTENDS) PREHEAT_ITEMS(1,n);
|
||||
ACTION_ITEM(MSG_PREHEAT_1_ALL, []() {
|
||||
TERN_(HAS_HEATED_BED, _preheat_bed(0));
|
||||
HOTEND_LOOP() thermalManager.setTargetHotend(ui.preheat_hotend_temp[0], e);
|
||||
LOOP_S_L_N(n, 1, HOTENDS) PREHEAT_ITEMS(editable.int8,n);
|
||||
ACTION_ITEM_P(msg_preheat_all[m], []() {
|
||||
TERN_(HAS_HEATED_BED, _preheat_bed(editable.int8));
|
||||
HOTEND_LOOP() thermalManager.setTargetHotend(ui.material_preset[editable.int8].hotend_temp, e);
|
||||
});
|
||||
#endif // HAS_MULTI_HOTEND
|
||||
#if HAS_HEATED_BED
|
||||
ACTION_ITEM(MSG_PREHEAT_1_BEDONLY, []{ _preheat_bed(0); });
|
||||
ACTION_ITEM_P(msg_preheat_bed[m], []{ _preheat_bed(editable.int8); });
|
||||
#endif
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
void menu_preheat_m2() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_TEMPERATURE);
|
||||
#if HOTENDS == 1
|
||||
#if HAS_HEATED_BED
|
||||
ACTION_ITEM(MSG_PREHEAT_2, []{ _preheat_both(1, 0); });
|
||||
ACTION_ITEM(MSG_PREHEAT_2_END, []{ _preheat_end(1, 0); });
|
||||
#else
|
||||
ACTION_ITEM(MSG_PREHEAT_2, []{ _preheat_end(1, 0); });
|
||||
void menu_preheat_m1() { menu_preheat_m(0); }
|
||||
void menu_preheat_m2() { menu_preheat_m(1); }
|
||||
#if PREHEAT_COUNT >= 3
|
||||
void menu_preheat_m3() { menu_preheat_m(2); }
|
||||
#if PREHEAT_COUNT >= 4
|
||||
void menu_preheat_m4() { menu_preheat_m(3); }
|
||||
#if PREHEAT_COUNT >= 5
|
||||
void menu_preheat_m5() { menu_preheat_m(4); }
|
||||
#endif
|
||||
#elif HAS_MULTI_HOTEND
|
||||
#if HAS_HEATED_BED
|
||||
_PREHEAT_ITEMS(2,0);
|
||||
#endif
|
||||
LOOP_S_L_N(n, 1, HOTENDS) PREHEAT_ITEMS(2,n);
|
||||
ACTION_ITEM(MSG_PREHEAT_2_ALL, []() {
|
||||
TERN_(HAS_HEATED_BED, _preheat_bed(1));
|
||||
HOTEND_LOOP() thermalManager.setTargetHotend(ui.preheat_hotend_temp[1], e);
|
||||
});
|
||||
#endif // HAS_MULTI_HOTEND
|
||||
#if HAS_HEATED_BED
|
||||
ACTION_ITEM(MSG_PREHEAT_2_BEDONLY, []{ _preheat_bed(1); });
|
||||
#endif
|
||||
END_MENU();
|
||||
}
|
||||
#endif
|
||||
|
||||
void lcd_cooldown() {
|
||||
thermalManager.zero_fan_speeds();
|
||||
@ -269,12 +263,30 @@ void menu_temperature() {
|
||||
//
|
||||
// Preheat for Material 1 and 2
|
||||
//
|
||||
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_4 != 0 || TEMP_SENSOR_5 != 0 || TEMP_SENSOR_6 != 0 || TEMP_SENSOR_7 != 0 || HAS_HEATED_BED
|
||||
#if HOTENDS > 1 || HAS_HEATED_BED
|
||||
SUBMENU(MSG_PREHEAT_1, menu_preheat_m1);
|
||||
SUBMENU(MSG_PREHEAT_2, menu_preheat_m2);
|
||||
#if PREHEAT_COUNT >= 3
|
||||
SUBMENU(MSG_PREHEAT_3, menu_preheat_m3);
|
||||
#if PREHEAT_COUNT >= 4
|
||||
SUBMENU(MSG_PREHEAT_4, menu_preheat_m4);
|
||||
#if PREHEAT_COUNT >= 5
|
||||
SUBMENU(MSG_PREHEAT_5, menu_preheat_m5);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
ACTION_ITEM(MSG_PREHEAT_1, []{ _preheat_end(0, 0); });
|
||||
ACTION_ITEM(MSG_PREHEAT_2, []{ _preheat_end(1, 0); });
|
||||
#if PREHEAT_COUNT >= 3
|
||||
ACTION_ITEM(MSG_PREHEAT_3, []{ _preheat_end(2, 0); });
|
||||
#if PREHEAT_COUNT >= 3
|
||||
ACTION_ITEM(MSG_PREHEAT_4, []{ _preheat_end(3, 0); });
|
||||
#if PREHEAT_COUNT >= 3
|
||||
ACTION_ITEM(MSG_PREHEAT_5, []{ _preheat_end(4, 0); });
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
@ -288,4 +300,4 @@ void menu_temperature() {
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
#endif // HAS_LCD_MENU
|
||||
#endif // HAS_LCD_MENU && HAS_TEMPERATURE
|
||||
|
@ -128,7 +128,9 @@ void _lcd_ubl_build_custom_mesh() {
|
||||
void _lcd_ubl_custom_mesh() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_UBL_BUILD_MESH_MENU);
|
||||
EDIT_ITEM(int3, MSG_UBL_HOTEND_TEMP_CUSTOM, &custom_hotend_temp, EXTRUDE_MINTEMP, HEATER_0_MAXTEMP - HOTEND_OVERSHOOT);
|
||||
#if HAS_HOTEND
|
||||
EDIT_ITEM(int3, MSG_UBL_HOTEND_TEMP_CUSTOM, &custom_hotend_temp, EXTRUDE_MINTEMP, HEATER_0_MAXTEMP - HOTEND_OVERSHOOT);
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
EDIT_ITEM(int3, MSG_UBL_BED_TEMP_CUSTOM, &custom_bed_temp, BED_MINTEMP, BED_MAX_TARGET);
|
||||
#endif
|
||||
@ -182,39 +184,48 @@ void _lcd_ubl_edit_mesh() {
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
/**
|
||||
* UBL Validate Custom Mesh Command
|
||||
*/
|
||||
void _lcd_ubl_validate_custom_mesh() {
|
||||
char ubl_lcd_gcode[24];
|
||||
const int16_t temp = TERN(HAS_HEATED_BED, custom_bed_temp, 0);
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G28\nG26 C B%" PRIi16 " H%" PRIi16 " P"), temp, custom_hotend_temp);
|
||||
queue.inject(ubl_lcd_gcode);
|
||||
}
|
||||
#if ENABLED(G26_MESH_VALIDATION)
|
||||
|
||||
/**
|
||||
* UBL Validate Mesh submenu
|
||||
*
|
||||
* << UBL Tools
|
||||
* Mesh Validation with Material 1
|
||||
* Mesh Validation with Material 2
|
||||
* Validate Custom Mesh
|
||||
* << Info Screen
|
||||
*/
|
||||
void _lcd_ubl_validate_mesh() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_UBL_TOOLS);
|
||||
#if HAS_HEATED_BED
|
||||
GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M1, PSTR("G28\nG26 C B" STRINGIFY(PREHEAT_1_TEMP_BED) " H" STRINGIFY(PREHEAT_1_TEMP_HOTEND) " P"));
|
||||
GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M2, PSTR("G28\nG26 C B" STRINGIFY(PREHEAT_2_TEMP_BED) " H" STRINGIFY(PREHEAT_2_TEMP_HOTEND) " P"));
|
||||
#else
|
||||
GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M1, PSTR("G28\nG26 C B0 H" STRINGIFY(PREHEAT_1_TEMP_HOTEND) " P"));
|
||||
GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M2, PSTR("G28\nG26 C B0 H" STRINGIFY(PREHEAT_2_TEMP_HOTEND) " P"));
|
||||
#endif
|
||||
ACTION_ITEM(MSG_UBL_VALIDATE_CUSTOM_MESH, _lcd_ubl_validate_custom_mesh);
|
||||
ACTION_ITEM(MSG_INFO_SCREEN, ui.return_to_status);
|
||||
END_MENU();
|
||||
}
|
||||
/**
|
||||
* UBL Validate Custom Mesh Command
|
||||
*/
|
||||
void _lcd_ubl_validate_custom_mesh() {
|
||||
char ubl_lcd_gcode[24];
|
||||
const int16_t temp = TERN(HAS_HEATED_BED, custom_bed_temp, 0);
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G28\nG26 C P H%" PRIi16 TERN_(HAS_HEATED_BED, " B%" PRIi16))
|
||||
, custom_hotend_temp
|
||||
#if HAS_HEATED_BED
|
||||
, temp
|
||||
#endif
|
||||
);
|
||||
queue.inject(ubl_lcd_gcode);
|
||||
}
|
||||
|
||||
/**
|
||||
* UBL Validate Mesh submenu
|
||||
*
|
||||
* << UBL Tools
|
||||
* Mesh Validation with Material 1
|
||||
* Mesh Validation with Material 2
|
||||
* Validate Custom Mesh
|
||||
* << Info Screen
|
||||
*/
|
||||
void _lcd_ubl_validate_mesh() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_UBL_TOOLS);
|
||||
#if HAS_HEATED_BED
|
||||
GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M1, PSTR("G28\nG26 C B" STRINGIFY(PREHEAT_1_TEMP_BED) " H" STRINGIFY(PREHEAT_1_TEMP_HOTEND) " P"));
|
||||
GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M2, PSTR("G28\nG26 C B" STRINGIFY(PREHEAT_2_TEMP_BED) " H" STRINGIFY(PREHEAT_2_TEMP_HOTEND) " P"));
|
||||
#else
|
||||
GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M1, PSTR("G28\nG26 C B0 H" STRINGIFY(PREHEAT_1_TEMP_HOTEND) " P"));
|
||||
GCODES_ITEM(MSG_UBL_VALIDATE_MESH_M2, PSTR("G28\nG26 C B0 H" STRINGIFY(PREHEAT_2_TEMP_HOTEND) " P"));
|
||||
#endif
|
||||
ACTION_ITEM(MSG_UBL_VALIDATE_CUSTOM_MESH, _lcd_ubl_validate_custom_mesh);
|
||||
ACTION_ITEM(MSG_INFO_SCREEN, ui.return_to_status);
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* UBL Grid Leveling submenu
|
||||
@ -530,36 +541,42 @@ void _menu_ubl_tools() {
|
||||
BACK_ITEM(MSG_UBL_LEVEL_BED);
|
||||
SUBMENU(MSG_UBL_BUILD_MESH_MENU, _lcd_ubl_build_mesh);
|
||||
GCODES_ITEM(MSG_UBL_MANUAL_MESH, PSTR("G29 I999\nG29 P2 B T0"));
|
||||
SUBMENU(MSG_UBL_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
|
||||
#if ENABLED(G26_MESH_VALIDATION)
|
||||
SUBMENU(MSG_UBL_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
|
||||
#endif
|
||||
SUBMENU(MSG_EDIT_MESH, _lcd_ubl_edit_mesh);
|
||||
SUBMENU(MSG_UBL_MESH_LEVELING, _lcd_ubl_mesh_leveling);
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
/**
|
||||
* UBL Step-By-Step submenu
|
||||
*
|
||||
* << Unified Bed Leveling
|
||||
* 1 Build Cold Mesh
|
||||
* 2 Smart Fill-in
|
||||
* - 3 Validate Mesh >>
|
||||
* 4 Fine Tune All
|
||||
* - 5 Validate Mesh >>
|
||||
* 6 Fine Tune All
|
||||
* 7 Save Bed Mesh
|
||||
*/
|
||||
void _lcd_ubl_step_by_step() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_UBL_LEVEL_BED);
|
||||
GCODES_ITEM(MSG_UBL_1_BUILD_COLD_MESH, PSTR("G28\nG29 P1"));
|
||||
GCODES_ITEM(MSG_UBL_2_SMART_FILLIN, PSTR("G29 P3 T0"));
|
||||
SUBMENU(MSG_UBL_3_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
|
||||
GCODES_ITEM(MSG_UBL_4_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
|
||||
SUBMENU(MSG_UBL_5_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
|
||||
GCODES_ITEM(MSG_UBL_6_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
|
||||
ACTION_ITEM(MSG_UBL_7_SAVE_MESH, _lcd_ubl_save_mesh_cmd);
|
||||
END_MENU();
|
||||
}
|
||||
#if ENABLED(G26_MESH_VALIDATION)
|
||||
|
||||
/**
|
||||
* UBL Step-By-Step submenu
|
||||
*
|
||||
* << Unified Bed Leveling
|
||||
* 1 Build Cold Mesh
|
||||
* 2 Smart Fill-in
|
||||
* - 3 Validate Mesh >>
|
||||
* 4 Fine Tune All
|
||||
* - 5 Validate Mesh >>
|
||||
* 6 Fine Tune All
|
||||
* 7 Save Bed Mesh
|
||||
*/
|
||||
void _lcd_ubl_step_by_step() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_UBL_LEVEL_BED);
|
||||
GCODES_ITEM(MSG_UBL_1_BUILD_COLD_MESH, PSTR("G28\nG29 P1"));
|
||||
GCODES_ITEM(MSG_UBL_2_SMART_FILLIN, PSTR("G29 P3 T0"));
|
||||
SUBMENU(MSG_UBL_3_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
|
||||
GCODES_ITEM(MSG_UBL_4_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
|
||||
SUBMENU(MSG_UBL_5_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
|
||||
GCODES_ITEM(MSG_UBL_6_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
|
||||
ACTION_ITEM(MSG_UBL_7_SAVE_MESH, _lcd_ubl_save_mesh_cmd);
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* UBL System submenu
|
||||
@ -574,7 +591,6 @@ void _lcd_ubl_step_by_step() {
|
||||
* - UBL Tools >>
|
||||
* - Output UBL Info >>
|
||||
*/
|
||||
|
||||
void _lcd_ubl_level_bed() {
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_MOTION);
|
||||
@ -582,7 +598,9 @@ void _lcd_ubl_level_bed() {
|
||||
GCODES_ITEM(MSG_UBL_DEACTIVATE_MESH, PSTR("G29 D"));
|
||||
else
|
||||
GCODES_ITEM(MSG_UBL_ACTIVATE_MESH, PSTR("G29 A"));
|
||||
SUBMENU(MSG_UBL_STEP_BY_STEP_MENU, _lcd_ubl_step_by_step);
|
||||
#if ENABLED(G26_MESH_VALIDATION)
|
||||
SUBMENU(MSG_UBL_STEP_BY_STEP_MENU, _lcd_ubl_step_by_step);
|
||||
#endif
|
||||
ACTION_ITEM(MSG_UBL_MESH_EDIT, _lcd_ubl_output_map_lcd_cmd);
|
||||
SUBMENU(MSG_UBL_STORAGE_MESH_MENU, _lcd_ubl_storage_mesh);
|
||||
SUBMENU(MSG_UBL_OUTPUT_MAP, _lcd_ubl_output_map);
|
||||
|
Reference in New Issue
Block a user