Browse Source

🎨 Standard 'cooldown' method

Scott Lahteine 3 years ago
parent
commit
70e31bff45

+ 1
- 2
Marlin/src/gcode/control/M80_M81.cpp View File

74
  *      This code should ALWAYS be available for FULL SHUTDOWN!
74
  *      This code should ALWAYS be available for FULL SHUTDOWN!
75
  */
75
  */
76
 void GcodeSuite::M81() {
76
 void GcodeSuite::M81() {
77
-  thermalManager.disable_all_heaters();
78
   planner.finish_and_disable();
77
   planner.finish_and_disable();
78
+  thermalManager.cooldown();
79
 
79
 
80
   print_job_timer.stop();
80
   print_job_timer.stop();
81
 
81
 
82
   #if HAS_FAN
82
   #if HAS_FAN
83
-    thermalManager.zero_fan_speeds();
84
     #if ENABLED(PROBING_FANS_OFF)
83
     #if ENABLED(PROBING_FANS_OFF)
85
       thermalManager.fans_paused = false;
84
       thermalManager.fans_paused = false;
86
       ZERO(thermalManager.saved_fan_speed);
85
       ZERO(thermalManager.saved_fan_speed);

+ 4
- 6
Marlin/src/lcd/e3v2/creality/dwin.cpp View File

2735
         queue.inject_P(G28_STR); // G28 will set home_flag
2735
         queue.inject_P(G28_STR); // G28 will set home_flag
2736
         Popup_Window_Home();
2736
         Popup_Window_Home();
2737
         break;
2737
         break;
2738
+
2738
       #if HAS_ZOFFSET_ITEM
2739
       #if HAS_ZOFFSET_ITEM
2739
         case PREPARE_CASE_ZOFF:
2740
         case PREPARE_CASE_ZOFF:
2740
           #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
2741
           #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
2750
           #endif
2751
           #endif
2751
           break;
2752
           break;
2752
       #endif
2753
       #endif
2754
+
2753
       #if HAS_PREHEAT
2755
       #if HAS_PREHEAT
2754
         case PREPARE_CASE_PLA: ui.preheat_all(0); break;
2756
         case PREPARE_CASE_PLA: ui.preheat_all(0); break;
2755
         #if PREHEAT_COUNT > 1
2757
         #if PREHEAT_COUNT > 1
2758
       #endif
2760
       #endif
2759
 
2761
 
2760
       #if HAS_HOTEND || HAS_HEATED_BED
2762
       #if HAS_HOTEND || HAS_HEATED_BED
2761
-        case PREPARE_CASE_COOL:
2762
-          TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
2763
-          #if HAS_HOTEND || HAS_HEATED_BED
2764
-            thermalManager.disable_all_heaters();
2765
-          #endif
2766
-          break;
2763
+        case PREPARE_CASE_COOL: thermalManager.cooldown(); break;
2767
       #endif
2764
       #endif
2768
 
2765
 
2769
       case PREPARE_CASE_LANG:
2766
       case PREPARE_CASE_LANG:
2770
         HMI_ToggleLanguage();
2767
         HMI_ToggleLanguage();
2771
         Draw_Prepare_Menu();
2768
         Draw_Prepare_Menu();
2772
         break;
2769
         break;
2770
+
2773
       default: break;
2771
       default: break;
2774
     }
2772
     }
2775
   }
2773
   }

+ 4
- 9
Marlin/src/lcd/e3v2/enhanced/dwin.cpp View File

1787
 // Ended print job
1787
 // Ended print job
1788
 void DWIN_Print_Finished() {
1788
 void DWIN_Print_Finished() {
1789
   if (checkkey == PrintProcess || printingIsActive()) {
1789
   if (checkkey == PrintProcess || printingIsActive()) {
1790
-    thermalManager.disable_all_heaters();
1791
-    thermalManager.zero_fan_speeds();
1790
+    thermalManager.cooldown();
1792
     HMI_flag.print_finish = true;
1791
     HMI_flag.print_finish = true;
1793
   }
1792
   }
1794
 }
1793
 }
