Browse Source

Improve M600 with timeout, wait for heatup.

Roxy-3D 7 years ago
parent
commit
8bf0b496b9

+ 5
- 1
Marlin/Configuration_adv.h View File

@@ -721,12 +721,16 @@
721 721
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
722 722
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
723 723
                                               // Short or zero length for printers without bowden where loading is not used
724
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
724
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
725 725
   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
726 726
                                               // 0 to disable for manual extrusion
727 727
                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
728 728
                                               // or until outcoming filament color is not clear for filament color change
729 729
   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
730
+  #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
731
+  #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L             // Number of alert beeps before printer goes quiet 
732
+  #define STEPPER_MOTORS_DONT_TIMEOUT_DURING_FILAMENT_CHANGE    // Enable to make stepper motors hold position during filament change even if it 
733
+                                                                // takes longer than DEFAULT_STEPPER_DEACTIVE_TIME
730 734
 #endif
731 735
 
732 736
 /******************************************************************************\

+ 88
- 11
Marlin/Marlin_main.cpp View File

@@ -7290,6 +7290,28 @@ inline void gcode_M503() {
7290 7290
 
7291 7291
 #if ENABLED(FILAMENT_CHANGE_FEATURE)
7292 7292
 
7293
+  millis_t next_buzz = 0;
7294
+  unsigned long int runout_beep = 0;
7295
+
7296
+  void filament_change_beep() {
7297
+    millis_t ms = millis(); 
7298
+    if (ms >= next_buzz) { 
7299
+      if (runout_beep <= FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS ) { // Only beep as long as we are supposed to! 
7300
+      BUZZ(300, 2000); 
7301
+      next_buzz = ms + 2500; // Beep every 2.5s while waiting 
7302
+      runout_beep++; 
7303
+      } 
7304
+      else if (runout_beep > FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  && 
7305
+               runout_beep <= (FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS + 5)) { // End with a burst of short beeps 
7306
+        BUZZ(200, 2000); 
7307
+        next_buzz = ms + 400; // Beep  
7308
+        runout_beep++; 
7309
+      }
7310
+    }
7311
+  }
7312
+
7313
+  bool busy_doing_M600 = false;
7314
+
7293 7315
   /**
7294 7316
    * M600: Pause for filament change
7295 7317
    *
@@ -7310,6 +7332,8 @@ inline void gcode_M503() {
7310 7332
       return;
7311 7333
     }
7312 7334
 
7335
+    busy_doing_M600 = true;  // Stepper Motors can't timeout when this is set
7336
+
7313 7337
     // Show initial message and wait for synchronize steppers
7314 7338
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INIT);
7315 7339
     stepper.synchronize();
@@ -7367,6 +7391,7 @@ inline void gcode_M503() {
7367 7391
 
7368 7392
     stepper.synchronize();
7369 7393
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_UNLOAD);
7394
+    idle();
7370 7395
 
7371 7396
     // Unload filament
7372 7397
     if (code_seen('L')) destination[E_AXIS] += code_value_axis_units(E_AXIS);
@@ -7384,23 +7409,66 @@ inline void gcode_M503() {
7384 7409
     disable_e3();
7385 7410
     delay(100);
7386 7411
 
7387
-    #if HAS_BUZZER
7388
-      millis_t next_buzz = 0;
7389
-    #endif
7412
+    millis_t nozzle_timeout = millis() + FILAMENT_CHANGE_NOZZLE_TIMEOUT*1000L;
7413
+    bool nozzle_timed_out = false;
7414
+    float temps[4];
7415
+    int iii;
7390 7416
 
7391 7417
     // Wait for filament insert by user and press button
7392 7418
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT);
7393 7419
 
7394
-    // LCD click or M108 will clear this
7395
-    wait_for_user = true;
7420
+    idle();
7421
+
7422
+    wait_for_user = true;    // LCD click or M108 will clear this
7423
+    next_buzz = 0;
7424
+    runout_beep = 0;
7425
+    for( iii=0; iii<HOTENDS; iii++)      //Save nozzle temps
7426
+      temps[iii] = thermalManager.target_temperature[iii]; 
7396 7427
 
7397 7428
     while (wait_for_user) {
7398
-      #if HAS_BUZZER
7399
-        millis_t ms = millis();
7400
-        if (ms >= next_buzz) {
7401
-          BUZZ(300, 2000);
7402
-          next_buzz = ms + 2500; // Beep every 2.5s while waiting
7429
+      millis_t current_ms = millis();
7430
+      if (nozzle_timed_out == true)
7431
+        lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
7432
+      #if HAS_BUZZER 
7433
+        filament_change_beep();
7434
+      #endif //HAS_BUZZER
7435
+
7436
+      if (current_ms >= nozzle_timeout) {
7437
+        if (nozzle_timed_out == false ) {
7438
+          nozzle_timed_out = true;         // if the nozzle time out happens, remember we turned off the nozzles. 
7439
+          for( iii=0; iii<HOTENDS; iii++)  // turn off all the nozzles
7440
+            thermalManager.setTargetHotend( 0.0 , iii );
7441
+
7442
+          lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
7403 7443
         }
7444
+      }
7445
+      idle(true);
7446
+    }
7447
+
7448
+    if (nozzle_timed_out == true ) {      // Turn nozzles back on if we turned them off.
7449
+      for( iii=0; iii<HOTENDS; iii++)
7450
+        thermalManager.setTargetHotend( temps[iii] , iii );
7451
+      lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT);
7452
+    }
7453
+
7454
+KEEP_CHECKING_TEMPS:
7455
+    idle();
7456
+    for( iii=0; iii<HOTENDS; iii++){
7457
+      if (abs(thermalManager.degHotend(iii)-temps[iii]) > 3 ) {
7458
+        lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT);
7459
+        goto KEEP_CHECKING_TEMPS;
7460
+      }
7461
+    }
7462
+
7463
+    wait_for_user = true;    // LCD click or M108 will clear this
7464
+    next_buzz = 0;
7465
+    runout_beep = 0;
7466
+    while (wait_for_user) {
7467
+      if (nozzle_timed_out == true)
7468
+        lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT);
7469
+      else break;
7470
+      #if HAS_BUZZER
7471
+        filament_change_beep();
7404 7472
       #endif
7405 7473
       idle(true);
7406 7474
     }
@@ -7408,6 +7476,8 @@ inline void gcode_M503() {
7408 7476
     // Show load message
7409 7477
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_LOAD);
7410 7478
 
7479
+    idle();
7480
+
7411 7481
     // Load filament
7412 7482
     if (code_seen('L')) destination[E_AXIS] -= code_value_axis_units(E_AXIS);
7413 7483
     #if defined(FILAMENT_CHANGE_LOAD_LENGTH) && FILAMENT_CHANGE_LOAD_LENGTH > 0
@@ -7459,6 +7529,7 @@ inline void gcode_M503() {
7459 7529
 
7460 7530
     // Show status screen
7461 7531
     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_STATUS);
7532
+    busy_doing_M600 = false;  // Allow Stepper Motors to be turned off during inactivity
7462 7533
   }
7463 7534
 
7464 7535
 #endif // FILAMENT_CHANGE_FEATURE
@@ -10073,7 +10144,13 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) {
10073 10144
   millis_t ms = millis();
10074 10145
 
10075 10146
   if (max_inactive_time && ELAPSED(ms, previous_cmd_ms + max_inactive_time)) kill(PSTR(MSG_KILLED));
10076
-
10147
+	
10148
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
10149
+    #ifdef STEPPER_MOTORS_DONT_TIMEOUT_DURING_FILAMENT_CHANGE
10150
+      if (busy_doing_M600 == false )	   // We only allow the stepper motors to time out if
10151
+    #endif                                 // we are not in the middle of an M600 command.
10152
+  #endif
10153
+             
10077 10154
   if (stepper_inactive_time && ELAPSED(ms, previous_cmd_ms + stepper_inactive_time)
10078 10155
       && !ignore_stepper_queue && !planner.blocks_queued()) {
10079 10156
     #if ENABLED(DISABLE_INACTIVE_X)

+ 1
- 1
Marlin/dogm_font_data_ISO10646_1_tr.h View File

@@ -31,7 +31,7 @@
31 31
   X Font      ascent = 7 descent=-1
32 32
   Max Font    ascent = 8 descent=-1
33 33
 */
