🎨 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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user