2116
 #endif
2115
 #endif
2117
 
2116
 
2118
 #if HAS_PREHEAT
2117
 #if HAS_PREHEAT
2119
-  void SetCoolDown() {
2120
-    TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
2121
-    #if HAS_HOTEND || HAS_HEATED_BED
2122
-      thermalManager.disable_all_heaters();
2123
-    #endif
2124
-  }
2125
   void DoPreheat0() { ui.preheat_all(0); }
2118
   void DoPreheat0() { ui.preheat_all(0); }
2126
   void DoPreheat1() { ui.preheat_all(1); }
2119
   void DoPreheat1() { ui.preheat_all(1); }
2127
   void DoPreheat2() { ui.preheat_all(2); }
2120
   void DoPreheat2() { ui.preheat_all(2); }
2128
 #endif
2121
 #endif
2129
 
2122
 
2123
+void DoCoolDown() { thermalManager.cooldown(); }
2124
+
2130
 void SetLanguage() {
2125
 void SetLanguage() {
2131
   HMI_ToggleLanguage();
2126
   HMI_ToggleLanguage();
2132
   CurrentMenu = nullptr;  // Invalidate menu to full redraw
2127
   CurrentMenu = nullptr;  // Invalidate menu to full redraw
3126
       #if PREHEAT_COUNT > 2
3121
       #if PREHEAT_COUNT > 2
3127
         ADDMENUITEM(ICON_CustomPreheat, GET_TEXT_F(MSG_PREHEAT_CUSTOM), onDrawMenuItem, DoPreheat2);
3122
         ADDMENUITEM(ICON_CustomPreheat, GET_TEXT_F(MSG_PREHEAT_CUSTOM), onDrawMenuItem, DoPreheat2);
3128
       #endif
3123
       #endif
3129
-      ADDMENUITEM(ICON_Cool, GET_TEXT_F(MSG_COOLDOWN), onDrawCooldown, SetCoolDown);
3130
     #endif
3124
     #endif
3125
+    ADDMENUITEM(ICON_Cool, GET_TEXT_F(MSG_COOLDOWN), onDrawCooldown, DoCoolDown);
3131
     ADDMENUITEM(ICON_Language, PSTR("UI Language"), onDrawLanguage, SetLanguage);
3126
     ADDMENUITEM(ICON_Language, PSTR("UI Language"), onDrawLanguage, SetLanguage);
3132
   }
3127
   }
3133
   CurrentMenu->draw();
3128
   CurrentMenu->draw();

+ 10
- 13
Marlin/src/lcd/e3v2/jyersui/dwin.cpp View File

1030
       #define PREPARE_MANUALLEVEL (PREPARE_HOME + 1)
1030
       #define PREPARE_MANUALLEVEL (PREPARE_HOME + 1)
1031
       #define PREPARE_ZOFFSET (PREPARE_MANUALLEVEL + ENABLED(HAS_ZOFFSET_ITEM))
1031
       #define PREPARE_ZOFFSET (PREPARE_MANUALLEVEL + ENABLED(HAS_ZOFFSET_ITEM))
1032
       #define PREPARE_PREHEAT (PREPARE_ZOFFSET + ENABLED(HAS_PREHEAT))
1032
       #define PREPARE_PREHEAT (PREPARE_ZOFFSET + ENABLED(HAS_PREHEAT))
1033
-      #define PREPARE_COOLDOWN (PREPARE_PREHEAT + ENABLED(HAS_PREHEAT))
1033
+      #define PREPARE_COOLDOWN (PREPARE_PREHEAT + EITHER(HAS_HOTEND, HAS_HEATED_BED))
1034
       #define PREPARE_CHANGEFIL (PREPARE_COOLDOWN + ENABLED(ADVANCED_PAUSE_FEATURE))