34
-#include "U8glib.h"
34
+#include <U8glib.h>
35 35
 const u8g_fntpgm_uint8_t ISO10646_TR[2591] U8G_SECTION(".progmem.ISO10646_TR") = {
36 36
   0,6,9,0,254,7,1,146,3,33,32,255,255,8,255,7,
37 37
   255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,

+ 4
- 0
Marlin/endstops.cpp View File

@@ -217,6 +217,10 @@ void Endstops::M119() {
217 217
     SERIAL_PROTOCOLPGM(MSG_Z_PROBE);
218 218
     SERIAL_PROTOCOLLN(((READ(Z_MIN_PROBE_PIN)^Z_MIN_PROBE_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
219 219
   #endif
220
+  #if ENABLED(FILAMENT_RUNOUT_SENSOR)
221
+    SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR);
222
+    SERIAL_PROTOCOLLN(((READ(FIL_RUNOUT_PIN)^FIL_RUNOUT_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
223
+  #endif
220 224
 } // Endstops::M119
221 225
 
222 226
 #if ENABLED(Z_DUAL_ENDSTOPS)

+ 3
- 1
Marlin/enum.h View File

@@ -143,7 +143,9 @@ enum TempState {
143 143
       FILAMENT_CHANGE_MESSAGE_EXTRUDE,
144 144
       FILAMENT_CHANGE_MESSAGE_OPTION,
145 145
       FILAMENT_CHANGE_MESSAGE_RESUME,
146
-      FILAMENT_CHANGE_MESSAGE_STATUS
146
+      FILAMENT_CHANGE_MESSAGE_STATUS,
147
+      FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE,
148
+      FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT
147 149
     };
148 150
   #endif
149 151
 #endif

+ 1
- 0
Marlin/language.h View File

@@ -152,6 +152,7 @@
152 152
 #define MSG_Z2_MIN                          "z2_min: "
153 153
 #define MSG_Z2_MAX                          "z2_max: "
154 154
 #define MSG_Z_PROBE                         "z_probe: "
155
+#define MSG_FILAMENT_RUNOUT_SENSOR          "filament_Runout_Sensor: "
155 156
 #define MSG_ERR_MATERIAL_INDEX              "M145 S<index> out of range (0-1)"
156 157
 #define MSG_ERR_M355_NONE                   "No case light"
157 158
 #define MSG_ERR_M421_PARAMETERS             "M421 required parameters missing"

+ 20
- 1
Marlin/language_en.h View File

@@ -33,6 +33,9 @@
33 33
 #ifndef WELCOME_MSG
34 34
   #define WELCOME_MSG                         MACHINE_NAME _UxGT(" ready.")
35 35
 #endif
36
+#ifndef MSG_BACK
37
+  #define MSG_BACK                            _UxGT("Back")
38
+#endif
36 39
 #ifndef MSG_SD_INSERTED
37 40
   #define MSG_SD_INSERTED                     _UxGT("Card inserted")
38 41
 #endif
@@ -486,7 +489,6 @@
486 489
 #ifndef MSG_DELTA_CALIBRATE_CENTER
487 490
   #define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrate Center")
488 491
 #endif
489
-
490 492
 #ifndef MSG_INFO_MENU
491 493
   #define MSG_INFO_MENU                       _UxGT("About Printer")
492 494
 #endif
@@ -583,6 +585,12 @@
583 585
 #ifndef MSG_FILAMENT_CHANGE_OPTION_RESUME
584 586
   #define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Resume print")
585 587
 #endif
588
+#ifndef MSG_FILAMENT_CHANGE_MINTEMP
589
+  #define MSG_FILAMENT_CHANGE_MINTEMP         _UxGT("Minimum Temp is ")
590
+#endif
591
+#ifndef MSG_FILAMENT_CHANGE_NOZZLE
592
+  #define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Nozzle: ")
593
+#endif
586 594
 
587 595
 //
588 596
 // Filament Change screens show up to 3 lines on a 4-line display
@@ -603,6 +611,14 @@
603 611
     #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("and press button")
604 612
     #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("to continue...")
605 613
   #endif
614
+  #ifndef MSG_FILAMENT_CHANGE_HEAT_1
615
+    #define MSG_FILAMENT_CHANGE_HEAT_1          _UxGT("Press button to")
616
+    #define MSG_FILAMENT_CHANGE_HEAT_2          _UxGT("heat nozzle.")
617
+  #endif
618
+  #ifndef MSG_FILAMENT_CHANGE_HEATING_1
619
+    #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Heating nozzle")
620
+    #define MSG_FILAMENT_CHANGE_HEATING_2       _UxGT("Please wait...")
621
+  #endif
606 622
   #ifndef MSG_FILAMENT_CHANGE_LOAD_1
607 623
     #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Wait for")
608 624
     #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("filament load")
@@ -625,6 +641,9 @@
625 641
   #ifndef MSG_FILAMENT_CHANGE_INSERT_1
626 642
     #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Insert and Click")
627 643
   #endif
644
+  #ifndef MSG_FILAMENT_CHANGE_HEATING_1
645
+    #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Heating...")
646
+  #endif
628 647
   #ifndef MSG_FILAMENT_CHANGE_LOAD_1
629 648
     #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Loading...")
630 649
   #endif

+ 70
- 3
Marlin/ultralcd.cpp View File

@@ -54,6 +54,7 @@ char lcd_status_message[3 * (LCD_WIDTH) + 1] = WELCOME_MSG; // worst case is kan
54 54
 
55 55
 #if ENABLED(DOGLCD)
56 56
   #include "ultralcd_impl_DOGM.h"
57
+  #include <U8glib.h>
57 58
 #else
58 59
   #include "ultralcd_impl_HD44780.h"
59 60
 #endif
@@ -151,6 +152,7 @@ uint16_t max_display_update_time = 0;
151 152
     void lcd_filament_change_unload_message();
152 153
     void lcd_filament_change_insert_message();
153 154
     void lcd_filament_change_load_message();
155
+    void lcd_filament_change_heat_nozzle();
154 156
     void lcd_filament_change_extrude_message();
155 157
     void lcd_filament_change_resume_message();
156 158
   #endif
@@ -948,7 +950,8 @@ void kill_screen(const char* lcd_msg) {
948 950
     // Change filament
949 951
     //
950 952
     #if ENABLED(FILAMENT_CHANGE_FEATURE)
951
-       MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
953
+   	  if (!thermalManager.tooColdToExtrude(active_extruder))
954
+        MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
952 955
     #endif
953 956
 
954 957
     END_MENU();
@@ -1384,11 +1387,13 @@ KeepDrawing:
1384 1387
         MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_material1_hotend0);
1385 1388
         MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_material2_hotend0);
1386 1389
       #endif
1390
+
1387 1391
       //
1388 1392
       // Change filament
1389 1393
       //
1390 1394
       #if ENABLED(FILAMENT_CHANGE_FEATURE)
1391
-        MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
1395
+        if (!thermalManager.tooColdToExtrude(active_extruder))
1396
+          MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
1392 1397
       #endif
1393 1398
     #endif
1394 1399
 
@@ -2441,11 +2446,21 @@ KeepDrawing:
2441 2446
     }
2442 2447
   #endif // LCD_INFO_MENU
2443 2448
 
2449
+    /**
2450
+     *
2451
+     * Filament Change Feature Screens
2452
+     *
2453
+     */
2444 2454
   #if ENABLED(FILAMENT_CHANGE_FEATURE)
2455
+
2445 2456
     void lcd_filament_change_toocold_menu() {
2446 2457
       START_MENU();
2447 2458
       STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true);
2448
-      MENU_BACK(MSG_FILAMENTCHANGE);
2459
+      STATIC_ITEM (MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false);
2460
+      MENU_BACK(MSG_BACK);
2461
+      STATIC_ITEM (" ");
2462
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2463
+      lcd_implementation_hotend_status();
2449 2464
       END_MENU();
2450 2465
     }
2451 2466
 
@@ -2478,6 +2493,8 @@ KeepDrawing:
2478 2493
       #ifdef MSG_FILAMENT_CHANGE_INIT_3
2479 2494
         STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_3);
2480 2495
       #endif
2496
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2497
+      lcd_implementation_hotend_status();
2481 2498
       END_SCREEN();
2482 2499
     }
2483 2500
 
@@ -2491,6 +2508,35 @@ KeepDrawing:
2491 2508
       #ifdef MSG_FILAMENT_CHANGE_UNLOAD_3
2492 2509
         STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_3);
