🎨 Standard 'cooldown' method
This commit is contained in:
parent
205d867e4b
commit
d29a9014f2
@ -74,13 +74,12 @@
|
|||||||
* This code should ALWAYS be available for FULL SHUTDOWN!
|
* This code should ALWAYS be available for FULL SHUTDOWN!
|
||||||
*/
|
*/
|
||||||
void GcodeSuite::M81() {
|
void GcodeSuite::M81() {
|
||||||
thermalManager.disable_all_heaters();
|
|
||||||
planner.finish_and_disable();
|
planner.finish_and_disable();
|
||||||
|
thermalManager.cooldown();
|
||||||
|
|
||||||
print_job_timer.stop();
|
print_job_timer.stop();
|
||||||
|
|
||||||
#if HAS_FAN
|
#if HAS_FAN
|
||||||
thermalManager.zero_fan_speeds();
|
|
||||||
#if ENABLED(PROBING_FANS_OFF)
|
#if ENABLED(PROBING_FANS_OFF)
|
||||||
thermalManager.fans_paused = false;
|
thermalManager.fans_paused = false;
|
||||||
ZERO(thermalManager.saved_fan_speed);
|
ZERO(thermalManager.saved_fan_speed);
|
||||||
|
@ -2735,6 +2735,7 @@ void HMI_Prepare() {
|
|||||||
queue.inject_P(G28_STR); // G28 will set home_flag
|
queue.inject_P(G28_STR); // G28 will set home_flag
|
||||||
Popup_Window_Home();
|
Popup_Window_Home();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if HAS_ZOFFSET_ITEM
|
#if HAS_ZOFFSET_ITEM
|
||||||
case PREPARE_CASE_ZOFF:
|
case PREPARE_CASE_ZOFF:
|
||||||
#if EITHER(HAS_BED_PROBE, BABYSTEPPING)
|
#if EITHER(HAS_BED_PROBE, BABYSTEPPING)
|
||||||
@ -2750,6 +2751,7 @@ void HMI_Prepare() {
|
|||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_PREHEAT
|
#if HAS_PREHEAT
|
||||||
case PREPARE_CASE_PLA: ui.preheat_all(0); break;
|
case PREPARE_CASE_PLA: ui.preheat_all(0); break;
|
||||||
#if PREHEAT_COUNT > 1
|
#if PREHEAT_COUNT > 1
|
||||||
@ -2758,18 +2760,14 @@ void HMI_Prepare() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_HOTEND || HAS_HEATED_BED
|
#if HAS_HOTEND || HAS_HEATED_BED
|
||||||
case PREPARE_CASE_COOL:
|
case PREPARE_CASE_COOL: thermalManager.cooldown(); break;
|
||||||
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
|
|
||||||
#if HAS_HOTEND || HAS_HEATED_BED
|
|
||||||
thermalManager.disable_all_heaters();
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case PREPARE_CASE_LANG:
|
case PREPARE_CASE_LANG:
|
||||||
HMI_ToggleLanguage();
|
HMI_ToggleLanguage();
|
||||||
Draw_Prepare_Menu();
|
Draw_Prepare_Menu();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1787,8 +1787,7 @@ void DWIN_Print_Started(const bool sd) {
|
|||||||
// Ended print job
|
// Ended print job
|
||||||
void DWIN_Print_Finished() {
|
void DWIN_Print_Finished() {
|
||||||
if (checkkey == PrintProcess || printingIsActive()) {
|
if (checkkey == PrintProcess || printingIsActive()) {
|
||||||
thermalManager.disable_all_heaters();
|
thermalManager.cooldown();
|
||||||
thermalManager.zero_fan_speeds();
|
|
||||||
HMI_flag.print_finish = true;
|
HMI_flag.print_finish = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2116,17 +2115,13 @@ void SetHome() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_PREHEAT
|
#if HAS_PREHEAT
|
||||||
void SetCoolDown() {
|
|
||||||
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
|
|
||||||
#if HAS_HOTEND || HAS_HEATED_BED
|
|
||||||
thermalManager.disable_all_heaters();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
void DoPreheat0() { ui.preheat_all(0); }
|
void DoPreheat0() { ui.preheat_all(0); }
|
||||||
void DoPreheat1() { ui.preheat_all(1); }
|
void DoPreheat1() { ui.preheat_all(1); }
|
||||||
void DoPreheat2() { ui.preheat_all(2); }
|
void DoPreheat2() { ui.preheat_all(2); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void DoCoolDown() { thermalManager.cooldown(); }
|
||||||
|
|
||||||
void SetLanguage() {
|
void SetLanguage() {
|
||||||
HMI_ToggleLanguage();
|
HMI_ToggleLanguage();
|
||||||
CurrentMenu = nullptr; // Invalidate menu to full redraw
|
CurrentMenu = nullptr; // Invalidate menu to full redraw
|
||||||
@ -3126,8 +3121,8 @@ void Draw_Prepare_Menu() {
|
|||||||
#if PREHEAT_COUNT > 2
|
#if PREHEAT_COUNT > 2
|
||||||
ADDMENUITEM(ICON_CustomPreheat, GET_TEXT_F(MSG_PREHEAT_CUSTOM), onDrawMenuItem, DoPreheat2);
|
ADDMENUITEM(ICON_CustomPreheat, GET_TEXT_F(MSG_PREHEAT_CUSTOM), onDrawMenuItem, DoPreheat2);
|
||||||
#endif
|
#endif
|
||||||
ADDMENUITEM(ICON_Cool, GET_TEXT_F(MSG_COOLDOWN), onDrawCooldown, SetCoolDown);
|
|
||||||
#endif
|
#endif
|
||||||
|
ADDMENUITEM(ICON_Cool, GET_TEXT_F(MSG_COOLDOWN), onDrawCooldown, DoCoolDown);
|
||||||
ADDMENUITEM(ICON_Language, PSTR("UI Language"), onDrawLanguage, SetLanguage);
|
ADDMENUITEM(ICON_Language, PSTR("UI Language"), onDrawLanguage, SetLanguage);
|
||||||
}
|
}
|
||||||
CurrentMenu->draw();
|
CurrentMenu->draw();
|
||||||
|
@ -1030,7 +1030,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
|||||||
#define PREPARE_MANUALLEVEL (PREPARE_HOME + 1)
|
#define PREPARE_MANUALLEVEL (PREPARE_HOME + 1)
|
||||||
#define PREPARE_ZOFFSET (PREPARE_MANUALLEVEL + ENABLED(HAS_ZOFFSET_ITEM))
|
#define PREPARE_ZOFFSET (PREPARE_MANUALLEVEL + ENABLED(HAS_ZOFFSET_ITEM))
|
||||||
#define PREPARE_PREHEAT (PREPARE_ZOFFSET + ENABLED(HAS_PREHEAT))
|
#define PREPARE_PREHEAT (PREPARE_ZOFFSET + ENABLED(HAS_PREHEAT))
|
||||||
#define PREPARE_COOLDOWN (PREPARE_PREHEAT + ENABLED(HAS_PREHEAT))
|
#define PREPARE_COOLDOWN (PREPARE_PREHEAT + EITHER(HAS_HOTEND, HAS_HEATED_BED))
|
||||||
#define PREPARE_CHANGEFIL (PREPARE_COOLDOWN + ENABLED(ADVANCED_PAUSE_FEATURE))
|
#define PREPARE_CHANGEFIL (PREPARE_COOLDOWN + ENABLED(ADVANCED_PAUSE_FEATURE))
|
||||||
#define PREPARE_TOTAL PREPARE_CHANGEFIL
|
#define PREPARE_TOTAL PREPARE_CHANGEFIL
|
||||||
|
|
||||||
@ -1096,13 +1096,14 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
|||||||
else
|
else
|
||||||
Draw_Menu(Preheat);
|
Draw_Menu(Preheat);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAS_HOTEND || HAS_HEATED_BED
|
||||||
case PREPARE_COOLDOWN:
|
case PREPARE_COOLDOWN:
|
||||||
if (draw)
|
if (draw)
|
||||||
Draw_Menu_Item(row, ICON_Cool, F("Cooldown"));
|
Draw_Menu_Item(row, ICON_Cool, F("Cooldown"));
|
||||||
else {
|
else
|
||||||
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
|
thermalManager.cooldown();
|
||||||
thermalManager.disable_all_heaters();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1597,8 +1598,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
|||||||
#define PREHEAT_TOTAL PREHEAT_5
|
#define PREHEAT_TOTAL PREHEAT_5
|
||||||
|
|
||||||
auto do_preheat = [](const uint8_t m) {
|
auto do_preheat = [](const uint8_t m) {
|
||||||
thermalManager.disable_all_heaters();
|
thermalManager.cooldown();
|
||||||
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
|
|
||||||
if (preheatmode == 0 || preheatmode == 1) { ui.preheat_hotend_and_fan(m); }
|
if (preheatmode == 0 || preheatmode == 1) { ui.preheat_hotend_and_fan(m); }
|
||||||
if (preheatmode == 0 || preheatmode == 2) ui.preheat_bed(m);
|
if (preheatmode == 0 || preheatmode == 2) ui.preheat_bed(m);
|
||||||
};
|
};
|
||||||
@ -4496,8 +4496,7 @@ void CrealityDWINClass::Popup_Control() {
|
|||||||
TERN_(HAS_HOTEND, pausetemp = thermalManager.temp_hotend[0].target);
|
TERN_(HAS_HOTEND, pausetemp = thermalManager.temp_hotend[0].target);
|
||||||
TERN_(HAS_HEATED_BED, pausebed = thermalManager.temp_bed.target);
|
TERN_(HAS_HEATED_BED, pausebed = thermalManager.temp_bed.target);
|
||||||
TERN_(HAS_FAN, pausefan = thermalManager.fan_speed[0]);
|
TERN_(HAS_FAN, pausefan = thermalManager.fan_speed[0]);
|
||||||
thermalManager.disable_all_heaters();
|
thermalManager.cooldown();
|
||||||
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -4510,8 +4509,7 @@ void CrealityDWINClass::Popup_Control() {
|
|||||||
if (selection == 0) {
|
if (selection == 0) {
|
||||||
if (sdprint) {
|
if (sdprint) {
|
||||||
ui.abort_print();
|
ui.abort_print();
|
||||||
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
|
thermalManager.cooldown();
|
||||||
thermalManager.disable_all_heaters();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
TERN_(HOST_ACTION_COMMANDS, hostui.cancel());
|
TERN_(HOST_ACTION_COMMANDS, hostui.cancel());
|
||||||
@ -4741,8 +4739,7 @@ void CrealityDWINClass::Start_Print(bool sd) {
|
|||||||
void CrealityDWINClass::Stop_Print() {
|
void CrealityDWINClass::Stop_Print() {
|
||||||
printing = false;
|
printing = false;
|
||||||
sdprint = false;
|
sdprint = false;
|
||||||
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
|
thermalManager.cooldown();
|
||||||
thermalManager.disable_all_heaters();
|
|
||||||
TERN_(LCD_SET_PROGRESS_MANUALLY, ui.set_progress(100 * (PROGRESS_SCALE)));
|
TERN_(LCD_SET_PROGRESS_MANUALLY, ui.set_progress(100 * (PROGRESS_SCALE)));
|
||||||
TERN_(USE_M73_REMAINING_TIME, ui.set_remaining_time(0));
|
TERN_(USE_M73_REMAINING_TIME, ui.set_remaining_time(0));
|
||||||
Draw_Print_confirm();
|
Draw_Print_confirm();
|
||||||
|
@ -626,14 +626,11 @@ void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr
|
|||||||
default:
|
default:
|
||||||
switch (var.VP) {
|
switch (var.VP) {
|
||||||
default: return;
|
default: return;
|
||||||
case VP_E0_BED_PREHEAT: TERN_(HAS_HOTEND, ui.preheat_all(0)); break;
|
case VP_E0_BED_PREHEAT: TERN_(HAS_HOTEND, ui.preheat_all(0)); break;
|
||||||
case VP_E1_BED_PREHEAT: TERN_(HAS_MULTI_HOTEND, ui.preheat_all(1)); break;
|
case VP_E1_BED_PREHEAT: TERN_(HAS_MULTI_HOTEND, ui.preheat_all(1)); break;
|
||||||
}
|
}
|
||||||
case 7: break; // Custom preheat
|
case 7: break; // Custom preheat
|
||||||
case 9: // Cool down
|
case 9: thermalManager.cooldown(); break; // Cool down
|
||||||
thermalManager.zero_fan_speeds();
|
|
||||||
thermalManager.disable_all_heaters();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go to the preheat screen to show the heating progress
|
// Go to the preheat screen to show the heating progress
|
||||||
|
@ -1034,10 +1034,7 @@ namespace ExtUI {
|
|||||||
|
|
||||||
void setFeedrate_percent(const_float_t value) { feedrate_percentage = constrain(value, 10, 500); }
|
void setFeedrate_percent(const_float_t value) { feedrate_percentage = constrain(value, 10, 500); }
|
||||||
|
|
||||||
void coolDown() {
|
void coolDown() { thermalManager.cooldown(); }
|
||||||
thermalManager.disable_all_heaters();
|
|
||||||
TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool awaitingUserConfirm() {
|
bool awaitingUserConfirm() {
|
||||||
return TERN0(HAS_RESUME_CONTINUE, wait_for_user) || getHostKeepaliveIsPaused();
|
return TERN0(HAS_RESUME_CONTINUE, wait_for_user) || getHostKeepaliveIsPaused();
|
||||||
|
@ -143,8 +143,7 @@ void Temperature::lcd_preheat(const uint8_t e, const int8_t indh, const int8_t i
|
|||||||
#if HAS_TEMP_HOTEND || HAS_HEATED_BED
|
#if HAS_TEMP_HOTEND || HAS_HEATED_BED
|
||||||
|
|
||||||
void lcd_cooldown() {
|
void lcd_cooldown() {
|
||||||
thermalManager.zero_fan_speeds();
|
thermalManager.cooldown();
|
||||||
thermalManager.disable_all_heaters();
|
|
||||||
ui.return_to_status();
|
ui.return_to_status();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -848,6 +848,14 @@ class Temperature {
|
|||||||
*/
|
*/
|
||||||
static void disable_all_heaters();
|
static void disable_all_heaters();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cooldown, as from the LCD. Disables all heaters and fans.
|
||||||
|
*/
|
||||||
|
static inline void cooldown() {
|
||||||
|
zero_fan_speeds();
|
||||||
|
disable_all_heaters();
|
||||||
|
}
|
||||||
|
|
||||||
#if ENABLED(PRINTJOB_TIMER_AUTOSTART)
|
#if ENABLED(PRINTJOB_TIMER_AUTOSTART)
|
||||||
/**
|
/**
|
||||||
* Methods to check if heaters are enabled, indicating an active job
|
* Methods to check if heaters are enabled, indicating an active job
|
||||||
|
Loading…
Reference in New Issue
Block a user