1034
       #define PREPARE_CHANGEFIL (PREPARE_COOLDOWN + ENABLED(ADVANCED_PAUSE_FEATURE))
1035
       #define PREPARE_TOTAL PREPARE_CHANGEFIL
1035
       #define PREPARE_TOTAL PREPARE_CHANGEFIL
1036
 
1036
 
1096
             else
1096
             else
1097
               Draw_Menu(Preheat);
1097
               Draw_Menu(Preheat);
1098
             break;
1098
             break;
1099
+        #endif
1100
+
1101
+        #if HAS_HOTEND || HAS_HEATED_BED
1099
           case PREPARE_COOLDOWN:
1102
           case PREPARE_COOLDOWN:
1100
             if (draw)
1103
             if (draw)
1101
               Draw_Menu_Item(row, ICON_Cool, F("Cooldown"));
1104
               Draw_Menu_Item(row, ICON_Cool, F("Cooldown"));
1102
-            else {
1103
-              TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
1104
-              thermalManager.disable_all_heaters();
1105
-            }
1105
+            else
1106
+              thermalManager.cooldown();
1106
             break;
1107
             break;
1107
         #endif
1108
         #endif
1108
 
1109
 
1597
         #define PREHEAT_TOTAL PREHEAT_5
1598
         #define PREHEAT_TOTAL PREHEAT_5
1598
 
1599
 
1599
         auto do_preheat = [](const uint8_t m) {
1600
         auto do_preheat = [](const uint8_t m) {
1600
-          thermalManager.disable_all_heaters();
1601
-          TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
1601
+          thermalManager.cooldown();
1602
           if (preheatmode == 0 || preheatmode == 1) { ui.preheat_hotend_and_fan(m); }
1602
           if (preheatmode == 0 || preheatmode == 1) { ui.preheat_hotend_and_fan(m); }
1603
           if (preheatmode == 0 || preheatmode == 2) ui.preheat_bed(m);
1603
           if (preheatmode == 0 || preheatmode == 2) ui.preheat_bed(m);
1604
         };
1604
         };
4496
               TERN_(HAS_HOTEND, pausetemp = thermalManager.temp_hotend[0].target);
4496
               TERN_(HAS_HOTEND, pausetemp = thermalManager.temp_hotend[0].target);
4497
               TERN_(HAS_HEATED_BED, pausebed = thermalManager.temp_bed.target);
4497
               TERN_(HAS_HEATED_BED, pausebed = thermalManager.temp_bed.target);
4498
               TERN_(HAS_FAN, pausefan = thermalManager.fan_speed[0]);
4498
               TERN_(HAS_FAN, pausefan = thermalManager.fan_speed[0]);
4499
-              thermalManager.disable_all_heaters();
4500
-              TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
4499
+              thermalManager.cooldown();
4501
             #endif
4500
             #endif
4502
           }
4501
           }