2493 2510
       #endif
2511
+      STATIC_ITEM (" ");
2512
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2513
+      lcd_implementation_hotend_status();
2514
+      END_SCREEN();
2515
+    }
2516
+
2517
+    void lcd_filament_change_wait_for_nozzles_to_heat() {
2518
+      START_SCREEN();
2519
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
2520
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1);
2521
+      #ifdef MSG_FILAMENT_CHANGE_HEATING_2
2522
+        STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_2);
2523
+      #endif
2524
+      STATIC_ITEM(" ");
2525
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2526
+      lcd_implementation_hotend_status();
2527
+      END_SCREEN();
2528
+    }
2529
+
2530
+    void lcd_filament_change_heat_nozzle() {
2531
+      START_SCREEN();
2532
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
2533
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1);
2534
+      #ifdef MSG_FILAMENT_CHANGE_INSERT_2
2535
+        STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_2);
2536
+      #endif
2537
+      STATIC_ITEM(" ");
2538
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2539
+      lcd_implementation_hotend_status();
2494 2540
       END_SCREEN();
2495 2541
     }
2496 2542
 
@@ -2504,6 +2550,8 @@ KeepDrawing:
2504 2550
       #ifdef MSG_FILAMENT_CHANGE_INSERT_3
2505 2551
         STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_3);
