Merge pull request #5794 from thinkyhead/rc_m600_improve
M600 wait for heatup, prevent stepper timeout, etc.
This commit is contained in:
		
						commit
						babe1d211c
					
				| @ -721,12 +721,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -7290,6 +7290,22 @@ inline void gcode_M503() { | ||||
| 
 | ||||
| #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
| 
 | ||||
|   millis_t next_buzz = 0; | ||||
|   unsigned long int runout_beep = 0; | ||||
| 
 | ||||
|   void filament_change_beep() { | ||||
|     const millis_t ms = millis(); | ||||
|     if (ELAPSED(ms, next_buzz)) { | ||||
|       if (runout_beep <= FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS + 5) { // Only beep as long as we're supposed to
 | ||||
|         next_buzz = ms + (runout_beep <= FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS ? 2500 : 400); | ||||
|         BUZZ(300, 2000); | ||||
|         runout_beep++; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   static bool busy_doing_M600 = false; | ||||
| 
 | ||||
|   /**
 | ||||
|    * M600: Pause for filament change | ||||
|    * | ||||
| @ -7310,6 +7326,12 @@ inline void gcode_M503() { | ||||
|       return; | ||||
|     } | ||||
| 
 | ||||
|     busy_doing_M600 = true;  // Stepper Motors can't timeout when this is set
 | ||||
| 
 | ||||
|     // Pause the print job timer
 | ||||
|     bool job_running = print_job_timer.isRunning(); | ||||
|     print_job_timer.pause(); | ||||
| 
 | ||||
|     // Show initial message and wait for synchronize steppers
 | ||||
|     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INIT); | ||||
|     stepper.synchronize(); | ||||
| @ -7327,8 +7349,6 @@ inline void gcode_M503() { | ||||
|       #define RUNPLAN(RATE_MM_S) line_to_destination(RATE_MM_S); | ||||
|     #endif | ||||
| 
 | ||||
|     KEEPALIVE_STATE(IN_HANDLER); | ||||
| 
 | ||||
|     // Initial retract before move to filament change position
 | ||||
|     if (code_seen('E')) destination[E_AXIS] += code_value_axis_units(E_AXIS); | ||||
|     #if defined(FILAMENT_CHANGE_RETRACT_LENGTH) && FILAMENT_CHANGE_RETRACT_LENGTH > 0 | ||||
| @ -7367,6 +7387,7 @@ inline void gcode_M503() { | ||||
| 
 | ||||
|     stepper.synchronize(); | ||||
|     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_UNLOAD); | ||||
|     idle(); | ||||
| 
 | ||||
|     // Unload filament
 | ||||
|     if (code_seen('L')) destination[E_AXIS] += code_value_axis_units(E_AXIS); | ||||
| @ -7384,28 +7405,72 @@ inline void gcode_M503() { | ||||
|     disable_e3(); | ||||
|     delay(100); | ||||
| 
 | ||||
|     #if HAS_BUZZER | ||||
|       millis_t next_buzz = 0; | ||||
|     #endif | ||||
|     millis_t nozzle_timeout = millis() + FILAMENT_CHANGE_NOZZLE_TIMEOUT * 1000L; | ||||
|     bool nozzle_timed_out = false; | ||||
|     float temps[4]; | ||||
| 
 | ||||
|     // Wait for filament insert by user and press button
 | ||||
|     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT); | ||||
| 
 | ||||
|     // LCD click or M108 will clear this
 | ||||
|     wait_for_user = true; | ||||
|     idle(); | ||||
| 
 | ||||
|     wait_for_user = true;    // LCD click or M108 will clear this
 | ||||
|     next_buzz = 0; | ||||
|     runout_beep = 0; | ||||
|     HOTEND_LOOP() temps[e] = thermalManager.target_temperature[e]; // Save nozzle temps
 | ||||
| 
 | ||||
|     while (wait_for_user) { | ||||
|       #if HAS_BUZZER | ||||
|         millis_t ms = millis(); | ||||
|         if (ms >= next_buzz) { | ||||
|           BUZZ(300, 2000); | ||||
|           next_buzz = ms + 2500; // Beep every 2.5s while waiting
 | ||||
|       millis_t current_ms = millis(); | ||||
|       if (nozzle_timed_out) | ||||
|         lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE); | ||||
| 
 | ||||
|       #if HAS_BUZZER  | ||||
|         filament_change_beep(); | ||||
|       #endif | ||||
| 
 | ||||
|       if (current_ms >= nozzle_timeout) { | ||||
|         if (!nozzle_timed_out) { | ||||
|           nozzle_timed_out = true; // on nozzle timeout remember the nozzles need to be reheated
 | ||||
|           HOTEND_LOOP() thermalManager.setTargetHotend(0, e); // Turn off all the nozzles
 | ||||
|           lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE); | ||||
|         } | ||||
|       } | ||||
|       idle(true); | ||||
|     } | ||||
| 
 | ||||
|     if (nozzle_timed_out)      // Turn nozzles back on if they were turned off
 | ||||
|       HOTEND_LOOP() thermalManager.setTargetHotend(temps[e], e); | ||||
| 
 | ||||
|     // Show "wait for heating"
 | ||||
|     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT); | ||||
| 
 | ||||
|     wait_for_heatup = true; | ||||
|     while (wait_for_heatup) { | ||||
|       idle(); | ||||
|       wait_for_heatup = false; | ||||
|       HOTEND_LOOP() { | ||||
|         if (abs(thermalManager.degHotend(e) - temps[e]) > 3) { | ||||
|           wait_for_heatup = true; | ||||
|           break; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     // Show "insert filament"
 | ||||
|     if (nozzle_timed_out) | ||||
|       lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT); | ||||
| 
 | ||||
|     wait_for_user = true;    // LCD click or M108 will clear this
 | ||||
|     next_buzz = 0; | ||||
|     runout_beep = 0; | ||||
|     while (wait_for_user && nozzle_timed_out) { | ||||
|       #if HAS_BUZZER | ||||
|         filament_change_beep(); | ||||
|       #endif | ||||
|       idle(true); | ||||
|     } | ||||
| 
 | ||||
|     // Show load message
 | ||||
|     // Show "load" message
 | ||||
|     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_LOAD); | ||||
| 
 | ||||
|     // Load filament
 | ||||
| @ -7434,8 +7499,6 @@ inline void gcode_M503() { | ||||
| 
 | ||||
|     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_RESUME); | ||||
| 
 | ||||
|     KEEPALIVE_STATE(IN_HANDLER); | ||||
| 
 | ||||
|     // Set extruder to saved position
 | ||||
|     destination[E_AXIS] = current_position[E_AXIS] = lastpos[E_AXIS]; | ||||
|     planner.set_e_position_mm(current_position[E_AXIS]); | ||||
| @ -7459,6 +7522,11 @@ inline void gcode_M503() { | ||||
| 
 | ||||
|     // Show status screen
 | ||||
|     lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_STATUS); | ||||
| 
 | ||||
|     // Resume the print job timer if it was running
 | ||||
|     if (job_running) print_job_timer.start(); | ||||
| 
 | ||||
|     busy_doing_M600 = false;  // Allow Stepper Motors to be turned off during inactivity
 | ||||
|   } | ||||
| 
 | ||||
| #endif // FILAMENT_CHANGE_FEATURE
 | ||||
| @ -10074,7 +10142,14 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) { | ||||
| 
 | ||||
|   if (max_inactive_time && ELAPSED(ms, previous_cmd_ms + max_inactive_time)) kill(PSTR(MSG_KILLED)); | ||||
| 
 | ||||
|   if (stepper_inactive_time && ELAPSED(ms, previous_cmd_ms + stepper_inactive_time) | ||||
|   // Prevent steppers timing-out in the middle of M600
 | ||||
|   #if ENABLED(FILAMENT_CHANGE_FEATURE) && ENABLED(FILAMENT_CHANGE_NO_STEPPER_TIMEOUT) | ||||
|     #define M600_TEST !busy_doing_M600 | ||||
|   #else | ||||
|     #define M600_TEST true | ||||
|   #endif | ||||
|               | ||||
|   if (M600_TEST && stepper_inactive_time && ELAPSED(ms, previous_cmd_ms + stepper_inactive_time) | ||||
|       && !ignore_stepper_queue && !planner.blocks_queued()) { | ||||
|     #if ENABLED(DISABLE_INACTIVE_X) | ||||
|       disable_x(); | ||||
|  | ||||
| @ -31,7 +31,7 @@ | ||||
|   X Font      ascent = 7 descent=-1 | ||||
|   Max Font    ascent = 8 descent=-1 | ||||
| */ | ||||
| #include "U8glib.h" | ||||
| #include <U8glib.h> | ||||
| const u8g_fntpgm_uint8_t ISO10646_TR[2591] U8G_SECTION(".progmem.ISO10646_TR") = { | ||||
|   0,6,9,0,254,7,1,146,3,33,32,255,255,8,255,7, | ||||
|   255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128, | ||||
|  | ||||
| @ -217,6 +217,10 @@ void Endstops::M119() { | ||||
|     SERIAL_PROTOCOLPGM(MSG_Z_PROBE); | ||||
|     SERIAL_PROTOCOLLN(((READ(Z_MIN_PROBE_PIN)^Z_MIN_PROBE_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); | ||||
|   #endif | ||||
|   #if ENABLED(FILAMENT_RUNOUT_SENSOR) | ||||
|     SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR); | ||||
|     SERIAL_PROTOCOLLN(((READ(FIL_RUNOUT_PIN)^FIL_RUNOUT_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); | ||||
|   #endif | ||||
| } // Endstops::M119
 | ||||
| 
 | ||||
| #if ENABLED(Z_DUAL_ENDSTOPS) | ||||
|  | ||||
| @ -143,7 +143,9 @@ enum TempState { | ||||
|       FILAMENT_CHANGE_MESSAGE_EXTRUDE, | ||||
|       FILAMENT_CHANGE_MESSAGE_OPTION, | ||||
|       FILAMENT_CHANGE_MESSAGE_RESUME, | ||||
|       FILAMENT_CHANGE_MESSAGE_STATUS | ||||
|       FILAMENT_CHANGE_MESSAGE_STATUS, | ||||
|       FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE, | ||||
|       FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT | ||||
|     }; | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| @ -695,33 +695,42 @@ | ||||
|   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
 | ||||
| #endif | ||||
| 
 | ||||
| // Add support for experimental filament exchange support M600; requires display
 | ||||
| #if ENABLED(ULTIPANEL) | ||||
|   // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
 | ||||
|   #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|     #define FILAMENT_CHANGE_X_POS 30            // X position of hotend
 | ||||
|     #define FILAMENT_CHANGE_Y_POS 10            // Y position of hotend
 | ||||
|     #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
 | ||||
|     #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
 | ||||
|     #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
 | ||||
|     #define FILAMENT_CHANGE_RETRACT_LENGTH 1    // Initial retract in mm
 | ||||
|                                                 // It is a short retract used immediately after print interrupt before move to filament exchange position
 | ||||
|     #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
 | ||||
|     //#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
 | ||||
|                                                 // Longer length for bowden printers to unload filament from whole bowden tube,
 | ||||
|                                                 // shorter lenght for printers without bowden to unload filament from extruder only,
 | ||||
|                                                 // 0 to disable unloading for manual unloading
 | ||||
|     #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
 | ||||
|     #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                                 // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                                 // Short or zero length for printers without bowden where loading is not used
 | ||||
|     #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|     #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                                 // 0 to disable for manual extrusion
 | ||||
|                                                 // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                                 // or until outcoming filament color is not clear for filament color change
 | ||||
|     #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #endif | ||||
| /**
 | ||||
|  * Filament Change | ||||
|  * Experimental filament change support. | ||||
|  * Adds the GCode M600 for initiating filament change. | ||||
|  * | ||||
|  * Requires an LCD display. | ||||
|  * This feature is required for the default FILAMENT_RUNOUT_SCRIPT. | ||||
|  */ | ||||
| //#define FILAMENT_CHANGE_FEATURE
 | ||||
| #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|   #define FILAMENT_CHANGE_X_POS 30            // X position of hotend
 | ||||
|   #define FILAMENT_CHANGE_Y_POS 10            // Y position of hotend
 | ||||
|   #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
 | ||||
|   #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
 | ||||
|   #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
 | ||||
|   #define FILAMENT_CHANGE_RETRACT_LENGTH 1    // Initial retract in mm
 | ||||
|                                               // It is a short retract used immediately after print interrupt before move to filament exchange position
 | ||||
|   #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
 | ||||
|   //#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
 | ||||
|                                               // Longer length for bowden printers to unload filament from whole bowden tube,
 | ||||
|                                               // shorter lenght for printers without bowden to unload filament from extruder only,
 | ||||
|                                               // 0 to disable unloading for manual unloading
 | ||||
|   #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -721,12 +721,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -721,12 +721,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -704,12 +704,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -708,33 +708,42 @@ | ||||
|   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
 | ||||
| #endif | ||||
| 
 | ||||
| // Add support for experimental filament exchange support M600; requires display
 | ||||
| #if ENABLED(ULTIPANEL) | ||||
|   #define FILAMENT_CHANGE_FEATURE               // Enable filament exchange menu and M600 g-code (used for runout sensor too)
 | ||||
|   #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|     #define FILAMENT_CHANGE_X_POS (X_MAX_POS-3) // X position of hotend
 | ||||
|     #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
 | ||||
|     #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
 | ||||
|     #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
 | ||||
|     #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
 | ||||
|     #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
 | ||||
|                                                 // It is a short retract used immediately after print interrupt before move to filament exchange position
 | ||||
|     #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
 | ||||
|     #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
 | ||||
|                                                 // Longer length for bowden printers to unload filament from whole bowden tube,
 | ||||
|                                                 // shorter lenght for printers without bowden to unload filament from extruder only,
 | ||||
|                                                 // 0 to disable unloading for manual unloading
 | ||||
|     #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
 | ||||
|     #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                                 // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                                 // Short or zero length for printers without bowden where loading is not used
 | ||||
|     #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|     #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                                 // 0 to disable for manual extrusion
 | ||||
|                                                 // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                                 // or until outcoming filament color is not clear for filament color change
 | ||||
|     #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #endif | ||||
| /**
 | ||||
|  * Filament Change | ||||
|  * Experimental filament change support. | ||||
|  * Adds the GCode M600 for initiating filament change. | ||||
|  * | ||||
|  * Requires an LCD display. | ||||
|  * This feature is required for the default FILAMENT_RUNOUT_SCRIPT. | ||||
|  */ | ||||
| //#define FILAMENT_CHANGE_FEATURE
 | ||||
| #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|   #define FILAMENT_CHANGE_X_POS (X_MAX_POS-3) // X position of hotend
 | ||||
|   #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
 | ||||
|   #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
 | ||||
|   #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
 | ||||
|   #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
 | ||||
|   #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
 | ||||
|                                               // It is a short retract used immediately after print interrupt before move to filament exchange position
 | ||||
|   #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
 | ||||
|   #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
 | ||||
|                                               // Longer length for bowden printers to unload filament from whole bowden tube,
 | ||||
|                                               // shorter lenght for printers without bowden to unload filament from extruder only,
 | ||||
|                                               // 0 to disable unloading for manual unloading
 | ||||
|   #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -695,33 +695,42 @@ | ||||
|   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
 | ||||
| #endif | ||||
| 
 | ||||
| // Add support for experimental filament exchange support M600; requires display
 | ||||
| #if ENABLED(ULTIPANEL) | ||||
|   #define FILAMENT_CHANGE_FEATURE               // Enable filament exchange menu and M600 g-code (used for runout sensor too)
 | ||||
|   #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|     #define FILAMENT_CHANGE_X_POS 100           // X position of hotend
 | ||||
|     #define FILAMENT_CHANGE_Y_POS 100           // Y position of hotend
 | ||||
|     #define FILAMENT_CHANGE_Z_ADD 20            // Z addition of hotend (lift)
 | ||||
|     #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
 | ||||
|     #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
 | ||||
|     #define FILAMENT_CHANGE_RETRACT_LENGTH 5    // Initial retract in mm
 | ||||
|                                                 // It is a short retract used immediately after print interrupt before move to filament exchange position
 | ||||
|     #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
 | ||||
|     #define FILAMENT_CHANGE_UNLOAD_LENGTH 600   // Unload filament length from hotend in mm
 | ||||
|                                                 // Longer length for bowden printers to unload filament from whole bowden tube,
 | ||||
|                                                 // shorter lenght for printers without bowden to unload filament from extruder only,
 | ||||
|                                                 // 0 to disable unloading for manual unloading
 | ||||
|     #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
 | ||||
|     #define FILAMENT_CHANGE_LOAD_LENGTH 600     // Load filament length over hotend in mm
 | ||||
|                                                 // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                                 // Short or zero length for printers without bowden where loading is not used
 | ||||
|     #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|     #define FILAMENT_CHANGE_EXTRUDE_LENGTH 100  // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                                 // 0 to disable for manual extrusion
 | ||||
|                                                 // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                                 // or until outcoming filament color is not clear for filament color change
 | ||||
|     #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #endif | ||||
| /**
 | ||||
|  * Filament Change | ||||
|  * Experimental filament change support. | ||||
|  * Adds the GCode M600 for initiating filament change. | ||||
|  * | ||||
|  * Requires an LCD display. | ||||
|  * This feature is required for the default FILAMENT_RUNOUT_SCRIPT. | ||||
|  */ | ||||
| //#define FILAMENT_CHANGE_FEATURE
 | ||||
| #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|   #define FILAMENT_CHANGE_X_POS 100           // X position of hotend
 | ||||
|   #define FILAMENT_CHANGE_Y_POS 100           // Y position of hotend
 | ||||
|   #define FILAMENT_CHANGE_Z_ADD 20            // Z addition of hotend (lift)
 | ||||
|   #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
 | ||||
|   #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
 | ||||
|   #define FILAMENT_CHANGE_RETRACT_LENGTH 5    // Initial retract in mm
 | ||||
|                                               // It is a short retract used immediately after print interrupt before move to filament exchange position
 | ||||
|   #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
 | ||||
|   #define FILAMENT_CHANGE_UNLOAD_LENGTH 600   // Unload filament length from hotend in mm
 | ||||
|                                               // Longer length for bowden printers to unload filament from whole bowden tube,
 | ||||
|                                               // shorter lenght for printers without bowden to unload filament from extruder only,
 | ||||
|                                               // 0 to disable unloading for manual unloading
 | ||||
|   #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 100  // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -721,12 +721,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -721,12 +721,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -703,33 +703,42 @@ | ||||
|   #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
 | ||||
| #endif | ||||
| 
 | ||||
| // Add support for experimental filament exchange support M600; requires display
 | ||||
| #if ENABLED(ULTIPANEL) | ||||
|   #define FILAMENT_CHANGE_FEATURE               // Enable filament exchange menu and M600 g-code (used for runout sensor too)
 | ||||
|   #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|     #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
 | ||||
|     #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
 | ||||
|     #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
 | ||||
|     #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
 | ||||
|     #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
 | ||||
|     #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
 | ||||
|                                                 // It is a short retract used immediately after print interrupt before move to filament exchange position
 | ||||
|     #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
 | ||||
|     #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
 | ||||
|                                                 // Longer length for bowden printers to unload filament from whole bowden tube,
 | ||||
|                                                 // shorter lenght for printers without bowden to unload filament from extruder only,
 | ||||
|                                                 // 0 to disable unloading for manual unloading
 | ||||
|     #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
 | ||||
|     #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                                 // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                                 // Short or zero length for printers without bowden where loading is not used
 | ||||
|     #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|     #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                                 // 0 to disable for manual extrusion
 | ||||
|                                                 // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                                 // or until outcoming filament color is not clear for filament color change
 | ||||
|     #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #endif | ||||
| /**
 | ||||
|  * Filament Change | ||||
|  * Experimental filament change support. | ||||
|  * Adds the GCode M600 for initiating filament change. | ||||
|  * | ||||
|  * Requires an LCD display. | ||||
|  * This feature is required for the default FILAMENT_RUNOUT_SCRIPT. | ||||
|  */ | ||||
| //#define FILAMENT_CHANGE_FEATURE
 | ||||
| #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|   #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
 | ||||
|   #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
 | ||||
|   #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
 | ||||
|   #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
 | ||||
|   #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
 | ||||
|   #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
 | ||||
|                                               // It is a short retract used immediately after print interrupt before move to filament exchange position
 | ||||
|   #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
 | ||||
|   #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
 | ||||
|                                               // Longer length for bowden printers to unload filament from whole bowden tube,
 | ||||
|                                               // shorter lenght for printers without bowden to unload filament from extruder only,
 | ||||
|                                               // 0 to disable unloading for manual unloading
 | ||||
|   #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -721,12 +721,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -723,12 +723,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -723,12 +723,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -728,12 +728,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -723,12 +723,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -721,12 +721,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -721,12 +721,16 @@ | ||||
|   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
 | ||||
|                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
 | ||||
|                                               // Short or zero length for printers without bowden where loading is not used
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
 | ||||
|                                               // 0 to disable for manual extrusion
 | ||||
|                                               // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
 | ||||
|                                               // or until outcoming filament color is not clear for filament color change
 | ||||
|   #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
 | ||||
|   #define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45L  // Turn off nozzle if user doesn't change filament within this time limit in seconds
 | ||||
|   #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS  5L  // Number of alert beeps before printer goes quiet
 | ||||
|   #define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT         // Enable to have stepper motors hold position during filament change
 | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
 | ||||
| #endif | ||||
| 
 | ||||
| /******************************************************************************\
 | ||||
|  | ||||
| @ -152,6 +152,7 @@ | ||||
| #define MSG_Z2_MIN                          "z2_min: " | ||||
| #define MSG_Z2_MAX                          "z2_max: " | ||||
| #define MSG_Z_PROBE                         "z_probe: " | ||||
| #define MSG_FILAMENT_RUNOUT_SENSOR          "filament: " | ||||
| #define MSG_ERR_MATERIAL_INDEX              "M145 S<index> out of range (0-1)" | ||||
| #define MSG_ERR_M355_NONE                   "No case light" | ||||
| #define MSG_ERR_M421_PARAMETERS             "M421 required parameters missing" | ||||
|  | ||||
| @ -33,6 +33,9 @@ | ||||
| #ifndef WELCOME_MSG | ||||
|   #define WELCOME_MSG                         MACHINE_NAME _UxGT(" ready.") | ||||
| #endif | ||||
| #ifndef MSG_BACK | ||||
|   #define MSG_BACK                            _UxGT("Back") | ||||
| #endif | ||||
| #ifndef MSG_SD_INSERTED | ||||
|   #define MSG_SD_INSERTED                     _UxGT("Card inserted") | ||||
| #endif | ||||
| @ -486,7 +489,6 @@ | ||||
| #ifndef MSG_DELTA_CALIBRATE_CENTER | ||||
|   #define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrate Center") | ||||
| #endif | ||||
| 
 | ||||
| #ifndef MSG_INFO_MENU | ||||
|   #define MSG_INFO_MENU                       _UxGT("About Printer") | ||||
| #endif | ||||
| @ -583,6 +585,12 @@ | ||||
| #ifndef MSG_FILAMENT_CHANGE_OPTION_RESUME | ||||
|   #define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Resume print") | ||||
| #endif | ||||
| #ifndef MSG_FILAMENT_CHANGE_MINTEMP | ||||
|   #define MSG_FILAMENT_CHANGE_MINTEMP         _UxGT("Minimum Temp is ") | ||||
| #endif | ||||
| #ifndef MSG_FILAMENT_CHANGE_NOZZLE | ||||
|   #define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Nozzle: ") | ||||
| #endif | ||||
| 
 | ||||
| //
 | ||||
| // Filament Change screens show up to 3 lines on a 4-line display
 | ||||
| @ -603,6 +611,14 @@ | ||||
|     #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("and press button") | ||||
|     #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("to continue...") | ||||
|   #endif | ||||
|   #ifndef MSG_FILAMENT_CHANGE_HEAT_1 | ||||
|     #define MSG_FILAMENT_CHANGE_HEAT_1          _UxGT("Press button to") | ||||
|     #define MSG_FILAMENT_CHANGE_HEAT_2          _UxGT("heat nozzle.") | ||||
|   #endif | ||||
|   #ifndef MSG_FILAMENT_CHANGE_HEATING_1 | ||||
|     #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Heating nozzle") | ||||
|     #define MSG_FILAMENT_CHANGE_HEATING_2       _UxGT("Please wait...") | ||||
|   #endif | ||||
|   #ifndef MSG_FILAMENT_CHANGE_LOAD_1 | ||||
|     #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Wait for") | ||||
|     #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("filament load") | ||||
| @ -625,6 +641,9 @@ | ||||
|   #ifndef MSG_FILAMENT_CHANGE_INSERT_1 | ||||
|     #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Insert and Click") | ||||
|   #endif | ||||
|   #ifndef MSG_FILAMENT_CHANGE_HEATING_1 | ||||
|     #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Heating...") | ||||
|   #endif | ||||
|   #ifndef MSG_FILAMENT_CHANGE_LOAD_1 | ||||
|     #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Loading...") | ||||
|   #endif | ||||
|  | ||||
| @ -54,6 +54,7 @@ char lcd_status_message[3 * (LCD_WIDTH) + 1] = WELCOME_MSG; // worst case is kan | ||||
| 
 | ||||
| #if ENABLED(DOGLCD) | ||||
|   #include "ultralcd_impl_DOGM.h" | ||||
|   #include <U8glib.h> | ||||
| #else | ||||
|   #include "ultralcd_impl_HD44780.h" | ||||
| #endif | ||||
| @ -151,6 +152,7 @@ uint16_t max_display_update_time = 0; | ||||
|     void lcd_filament_change_unload_message(); | ||||
|     void lcd_filament_change_insert_message(); | ||||
|     void lcd_filament_change_load_message(); | ||||
|     void lcd_filament_change_heat_nozzle(); | ||||
|     void lcd_filament_change_extrude_message(); | ||||
|     void lcd_filament_change_resume_message(); | ||||
|   #endif | ||||
| @ -948,7 +950,8 @@ void kill_screen(const char* lcd_msg) { | ||||
|     // Change filament
 | ||||
|     //
 | ||||
|     #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|        MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); | ||||
|       if (!thermalManager.tooColdToExtrude(active_extruder)) | ||||
|         MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); | ||||
|     #endif | ||||
| 
 | ||||
|     END_MENU(); | ||||
| @ -1384,11 +1387,13 @@ KeepDrawing: | ||||
|         MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_material1_hotend0); | ||||
|         MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_material2_hotend0); | ||||
|       #endif | ||||
| 
 | ||||
|       //
 | ||||
|       // Change filament
 | ||||
|       //
 | ||||
|       #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
|         MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); | ||||
|         if (!thermalManager.tooColdToExtrude(active_extruder)) | ||||
|           MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change); | ||||
|       #endif | ||||
|     #endif | ||||
| 
 | ||||
| @ -2441,11 +2446,21 @@ KeepDrawing: | ||||
|     } | ||||
|   #endif // LCD_INFO_MENU
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * | ||||
|    * Filament Change Feature Screens | ||||
|    * | ||||
|    */ | ||||
|   #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||
| 
 | ||||
|     void lcd_filament_change_toocold_menu() { | ||||
|       START_MENU(); | ||||
|       STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true); | ||||
|       MENU_BACK(MSG_FILAMENTCHANGE); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false); | ||||
|       MENU_BACK(MSG_BACK); | ||||
|       STATIC_ITEM(" "); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | ||||
|       lcd_implementation_hotend_status(); | ||||
|       END_MENU(); | ||||
|     } | ||||
| 
 | ||||
| @ -2478,6 +2493,8 @@ KeepDrawing: | ||||
|       #ifdef MSG_FILAMENT_CHANGE_INIT_3 | ||||
|         STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_3); | ||||
|       #endif | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | ||||
|       lcd_implementation_hotend_status(); | ||||
|       END_SCREEN(); | ||||
|     } | ||||
| 
 | ||||
| @ -2491,6 +2508,35 @@ KeepDrawing: | ||||
|       #ifdef MSG_FILAMENT_CHANGE_UNLOAD_3 | ||||
|         STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_3); | ||||
|       #endif | ||||
|       STATIC_ITEM (" "); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | ||||
|       lcd_implementation_hotend_status(); | ||||
|       END_SCREEN(); | ||||
|     } | ||||
| 
 | ||||
|     void lcd_filament_change_wait_for_nozzles_to_heat() { | ||||
|       START_SCREEN(); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1); | ||||
|       #ifdef MSG_FILAMENT_CHANGE_HEATING_2 | ||||
|         STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_2); | ||||
|       #endif | ||||
|       STATIC_ITEM(" "); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | ||||
|       lcd_implementation_hotend_status(); | ||||
|       END_SCREEN(); | ||||
|     } | ||||
| 
 | ||||