4503
           else {
4502
           else {
4510
         if (selection == 0) {
4509
         if (selection == 0) {
4511
           if (sdprint) {
4510
           if (sdprint) {
4512
             ui.abort_print();
4511
             ui.abort_print();
4513
-            TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
4514
-            thermalManager.disable_all_heaters();
4512
+            thermalManager.cooldown();
4515
           }
4513
           }
4516
           else {
4514
           else {
4517
             TERN_(HOST_ACTION_COMMANDS, hostui.cancel());
4515
             TERN_(HOST_ACTION_COMMANDS, hostui.cancel());
4741
 void CrealityDWINClass::Stop_Print() {
4739
 void CrealityDWINClass::Stop_Print() {
4742
   printing = false;
4740
   printing = false;
4743
   sdprint = false;
4741
   sdprint = false;
4744
-  TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
4745
-  thermalManager.disable_all_heaters();
4742
+  thermalManager.cooldown();
4746
   TERN_(LCD_SET_PROGRESS_MANUALLY, ui.set_progress(100 * (PROGRESS_SCALE)));
4743
   TERN_(LCD_SET_PROGRESS_MANUALLY, ui.set_progress(100 * (PROGRESS_SCALE)));
4747
   TERN_(USE_M73_REMAINING_TIME, ui.set_remaining_time(0));
4744
   TERN_(USE_M73_REMAINING_TIME, ui.set_remaining_time(0));
4748
   Draw_Print_confirm();
4745
   Draw_Print_confirm();

+ 2
- 5
Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp View File

626
       default:
626
       default:
627
       switch (var.VP) {
627
       switch (var.VP) {
628
         default: return;
628
         default: return;
629
-        case VP_E0_BED_PREHEAT: TERN_(HAS_HOTEND, ui.preheat_all(0)); break;
629
+        case VP_E0_BED_PREHEAT: TERN_(HAS_HOTEND,       ui.preheat_all(0)); break;
630
         case VP_E1_BED_PREHEAT: TERN_(HAS_MULTI_HOTEND, ui.preheat_all(1)); break;
630
         case VP_E1_BED_PREHEAT: TERN_(HAS_MULTI_HOTEND, ui.preheat_all(1)); break;
631
       }
631
       }
632
       case 7: break; // Custom preheat
632
       case 7: break; // Custom preheat
633
-      case 9: // Cool down
634
-        thermalManager.zero_fan_speeds();
635
-        thermalManager.disable_all_heaters();
636
-        break;
633
+      case 9: thermalManager.cooldown(); break; // Cool down
637
     }
634
     }
638
 
635
 
639
     // Go to the preheat screen to show the heating progress
636
     // Go to the preheat screen to show the heating progress

+ 1
- 4
Marlin/src/lcd/extui/ui_api.cpp View File

1034
 
1034
 
1035
   void setFeedrate_percent(const_float_t value) { feedrate_percentage = constrain(value, 10, 500); }
1035
   void setFeedrate_percent(const_float_t value) { feedrate_percentage = constrain(value, 10, 500); }
1036
 
1036
 
1037
-  void coolDown() {
1038
-    thermalManager.disable_all_heaters();
1039
-    TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
1040
-  }
1037
+  void coolDown() { thermalManager.cooldown(); }
1041
 
1038
 
1042
   bool awaitingUserConfirm() {
1039
   bool awaitingUserConfirm() {
1043
     return TERN0(HAS_RESUME_CONTINUE, wait_for_user) || getHostKeepaliveIsPaused();
1040
     return TERN0(HAS_RESUME_CONTINUE, wait_for_user) || getHostKeepaliveIsPaused();

+ 1
- 2
Marlin/src/lcd/menu/menu_temperature.cpp View File

143
 #if HAS_TEMP_HOTEND || HAS_HEATED_BED
143
 #if HAS_TEMP_HOTEND || HAS_HEATED_BED
144
 
144
 
145
   void lcd_cooldown() {
145
   void lcd_cooldown() {
146
-    thermalManager.zero_fan_speeds();
147
-    thermalManager.disable_all_heaters();
146
+    thermalManager.cooldown();
148
     ui.return_to_status();
147
     ui.return_to_status();
149
   }
148
   }
150
 
149
 

+ 8
- 0
Marlin/src/module/temperature.h View File

848
      */
848
      */
849
     static void disable_all_heaters();
849
     static void disable_all_heaters();
850
 
850
 
851
+    /**
852
+     * Cooldown, as from the LCD. Disables all heaters and fans.
853
+     */
854
+    static inline void cooldown() {
855
+      zero_fan_speeds();
856
+      disable_all_heaters();
857
+    }
858
+
851
     #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
859
     #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
852
       /**
860
       /**
853
        * Methods to check if heaters are enabled, indicating an active job
861
        * Methods to check if heaters are enabled, indicating an active job

Loading…
Cancel
Save