2506 2552
       #endif
2553
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2554
+      lcd_implementation_hotend_status();
2507 2555
       END_SCREEN();
2508 2556
     }
2509 2557
 
@@ -2517,6 +2565,9 @@ KeepDrawing:
2517 2565
       #ifdef MSG_FILAMENT_CHANGE_LOAD_3
2518 2566
         STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_3);
2519 2567
       #endif
2568
+      STATIC_ITEM(" ");
2569
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2570
+      lcd_implementation_hotend_status();
2520 2571
       END_SCREEN();
2521 2572
     }
2522 2573
 
@@ -2530,6 +2581,9 @@ KeepDrawing:
2530 2581
       #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3
2531 2582
         STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3);
2532 2583
       #endif
2584
+      STATIC_ITEM(" ");
2585
+      STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
2586
+      lcd_implementation_hotend_status();
2533 2587
       END_SCREEN();
2534 2588
     }
2535 2589
 
@@ -2550,20 +2604,33 @@ KeepDrawing:
2550 2604
       switch (message) {
2551 2605
         case FILAMENT_CHANGE_MESSAGE_INIT:
2552 2606
           defer_return_to_status = true;
2607
+          lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
2553 2608
           lcd_goto_screen(lcd_filament_change_init_message);
2554 2609
           break;
2555 2610
         case FILAMENT_CHANGE_MESSAGE_UNLOAD:
2611
+          lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
2556 2612
           lcd_goto_screen(lcd_filament_change_unload_message);
2557 2613
           break;
2558 2614
         case FILAMENT_CHANGE_MESSAGE_INSERT:
2615
+          lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
2559 2616
           lcd_goto_screen(lcd_filament_change_insert_message);
2560 2617
           break;
2561 2618
         case FILAMENT_CHANGE_MESSAGE_LOAD:
2619
+          lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
2562 2620
           lcd_goto_screen(lcd_filament_change_load_message);
2563 2621
           break;
2564 2622
         case FILAMENT_CHANGE_MESSAGE_EXTRUDE:
2623
+          lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
2565 2624
           lcd_goto_screen(lcd_filament_change_extrude_message);
2566 2625
           break;
2626
+        case FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE:
2627
+          lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
2628
+          lcd_goto_screen(lcd_filament_change_heat_nozzle);
2629
+          break;
2630
+        case FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT:
2631
+          lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
2632
+          lcd_goto_screen(lcd_filament_change_wait_for_nozzles_to_heat);
2633
+          break;
2567 2634
         case FILAMENT_CHANGE_MESSAGE_OPTION:
2568 2635
           filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_WAIT_FOR;
2569 2636
           lcd_goto_screen(lcd_filament_change_option_menu);

+ 11
- 0
Marlin/ultralcd_impl_DOGM.h View File

@@ -379,6 +379,17 @@ FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr,
379 379
 
380 380
 //#define DOGM_SD_PERCENT
381 381
 
382
+
383
+static void lcd_implementation_hotend_status() {
384
+  u8g.setPrintPos(58, 60);
385
+  lcd_print( (char) '0'+active_extruder );
386
+  lcd_print( ' ' ); 
387
+  lcd_print( ' ' ); 
388
+  lcd_print(itostr3(thermalManager.degHotend(active_extruder)));
389
+  lcd_print('/');
390
+  lcd_print(itostr3(thermalManager.degTargetHotend(active_extruder)));
391
+}
392
+
382 393
 static void lcd_implementation_status_screen() {
383 394
 
384 395
   bool blink = lcd_blink();

+ 8
- 0
Marlin/ultralcd_impl_HD44780.h View File

@@ -592,6 +592,14 @@ FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr,
592 592
 
593 593
 #endif // LCD_PROGRESS_BAR
594 594
 
595
+static void lcd_implementation_hotend_status() {
596
+  lcd.setCursor(10,3);
597
+  lcd.print(LCD_STR_THERMOMETER[active_extruder]);
598
+  lcd.print(itostr3(thermalManager.degHotend(active_extruder)));
599
+  lcd.print('/');
600
+  lcd.print(itostr3(thermalManager.degTargetHotend(active_extruder)));
601
+}
602
+
595 603
 /**
596 604
 Possible status screens:
597 605
 16x2   |000/000 B000/000|

+ 1
- 0
README.md View File

@@ -19,6 +19,7 @@ The latest Release Candidate lives in the ["RC" branch](https://github.com/Marli
19 19
 ## Recent Changes
20 20
 - RCBugFix
21 21
   - Fixed broken MBL
22
+  - M600 heater timeout option
22 23
 
23 24
 - RC8 - 06 Dec 2016
24 25
   - Major performance improvement for Graphical LCDs

Loading…
Cancel
Save