Add possibility to to select preheat temperature when unloading filament in first layer calibration wizard.
Known limitations: During filament eject, menu is shown for some moment.
This commit is contained in:
parent
fe30e58fb5
commit
635a1b4cd8
2 changed files with 32 additions and 20 deletions
|
@ -1787,55 +1787,61 @@ void lcd_preheat_farm_nozzle()
|
||||||
void lcd_preheat_pla()
|
void lcd_preheat_pla()
|
||||||
{
|
{
|
||||||
setTargetHotend0(PLA_PREHEAT_HOTEND_TEMP);
|
setTargetHotend0(PLA_PREHEAT_HOTEND_TEMP);
|
||||||
setTargetBed(PLA_PREHEAT_HPB_TEMP);
|
if (!wizard_active) setTargetBed(PLA_PREHEAT_HPB_TEMP);
|
||||||
fanSpeed = 0;
|
fanSpeed = 0;
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
setWatch(); // heater sanity check timer
|
setWatch(); // heater sanity check timer
|
||||||
|
if (wizard_active) lcd_wizard(WizState::Unload);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_preheat_abs()
|
void lcd_preheat_abs()
|
||||||
{
|
{
|
||||||
setTargetHotend0(ABS_PREHEAT_HOTEND_TEMP);
|
setTargetHotend0(ABS_PREHEAT_HOTEND_TEMP);
|
||||||
setTargetBed(ABS_PREHEAT_HPB_TEMP);
|
if (!wizard_active) setTargetBed(ABS_PREHEAT_HPB_TEMP);
|
||||||
fanSpeed = 0;
|
fanSpeed = 0;
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
setWatch(); // heater sanity check timer
|
setWatch(); // heater sanity check timer
|
||||||
|
if (wizard_active) lcd_wizard(WizState::Unload);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_preheat_pp()
|
void lcd_preheat_pp()
|
||||||
{
|
{
|
||||||
setTargetHotend0(PP_PREHEAT_HOTEND_TEMP);
|
setTargetHotend0(PP_PREHEAT_HOTEND_TEMP);
|
||||||
setTargetBed(PP_PREHEAT_HPB_TEMP);
|
if (!wizard_active) setTargetBed(PP_PREHEAT_HPB_TEMP);
|
||||||
fanSpeed = 0;
|
fanSpeed = 0;
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
setWatch(); // heater sanity check timer
|
setWatch(); // heater sanity check timer
|
||||||
|
if (wizard_active) lcd_wizard(WizState::Unload);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_preheat_pet()
|
void lcd_preheat_pet()
|
||||||
{
|
{
|
||||||
setTargetHotend0(PET_PREHEAT_HOTEND_TEMP);
|
setTargetHotend0(PET_PREHEAT_HOTEND_TEMP);
|
||||||
setTargetBed(PET_PREHEAT_HPB_TEMP);
|
if (!wizard_active) setTargetBed(PET_PREHEAT_HPB_TEMP);
|
||||||
fanSpeed = 0;
|
fanSpeed = 0;
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
setWatch(); // heater sanity check timer
|
setWatch(); // heater sanity check timer
|
||||||
|
if (wizard_active) lcd_wizard(WizState::Unload);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_preheat_hips()
|
void lcd_preheat_hips()
|
||||||
{
|
{
|
||||||
setTargetHotend0(HIPS_PREHEAT_HOTEND_TEMP);
|
setTargetHotend0(HIPS_PREHEAT_HOTEND_TEMP);
|
||||||
setTargetBed(HIPS_PREHEAT_HPB_TEMP);
|
if (!wizard_active) setTargetBed(HIPS_PREHEAT_HPB_TEMP);
|
||||||
fanSpeed = 0;
|
fanSpeed = 0;
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
setWatch(); // heater sanity check timer
|
setWatch(); // heater sanity check timer
|
||||||
|
if (wizard_active) lcd_wizard(WizState::Unload);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_preheat_flex()
|
void lcd_preheat_flex()
|
||||||
{
|
{
|
||||||
setTargetHotend0(FLEX_PREHEAT_HOTEND_TEMP);
|
setTargetHotend0(FLEX_PREHEAT_HOTEND_TEMP);
|
||||||
setTargetBed(FLEX_PREHEAT_HPB_TEMP);
|
if (!wizard_active) setTargetBed(FLEX_PREHEAT_HPB_TEMP);
|
||||||
fanSpeed = 0;
|
fanSpeed = 0;
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
setWatch(); // heater sanity check timer
|
setWatch(); // heater sanity check timer
|
||||||
|
if (wizard_active) lcd_wizard(WizState::Unload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2061,7 +2067,7 @@ static void lcd_preheat_menu()
|
||||||
{
|
{
|
||||||
MENU_BEGIN();
|
MENU_BEGIN();
|
||||||
|
|
||||||
MENU_ITEM_BACK_P(_T(MSG_MAIN));
|
if (!wizard_active) MENU_ITEM_BACK_P(_T(MSG_MAIN));
|
||||||
|
|
||||||
if (farm_mode) {
|
if (farm_mode) {
|
||||||
MENU_ITEM_FUNCTION_P(PSTR("farm - " STRINGIFY(FARM_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FARM_PREHEAT_HPB_TEMP)), lcd_preheat_farm);
|
MENU_ITEM_FUNCTION_P(PSTR("farm - " STRINGIFY(FARM_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FARM_PREHEAT_HPB_TEMP)), lcd_preheat_farm);
|
||||||
|
@ -2075,7 +2081,7 @@ static void lcd_preheat_menu()
|
||||||
MENU_ITEM_FUNCTION_P(PSTR("HIPS - " STRINGIFY(HIPS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(HIPS_PREHEAT_HPB_TEMP)), lcd_preheat_hips);
|
MENU_ITEM_FUNCTION_P(PSTR("HIPS - " STRINGIFY(HIPS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(HIPS_PREHEAT_HPB_TEMP)), lcd_preheat_hips);
|
||||||
MENU_ITEM_FUNCTION_P(PSTR("PP - " STRINGIFY(PP_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PP_PREHEAT_HPB_TEMP)), lcd_preheat_pp);
|
MENU_ITEM_FUNCTION_P(PSTR("PP - " STRINGIFY(PP_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PP_PREHEAT_HPB_TEMP)), lcd_preheat_pp);
|
||||||
MENU_ITEM_FUNCTION_P(PSTR("FLEX - " STRINGIFY(FLEX_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FLEX_PREHEAT_HPB_TEMP)), lcd_preheat_flex);
|
MENU_ITEM_FUNCTION_P(PSTR("FLEX - " STRINGIFY(FLEX_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FLEX_PREHEAT_HPB_TEMP)), lcd_preheat_flex);
|
||||||
MENU_ITEM_FUNCTION_P(_T(MSG_COOLDOWN), lcd_cooldown);
|
if (!wizard_active) MENU_ITEM_FUNCTION_P(_T(MSG_COOLDOWN), lcd_cooldown);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4375,21 +4381,20 @@ void lcd_language()
|
||||||
lang_select(LANG_ID_PRI);
|
lang_select(LANG_ID_PRI);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pla_preheat()
|
static void wait_preheat()
|
||||||
{
|
{
|
||||||
lcd_display_message_fullscreen_P(_i("Now I will preheat nozzle for PLA."));////MSG_WIZARD_WILL_PREHEAT c=20 r=4
|
|
||||||
current_position[Z_AXIS] = 100; //move in z axis to make space for loading filament
|
current_position[Z_AXIS] = 100; //move in z axis to make space for loading filament
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder);
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder);
|
||||||
delay_keep_alive(2000);
|
delay_keep_alive(2000);
|
||||||
lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
|
lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
|
||||||
while (abs(degHotend(0) - PLA_PREHEAT_HOTEND_TEMP) > 3) {
|
while (abs(degHotend(0) - degTargetHotend(0)) > 3) {
|
||||||
lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
|
lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
|
||||||
|
|
||||||
lcd_set_cursor(0, 4);
|
lcd_set_cursor(0, 4);
|
||||||
lcd_print(LCD_STR_THERMOMETER[0]);
|
lcd_print(LCD_STR_THERMOMETER[0]);
|
||||||
lcd_print(ftostr3(degHotend(0)));
|
lcd_print(ftostr3(degHotend(0)));
|
||||||
lcd_print("/");
|
lcd_print("/");
|
||||||
lcd_print(PLA_PREHEAT_HOTEND_TEMP);
|
lcd_print(degTargetHotend(0));
|
||||||
lcd_print(LCD_STR_DEGREE);
|
lcd_print(LCD_STR_DEGREE);
|
||||||
lcd_set_custom_characters();
|
lcd_set_custom_characters();
|
||||||
delay_keep_alive(1000);
|
delay_keep_alive(1000);
|
||||||
|
@ -4492,17 +4497,23 @@ void lcd_wizard(WizState state)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(mmu_enabled) state = S::LoadFil;
|
if(mmu_enabled) state = S::LoadFil;
|
||||||
else state = S::Preheat;
|
else state = S::PreheatPla;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case S::Preheat:
|
case S::PreheatPla:
|
||||||
#ifndef SNMM
|
#ifndef SNMM
|
||||||
pla_preheat();
|
lcd_display_message_fullscreen_P(_i("Now I will preheat nozzle for PLA."));////MSG_WIZARD_WILL_PREHEAT c=20 r=4
|
||||||
|
wait_preheat();
|
||||||
#endif //not SNMM
|
#endif //not SNMM
|
||||||
state = S::LoadFil;
|
state = S::LoadFil;
|
||||||
break;
|
break;
|
||||||
|
case S::Preheat:
|
||||||
|
menu_goto(lcd_preheat_menu,0,false,true);
|
||||||
|
lcd_show_fullscreen_message_and_wait_P(_i("Select nozzle preheat temperature which matches your material."));
|
||||||
|
end = true; // Leave wizard temporarily for lcd_preheat_menu
|
||||||
|
break;
|
||||||
case S::Unload:
|
case S::Unload:
|
||||||
pla_preheat();
|
wait_preheat();
|
||||||
if(mmu_enabled)
|
if(mmu_enabled)
|
||||||
{
|
{
|
||||||
int8_t unload = lcd_show_multiscreen_message_two_choices_and_wait_P(
|
int8_t unload = lcd_show_multiscreen_message_two_choices_and_wait_P(
|
||||||
|
@ -4542,12 +4553,13 @@ void lcd_wizard(WizState state)
|
||||||
case S::IsPla:
|
case S::IsPla:
|
||||||
wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is it PLA filament?"), false, true);////MSG_WIZARD_PLA_FILAMENT c=20 r=2
|
wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is it PLA filament?"), false, true);////MSG_WIZARD_PLA_FILAMENT c=20 r=2
|
||||||
if (wizard_event) state = S::Lay1Cal;
|
if (wizard_event) state = S::Lay1Cal;
|
||||||
else state = S::Unload;
|
else state = S::Preheat;
|
||||||
break;
|
break;
|
||||||
case S::Lay1Cal:
|
case S::Lay1Cal:
|
||||||
lcd_show_fullscreen_message_and_wait_P(_i("Now I will calibrate distance between tip of the nozzle and heatbed surface."));////MSG_WIZARD_V2_CAL c=20 r=8
|
lcd_show_fullscreen_message_and_wait_P(_i("Now I will calibrate distance between tip of the nozzle and heatbed surface."));////MSG_WIZARD_V2_CAL c=20 r=8
|
||||||
lcd_show_fullscreen_message_and_wait_P(_i("I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."));////MSG_WIZARD_V2_CAL_2 c=20 r=12
|
lcd_show_fullscreen_message_and_wait_P(_i("I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."));////MSG_WIZARD_V2_CAL_2 c=20 r=12
|
||||||
lcd_commands_type = LCD_COMMAND_V2_CAL;
|
lcd_commands_type = LCD_COMMAND_V2_CAL;
|
||||||
|
lcd_return_to_status();
|
||||||
end = true;
|
end = true;
|
||||||
break;
|
break;
|
||||||
case S::RepeatLay1Cal: //repeat first layer cal.?
|
case S::RepeatLay1Cal: //repeat first layer cal.?
|
||||||
|
@ -4600,12 +4612,11 @@ void lcd_wizard(WizState state)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
if (state != S::Lay1Cal) {
|
if (!((S::Lay1Cal == state) || (S::Preheat == state))) {
|
||||||
lcd_show_fullscreen_message_and_wait_P(msg);
|
lcd_show_fullscreen_message_and_wait_P(msg);
|
||||||
wizard_active = false;
|
wizard_active = false;
|
||||||
}
|
}
|
||||||
lcd_update_enable(true);
|
lcd_update_enable(true);
|
||||||
lcd_return_to_status();
|
|
||||||
lcd_update(2);
|
lcd_update(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -180,7 +180,8 @@ enum class WizState : uint8_t
|
||||||
Xyz, //!< xyz calibration
|
Xyz, //!< xyz calibration
|
||||||
Z, //!< z calibration
|
Z, //!< z calibration
|
||||||
IsFil, //!< Is filament loaded? Entry point for 1st layer calibration
|
IsFil, //!< Is filament loaded? Entry point for 1st layer calibration
|
||||||
Preheat, //!< waiting for preheat nozzle for PLA
|
PreheatPla, //!< waiting for preheat nozzle for PLA
|
||||||
|
Preheat, //!< Preheat for any material
|
||||||
Unload, //!< Unload filament
|
Unload, //!< Unload filament
|
||||||
LoadFil, //!< Load filament
|
LoadFil, //!< Load filament
|
||||||
IsPla, //!< Is PLA filament?
|
IsPla, //!< Is PLA filament?
|
||||||
|
|
Loading…
Reference in a new issue