|     void lcd_filament_change_heat_nozzle() { | ||||
|       START_SCREEN(); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1); | ||||
|       #ifdef MSG_FILAMENT_CHANGE_INSERT_2 | ||||
|         STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_2); | ||||
|       #endif | ||||
|       STATIC_ITEM(" "); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | ||||
|       lcd_implementation_hotend_status(); | ||||
|       END_SCREEN(); | ||||
|     } | ||||
| 
 | ||||
| @ -2504,6 +2550,8 @@ KeepDrawing: | ||||
|       #ifdef MSG_FILAMENT_CHANGE_INSERT_3 | ||||
|         STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_3); | ||||
|       #endif | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | ||||
|       lcd_implementation_hotend_status(); | ||||
|       END_SCREEN(); | ||||
|     } | ||||
| 
 | ||||
| @ -2517,6 +2565,9 @@ KeepDrawing: | ||||
|       #ifdef MSG_FILAMENT_CHANGE_LOAD_3 | ||||
|         STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_3); | ||||
|       #endif | ||||
|       STATIC_ITEM(" "); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | ||||
|       lcd_implementation_hotend_status(); | ||||
|       END_SCREEN(); | ||||
|     } | ||||
| 
 | ||||
| @ -2530,6 +2581,9 @@ KeepDrawing: | ||||
|       #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3 | ||||
|         STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3); | ||||
|       #endif | ||||
|       STATIC_ITEM(" "); | ||||
|       STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true); | ||||
|       lcd_implementation_hotend_status(); | ||||
|       END_SCREEN(); | ||||
|     } | ||||
| 
 | ||||
| @ -2564,6 +2618,12 @@ KeepDrawing: | ||||
|         case FILAMENT_CHANGE_MESSAGE_EXTRUDE: | ||||
|           lcd_goto_screen(lcd_filament_change_extrude_message); | ||||
|           break; | ||||
|         case FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE: | ||||
|           lcd_goto_screen(lcd_filament_change_heat_nozzle); | ||||
|           break; | ||||
|         case FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT: | ||||
|           lcd_goto_screen(lcd_filament_change_wait_for_nozzles_to_heat); | ||||
|           break; | ||||
|         case FILAMENT_CHANGE_MESSAGE_OPTION: | ||||
|           filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_WAIT_FOR; | ||||
|           lcd_goto_screen(lcd_filament_change_option_menu); | ||||
|  | ||||
| @ -379,6 +379,17 @@ FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr, | ||||
| 
 | ||||
| //#define DOGM_SD_PERCENT
 | ||||
| 
 | ||||
| 
 | ||||
| static void lcd_implementation_hotend_status() { | ||||
|   u8g.setPrintPos(58, 60); | ||||
|   lcd_print((char)('0' + active_extruder)); | ||||
|   lcd_print(' '); | ||||
|   lcd_print(' '); | ||||
|   lcd_print(itostr3(thermalManager.degHotend(active_extruder))); | ||||
|   lcd_print('/'); | ||||
|   lcd_print(itostr3(thermalManager.degTargetHotend(active_extruder))); | ||||
| } | ||||
| 
 | ||||
| static void lcd_implementation_status_screen() { | ||||
| 
 | ||||
|   bool blink = lcd_blink(); | ||||
|  | ||||
| @ -592,6 +592,14 @@ FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr, | ||||
| 
 | ||||
| #endif // LCD_PROGRESS_BAR
 | ||||
| 
 | ||||
| static void lcd_implementation_hotend_status() { | ||||
|   lcd.setCursor(10, 3); | ||||
|   lcd.print(LCD_STR_THERMOMETER[active_extruder]); | ||||
|   lcd.print(itostr3(thermalManager.degHotend(active_extruder))); | ||||
|   lcd.print('/'); | ||||
|   lcd.print(itostr3(thermalManager.degTargetHotend(active_extruder))); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
| Possible status screens: | ||||
| 16x2   |000/000 B000/000| | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user