diff --git a/.travis.yml b/.travis.yml
index fc51921a0e..4cb03f69ed 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -122,7 +122,7 @@ script:
- opt_enable ULTIMAKERCONTROLLER SDSUPPORT
- opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PCA9632 USE_XMAX_PLUG
- opt_enable_adv BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS
- - opt_enable_adv ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE LCD_INFO_MENU M114_DETAIL
+ - opt_enable_adv ADVANCED_PAUSE_FEATURE FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE LCD_INFO_MENU M114_DETAIL
- opt_set_adv PWM_MOTOR_CURRENT {1300,1300,1250}
- opt_set_adv I2C_SLAVE_ADDRESS 63
- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index 764d757444..8cc0eb4b33 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index a12cbdb25b..b801281dd6 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -191,10 +191,6 @@ volatile bool wait_for_heatup = true;
millis_t max_inactive_time = 0,
stepper_inactive_time = (DEFAULT_STEPPER_DEACTIVE_TIME) * 1000UL;
-#if ENABLED(ADVANCED_PAUSE_FEATURE)
- AdvancedPauseMenuResponse advanced_pause_menu_response;
-#endif
-
#ifdef CHDK
millis_t chdkHigh = 0;
bool chdkActive = false;
@@ -308,6 +304,16 @@ void disable_e_steppers() {
disable_E4();
}
+void disable_e_stepper(const uint8_t e) {
+ switch (e) {
+ case 0: disable_E0(); break;
+ case 1: disable_E1(); break;
+ case 2: disable_E2(); break;
+ case 3: disable_E3(); break;
+ case 4: disable_E4(); break;
+ }
+}
+
void disable_all_steppers() {
disable_X();
disable_Y();
diff --git a/Marlin/src/Marlin.h b/Marlin/src/Marlin.h
index a1b6741b95..3f1ad93576 100644
--- a/Marlin/src/Marlin.h
+++ b/Marlin/src/Marlin.h
@@ -159,6 +159,7 @@ void manage_inactivity(bool ignore_stepper_queue = false);
#define _AXIS(AXIS) AXIS ##_AXIS
void enable_all_steppers();
+void disable_e_stepper(const uint8_t e);
void disable_e_steppers();
void disable_all_steppers();
@@ -198,15 +199,6 @@ extern millis_t max_inactive_time, stepper_inactive_time;
#endif
#endif
-#if ENABLED(ADVANCED_PAUSE_FEATURE)
- enum AdvancedPauseMenuResponse {
- ADVANCED_PAUSE_RESPONSE_WAIT_FOR,
- ADVANCED_PAUSE_RESPONSE_EXTRUDE_MORE,
- ADVANCED_PAUSE_RESPONSE_RESUME_PRINT
- };
- extern AdvancedPauseMenuResponse advanced_pause_menu_response;
-#endif
-
#if ENABLED(PID_EXTRUSION_SCALING)
extern int lpq_len;
#endif
diff --git a/Marlin/src/config/default/Configuration_adv.h b/Marlin/src/config/default/Configuration_adv.h
index 764d757444..8cc0eb4b33 100644
--- a/Marlin/src/config/default/Configuration_adv.h
+++ b/Marlin/src/config/default/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h b/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h
index 105af2e6a3..c5a67c631b 100644
--- a/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h
+++ b/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Anet/A6/Configuration_adv.h b/Marlin/src/config/examples/Anet/A6/Configuration_adv.h
index ecd077f91f..f0ddf90ee9 100644
--- a/Marlin/src/config/examples/Anet/A6/Configuration_adv.h
+++ b/Marlin/src/config/examples/Anet/A6/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Anet/A8/Configuration_adv.h b/Marlin/src/config/examples/Anet/A8/Configuration_adv.h
index e2ba07cfbe..1838306ddd 100644
--- a/Marlin/src/config/examples/Anet/A8/Configuration_adv.h
+++ b/Marlin/src/config/examples/Anet/A8/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h b/Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h
index fd9fc98d6a..cd8f881623 100644
--- a/Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h
+++ b/Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h
@@ -882,29 +882,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h b/Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h
index b43e859d1e..60a4898bfa 100644
--- a/Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h
+++ b/Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h b/Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h
index 0d72b1f111..dcd4a6c185 100644
--- a/Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h
+++ b/Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h b/Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h
index b43e859d1e..60a4898bfa 100644
--- a/Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h
+++ b/Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Cartesio/Configuration_adv.h b/Marlin/src/config/examples/Cartesio/Configuration_adv.h
index 0a1744c73b..8db2403c57 100644
--- a/Marlin/src/config/examples/Cartesio/Configuration_adv.h
+++ b/Marlin/src/config/examples/Cartesio/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- //#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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 1 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ //#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h b/Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h
index 4ce49210ea..a5f35d1094 100644
--- a/Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h
+++ b/Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_RETRACT_LENGTH 4 // Initial retract in mm
- // It is a short retract used immediately after print interrupt before move to filament exchange position
- #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #define FILAMENT_CHANGE_UNLOAD_LENGTH 420 // Unload filament length from hotend in mm
- // Longer length for bowden printers to unload filament from whole bowden tube,
- // shorter length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 8 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 120 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 3 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- #define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 4 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 420 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 8 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 120 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 6 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Felix/Configuration_adv.h b/Marlin/src/config/examples/Felix/Configuration_adv.h
index 160680b7f4..e934e694e0 100644
--- a/Marlin/src/config/examples/Felix/Configuration_adv.h
+++ b/Marlin/src/config/examples/Felix/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h b/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h
index ff22a2c12c..b368ecd8ba 100644
--- a/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h
+++ b/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- #define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h b/Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h
index 1e8dbd7ae0..0adb8d0e63 100644
--- a/Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h
+++ b/Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/MakerParts/Configuration_adv.h b/Marlin/src/config/examples/MakerParts/Configuration_adv.h
index a38dbc5016..21b2fc2d09 100644
--- a/Marlin/src/config/examples/MakerParts/Configuration_adv.h
+++ b/Marlin/src/config/examples/MakerParts/Configuration_adv.h
@@ -882,29 +882,38 @@
*/
#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Malyan/M150/Configuration_adv.h b/Marlin/src/config/examples/Malyan/M150/Configuration_adv.h
index 0493f1acb2..650f7b0a5b 100644
--- a/Marlin/src/config/examples/Malyan/M150/Configuration_adv.h
+++ b/Marlin/src/config/examples/Malyan/M150/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Malyan/M200/Configuration_adv.h b/Marlin/src/config/examples/Malyan/M200/Configuration_adv.h
index 940e7abd23..403d8e7a8f 100644
--- a/Marlin/src/config/examples/Malyan/M200/Configuration_adv.h
+++ b/Marlin/src/config/examples/Malyan/M200/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h b/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h
index 52e3d90ca9..d2c3e4c1c5 100644
--- a/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h
+++ b/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h
@@ -882,29 +882,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h b/Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h
index fe780a7f41..e5b7ee9932 100644
--- a/Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h
+++ b/Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h
@@ -889,29 +889,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/RigidBot/Configuration_adv.h b/Marlin/src/config/examples/RigidBot/Configuration_adv.h
index 601304837d..b8e965c93f 100644
--- a/Marlin/src/config/examples/RigidBot/Configuration_adv.h
+++ b/Marlin/src/config/examples/RigidBot/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/SCARA/Configuration_adv.h b/Marlin/src/config/examples/SCARA/Configuration_adv.h
index 7cde50813b..8b4b2b70e0 100644
--- a/Marlin/src/config/examples/SCARA/Configuration_adv.h
+++ b/Marlin/src/config/examples/SCARA/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Sanguinololu/Configuration_adv.h b/Marlin/src/config/examples/Sanguinololu/Configuration_adv.h
index 0c7bda0b54..59d37dc30d 100644
--- a/Marlin/src/config/examples/Sanguinololu/Configuration_adv.h
+++ b/Marlin/src/config/examples/Sanguinololu/Configuration_adv.h
@@ -870,29 +870,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/TinyBoy2/Configuration_adv.h b/Marlin/src/config/examples/TinyBoy2/Configuration_adv.h
index d2d510af41..b6f27505af 100644
--- a/Marlin/src/config/examples/TinyBoy2/Configuration_adv.h
+++ b/Marlin/src/config/examples/TinyBoy2/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h b/Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h
index 4bc5461465..57575d34c8 100644
--- a/Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h
+++ b/Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h b/Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h
index e917e269b5..c18525912d 100644
--- a/Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h
+++ b/Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h
@@ -892,29 +892,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h b/Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h
index fc82be6b8b..bcf3e2b4c8 100644
--- a/Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h
+++ b/Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 100 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 5 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 600 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 100 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h b/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
index 3e2907c531..1755cc571e 100644
--- a/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
+++ b/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
@@ -883,29 +883,38 @@
*/
#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h b/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
index c618be4f7b..cc4afd923e 100644
--- a/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
@@ -883,29 +883,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h b/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
index 5e57ed5113..83bde0e19e 100644
--- a/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
@@ -883,29 +883,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/delta/generic/Configuration_adv.h b/Marlin/src/config/examples/delta/generic/Configuration_adv.h
index 5e57ed5113..83bde0e19e 100644
--- a/Marlin/src/config/examples/delta/generic/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/generic/Configuration_adv.h
@@ -883,29 +883,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h b/Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h
index 5e57ed5113..83bde0e19e 100644
--- a/Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h
@@ -883,29 +883,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h b/Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h
index fa16d39df0..4543129674 100644
--- a/Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h
@@ -888,29 +888,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h b/Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h
index 00ed77d661..18602a3ed6 100644
--- a/Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h
+++ b/Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h
@@ -883,29 +883,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h b/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h
index 68838786ec..1a012652e3 100644
--- a/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h
+++ b/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- #define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/makibox/Configuration_adv.h b/Marlin/src/config/examples/makibox/Configuration_adv.h
index 0bbbcb2321..a3b327a607 100644
--- a/Marlin/src/config/examples/makibox/Configuration_adv.h
+++ b/Marlin/src/config/examples/makibox/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h b/Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h
index 180667ac5a..a22b44a921 100644
--- a/Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h
+++ b/Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h
@@ -881,29 +881,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/config/examples/wt150/Configuration_adv.h b/Marlin/src/config/examples/wt150/Configuration_adv.h
index 483e0418bd..3ac5a05292 100644
--- a/Marlin/src/config/examples/wt150/Configuration_adv.h
+++ b/Marlin/src/config/examples/wt150/Configuration_adv.h
@@ -882,29 +882,38 @@
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
- #define PAUSE_PARK_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_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
- #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 length for printers without bowden to unload filament from extruder only,
- // 0 to disable unloading for manual unloading
- #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // Load filament feedrate in mm/s - filament loading into the bowden tube 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 ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
- #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded 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 PAUSE_PARK_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
- #define FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
- #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
- // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
- //#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ #define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
// @section tmc
diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h
index 49f78c4047..8cd650b05e 100644
--- a/Marlin/src/core/language.h
+++ b/Marlin/src/core/language.h
@@ -205,7 +205,15 @@
#define MSG_ENDSTOPS_HIT "endstops hit: "
#define MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented"
#define MSG_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented"
-#define MSG_TOO_COLD_FOR_M600 "M600 Hotend too cold to change filament"
+#define MSG_HOTEND_TOO_COLD "Hotend too cold"
+
+#define MSG_FILAMENT_CHANGE_HEAT "Press button (or M108) to heat nozzle"
+#define MSG_FILAMENT_CHANGE_HEAT_LCD "Press button to heat nozzle"
+#define MSG_FILAMENT_CHANGE_HEAT_M108 "Send M108 to heat nozzle"
+#define MSG_FILAMENT_CHANGE_INSERT "Insert filament and press button (or M108)"
+#define MSG_FILAMENT_CHANGE_INSERT_LCD "Insert filament and press button"
+#define MSG_FILAMENT_CHANGE_INSERT_M108 "Insert filament and send M108"
+
#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure"
#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!"
diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp
index ccdeb429dd..43244acbc9 100644
--- a/Marlin/src/feature/pause.cpp
+++ b/Marlin/src/feature/pause.cpp
@@ -27,7 +27,7 @@
#include "../inc/MarlinConfig.h"
-#if ENABLED(ADVANCED_PAUSE_FEATURE) || ENABLED(PARK_HEAD_ON_PAUSE)
+#if ENABLED(ADVANCED_PAUSE_FEATURE)
#include "../Marlin.h"
#include "../gcode/gcode.h"
@@ -56,6 +56,11 @@
static float resume_position[XYZE];
+AdvancedPauseMenuResponse advanced_pause_menu_response;
+
+float filament_change_unload_length[EXTRUDERS],
+ filament_change_load_length[EXTRUDERS];
+
#if ENABLED(SDSUPPORT)
#include "../sd/cardreader.h"
#endif
@@ -70,68 +75,197 @@ static float resume_position[XYZE];
const millis_t ms = millis();
if (ELAPSED(ms, next_buzz)) {
if (max_beep_count < 0 || runout_beep < max_beep_count + 5) { // Only beep as long as we're supposed to
- next_buzz = ms + ((max_beep_count < 0 || runout_beep < max_beep_count) ? 2500 : 400);
- BUZZ(300, 2000);
+ next_buzz = ms + ((max_beep_count < 0 || runout_beep < max_beep_count) ? 1000 : 500);
+ BUZZ(50, 880 - (runout_beep & 1) * 220);
runout_beep++;
}
}
}
#endif
-static void ensure_safe_temperature() {
- bool heaters_heating = true;
+static bool ensure_safe_temperature(const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_PAUSE_PRINT) {
- wait_for_heatup = true; // M108 will clear this
- while (wait_for_heatup && heaters_heating) {
- idle();
- heaters_heating = false;
- HOTEND_LOOP() {
- if (thermalManager.degTargetHotend(e) && abs(thermalManager.degHotend(e) - thermalManager.degTargetHotend(e)) > TEMP_HYSTERESIS) {
- heaters_heating = true;
- #if ENABLED(ULTIPANEL)
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT);
- #endif
- break;
- }
+ #if ENABLED(PREVENT_COLD_EXTRUSION)
+ if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(active_extruder)) {
+ SERIAL_ERROR_START();
+ SERIAL_ERRORLNPGM(MSG_HOTEND_TOO_COLD);
+ return false;
}
- }
+ #endif
+
+ #if ENABLED(ULTIPANEL)
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT, mode);
+ #else
+ UNUSED(mode);
+ #endif
+
+ wait_for_heatup = true; // M108 will clear this
+ while (wait_for_heatup && thermalManager.wait_for_heating(active_extruder)) idle();
+ const bool status = wait_for_heatup;
+ wait_for_heatup = false;
+
+ return status;
}
-void do_pause_e_move(const float &length, const float fr) {
- current_position[E_AXIS] += length / planner.e_factor[active_extruder];
+static void do_pause_e_move(const float &length, const float &fr) {
set_destination_from_current();
- #if IS_KINEMATIC
- planner.buffer_line_kinematic(destination, fr, active_extruder);
- #else
- buffer_line_to_destination(fr);
- #endif
+ destination[E_AXIS] += length / planner.e_factor[active_extruder];
+ buffer_line_to_destination(fr);
stepper.synchronize();
+ set_current_from_destination();
+}
+
+bool load_filament(const float &load_length/*=0*/, const float &extrude_length/*=0*/, const int8_t max_beep_count/*=0*/,
+ const bool show_lcd/*=false*/, const bool pause_for_user/*=false*/,
+ const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_PAUSE_PRINT*/
+) {
+ #if DISABLED(ULTIPANEL)
+ UNUSED(show_lcd);
+ #endif
+
+ if (!ensure_safe_temperature(mode)) {
+ #if ENABLED(ULTIPANEL)
+ if (show_lcd) // Show status screen
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
+ #endif
+
+ return false;
+ }
+
+ if (pause_for_user) {
+ #if ENABLED(ULTIPANEL)
+ if (show_lcd) // Show "insert filament"
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INSERT, mode);
+ #endif
+ SERIAL_ECHO_START();
+ SERIAL_ECHOLNPGM(MSG_FILAMENT_CHANGE_INSERT);
+
+ #if HAS_BUZZER
+ filament_change_beep(max_beep_count, true);
+ #else
+ UNUSED(max_beep_count);
+ #endif
+
+ KEEPALIVE_STATE(PAUSED_FOR_USER);
+ wait_for_user = true; // LCD click or M108 will clear this
+ while (wait_for_user) {
+ #if HAS_BUZZER
+ filament_change_beep(max_beep_count);
+ #endif
+ idle(true);
+ }
+ KEEPALIVE_STATE(IN_HANDLER);
+ }
+
+ #if ENABLED(ULTIPANEL)
+ if (show_lcd) // Show "load" message
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_LOAD, mode);
+ #endif
+
+ // Load filament
+ do_pause_e_move(load_length, FILAMENT_CHANGE_LOAD_FEEDRATE);
+
+ do {
+ if (extrude_length > 0) {
+ // "Wait for filament purge"
+ #if ENABLED(ULTIPANEL)
+ if (show_lcd)
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_PURGE, mode);
+ #endif
+
+ // Extrude filament to get into hotend
+ do_pause_e_move(extrude_length, ADVANCED_PAUSE_EXTRUDE_FEEDRATE);
+ }
+
+ // Show "Extrude More" / "Resume" menu and wait for reply
+ #if ENABLED(ULTIPANEL)
+ if (show_lcd) {
+ KEEPALIVE_STATE(PAUSED_FOR_USER);
+ wait_for_user = false;
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_OPTION, mode);
+ while (advanced_pause_menu_response == ADVANCED_PAUSE_RESPONSE_WAIT_FOR) idle(true);
+ KEEPALIVE_STATE(IN_HANDLER);
+ }
+ #endif
+
+ // Keep looping if "Extrude More" was selected
+ } while (
+ #if ENABLED(ULTIPANEL)
+ show_lcd && advanced_pause_menu_response == ADVANCED_PAUSE_RESPONSE_EXTRUDE_MORE
+ #else
+ 0
+ #endif
+ );
+
+ return true;
+}
+
+bool unload_filament(const float &unload_length, const bool show_lcd/*=false*/,
+ const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_PAUSE_PRINT*/
+) {
+ if (!ensure_safe_temperature(mode)) {
+ #if ENABLED(ULTIPANEL)
+ if (show_lcd) // Show status screen
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
+ #endif
+
+ return false;
+ }
+
+ #if DISABLED(ULTIPANEL)
+ UNUSED(show_lcd);
+ #else
+ if (show_lcd)
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_UNLOAD, mode);
+ #endif
+
+ // Retract filament
+ do_pause_e_move(-FILAMENT_UNLOAD_RETRACT_LENGTH, PAUSE_PARK_RETRACT_FEEDRATE);
+
+ // Wait for filament to cool
+ safe_delay(FILAMENT_UNLOAD_DELAY);
+
+ // Quickly purge
+ do_pause_e_move(FILAMENT_UNLOAD_RETRACT_LENGTH + FILAMENT_UNLOAD_PURGE_LENGTH, planner.max_feedrate_mm_s[E_AXIS]);
+
+ // Unload filament
+ do_pause_e_move(unload_length, FILAMENT_CHANGE_UNLOAD_FEEDRATE);
+
+ // Disable extruders steppers for manual filament changing (only on boards that have separate ENABLE_PINS)
+ #if E0_ENABLE_PIN != X_ENABLE_PIN && E1_ENABLE_PIN != Y_ENABLE_PIN
+ disable_e_stepper(active_extruder);
+ safe_delay(100);
+ #endif
+
+ return true;
}
// public:
uint8_t did_pause_print = 0;
-bool pause_print(const float &retract, const point_t &park_point, const float &unload_length/*=0*/,
- const int8_t max_beep_count/*=0*/, const bool show_lcd/*=false*/
-) {
+bool pause_print(const float &retract, const point_t &park_point, const float &unload_length/*=0*/, const bool show_lcd/*=false*/) {
if (did_pause_print) return false; // already paused
#ifdef ACTION_ON_PAUSE
SERIAL_ECHOLNPGM("//action:" ACTION_ON_PAUSE);
#endif
- if (!DEBUGGING(DRYRUN) && unload_length != 0) {
- #if ENABLED(PREVENT_COLD_EXTRUSION)
- if (!thermalManager.allow_cold_extrude &&
- thermalManager.degTargetHotend(active_extruder) < thermalManager.extrude_min_temp) {
- SERIAL_ERROR_START();
- SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600);
- return false;
- }
+ #if ENABLED(ULTIPANEL)
+ if (show_lcd) // Show initial message
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT);
+ #endif
+
+ if (!DEBUGGING(DRYRUN) && unload_length && thermalManager.targetTooColdToExtrude(active_extruder)) {
+ SERIAL_ERROR_START();
+ SERIAL_ERRORLNPGM(MSG_HOTEND_TOO_COLD);
+
+ #if ENABLED(ULTIPANEL)
+ if (show_lcd) // Show status screen
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
#endif
- ensure_safe_temperature(); // wait for extruder to heat up before unloading
+ return false; // unable to reach safe temperature
}
// Indicate that the printer is paused
@@ -139,22 +273,18 @@ bool pause_print(const float &retract, const point_t &park_point, const float &u
// Pause the print job and timer
#if ENABLED(SDSUPPORT)
- if (IS_SD_PRINTING) {
+ if (card.sdprinting) {
card.pauseSDPrint();
++did_pause_print;
}
#endif
print_job_timer.pause();
- // Show initial message and wait for synchronize steppers
- if (show_lcd) {
- #if ENABLED(ULTIPANEL)
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT);
- #endif
- }
-
+ // Wait for synchronize steppers
stepper.synchronize();
- COPY(resume_position, current_position); // Save current position for later
+
+ // Save current position
+ COPY(resume_position, current_position);
// Initial retract before move to filament change position
if (retract && !thermalManager.tooColdToExtrude(active_extruder))
@@ -163,48 +293,32 @@ bool pause_print(const float &retract, const point_t &park_point, const float &u
// Park the nozzle by moving up by z_lift and then moving to (x_pos, y_pos)
Nozzle::park(2, park_point);
- if (unload_length != 0) {
- if (show_lcd) {
- #if ENABLED(ULTIPANEL)
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_UNLOAD);
- idle();
- #endif
- }
+ // Unload the filament
+ if (unload_length)
+ unload_filament(unload_length, show_lcd);
- // Unload filament
- do_pause_e_move(unload_length, FILAMENT_CHANGE_UNLOAD_FEEDRATE);
- }
+ return true;
+}
- if (show_lcd) {
- #if ENABLED(ULTIPANEL)
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INSERT);
- #endif
- }
+void wait_for_filament_reload(const int8_t max_beep_count/*=0*/) {
+ bool nozzle_timed_out = false;
+
+ #if ENABLED(ULTIPANEL)
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INSERT);
+ #endif
+ SERIAL_ECHO_START();
+ SERIAL_ERRORLNPGM(MSG_FILAMENT_CHANGE_INSERT);
#if HAS_BUZZER
filament_change_beep(max_beep_count, true);
#endif
- idle();
-
- // Disable extruders steppers for manual filament changing (only on boards that have separate ENABLE_PINS)
- #if E0_ENABLE_PIN != X_ENABLE_PIN && E1_ENABLE_PIN != Y_ENABLE_PIN
- disable_e_steppers();
- safe_delay(100);
- #endif
-
// Start the heater idle timers
const millis_t nozzle_timeout = (millis_t)(PAUSE_PARK_NOZZLE_TIMEOUT) * 1000UL;
HOTEND_LOOP()
thermalManager.start_heater_idle_timer(e, nozzle_timeout);
- return true;
-}
-
-void wait_for_filament_reload(const int8_t max_beep_count/*=0*/) {
- bool nozzle_timed_out = false;
-
// Wait for filament insert by user and press button
KEEPALIVE_STATE(PAUSED_FOR_USER);
wait_for_user = true; // LCD click or M108 will clear this
@@ -223,6 +337,14 @@ void wait_for_filament_reload(const int8_t max_beep_count/*=0*/) {
#if ENABLED(ULTIPANEL)
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
#endif
+ SERIAL_ECHO_START();
+ #if ENABLED(ULTIPANEL) && ENABLED(EMERGENCY_PARSER)
+ SERIAL_ERRORLNPGM(MSG_FILAMENT_CHANGE_HEAT);
+ #elif ENABLED(EMERGENCY_PARSER)
+ SERIAL_ERRORLNPGM(MSG_FILAMENT_CHANGE_HEAT_M108);
+ #else
+ SERIAL_ERRORLNPGM(MSG_FILAMENT_CHANGE_HEAT_LCD);
+ #endif
// Wait for LCD click or M108
while (wait_for_user) idle(true);
@@ -236,6 +358,14 @@ void wait_for_filament_reload(const int8_t max_beep_count/*=0*/) {
#if ENABLED(ULTIPANEL)
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INSERT);
#endif
+ SERIAL_ECHO_START();
+ #if ENABLED(ULTIPANEL) && ENABLED(EMERGENCY_PARSER)
+ SERIAL_ERRORLNPGM(MSG_FILAMENT_CHANGE_INSERT);
+ #elif ENABLED(EMERGENCY_PARSER)
+ SERIAL_ERRORLNPGM(MSG_FILAMENT_CHANGE_INSERT_M108);
+ #else
+ SERIAL_ERRORLNPGM(MSG_FILAMENT_CHANGE_INSERT_LCD);
+ #endif
// Start the heater idle timers
const millis_t nozzle_timeout = (millis_t)(PAUSE_PARK_NOZZLE_TIMEOUT) * 1000UL;
@@ -243,7 +373,7 @@ void wait_for_filament_reload(const int8_t max_beep_count/*=0*/) {
HOTEND_LOOP()
thermalManager.start_heater_idle_timer(e, nozzle_timeout);
- wait_for_user = true; /* Wait for user to load filament */
+ wait_for_user = true; // Wait for user to load filament
nozzle_timed_out = false;
#if HAS_BUZZER
@@ -256,7 +386,7 @@ void wait_for_filament_reload(const int8_t max_beep_count/*=0*/) {
KEEPALIVE_STATE(IN_HANDLER);
}
-void resume_print(const float &load_length/*=0*/, const float &initial_extrude_length/*=0*/, const int8_t max_beep_count/*=0*/) {
+void resume_print(const float &load_length/*=0*/, const float &extrude_length/*=ADVANCED_PAUSE_EXTRUDE_LENGTH*/, const int8_t max_beep_count/*=0*/) {
bool nozzle_timed_out = false;
if (!did_pause_print) return;
@@ -267,67 +397,11 @@ void resume_print(const float &load_length/*=0*/, const float &initial_extrude_l
thermalManager.reset_heater_idle_timer(e);
}
- if (nozzle_timed_out) ensure_safe_temperature();
-
- #if HAS_BUZZER
- filament_change_beep(max_beep_count, true);
- #endif
-
- if (load_length != 0) {
- #if ENABLED(ULTIPANEL)
- // Show "insert filament"
- if (nozzle_timed_out)
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INSERT);
- #endif
-
- KEEPALIVE_STATE(PAUSED_FOR_USER);
- wait_for_user = true; // LCD click or M108 will clear this
- while (wait_for_user && nozzle_timed_out) {
- #if HAS_BUZZER
- filament_change_beep(max_beep_count);
- #endif
- idle(true);
- }
- KEEPALIVE_STATE(IN_HANDLER);
-
- #if ENABLED(ULTIPANEL)
- // Show "load" message
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_LOAD);
- #endif
-
- // Load filament
- do_pause_e_move(load_length, FILAMENT_CHANGE_LOAD_FEEDRATE);
+ if (nozzle_timed_out || !thermalManager.tooColdToExtrude(active_extruder)) {
+ // Load the new filament
+ load_filament(load_length, extrude_length, max_beep_count, true, nozzle_timed_out);
}
- #if ENABLED(ULTIPANEL) && ADVANCED_PAUSE_EXTRUDE_LENGTH > 0
-
- if (!thermalManager.tooColdToExtrude(active_extruder)) {
- float extrude_length = initial_extrude_length;
-
- do {
- if (extrude_length > 0) {
- // "Wait for filament extrude"
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_EXTRUDE);
-
- // Extrude filament to get into hotend
- do_pause_e_move(extrude_length, ADVANCED_PAUSE_EXTRUDE_FEEDRATE);
- }
-
- // Show "Extrude More" / "Resume" menu and wait for reply
- KEEPALIVE_STATE(PAUSED_FOR_USER);
- wait_for_user = false;
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_OPTION);
- while (advanced_pause_menu_response == ADVANCED_PAUSE_RESPONSE_WAIT_FOR) idle(true);
- KEEPALIVE_STATE(IN_HANDLER);
-
- extrude_length = ADVANCED_PAUSE_EXTRUDE_LENGTH;
-
- // Keep looping if "Extrude More" was selected
- } while (advanced_pause_menu_response == ADVANCED_PAUSE_RESPONSE_EXTRUDE_MORE);
- }
-
- #endif
-
#if ENABLED(ULTIPANEL)
// "Wait for print to resume"
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_RESUME);
@@ -358,7 +432,7 @@ void resume_print(const float &load_length/*=0*/, const float &initial_extrude_l
#endif
#if ENABLED(ULTIPANEL)
- // Show pause status screen
+ // Show status screen
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
#endif
@@ -376,4 +450,4 @@ void resume_print(const float &load_length/*=0*/, const float &initial_extrude_l
#endif
}
-#endif // ADVANCED_PAUSE_FEATURE || PARK_HEAD_ON_PAUSE
+#endif // ADVANCED_PAUSE_FEATURE
diff --git a/Marlin/src/feature/pause.h b/Marlin/src/feature/pause.h
index 2bceaa2912..16f3389472 100644
--- a/Marlin/src/feature/pause.h
+++ b/Marlin/src/feature/pause.h
@@ -30,14 +30,49 @@
#include "../libs/nozzle.h"
+#include "../inc/MarlinConfigPre.h"
+
+enum AdvancedPauseMode {
+ ADVANCED_PAUSE_MODE_PAUSE_PRINT,
+ ADVANCED_PAUSE_MODE_LOAD_FILAMENT,
+ ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT
+};
+
+enum AdvancedPauseMessage {
+ ADVANCED_PAUSE_MESSAGE_INIT,
+ ADVANCED_PAUSE_MESSAGE_UNLOAD,
+ ADVANCED_PAUSE_MESSAGE_INSERT,
+ ADVANCED_PAUSE_MESSAGE_LOAD,
+ ADVANCED_PAUSE_MESSAGE_PURGE,
+ ADVANCED_PAUSE_MESSAGE_OPTION,
+ ADVANCED_PAUSE_MESSAGE_RESUME,
+ ADVANCED_PAUSE_MESSAGE_STATUS,
+ ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE,
+ ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT
+};
+
+enum AdvancedPauseMenuResponse {
+ ADVANCED_PAUSE_RESPONSE_WAIT_FOR,
+ ADVANCED_PAUSE_RESPONSE_EXTRUDE_MORE,
+ ADVANCED_PAUSE_RESPONSE_RESUME_PRINT
+};
+
+extern AdvancedPauseMenuResponse advanced_pause_menu_response;
+
+extern float filament_change_unload_length[EXTRUDERS],
+ filament_change_load_length[EXTRUDERS];
+
extern uint8_t did_pause_print;
-bool pause_print(const float &retract, const point_t &park_point, const float &unload_length=0,
- const int8_t max_beep_count=0, const bool show_lcd=false
-);
+bool pause_print(const float &retract, const point_t &park_point, const float &unload_length=0, const bool show_lcd=false);
void wait_for_filament_reload(const int8_t max_beep_count=0);
-void resume_print(const float &load_length=0, const float &initial_extrude_length=0, const int8_t max_beep_count=0);
+void resume_print(const float &load_length=0, const float &extrude_length=ADVANCED_PAUSE_EXTRUDE_LENGTH, const int8_t max_beep_count=0);
+
+bool load_filament(const float &load_length=0, const float &extrude_length=0, const int8_t max_beep_count=0, const bool show_lcd=false,
+ const bool pause_for_user=false, const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_PAUSE_PRINT);
+
+bool unload_filament(const float &unload_length, const bool show_lcd=false, const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_PAUSE_PRINT);
#endif // _PAUSE_H_
diff --git a/Marlin/src/gcode/control/M17_M18_M84.cpp b/Marlin/src/gcode/control/M17_M18_M84.cpp
index 003687c2c6..2049aebae7 100644
--- a/Marlin/src/gcode/control/M17_M18_M84.cpp
+++ b/Marlin/src/gcode/control/M17_M18_M84.cpp
@@ -54,7 +54,7 @@ void GcodeSuite::M18_M84() {
if (parser.seen('X')) disable_X();
if (parser.seen('Y')) disable_Y();
if (parser.seen('Z')) disable_Z();
- #if E0_ENABLE_PIN != X_ENABLE_PIN && E1_ENABLE_PIN != Y_ENABLE_PIN // Only enable on boards that have separate ENABLE_PINS
+ #if E0_ENABLE_PIN != X_ENABLE_PIN && E1_ENABLE_PIN != Y_ENABLE_PIN // Only disable on boards that have separate ENABLE_PINS
if (parser.seen('E')) disable_e_steppers();
#endif
}
diff --git a/Marlin/src/gcode/feature/pause/M600.cpp b/Marlin/src/gcode/feature/pause/M600.cpp
index c1793f6faf..8589a48d93 100644
--- a/Marlin/src/gcode/feature/pause/M600.cpp
+++ b/Marlin/src/gcode/feature/pause/M600.cpp
@@ -33,24 +33,34 @@
#include "../../../module/tool_change.h"
#endif
+#if ENABLED(ULTIPANEL)
+ #include "../../../lcd/ultralcd.h"
+#endif
+
/**
* M600: Pause for filament change
*
- * E[distance] - Retract the filament this far (negative value)
+ * E[distance] - Retract the filament this far
* Z[distance] - Move the Z axis by this distance
* X[position] - Move to this X position, with Y
* Y[position] - Move to this Y position, with X
- * U[distance] - Retract distance for removal (negative value) (manual reload)
- * L[distance] - Extrude distance for insertion (positive value) (manual reload)
+ * U[distance] - Retract distance for removal (manual reload)
+ * L[distance] - Extrude distance for insertion (manual reload)
* B[count] - Number of times to beep, -1 for indefinite (if equipped with a buzzer)
* T[toolhead] - Select extruder for filament change
*
* Default values are used for omitted arguments.
- *
*/
void GcodeSuite::M600() {
point_t park_point = NOZZLE_PARK_POINT;
+ if (get_target_extruder_from_command()) return;
+
+ // Show initial message
+ #if ENABLED(ULTIPANEL)
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT, ADVANCED_PAUSE_MODE_PAUSE_PRINT, target_extruder);
+ #endif
+
#if ENABLED(HOME_BEFORE_FILAMENT_CHANGE)
// Don't allow filament change without homing first
if (axis_unhomed_error()) home_all_axes();
@@ -58,22 +68,17 @@ void GcodeSuite::M600() {
#if EXTRUDERS > 1
// Change toolhead if specified
- uint8_t active_extruder_before_filament_change = -1;
- if (parser.seen('T')) {
- const uint8_t extruder = parser.value_byte();
- if (active_extruder != extruder) {
- active_extruder_before_filament_change = active_extruder;
- tool_change(extruder, 0, true);
- }
- }
+ uint8_t active_extruder_before_filament_change = active_extruder;
+ if (active_extruder != target_extruder)
+ tool_change(target_extruder, 0, true);
#endif
// Initial retract before move to filament change position
- const float retract = parser.seen('E') ? parser.value_axis_units(E_AXIS) : 0
+ const float retract = -FABS(parser.seen('E') ? parser.value_axis_units(E_AXIS) : 0
#ifdef PAUSE_PARK_RETRACT_LENGTH
- - (PAUSE_PARK_RETRACT_LENGTH)
+ + (PAUSE_PARK_RETRACT_LENGTH)
#endif
- ;
+ );
// Move XY axes to filament change position or given position
if (parser.seenval('X')) park_point.x = parser.linearval('X');
@@ -88,22 +93,16 @@ void GcodeSuite::M600() {
#endif
// Unload filament
- const float unload_length = parser.seen('U') ? parser.value_axis_units(E_AXIS) : 0
- #if defined(FILAMENT_CHANGE_UNLOAD_LENGTH) && FILAMENT_CHANGE_UNLOAD_LENGTH > 0
- - (FILAMENT_CHANGE_UNLOAD_LENGTH)
- #endif
- ;
+ const float unload_length = -FABS(parser.seen('U') ? parser.value_axis_units(E_AXIS)
+ : filament_change_unload_length[active_extruder]);
// Load filament
- const float load_length = parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0
- #ifdef FILAMENT_CHANGE_LOAD_LENGTH
- + FILAMENT_CHANGE_LOAD_LENGTH
- #endif
- ;
+ const float load_length = FABS(parser.seen('L') ? parser.value_axis_units(E_AXIS)
+ : filament_change_load_length[active_extruder]);
const int beep_count = parser.intval('B',
- #ifdef FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS
- FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS
+ #ifdef FILAMENT_CHANGE_ALERT_BEEPS
+ FILAMENT_CHANGE_ALERT_BEEPS
#else
-1
#endif
@@ -111,14 +110,14 @@ void GcodeSuite::M600() {
const bool job_running = print_job_timer.isRunning();
- if (pause_print(retract, park_point, unload_length, beep_count, true)) {
+ if (pause_print(retract, park_point, unload_length, true)) {
wait_for_filament_reload(beep_count);
resume_print(load_length, ADVANCED_PAUSE_EXTRUDE_LENGTH, beep_count);
}
#if EXTRUDERS > 1
// Restore toolhead if it was changed
- if (active_extruder_before_filament_change >= 0)
+ if (active_extruder_before_filament_change != active_extruder)
tool_change(active_extruder_before_filament_change, 0, true);
#endif
diff --git a/Marlin/src/gcode/feature/pause/M603.cpp b/Marlin/src/gcode/feature/pause/M603.cpp
new file mode 100644
index 0000000000..feabe2b929
--- /dev/null
+++ b/Marlin/src/gcode/feature/pause/M603.cpp
@@ -0,0 +1,65 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+#include "../../../inc/MarlinConfig.h"
+
+#if ENABLED(ADVANCED_PAUSE_FEATURE)
+
+#include "../../gcode.h"
+#include "../../../feature/pause.h"
+#include "../../../module/motion.h"
+#include "../../../module/printcounter.h"
+
+#if EXTRUDERS > 1
+ #include "../../../module/tool_change.h"
+#endif
+
+/**
+ * M603: Configure filament change
+ *
+ * T[toolhead] - Select extruder to configure, active extruder if not specified
+ * U[distance] - Retract distance for removal, for the specified extruder
+ * L[distance] - Extrude distance for insertion, for the specified extruder
+ *
+ */
+inline void GcodeSuite::M603() {
+
+ if (get_target_extruder_from_command()) return;
+
+ // Unload length
+ if (parser.seen('U')) {
+ filament_change_unload_length[target_extruder] = FABS(parser.value_axis_units(E_AXIS));
+ #if ENABLED(PREVENT_LENGTHY_EXTRUDE)
+ NOMORE(filament_change_unload_length[target_extruder], EXTRUDE_MAXLENGTH);
+ #endif
+ }
+
+ // Load length
+ if (parser.seen('L')) {
+ filament_change_load_length[target_extruder] = FABS(parser.value_axis_units(E_AXIS));
+ #if ENABLED(PREVENT_LENGTHY_EXTRUDE)
+ NOMORE(filament_change_load_length[target_extruder], EXTRUDE_MAXLENGTH);
+ #endif
+ }
+}
+
+#endif // ADVANCED_PAUSE_FEATURE
diff --git a/Marlin/src/gcode/feature/pause/M701_M702.cpp b/Marlin/src/gcode/feature/pause/M701_M702.cpp
new file mode 100644
index 0000000000..d032107bc3
--- /dev/null
+++ b/Marlin/src/gcode/feature/pause/M701_M702.cpp
@@ -0,0 +1,165 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+#include "../../../inc/MarlinConfigPre.h"
+
+#if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
+
+#include "../../gcode.h"
+#include "../../../Marlin.h"
+#include "../../../module/motion.h"
+#include "../../../module/temperature.h"
+#include "../../../libs/point_t.h"
+
+#if EXTRUDERS > 1
+ #include "../../../module/tool_change.h"
+#endif
+
+#if ENABLED(ULTIPANEL)
+ #include "../../../lcd/ultralcd.h"
+#endif
+
+/**
+ * M701: Load filament
+ *
+ * T[extruder] - Optional extruder number. Current extruder if omitted.
+ * Z[distance] - Move the Z axis by this distance
+ * L[distance] - Extrude distance for insertion (positive value) (manual reload)
+ *
+ * Default values are used for omitted arguments.
+ */
+void GcodeSuite::M701() {
+ point_t park_point = NOZZLE_PARK_POINT;
+
+ if (get_target_extruder_from_command()) return;
+
+ // Z axis lift
+ if (parser.seenval('Z')) park_point.z = parser.linearval('Z');
+
+ // Load filament
+ const float load_length = FABS(parser.seen('L') ? parser.value_axis_units(E_AXIS) :
+ filament_change_load_length[target_extruder]);
+
+ // Show initial message
+ #if ENABLED(ULTIPANEL)
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_LOAD, ADVANCED_PAUSE_MODE_LOAD_FILAMENT, target_extruder);
+ #endif
+
+ #if EXTRUDERS > 1
+ // Change toolhead if specified
+ uint8_t active_extruder_before_filament_change = active_extruder;
+ if (active_extruder != target_extruder)
+ tool_change(target_extruder, 0, true);
+ #endif
+
+ // Lift Z axis
+ if (park_point.z > 0)
+ do_blocking_move_to_z(min(current_position[Z_AXIS] + park_point.z, Z_MAX_POS), NOZZLE_PARK_Z_FEEDRATE);
+
+ load_filament(load_length, ADVANCED_PAUSE_EXTRUDE_LENGTH, FILAMENT_CHANGE_ALERT_BEEPS, true,
+ thermalManager.wait_for_heating(target_extruder), ADVANCED_PAUSE_MODE_LOAD_FILAMENT);
+
+ // Restore Z axis
+ if (park_point.z > 0)
+ do_blocking_move_to_z(max(current_position[Z_AXIS] - park_point.z, Z_MIN_POS), NOZZLE_PARK_Z_FEEDRATE);
+
+ #if EXTRUDERS > 1
+ // Restore toolhead if it was changed
+ if (active_extruder_before_filament_change != active_extruder)
+ tool_change(active_extruder_before_filament_change, 0, true);
+ #endif
+
+ // Show status screen
+ #if ENABLED(ULTIPANEL)
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
+ #endif
+}
+
+/**
+ * M702: Unload filament
+ *
+ * T[extruder] - Optional extruder number. If omitted, current extruder
+ * (or ALL extruders with FILAMENT_UNLOAD_ALL_EXTRUDERS).
+ * Z[distance] - Move the Z axis by this distance
+ * U[distance] - Retract distance for removal (manual reload)
+ *
+ * Default values are used for omitted arguments.
+ */
+void GcodeSuite::M702() {
+ point_t park_point = NOZZLE_PARK_POINT;
+
+ if (get_target_extruder_from_command()) return;
+
+ // Z axis lift
+ if (parser.seenval('Z')) park_point.z = parser.linearval('Z');
+
+ // Show initial message
+ #if ENABLED(ULTIPANEL)
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_UNLOAD, ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, target_extruder);
+ #endif
+
+ #if EXTRUDERS > 1
+ // Change toolhead if specified
+ uint8_t active_extruder_before_filament_change = active_extruder;
+ if (active_extruder != target_extruder)
+ tool_change(target_extruder, 0, true);
+ #endif
+
+ // Lift Z axis
+ if (park_point.z > 0)
+ do_blocking_move_to_z(min(current_position[Z_AXIS] + park_point.z, Z_MAX_POS), NOZZLE_PARK_Z_FEEDRATE);
+
+ // Unload filament
+ #if EXTRUDERS > 1 && ENABLED(FILAMENT_UNLOAD_ALL_EXTRUDERS)
+ if (!parser.seenval('T')) {
+ HOTEND_LOOP() {
+ if (e != active_extruder) tool_change(e, 0, true);
+ unload_filament(-filament_change_unload_length[e], true, ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT);
+ }
+ }
+ else
+ #endif
+ {
+ // Unload length
+ const float unload_length = -FABS(parser.seen('U') ? parser.value_axis_units(E_AXIS) :
+ filament_change_unload_length[target_extruder]);
+
+ unload_filament(unload_length, true, ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT);
+ }
+
+ // Restore Z axis
+ if (park_point.z > 0)
+ do_blocking_move_to_z(max(current_position[Z_AXIS] - park_point.z, Z_MIN_POS), NOZZLE_PARK_Z_FEEDRATE);
+
+ #if EXTRUDERS > 1
+ // Restore toolhead if it was changed
+ if (active_extruder_before_filament_change != active_extruder)
+ tool_change(active_extruder_before_filament_change, 0, true);
+ #endif
+
+ // Show status screen
+ #if ENABLED(ULTIPANEL)
+ lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
+ #endif
+}
+
+#endif // ADVANCED_PAUSE_FEATURE
diff --git a/Marlin/src/gcode/feature/snmm/M702.cpp b/Marlin/src/gcode/feature/snmm/M702.cpp
deleted file mode 100644
index ff8ee062ea..0000000000
--- a/Marlin/src/gcode/feature/snmm/M702.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-#include "../../../inc/MarlinConfig.h"
-
-#if ENABLED(MK2_MULTIPLEXER)
-
-#include "../../gcode.h"
-#include "../../../module/motion.h"
-#include "../../../feature/snmm.h"
-#include "../../../Marlin.h"
-
-/**
- * M702: Unload all extruders
- */
-void GcodeSuite::M702() {
- for (uint8_t s = 0; s < E_STEPPERS; s++) {
- select_multiplexed_stepper(s);
- // TODO: standard unload filament function
- // MK2 firmware behavior:
- // - Make sure temperature is high enough
- // - Raise Z to at least 15 to make room
- // - Extrude 1cm of filament in 1 second
- // - Under 230C quickly purge ~12mm, over 230C purge ~10mm
- // - Change E max feedrate to 80, eject the filament from the tube. Sync.
- // - Restore E max feedrate to 50
- }
- // Go back to the last active extruder
- select_multiplexed_stepper(active_extruder);
- disable_e_steppers();
-}
-
-#endif // MK2_MULTIPLEXER
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 35305df7b1..31d628d859 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -399,8 +399,7 @@ void GcodeSuite::process_parsed_command() {
#endif
#if ENABLED(PARK_HEAD_ON_PAUSE)
- case 125: // M125: Store current position and move to filament change position
- M125(); break;
+ case 125: M125(); break; // M125: Store current position and move to filament change position
#endif
#if ENABLED(BARICUDA)
diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h
index 648a27392e..377c948b68 100644
--- a/Marlin/src/gcode/gcode.h
+++ b/Marlin/src/gcode/gcode.h
@@ -198,9 +198,12 @@
* M503 - Print the current settings (in memory): "M503 S". S0 specifies compact output.
* M540 - Enable/disable SD card abort on endstop hit: "M540 S". (Requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
* M600 - Pause for filament change: "M600 X Y Z E L". (Requires ADVANCED_PAUSE_FEATURE)
+ * M603 - Configure filament change: "M603 T U L". (Requires ADVANCED_PAUSE_FEATURE)
+ * M605 - Set Dual X-Carriage movement mode: "M605 S [X] [R]". (Requires DUAL_X_CARRIAGE)
* M665 - Set delta configurations: "M665 L R S A B C I J K" (Requires DELTA)
* M666 - Set delta endstop adjustment. (Requires DELTA)
- * M605 - Set dual x-carriage movement mode: "M605 S [X] [R]". (Requires DUAL_X_CARRIAGE)
+ * M701 - Load filament (requires FILAMENT_LOAD_UNLOAD_GCODES)
+ * M702 - Unload filament (requires FILAMENT_LOAD_UNLOAD_GCODES)
* M851 - Set Z probe's Z offset in current units. (Negative = below the nozzle.)
* M852 - Set skew factors: "M852 [I] [J] [K]". (Requires SKEW_CORRECTION_GCODE, and SKEW_CORRECTION_FOR_Z for IJ)
* M860 - Report the position of position encoder modules.
@@ -685,6 +688,7 @@ private:
#if ENABLED(ADVANCED_PAUSE_FEATURE)
static void M600();
+ static void M603();
#endif
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
@@ -699,7 +703,8 @@ private:
static void M666();
#endif
- #if ENABLED(MK2_MULTIPLEXER)
+ #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
+ static void M701();
static void M702();
#endif
diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index fd03c4d126..fe69cf92ec 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -131,6 +131,8 @@
#error "FILAMENT_CHANGE_EXTRUDE_LENGTH is now ADVANCED_PAUSE_EXTRUDE_LENGTH. Please update your configuration."
#elif defined(FILAMENT_CHANGE_NOZZLE_TIMEOUT)
#error "FILAMENT_CHANGE_NOZZLE_TIMEOUT is now PAUSE_PARK_NOZZLE_TIMEOUT. Please update your configuration."
+#elif defined(FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS)
+ #error "FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS is now FILAMENT_CHANGE_ALERT_BEEPS. Please update your configuration."
#elif ENABLED(FILAMENT_CHANGE_NO_STEPPER_TIMEOUT)
#error "FILAMENT_CHANGE_NO_STEPPER_TIMEOUT is now PAUSE_PARK_NO_STEPPER_TIMEOUT. Please update your configuration."
#elif defined(PLA_PREHEAT_HOTEND_TEMP)
@@ -406,16 +408,20 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
* Advanced Pause
*/
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #if DISABLED(NEWPANEL)
- #error "ADVANCED_PAUSE_FEATURE currently requires an LCD controller."
+ #if !HAS_RESUME_CONTINUE
+ #error "ADVANCED_PAUSE_FEATURE currently requires an LCD controller or EMERGENCY_PARSER."
#elif ENABLED(EXTRUDER_RUNOUT_PREVENT)
#error "EXTRUDER_RUNOUT_PREVENT is incompatible with ADVANCED_PAUSE_FEATURE."
#elif ENABLED(PARK_HEAD_ON_PAUSE) && DISABLED(SDSUPPORT) && DISABLED(NEWPANEL) && DISABLED(EMERGENCY_PARSER)
#error "PARK_HEAD_ON_PAUSE requires SDSUPPORT, EMERGENCY_PARSER, or an LCD controller."
#elif ENABLED(HOME_BEFORE_FILAMENT_CHANGE) && DISABLED(PAUSE_PARK_NO_STEPPER_TIMEOUT)
- #error "HOME_BEFORE_FILAMENT_CHANGE requires PAUSE_PARK_NO_STEPPER_TIMEOUT"
+ #error "HOME_BEFORE_FILAMENT_CHANGE requires PAUSE_PARK_NO_STEPPER_TIMEOUT."
#elif DISABLED(NOZZLE_PARK_FEATURE)
- #error "ADVANCED_PAUSE_FEATURE requires NOZZLE_PARK_FEATURE"
+ #error "ADVANCED_PAUSE_FEATURE requires NOZZLE_PARK_FEATURE."
+ #elif ENABLED(PREVENT_LENGTHY_EXTRUDE) && FILAMENT_CHANGE_UNLOAD_LENGTH > EXTRUDE_MAXLENGTH
+ #error "FILAMENT_CHANGE_UNLOAD_LENGTH must be less than or equal to EXTRUDE_MAXLENGTH."
+ #elif ENABLED(PREVENT_LENGTHY_EXTRUDE) && FILAMENT_CHANGE_LOAD_LENGTH > EXTRUDE_MAXLENGTH
+ #error "FILAMENT_CHANGE_LOAD_LENGTH must be less than or equal to EXTRUDE_MAXLENGTH."
#endif
#endif
@@ -454,8 +460,6 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
*/
#ifdef SNMM
#error "SNMM is now MK2_MULTIPLEXER. Please update your configuration."
-#elif ENABLED(MK2_MULTIPLEXER) && DISABLED(ADVANCED_PAUSE_FEATURE)
- #error "ADVANCED_PAUSE_FEATURE is required with MK2_MULTIPLEXER."
#endif
/**
diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h
index 3ab4d1d250..f5245d314c 100644
--- a/Marlin/src/lcd/language/language_an.h
+++ b/Marlin/src/lcd/language/language_an.h
@@ -217,9 +217,6 @@
#define MSG_DRIVE_STRENGTH _UxGT("Fuerza d'o driver")
#define MSG_DAC_PERCENT _UxGT("Driver %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Escri. DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mas")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resumir imp.")
//
@@ -246,8 +243,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("expulsar filament")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Aguardando a")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("cargar filamento")
-#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Aguardando a")
-#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("extruir filamento")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Aguardando impre.")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("pa continar")
diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h
index 54137f7d4a..9af28baf2a 100644
--- a/Marlin/src/lcd/language/language_ca.h
+++ b/Marlin/src/lcd/language/language_ca.h
@@ -219,11 +219,7 @@
#define MSG_DRIVE_STRENGTH _UxGT("Força motor")
#define MSG_DAC_PERCENT _UxGT("Driver %")
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudeix mes")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Repren impressió")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Temp minima es ")
//
// Filament Change screens show up to 3 lines on a 4-line display
@@ -244,8 +240,6 @@
#define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Espereu...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Esperant carrega")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("de filament")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Esperant per")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("extreure filament")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Esperant per")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("reprendre")
#else // LCD_HEIGHT < 4
@@ -254,7 +248,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insereix i prem")
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Escalfant...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Carregant...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extrudint...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Reprenent...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h
index 4a6bdbee53..034cd78583 100644
--- a/Marlin/src/lcd/language/language_cz.h
+++ b/Marlin/src/lcd/language/language_cz.h
@@ -336,11 +336,7 @@
#define MSG_DRIVE_STRENGTH _UxGT("Buzeni motoru")
#define MSG_DAC_PERCENT _UxGT("Motor %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Ulozit do EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Jeste vytlacit")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Obnovit tisk")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. teplota je ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Tryska: ")
#define MSG_ERR_HOMING_FAILED _UxGT("Parkovani selhalo")
#define MSG_ERR_PROBING_FAILED _UxGT("Kalibrace selhala")
@@ -363,9 +359,6 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Cekejte prosim")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("na zavedeni")
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("filamentu")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Cekejte prosim")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("na vytlaceni")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("filamentu")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Cekejte prosim")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("na pokracovani")
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("tisku")
@@ -376,7 +369,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Vlozte, kliknete")
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Nahrivani...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Zavadeni...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Vytlacovani...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Pokracovani...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_cz_utf8.h b/Marlin/src/lcd/language/language_cz_utf8.h
index b5f3e92726..dfc3a5a828 100644
--- a/Marlin/src/lcd/language/language_cz_utf8.h
+++ b/Marlin/src/lcd/language/language_cz_utf8.h
@@ -338,11 +338,7 @@
#define MSG_DRIVE_STRENGTH _UxGT("Buzení motorů")
#define MSG_DAC_PERCENT _UxGT("Motor %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Uložit do EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Ještě vytlačit")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Obnovit tisk")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. teplota je ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Tryska: ")
#define MSG_ERR_HOMING_FAILED _UxGT("Parkování selhalo")
#define MSG_ERR_PROBING_FAILED _UxGT("Kalibrace selhala")
@@ -365,9 +361,6 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Čekejte prosím")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("na zavedení")
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("filamentu")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Čekejte prosím")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("na vytlačení")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("filamentu")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Čekejte prosím")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("na pokračování")
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("tisku")
@@ -378,7 +371,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Vložte, klikněte")
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Nahřívání...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Zavádění...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Vytlačování...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Pokračování...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h
index 1a3fdd4441..9755c66aed 100644
--- a/Marlin/src/lcd/language/language_da.h
+++ b/Marlin/src/lcd/language/language_da.h
@@ -217,9 +217,6 @@
#define MSG_DAC_PERCENT _UxGT("Driv %")
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Skriv")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruder mere")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Forsæt print")
#if LCD_HEIGHT >= 4
@@ -233,8 +230,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("for at fortsætte...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Vent på")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament indtag")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Vent på")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("filament extrudering")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Vent på at print")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("fortsætter")
#else // LCD_HEIGHT < 4
@@ -242,7 +237,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Udskyder...")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Indsæt og klik")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Indtager...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extrudere...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Fortsætter...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h
index 4036a0dcfe..da6c04c928 100644
--- a/Marlin/src/lcd/language/language_de.h
+++ b/Marlin/src/lcd/language/language_de.h
@@ -308,11 +308,9 @@
#define MSG_DAC_PERCENT _UxGT("Treiber %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Werte speichern")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("DRUCK PAUSIERT")
+#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("DRUCK PAUSIERT")
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("FORTS. OPTIONEN:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude mehr")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Drucke weiter")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. Temperatur ist ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Düse: ")
#if LCD_HEIGHT >= 4
@@ -333,9 +331,6 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Warte auf")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("Laden des")
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("Filaments")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Warte auf")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("Extrusion des")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("Filaments")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Warte auf")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("Fortsetzung des")
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("Druckes...")
@@ -346,7 +341,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Laden und Klick")
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Heizen...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Laden...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extrudieren...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Fortsetzen...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h
index 1ae2a5b931..fec01782a2 100644
--- a/Marlin/src/lcd/language/language_el.h
+++ b/Marlin/src/lcd/language/language_el.h
@@ -168,7 +168,6 @@
#define MSG_ERR_MAXTEMP_BED _UxGT("ΜΕΓΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ") //SHORTEN
#define MSG_ERR_MINTEMP_BED _UxGT("ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ") //SHORTEN
#define MSG_HALTED _UxGT("H εκτύπωση διακόπηκε")
-#define MSG_PLEASE_RESET _UxGT("PLEASE RESET") //TRANSLATE
#define MSG_HEATING _UxGT("Θερμαίνεται…")
#define MSG_HEATING_COMPLETE _UxGT("Η θέρμανση ολοκληρώθηκε.") //SHORTEN
#define MSG_BED_HEATING _UxGT("Θέρμανση ΕΠ. Εκτύπωσης") //SHORTEN
@@ -179,56 +178,4 @@
#define MSG_DELTA_CALIBRATE_Z _UxGT("Βαθμονόμηση Z")
#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Βαθμονόμηση κέντρου")
-#define MSG_INFO_MENU _UxGT("About Printer")
-#define MSG_INFO_PRINTER_MENU _UxGT("Printer Info")
-#define MSG_INFO_STATS_MENU _UxGT("Printer Stats")
-#define MSG_INFO_BOARD_MENU _UxGT("Board Info")
-#define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistors")
-#define MSG_INFO_EXTRUDERS _UxGT("Extruders")
-#define MSG_INFO_BAUDRATE _UxGT("Baud")
-#define MSG_INFO_PROTOCOL _UxGT("Protocol")
-
-#if LCD_WIDTH >= 20
- #define MSG_INFO_PRINT_COUNT _UxGT("Print Count")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completed ")
- #define MSG_INFO_PRINT_TIME _UxGT("Total Time ")
-#else
- #define MSG_INFO_PRINT_COUNT _UxGT("Prints ")
- #define MSG_INFO_COMPLETED_PRINTS _UxGT("Completed")
- #define MSG_INFO_PRINT_TIME _UxGT("Duration ")
-#endif
-#define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
-#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
-#define MSG_INFO_PSU _UxGT("PSU")
-
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CHANGE FILAMENT")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude more")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resume print")
-
-#if LCD_HEIGHT >= 4
- // Up to 3 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Wait for start")
- #define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("of the filament")
- #define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("change")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wait for")
- #define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("filament unload")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insert filament")
- #define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("and press button")
- #define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("to continue...")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Wait for")
- #define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament load")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Wait for")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("filament extrude")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wait for print")
- #define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("to resume")
-#else // LCD_HEIGHT < 4
- // Up to 2 lines allowed
- #define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Please wait...")
- #define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejecting...")
- #define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insert and Click")
- #define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Loading...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extruding...")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Resuming...")
-#endif
-
#endif // LANGUAGE_EL_H
diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h
index dcf8f1dcc0..a9be4a2a6e 100644
--- a/Marlin/src/lcd/language/language_en.h
+++ b/Marlin/src/lcd/language/language_en.h
@@ -590,6 +590,12 @@
#ifndef MSG_FILAMENT_DIAM
#define MSG_FILAMENT_DIAM _UxGT("Fil. Dia.")
#endif
+#ifndef MSG_FILAMENT_UNLOAD
+ #define MSG_FILAMENT_UNLOAD _UxGT("Unload mm")
+#endif
+#ifndef MSG_FILAMENT_LOAD
+ #define MSG_FILAMENT_LOAD _UxGT("Load mm")
+#endif
#ifndef MSG_ADVANCE_K
#define MSG_ADVANCE_K _UxGT("Advance K")
#endif
@@ -689,6 +695,15 @@
#ifndef MSG_FILAMENTCHANGE
#define MSG_FILAMENTCHANGE _UxGT("Change filament")
#endif
+#ifndef MSG_FILAMENTLOAD
+ #define MSG_FILAMENTLOAD _UxGT("Load filament")
+#endif
+#ifndef MSG_FILAMENTUNLOAD
+ #define MSG_FILAMENTUNLOAD _UxGT("Unload filament")
+#endif
+#ifndef MSG_FILAMENTUNLOAD_ALL
+ #define MSG_FILAMENTUNLOAD_ALL _UxGT("Unload All")
+#endif
#ifndef MSG_INIT_SDCARD
#define MSG_INIT_SDCARD _UxGT("Init. SD card")
#endif
@@ -918,19 +933,22 @@
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
#endif
#ifndef MSG_FILAMENT_CHANGE_HEADER
- #define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
+ #define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("PRINT PAUSED")
+#endif
+#ifndef MSG_FILAMENT_CHANGE_HEADER_LOAD
+ #define MSG_FILAMENT_CHANGE_HEADER_LOAD _UxGT("LOAD FILAMENT")
+#endif
+#ifndef MSG_FILAMENT_CHANGE_HEADER_UNLOAD
+ #define MSG_FILAMENT_CHANGE_HEADER_UNLOAD _UxGT("UNLOAD FILAMENT")
#endif
#ifndef MSG_FILAMENT_CHANGE_OPTION_HEADER
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
#endif
-#ifndef MSG_FILAMENT_CHANGE_OPTION_EXTRUDE
- #define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude more")
+#ifndef MSG_FILAMENT_CHANGE_OPTION_PURGE
+ #define MSG_FILAMENT_CHANGE_OPTION_PURGE _UxGT("Purge more")
#endif
#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 ")
+ #define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Continue")
#endif
#ifndef MSG_FILAMENT_CHANGE_NOZZLE
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Nozzle: ")
@@ -973,9 +991,9 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Wait for")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament load")
#endif
- #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_1
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Wait for")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("filament extrude")
+ #ifndef MSG_FILAMENT_CHANGE_PURGE_1
+ #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Wait for")
+ #define MSG_FILAMENT_CHANGE_PURGE_2 _UxGT("filament purge")
#endif
#ifndef MSG_FILAMENT_CHANGE_RESUME_1
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wait for print")
@@ -997,8 +1015,8 @@
#ifndef MSG_FILAMENT_CHANGE_LOAD_1
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Loading...")
#endif
- #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_1
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extruding...")
+ #ifndef MSG_FILAMENT_CHANGE_PURGE_1
+ #define MSG_FILAMENT_CHANGE_PURGE_1 _UxGT("Purging...")
#endif
#ifndef MSG_FILAMENT_CHANGE_RESUME_1
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Resuming...")
diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h
index 248ecb1931..6831038b28 100644
--- a/Marlin/src/lcd/language/language_es.h
+++ b/Marlin/src/lcd/language/language_es.h
@@ -226,12 +226,10 @@
#define MSG_DAC_PERCENT _UxGT("Driver %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Escribe DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("IMPR. PAUSADA")
+#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("IMPR. PAUSADA")
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("OPC. REINICIO:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mas")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resumir imp.")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Temp Minima es ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Boquilla: ")
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Esperando iniciar")
@@ -254,8 +252,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("filamento expulsado")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Esperado por")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("Cargar filamento")
-#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Esperado por")
-#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("Extruir filamento")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Esperando imp.")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("para resumir")
#define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Oprima boton para")
diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h
index 5be54c5468..33452312ea 100644
--- a/Marlin/src/lcd/language/language_eu.h
+++ b/Marlin/src/lcd/language/language_eu.h
@@ -225,12 +225,10 @@
#define MSG_DAC_PERCENT _UxGT("Driver %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Idatzi DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("HARIZPIA ALDATU")
+#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("HARIZPIA ALDATU")
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ALDAKETA AUKERAK:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Gehiago estruitu")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Inprima. jarraitu")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Tenp Minimoa ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Pita: ")
#endif // LANGUAGE_EU_H
diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h
index 17e9da11b5..d3c67465ff 100644
--- a/Marlin/src/lcd/language/language_fr.h
+++ b/Marlin/src/lcd/language/language_fr.h
@@ -305,11 +305,7 @@
#define MSG_DAC_PERCENT _UxGT("Driver %")
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM sauv.")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("+ extrusion")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Reprendre impr.")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("La temp. minimum est ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Buse: ")
#if LCD_HEIGHT >= 4
@@ -328,8 +324,6 @@
#define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Patientez SVP...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("attente de")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("chargement filament")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("attente de")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("extrusion filament")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("attente impression")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("pour reprendre")
#else // LCD_HEIGHT < 4
@@ -338,7 +332,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejection...")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserer et clic")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Chargement...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extrusion...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Reprise...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_fr_utf8.h b/Marlin/src/lcd/language/language_fr_utf8.h
index ab328950f0..89db38a1d3 100644
--- a/Marlin/src/lcd/language/language_fr_utf8.h
+++ b/Marlin/src/lcd/language/language_fr_utf8.h
@@ -304,11 +304,7 @@
#define MSG_DAC_PERCENT _UxGT("Driver %")
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM sauv.")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("+ extrusion")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Reprendre impr.")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("La temp. minimum est ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Buse: ")
#if LCD_HEIGHT >= 4
@@ -327,8 +323,6 @@
#define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Patientez SVP...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("attente de")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("chargement filament")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("attente de")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("extrusion filament")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("attente impression")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("pour reprendre")
#else // LCD_HEIGHT < 4
@@ -337,7 +331,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejection...")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insérer et clic")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Chargement...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extrusion...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Reprise...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h
index f8d50035e7..8ee3acbdd9 100644
--- a/Marlin/src/lcd/language/language_gl.h
+++ b/Marlin/src/lcd/language/language_gl.h
@@ -214,9 +214,6 @@
#define MSG_DAC_PERCENT _UxGT("Motor %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Garda DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mais")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Segue traballo")
#if LCD_HEIGHT >= 4
@@ -233,9 +230,6 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Agarde pola")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("carga do")
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("filamento")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Agarde pola")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("extrusion do")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("filamento")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Agarde para")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("seguir co")
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("traballo")
@@ -245,7 +239,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Descargando...")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Introduza e click")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Cargando...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extruindo...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Seguindo...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h
index 64de7492bf..0d435c9f09 100644
--- a/Marlin/src/lcd/language/language_hr.h
+++ b/Marlin/src/lcd/language/language_hr.h
@@ -214,9 +214,6 @@
#define MSG_DAC_PERCENT _UxGT("Driver %")
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudiraj više")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Nastavi print")
#if LCD_HEIGHT >= 4
@@ -231,8 +228,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("za nastavak...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Pričekaj")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament load")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Pričekaj")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("filament extrude")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wait for print")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("to resume")
#else // LCD_HEIGHT < 4
@@ -241,7 +236,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejecting...")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insert and Click")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Loading...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extrudiranje...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Nastavljam...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h
index fae438ce5b..f2986a4ff9 100644
--- a/Marlin/src/lcd/language/language_it.h
+++ b/Marlin/src/lcd/language/language_it.h
@@ -301,11 +301,9 @@
#define MSG_DAC_PERCENT _UxGT("Driver %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Scrivi DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("STAMPA IN PAUSA")
+#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("STAMPA IN PAUSA")
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("OPZIONI:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Estrudi ancora")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Riprendi stampa")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Temp minima è ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Ugello: ")
#if LCD_HEIGHT >= 4
@@ -326,9 +324,6 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Attendere")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("il caricamento")
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("del filamento")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Attendere")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("l'estrusione")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("del filamento")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Attendere")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("la ripresa")
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("della stampa")
@@ -339,7 +334,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserisci e premi")
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Riscaldamento...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Caricamento...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Estrusione...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Ripresa...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_kana.h b/Marlin/src/lcd/language/language_kana.h
index 200aed4ecf..b596078360 100644
--- a/Marlin/src/lcd/language/language_kana.h
+++ b/Marlin/src/lcd/language/language_kana.h
@@ -285,10 +285,7 @@
#else
#define MSG_DAC_PERCENT "DAC\xbc\xad\xc2\xd8\xae\xb8" // "DACシュツリョク" ("Driver %")
#endif
-#define MSG_DAC_EEPROM_WRITE MSG_STORE_EPROM // "メモリヘカクノウ" ("DAC EEPROM Write")
-#define MSG_FILAMENT_CHANGE_HEADER "PRINT PAUSED"
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER "RESUME OPTIONS:"
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "\xbb\xd7\xc6\xb5\xbc\xc0\xde\xbd" // "サラニオシダス" ("Extrude more")
+#define MSG_DAC_EEPROM_WRITE MSG_STORE_EEPROM // "メモリヘカクノウ" ("DAC EEPROM Write")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2" // "プリントサイカイ" ("Resume print")
#if LCD_HEIGHT >= 4
@@ -301,8 +298,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_2 "\xb8\xd8\xaf\xb8\xbd\xd9\xc4\xbf\xde\xaf\xba\xb3\xbc\xcf\xbd" // "クリックスルトゾッコウシマス" ("and press button")
#define MSG_FILAMENT_CHANGE_LOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xbf\xb3\xc3\xdd\xc1\xad\xb3" // "フィラメントソウテンチュウ" ("Wait for")
#define MSG_FILAMENT_CHANGE_LOAD_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオマチクダサイ" ("filament load")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xb5\xbc\xc0\xde\xbc\xc1\xad\xb3" // "フィラメントオシダシチュウ" ("Wait for")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオマチクダサイ" ("filament extrude")
#define MSG_FILAMENT_CHANGE_RESUME_1 "\xcc\xdf\xd8\xdd\xc4\xa6\xbb\xb2\xb6\xb2\xbc\xcf\xbd" // "プリントヲサイカイシマス" ("Wait for print")
#define MSG_FILAMENT_CHANGE_RESUME_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオマチクダサイ" ("to resume")
#else // LCD_HEIGHT < 4
@@ -315,7 +310,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_1 "\xbf\xb3\xc6\xad\xb3\xbc\x2c\xb8\xd8\xaf\xb8\xbe\xd6" // "ソウニュウシ,クリックセヨ" ("Insert and Click")
#endif
#define MSG_FILAMENT_CHANGE_LOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xbf\xb3\xc3\xdd\xc1\xad\xb3" // "フィラメントソウテンチュウ" ("Loading...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xb5\xbc\xc0\xde\xbc\xc1\xad\xb3" // "フィラメントオシダシチュウ" ("Extruding...")
#define MSG_FILAMENT_CHANGE_RESUME_1 "\xcc\xdf\xd8\xdd\xc4\xa6\xbb\xb2\xb6\xb2\xbc\xcf\xbd" // "プリントヲサイカイシマス" ("Resuming...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_kana_utf8.h b/Marlin/src/lcd/language/language_kana_utf8.h
index b07aa40977..248bf46eb7 100644
--- a/Marlin/src/lcd/language/language_kana_utf8.h
+++ b/Marlin/src/lcd/language/language_kana_utf8.h
@@ -204,10 +204,7 @@
#define MSG_INFO_PSU _UxGT("デンゲンシュベツ") // "Power Supply"
#define MSG_DRIVE_STRENGTH _UxGT("モータークドウリョク") // "Drive Strength"
#define MSG_DAC_PERCENT _UxGT("DACシュツリョク %") // "Driver %"
-#define MSG_DAC_EEPROM_WRITE MSG_STORE_EPROM // "DAC EEPROM Write"
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("サラニオシダス") // "Extrude more"
+#define MSG_DAC_EEPROM_WRITE MSG_STORE_EEPROM // "DAC EEPROM Write"
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("プリントサイカイ") // "Resume print"
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("コウカンヲカイシシマス") // "Wait for start"
#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("シバラクオマチクダサイ") // "of the filament"
@@ -217,8 +214,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("クリックスルトゾッコウシマス") // "and press button"
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("フィラメントソウテンチュウ") // "Wait for"
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("シバラクオマチクダサイ") // "filament load"
-#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("フィラメントオシダシチュウ") // "Wait for"
-#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("シバラクオマチクダサイ") // "filament extrude"
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("プリントヲサイカイシマス") // "Wait for print"
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("シバラクオマチクダサイ") // "to resume"
diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h
index 11f612de81..5283013c19 100644
--- a/Marlin/src/lcd/language/language_nl.h
+++ b/Marlin/src/lcd/language/language_nl.h
@@ -226,11 +226,7 @@
#define MSG_DRIVE_STRENGTH _UxGT("Motorstroom")
#define MSG_DAC_PERCENT _UxGT("Driver %") //accepted English term in Dutch
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC Opslaan")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudeer meer")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Hervat print")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Minimum Temp is ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Nozzle: ") //accepeted English term
//
// Filament Change screens show up to 3 lines on a 4-line display
@@ -254,10 +250,7 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Wacht voor")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filament te")
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("laden")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Wacht voor")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("filament te")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("extruderen")
- #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wacht voor print")
+ #define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wacht voor print")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("om verder")
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("te gaan")
#else // LCD_HEIGHT < 4
@@ -273,8 +266,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("en druk knop")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Wacht voor")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("inladen...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Wacht voor")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("extrudering")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wacht voor")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("printing...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_pl-DOGM.h b/Marlin/src/lcd/language/language_pl-DOGM.h
index e712185c61..b5584a6838 100644
--- a/Marlin/src/lcd/language/language_pl-DOGM.h
+++ b/Marlin/src/lcd/language/language_pl-DOGM.h
@@ -213,9 +213,8 @@
#define MSG_DAC_PERCENT _UxGT("Siła %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Zapisz DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ZMIEŃ FILAMENT")
+#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("ZMIEŃ FILAMENT")
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ZMIEŃ OPCJE:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Ekstruduj więcej")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Wznów drukowanie")
#if LCD_HEIGHT >= 4
@@ -229,8 +228,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("aby kontynuować...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Czekam na")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("włożenie filamentu")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Czekam na")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("ekstruzję filamentu")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Czekam na")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("wznowienie druku")
#else // LCD_HEIGHT < 4
@@ -239,7 +236,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wysuwanie...")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Włóż i naciśnij prz.")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Ładowanie...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Ekstruzja...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wznowienie...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_pl-HD44780.h b/Marlin/src/lcd/language/language_pl-HD44780.h
index d14cf9d77a..3b25a5dd9a 100644
--- a/Marlin/src/lcd/language/language_pl-HD44780.h
+++ b/Marlin/src/lcd/language/language_pl-HD44780.h
@@ -215,9 +215,8 @@
#define MSG_DAC_PERCENT _UxGT("Sila %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Zapisz DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ZMIEN FILAMENT")
+#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("ZMIEN FILAMENT")
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ZMIEN OPCJE:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Ekstruduj wiecej")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Wznow drukowanie")
#if LCD_HEIGHT >= 4
@@ -231,8 +230,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("aby kontynuowac...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Czekam na")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("wlozenie filamentu")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Czekam na")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("ekstruzje filamentu")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Czekam na")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("wznowienie druku")
#else // LCD_HEIGHT < 4
@@ -241,7 +238,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wysuwanie...")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Wloz i nacisnij prz.")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Ladowanie...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Ekstruzja...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wznowienie...")
#endif // LCD_HEIGHT < 4
@@ -256,8 +252,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("aby kontynuowac...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Czekam na")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("wlozenie filamentu")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Czekam na")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("ekstruzje filamentu")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Czekam na")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("wznowienie druku")
#else // LCD_HEIGHT < 4
@@ -266,7 +260,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wysuwanie...")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Wloz i nacisnij prz.")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Ladowanie...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Ekstruzja...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wznowienie...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h
index 328198770d..27135a38db 100644
--- a/Marlin/src/lcd/language/language_ru.h
+++ b/Marlin/src/lcd/language/language_ru.h
@@ -296,11 +296,9 @@
#define MSG_DRIVE_STRENGTH _UxGT("Сила привода")
#define MSG_DAC_PERCENT _UxGT("Привод %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Записи DAC EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ПЕЧАТЬ ОСТАНОВЛЕНА")
+#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("ПЕЧАТЬ ОСТАНОВЛЕНА")
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ОПЦИИ ВОЗОБНОВЛЕНИЯ:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Выдавить ещё")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Возобновить печать")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Мин. температура")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Сопла: ")
//
// Filament Change screens show up to 3 lines on a 4-line display
@@ -329,7 +327,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Вставь и нажми")
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Нагрев...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Загрузка...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Выдавливание...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Возобновление...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_sk_utf8.h b/Marlin/src/lcd/language/language_sk_utf8.h
index d7157ca41e..28a4660b65 100644
--- a/Marlin/src/lcd/language/language_sk_utf8.h
+++ b/Marlin/src/lcd/language/language_sk_utf8.h
@@ -305,11 +305,9 @@
#define MSG_DAC_PERCENT _UxGT("Motor %")
#define MSG_DAC_EEPROM_WRITE _UxGT("Uložiť do EEPROM")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PAUZA TLAČE")
+#define MSG_FILAMENT_CHANGE_HEADER_PAUSE _UxGT("PAUZA TLAČE")
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("MOŽN. POKRAČ.:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Ešte vytlačiť")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Obnoviť tlač")
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. teplota je ")
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Tryska: ")
#if LCD_HEIGHT >= 4
@@ -330,9 +328,6 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Čakajte prosím")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("na zavedenie")
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("filamentu")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Čakajte prosím")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("na vytlačenie")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("filamentu")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Čakajte prosím")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("na pokračovanie")
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("tlače")
@@ -343,7 +338,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Vložte, kliknite")
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Ohrev...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Zavádzanie...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Vytlačovanie...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Pokračovanie...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h
index daaa4c56f7..b4b0cc37e8 100644
--- a/Marlin/src/lcd/language/language_tr.h
+++ b/Marlin/src/lcd/language/language_tr.h
@@ -228,12 +228,8 @@
#define MSG_DRIVE_STRENGTH _UxGT("Sürücü Gücü") // Sürücü Gücü
#define MSG_DAC_PERCENT _UxGT("Sürücü %") // Sürücü %
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Seçenekler:") // Seçenekler:
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Daha Akıt") // Daha Akıt
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Baskıyı sürdür") // Baskıyı sürdür
-#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. Sıcaklık") // Min. Sıcaklık:
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Nozül: ") // Nozül:
#if LCD_HEIGHT >= 4
@@ -252,8 +248,6 @@
#define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Lütfen Bekleyin...") // Lütfen Bekleyin...
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Bekleniyor") // Bekleniyor
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("filamanın yüklenmesi") // filamanın yüklenmesi
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Bekleniyor") // Bekleniyor
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("filaman akması") // filaman akması
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Baskının sürdürülmesini") // Baskının sürdürülmesini
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("bekle") // bekle
#else // LCD_HEIGHT < 4
@@ -262,7 +256,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Çıkartılıyor...") // Çıkartılıyor...
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Yükle ve bas") // Yükle ve bas
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Yüklüyor...") // Yüklüyor...
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Akıtılıyor...") // Akıtılıyor...
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Sürdürülüyor...") // Sürdürülüyor...
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h
index e687e49b26..8b92709af8 100644
--- a/Marlin/src/lcd/language/language_uk.h
+++ b/Marlin/src/lcd/language/language_uk.h
@@ -204,9 +204,6 @@
#define MSG_DAC_PERCENT _UxGT("% мотору")
#define MSG_DAC_EEPROM_WRITE _UxGT("Запис ЦАП на ПЗП")
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Екструдувати")
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Відновити друк")
#if LCD_HEIGHT >= 4
@@ -221,9 +218,6 @@
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("продовження...")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Зачекайте на")
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("ввід волокна")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Зачекайте на")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("екструзію")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("волокна")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Зачекайте на")
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("відновлення")
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("друку")
@@ -233,7 +227,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Вивід...")
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Вставте і нат.")
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Ввід...")
- #define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Екструзія...")
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Відновлення...")
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h
index af5454b13a..30f4a75cdb 100644
--- a/Marlin/src/lcd/language/language_zh_CN.h
+++ b/Marlin/src/lcd/language/language_zh_CN.h
@@ -201,9 +201,6 @@
#define MSG_INFO_MAX_TEMP _UxGT("最高温度") //"Max Temp"
#define MSG_INFO_PSU _UxGT("电源供应") //"Power Supply"
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("挤出更多") //"Extrude more"
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢复打印") //"Resume print"
#if LCD_HEIGHT >= 4
@@ -219,9 +216,6 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("等待") //"Wait for"
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("进料") //"filament load"
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("") //""
-#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("等待") //"Wait for"
-#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("丝料挤出") //"filament extrude"
-#define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("") //""
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("等待打印") //"Wait for print"
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("恢复") //"to resume"
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("") //""
@@ -231,7 +225,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("退出中 ...") //"Ejecting..."
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("插入并单击") //"Insert and Click"
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("装载中 ...") //"Loading..."
-#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("挤出中 ...") //"Extruding..."
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("恢复中 ...") //"Resuming..."
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h
index 315f77f7f4..39b0e99444 100644
--- a/Marlin/src/lcd/language/language_zh_TW.h
+++ b/Marlin/src/lcd/language/language_zh_TW.h
@@ -201,9 +201,6 @@
#define MSG_INFO_MAX_TEMP _UxGT("最高溫度") //"Max Temp"
#define MSG_INFO_PSU _UxGT("電源供應") //"Power Supply"
-#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
-#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("擠出更多") //"Extrude more"
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢復列印") //"Resume print"
#if LCD_HEIGHT >= 4
@@ -219,9 +216,6 @@
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("等待") //"Wait for"
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("進料") //"filament load"
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("") //""
-#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("等待") //"Wait for"
-#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("絲料擠出") //"filament extrude"
-#define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("") //""
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("等待列印") //"Wait for print"
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("恢復") //"to resume"
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("") //""
@@ -231,7 +225,6 @@
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("退出中 ...") //"Ejecting..."
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("插入並點擊") //"Insert and Click"
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("載入中 ...") //"Loading..."
-#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("擠出中 ...") //"Extruding..."
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("恢復中 ...") //"Resuming..."
#endif // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 28f80c5056..550c712630 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -39,6 +39,10 @@
#include "../Marlin.h"
+#if ENABLED(ADVANCED_PAUSE_FEATURE)
+ #include "../feature/pause.h"
+#endif
+
#if ENABLED(PRINTCOUNTER) && ENABLED(LCD_INFO_MENU)
#include "../libs/duration_t.h"
#endif
@@ -183,7 +187,7 @@ uint16_t max_display_update_time = 0;
void lcd_control_temperature_preheat_material2_settings_menu();
#endif
- #if DISABLED(NO_VOLUMETRICS)
+ #if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE)
void lcd_control_filament_menu();
#endif
@@ -201,14 +205,18 @@ uint16_t max_display_update_time = 0;
#endif
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- void lcd_advanced_pause_toocold_menu();
+ #if E_STEPPERS > 1 || ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
+ void lcd_change_filament_menu();
+ #else
+ void lcd_temp_menu_e0_filament_change();
+ #endif
void lcd_advanced_pause_option_menu();
void lcd_advanced_pause_init_message();
void lcd_advanced_pause_unload_message();
void lcd_advanced_pause_insert_message();
void lcd_advanced_pause_load_message();
void lcd_advanced_pause_heat_nozzle();
- void lcd_advanced_pause_extrude_message();
+ void lcd_advanced_pause_purge_message();
void lcd_advanced_pause_resume_message();
#endif
@@ -303,36 +311,40 @@ uint16_t max_display_update_time = 0;
if (encoderLine == _thisItemNr && lcd_clicked) { \
lcd_clicked = false
- #define _MENU_ITEM_PART_2(TYPE, LABEL, ...) \
+ #define _MENU_ITEM_PART_2(TYPE, PLABEL, ...) \
menu_action_ ## TYPE(__VA_ARGS__); \
if (screen_changed) return; \
} \
if (lcdDrawUpdate) \
- lcd_implementation_drawmenu_ ## TYPE(encoderLine == _thisItemNr, _lcdLineNr, PSTR(LABEL), ## __VA_ARGS__); \
+ lcd_implementation_drawmenu_ ## TYPE(encoderLine == _thisItemNr, _lcdLineNr, PLABEL, ## __VA_ARGS__); \
} \
++_thisItemNr
- #define MENU_ITEM(TYPE, LABEL, ...) do { \
+ #define MENU_ITEM_P(TYPE, PLABEL, ...) do { \
_skipStatic = false; \
_MENU_ITEM_PART_1(TYPE, ## __VA_ARGS__); \
- _MENU_ITEM_PART_2(TYPE, LABEL, ## __VA_ARGS__); \
+ _MENU_ITEM_PART_2(TYPE, PLABEL, ## __VA_ARGS__); \
}while(0)
+ #define MENU_ITEM(TYPE, LABEL, ...) MENU_ITEM_P(TYPE, PSTR(LABEL), ## __VA_ARGS__)
+
#define MENU_BACK(LABEL) MENU_ITEM(back, LABEL, 0)
// Used to print static text with no visible cursor.
// Parameters: label [, bool center [, bool invert [, char *value] ] ]
- #define STATIC_ITEM(LABEL, ...) \
+ #define STATIC_ITEM_P(LABEL, ...) \
if (_menuLineNr == _thisItemNr) { \
if (_skipStatic && encoderLine <= _thisItemNr) { \
encoderPosition += ENCODER_STEPS_PER_MENU_ITEM; \
++encoderLine; \
} \
if (lcdDrawUpdate) \
- lcd_implementation_drawmenu_static(_lcdLineNr, PSTR(LABEL), ## __VA_ARGS__); \
+ lcd_implementation_drawmenu_static(_lcdLineNr, LABEL, ## __VA_ARGS__); \
} \
++_thisItemNr
+ #define STATIC_ITEM(LABEL, ...) STATIC_ITEM_P(PSTR(LABEL), ## __VA_ARGS__)
+
#if ENABLED(ENCODER_RATE_MULTIPLIER)
bool encoderRateMultiplierEnabled;
@@ -343,11 +355,11 @@ uint16_t max_display_update_time = 0;
/**
* MENU_MULTIPLIER_ITEM generates drawing and handling code for a multiplier menu item
*/
- #define MENU_MULTIPLIER_ITEM(type, label, ...) do { \
- _MENU_ITEM_PART_1(type, ## __VA_ARGS__); \
+ #define MENU_MULTIPLIER_ITEM(TYPE, LABEL, ...) do { \
+ _MENU_ITEM_PART_1(TYPE, ## __VA_ARGS__); \
encoderRateMultiplierEnabled = true; \
lastEncoderMovementMillis = 0; \
- _MENU_ITEM_PART_2(type, label, ## __VA_ARGS__); \
+ _MENU_ITEM_PART_2(TYPE, PSTR(LABEL), ## __VA_ARGS__); \
}while(0)
#else // !ENCODER_RATE_MULTIPLIER
@@ -355,14 +367,14 @@ uint16_t max_display_update_time = 0;
#endif // !ENCODER_RATE_MULTIPLIER
#define MENU_ITEM_DUMMY() do { _thisItemNr++; }while(0)
- #define MENU_ITEM_EDIT(type, label, ...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label), ## __VA_ARGS__)
- #define MENU_ITEM_EDIT_CALLBACK(type, label, ...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## __VA_ARGS__)
+ #define MENU_ITEM_EDIT(TYPE, LABEL, ...) MENU_ITEM(setting_edit_ ## TYPE, LABEL, PSTR(LABEL), ## __VA_ARGS__)
+ #define MENU_ITEM_EDIT_CALLBACK(TYPE, LABEL, ...) MENU_ITEM(setting_edit_callback_ ## TYPE, LABEL, PSTR(LABEL), ## __VA_ARGS__)
#if ENABLED(ENCODER_RATE_MULTIPLIER)
- #define MENU_MULTIPLIER_ITEM_EDIT(type, label, ...) MENU_MULTIPLIER_ITEM(setting_edit_ ## type, label, PSTR(label), ## __VA_ARGS__)
- #define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, ...) MENU_MULTIPLIER_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## __VA_ARGS__)
+ #define MENU_MULTIPLIER_ITEM_EDIT(TYPE, LABEL, ...) MENU_MULTIPLIER_ITEM(setting_edit_ ## TYPE, LABEL, PSTR(LABEL), ## __VA_ARGS__)
+ #define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(TYPE, LABEL, ...) MENU_MULTIPLIER_ITEM(setting_edit_callback_ ## TYPE, LABEL, PSTR(LABEL), ## __VA_ARGS__)
#else // !ENCODER_RATE_MULTIPLIER
- #define MENU_MULTIPLIER_ITEM_EDIT(type, label, ...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label), ## __VA_ARGS__)
- #define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, ...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## __VA_ARGS__)
+ #define MENU_MULTIPLIER_ITEM_EDIT(TYPE, LABEL, ...) MENU_ITEM(setting_edit_ ## TYPE, LABEL, PSTR(LABEL), ## __VA_ARGS__)
+ #define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(TYPE, LABEL, ...) MENU_ITEM(setting_edit_callback_ ## TYPE, LABEL, PSTR(LABEL), ## __VA_ARGS__)
#endif // !ENCODER_RATE_MULTIPLIER
/**
@@ -1245,61 +1257,6 @@ void kill_screen(const char* lcd_msg) {
#endif
}
- #if ENABLED(ADVANCED_PAUSE_FEATURE)
-
- void lcd_enqueue_filament_change(
- #if EXTRUDERS > 1
- const uint8_t extruder
- #endif
- ) {
-
- #if ENABLED(PREVENT_COLD_EXTRUSION)
- if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder)) {
- lcd_save_previous_screen();
- lcd_goto_screen(lcd_advanced_pause_toocold_menu);
- return;
- }
- #endif
-
- lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT);
-
- #if EXTRUDERS <= 1
- enqueue_and_echo_commands_P(PSTR("M600 B0"));
- #else
- char *command_M600;
- switch (extruder) {
- case 0: command_M600 = PSTR("M600 B0 T0"); break;
- case 1: command_M600 = PSTR("M600 B0 T1"); break;
- #if EXTRUDERS > 2
- case 2: command_M600 = PSTR("M600 B0 T2"); break;
- #if EXTRUDERS > 3
- case 3: command_M600 = PSTR("M600 B0 T3"); break;
- #if EXTRUDERS > 4
- case 4: command_M600 = PSTR("M600 B0 T4"); break;
- #endif // EXTRUDERS > 4
- #endif // EXTRUDERS > 3
- #endif // EXTRUDERS > 2
- }
- enqueue_and_echo_commands_P(command_M600);
- #endif // EXTRUDERS > 1
- }
-
- #if EXTRUDERS > 1
- void lcd_enqueue_filament_change_e0() { lcd_enqueue_filament_change(0); }
- void lcd_enqueue_filament_change_e1() { lcd_enqueue_filament_change(1); }
- #if EXTRUDERS > 2
- void lcd_enqueue_filament_change_e2() { lcd_enqueue_filament_change(2); }
- #if EXTRUDERS > 3
- void lcd_enqueue_filament_change_e3() { lcd_enqueue_filament_change(3); }
- #if EXTRUDERS > 4
- void lcd_enqueue_filament_change_e4() { lcd_enqueue_filament_change(4); }
- #endif // EXTRUDERS > 4
- #endif // EXTRUDERS > 3
- #endif // EXTRUDERS > 2
- #endif // EXTRUDERS > 1
-
- #endif // ADVANCED_PAUSE_FEATURE
-
// First Fan Speed title in "Tune" and "Control>Temperature" menus
#if FAN_COUNT > 0 && HAS_FAN0
#if FAN_COUNT > 1
@@ -1441,26 +1398,13 @@ void kill_screen(const char* lcd_msg) {
// Change filament
//
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- #if EXTRUDERS > 1
- if (!thermalManager.tooColdToExtrude(0))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E1, lcd_enqueue_filament_change_e0);
- if (!thermalManager.tooColdToExtrude(1))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E2, lcd_enqueue_filament_change_e1);
- #if EXTRUDERS > 2
- if (!thermalManager.tooColdToExtrude(2))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E3, lcd_enqueue_filament_change_e2);
- #if EXTRUDERS > 3
- if (!thermalManager.tooColdToExtrude(3))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E4, lcd_enqueue_filament_change_e3);
- #if EXTRUDERS > 4
- if (!thermalManager.tooColdToExtrude(4))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E5, lcd_enqueue_filament_change_e4);
- #endif // EXTRUDERS > 4
- #endif // EXTRUDERS > 3
- #endif // EXTRUDERS > 2
+ #if E_STEPPERS == 1 && !ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
+ if (!thermalManager.targetTooColdToExtrude(active_extruder))
+ MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600 B0"));
+ else
+ MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_temp_menu_e0_filament_change);
#else
- if (!thermalManager.tooColdToExtrude(active_extruder))
- MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
+ MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_change_filament_menu);
#endif
#endif
@@ -2647,7 +2591,6 @@ void kill_screen(const char* lcd_msg) {
// Set Home Offsets
//
MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets);
- //MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0"));
#endif
//
@@ -2660,26 +2603,13 @@ void kill_screen(const char* lcd_msg) {
//
#if ENABLED(ADVANCED_PAUSE_FEATURE)
if (!IS_SD_FILE_OPEN) {
- #if EXTRUDERS > 1
- if (!thermalManager.tooColdToExtrude(0))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E1, lcd_enqueue_filament_change_e0);
- if (!thermalManager.tooColdToExtrude(1))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E2, lcd_enqueue_filament_change_e1);
- #if EXTRUDERS > 2
- if (!thermalManager.tooColdToExtrude(2))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E3, lcd_enqueue_filament_change_e2);
- #if EXTRUDERS > 3
- if (!thermalManager.tooColdToExtrude(3))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E4, lcd_enqueue_filament_change_e3);
- #if EXTRUDERS > 4
- if (!thermalManager.tooColdToExtrude(4))
- MENU_ITEM(function, MSG_FILAMENTCHANGE " " MSG_E5, lcd_enqueue_filament_change_e4);
- #endif // EXTRUDERS > 4
- #endif // EXTRUDERS > 3
- #endif // EXTRUDERS > 2
+ #if E_STEPPERS == 1 && !ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
+ if (!thermalManager.targetTooColdToExtrude(active_extruder))
+ MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600 B0"));
+ else
+ MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_temp_menu_e0_filament_change);
#else
- if (!thermalManager.tooColdToExtrude(active_extruder))
- MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
+ MENU_ITEM(submenu, MSG_FILAMENTCHANGE, lcd_change_filament_menu);
#endif
}
#endif // ADVANCED_PAUSE_FEATURE
@@ -3228,14 +3158,14 @@ void kill_screen(const char* lcd_msg) {
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu);
MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu);
- #if DISABLED(NO_VOLUMETRICS)
+ #if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE)
MENU_ITEM(submenu, MSG_FILAMENT, lcd_control_filament_menu);
#elif ENABLED(LIN_ADVANCE)
MENU_ITEM_EDIT(float3, MSG_ADVANCE_K, &planner.extruder_advance_k, 0, 999);
#endif
#if HAS_LCD_CONTRAST
- MENU_ITEM_EDIT_CALLBACK(int3, MSG_CONTRAST, (int16_t*) &lcd_contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX, lcd_callback_set_contrast, true);
+ MENU_ITEM_EDIT_CALLBACK(int3, MSG_CONTRAST, &lcd_contrast, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX, lcd_callback_set_contrast, true);
#endif
#if ENABLED(FWRETRACT)
MENU_ITEM(submenu, MSG_RETRACT, lcd_control_retract_menu);
@@ -3487,7 +3417,7 @@ void kill_screen(const char* lcd_msg) {
#if DISABLED(SLIM_LCD_MENUS)
- void _lcd_control_temperature_preheat_settings_menu(uint8_t material) {
+ void _lcd_control_temperature_preheat_settings_menu(const uint8_t material) {
#if HOTENDS > 4
#define MINTEMP_ALL MIN5(HEATER_0_MINTEMP, HEATER_1_MINTEMP, HEATER_2_MINTEMP, HEATER_3_MINTEMP, HEATER_4_MINTEMP)
#define MAXTEMP_ALL MAX5(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP, HEATER_4_MAXTEMP)
@@ -3733,7 +3663,7 @@ void kill_screen(const char* lcd_msg) {
END_MENU();
}
- #if DISABLED(NO_VOLUMETRICS)
+ #if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE)
/**
*
* "Control" > "Filament" submenu
@@ -3747,30 +3677,76 @@ void kill_screen(const char* lcd_msg) {
MENU_ITEM_EDIT(float3, MSG_ADVANCE_K, &planner.extruder_advance_k, 0, 999);
#endif
- MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &parser.volumetric_enabled, planner.calculate_volumetric_multipliers);
+ #if DISABLED(NO_VOLUMETRICS)
+ MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &parser.volumetric_enabled, planner.calculate_volumetric_multipliers);
- if (parser.volumetric_enabled) {
- #if EXTRUDERS == 1
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &planner.filament_size[0], 1.5, 3.25, planner.calculate_volumetric_multipliers);
- #else // EXTRUDERS > 1
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &planner.filament_size[active_extruder], 1.5, 3.25, planner.calculate_volumetric_multipliers);
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E1, &planner.filament_size[0], 1.5, 3.25, planner.calculate_volumetric_multipliers);
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E2, &planner.filament_size[1], 1.5, 3.25, planner.calculate_volumetric_multipliers);
- #if EXTRUDERS > 2
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E3, &planner.filament_size[2], 1.5, 3.25, planner.calculate_volumetric_multipliers);
+ if (parser.volumetric_enabled) {
+ #if EXTRUDERS == 1
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &planner.filament_size[0], 1.5, 3.25, planner.calculate_volumetric_multipliers);
+ #else // EXTRUDERS > 1
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &planner.filament_size[active_extruder], 1.5, 3.25, planner.calculate_volumetric_multipliers);
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E1, &planner.filament_size[0], 1.5, 3.25, planner.calculate_volumetric_multipliers);
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E2, &planner.filament_size[1], 1.5, 3.25, planner.calculate_volumetric_multipliers);
+ #if EXTRUDERS > 2
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E3, &planner.filament_size[2], 1.5, 3.25, planner.calculate_volumetric_multipliers);
#if EXTRUDERS > 3
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E4, &planner.filament_size[3], 1.5, 3.25, planner.calculate_volumetric_multipliers);
#if EXTRUDERS > 4
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E5, &planner.filament_size[4], 1.5, 3.25, planner.calculate_volumetric_multipliers);
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E5, &planner.filament_size[4], 1.5, 3.25, planner.calculate_volumetric_multipliers);
+ #endif // EXTRUDERS > 4
+ #endif // EXTRUDERS > 3
+ #endif // EXTRUDERS > 2
+ #endif // EXTRUDERS > 1
+ }
+ #endif
+
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
+ const float extrude_maxlength =
+ #if ENABLED(PREVENT_LENGTHY_EXTRUDE)
+ EXTRUDE_MAXLENGTH
+ #else
+ 999.0f
+ #endif
+ ;
+
+ #if EXTRUDERS == 1
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD, &filament_change_unload_length[0], 0.0, extrude_maxlength);
+ #else // EXTRUDERS > 1
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD, &filament_change_unload_length[active_extruder], 0.0, extrude_maxlength);
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E1, &filament_change_unload_length[0], 0.0, extrude_maxlength);
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E2, &filament_change_unload_length[1], 0.0, extrude_maxlength);
+ #if EXTRUDERS > 2
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E3, &filament_change_unload_length[2], 0.0, extrude_maxlength);
+ #if EXTRUDERS > 3
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E4, &filament_change_unload_length[3], 0.0, extrude_maxlength);
+ #if EXTRUDERS > 4
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_UNLOAD MSG_DIAM_E5, &filament_change_unload_length[4], 0.0, extrude_maxlength);
#endif // EXTRUDERS > 4
#endif // EXTRUDERS > 3
#endif // EXTRUDERS > 2
#endif // EXTRUDERS > 1
- }
+
+ #if EXTRUDERS == 1
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD, &filament_change_load_length[0], 0.0, extrude_maxlength);
+ #else // EXTRUDERS > 1
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD, &filament_change_load_length[active_extruder], 0.0, extrude_maxlength);
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E1, &filament_change_load_length[0], 0.0, extrude_maxlength);
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E2, &filament_change_load_length[1], 0.0, extrude_maxlength);
+ #if EXTRUDERS > 2
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E3, &filament_change_load_length[2], 0.0, extrude_maxlength);
+ #if EXTRUDERS > 3
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E4, &filament_change_load_length[3], 0.0, extrude_maxlength);
+ #if EXTRUDERS > 4
+ MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_FILAMENT_LOAD MSG_DIAM_E5, &filament_change_load_length[4], 0.0, extrude_maxlength);
+ #endif // EXTRUDERS > 4
+ #endif // EXTRUDERS > 3
+ #endif // EXTRUDERS > 2
+ #endif // EXTRUDERS > 1
+ #endif
END_MENU();
}
- #endif // !NO_VOLUMETRICS
+ #endif // !NO_VOLUMETRICS || ADVANCED_PAUSE_FEATURE
/**
*
@@ -4127,12 +4103,258 @@ void kill_screen(const char* lcd_msg) {
*/
#if ENABLED(ADVANCED_PAUSE_FEATURE)
+ /**
+ *
+ * "Change Filament" > "Change/Unload/Load Filament" submenu
+ *
+ */
+ static AdvancedPauseMode _change_filament_temp_mode;
+ static int8_t _change_filament_temp_extruder;
+
+ static const char* _change_filament_temp_command() {
+ switch (_change_filament_temp_mode) {
+ case ADVANCED_PAUSE_MODE_LOAD_FILAMENT:
+ return PSTR("M701 T%d");
+ case ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT:
+ return _change_filament_temp_extruder >= 0 ? PSTR("M702 T%d") : PSTR("M702 ;%d");
+ case ADVANCED_PAUSE_MODE_PAUSE_PRINT:
+ default:
+ return PSTR("M600 B0 T%d");
+ }
+ return PSTR(MSG_FILAMENTCHANGE);
+ }
+
+ void _change_filament_temp(const uint8_t index) {
+ char cmd[11];
+ sprintf_P(cmd, _change_filament_temp_command(), _change_filament_temp_extruder);
+ thermalManager.setTargetHotend(index == 1 ? PREHEAT_1_TEMP_HOTEND : PREHEAT_2_TEMP_HOTEND, _change_filament_temp_extruder);
+ lcd_enqueue_command(cmd);
+ }
+ void _lcd_change_filament_temp_1_menu() { _change_filament_temp(1); }
+ void _lcd_change_filament_temp_2_menu() { _change_filament_temp(2); }
+
+ static const char* change_filament_header(const AdvancedPauseMode mode) {
+ switch (mode) {
+ case ADVANCED_PAUSE_MODE_LOAD_FILAMENT:
+ return PSTR(MSG_FILAMENTLOAD);
+ case ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT:
+ return PSTR(MSG_FILAMENTUNLOAD);
+ default: break;
+ }
+ return PSTR(MSG_FILAMENTCHANGE);
+ }
+
+ void _lcd_temp_menu_filament_op(const AdvancedPauseMode mode, const int8_t extruder) {
+ _change_filament_temp_mode = mode;
+ _change_filament_temp_extruder = extruder;
+ START_MENU();
+ if (LCD_HEIGHT >= 4) STATIC_ITEM_P(change_filament_header(mode), true, true);
+ MENU_BACK(MSG_FILAMENTCHANGE);
+ MENU_ITEM(submenu, MSG_PREHEAT_1, _lcd_change_filament_temp_1_menu);
+ MENU_ITEM(submenu, MSG_PREHEAT_2, _lcd_change_filament_temp_2_menu);
+ END_MENU();
+ }
+ void lcd_temp_menu_e0_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 0); }
+ void lcd_temp_menu_e0_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 0); }
+ void lcd_temp_menu_e0_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 0); }
+ #if E_STEPPERS > 1
+ void lcd_temp_menu_e1_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 1); }
+ void lcd_temp_menu_e1_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 1); }
+ void lcd_temp_menu_e1_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 1); }
+ #if ENABLED(FILAMENT_UNLOAD_ALL_EXTRUDERS)
+ void lcd_unload_filament_all_temp_menu() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, -1); }
+ #endif
+ #if E_STEPPERS > 2
+ void lcd_temp_menu_e2_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 2); }
+ void lcd_temp_menu_e2_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 2); }
+ void lcd_temp_menu_e2_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 2); }
+ #if E_STEPPERS > 3
+ void lcd_temp_menu_e3_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 3); }
+ void lcd_temp_menu_e3_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 3); }
+ void lcd_temp_menu_e3_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 3); }
+ #if E_STEPPERS > 4
+ void lcd_temp_menu_e4_filament_change() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_PAUSE_PRINT, 4); }
+ void lcd_temp_menu_e4_filament_load() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_LOAD_FILAMENT, 4); }
+ void lcd_temp_menu_e4_filament_unload() { _lcd_temp_menu_filament_op(ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT, 4); }
+ #endif // E_STEPPERS > 4
+ #endif // E_STEPPERS > 3
+ #endif // E_STEPPERS > 2
+ #endif // E_STEPPERS > 1
+
+ /**
+ *
+ * "Change Filament" submenu
+ *
+ */
+ #if E_STEPPERS > 1 || ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
+ void lcd_change_filament_menu() {
+ START_MENU();
+ MENU_BACK(MSG_PREPARE);
+
+ // Change filament
+ #if E_STEPPERS == 1
+ PGM_P msg0 = PSTR(MSG_FILAMENTCHANGE);
+ if (thermalManager.targetTooColdToExtrude(active_extruder))
+ MENU_ITEM_P(submenu, msg0, lcd_temp_menu_e0_filament_change);
+ else
+ MENU_ITEM_P(gcode, msg0, PSTR("M600 B0"));
+ #else
+ PGM_P msg0 = PSTR(MSG_FILAMENTCHANGE " " MSG_E1);
+ PGM_P msg1 = PSTR(MSG_FILAMENTCHANGE " " MSG_E2);
+ if (thermalManager.targetTooColdToExtrude(0))
+ MENU_ITEM_P(submenu, msg0, lcd_temp_menu_e0_filament_change);
+ else
+ MENU_ITEM_P(gcode, msg0, PSTR("M600 B0 T0"));
+ if (thermalManager.targetTooColdToExtrude(1))
+ MENU_ITEM_P(submenu, msg1, lcd_temp_menu_e1_filament_change);
+ else
+ MENU_ITEM_P(gcode, msg1, PSTR("M600 B0 T1"));
+ #if E_STEPPERS > 2
+ PGM_P msg2 = PSTR(MSG_FILAMENTCHANGE " " MSG_E3);
+ if (thermalManager.targetTooColdToExtrude(2))
+ MENU_ITEM_P(submenu, msg2, lcd_temp_menu_e2_filament_change);
+ else
+ MENU_ITEM_P(gcode, msg2, PSTR("M600 B0 T2"));
+ #if E_STEPPERS > 3
+ PGM_P msg3 = PSTR(MSG_FILAMENTCHANGE " " MSG_E4);
+ if (thermalManager.targetTooColdToExtrude(3))
+ MENU_ITEM_P(submenu, msg3, lcd_temp_menu_e3_filament_change);
+ else
+ MENU_ITEM_P(gcode, msg3, PSTR("M600 B0 T3"));
+ #if E_STEPPERS > 4
+ PGM_P msg4 = PSTR(MSG_FILAMENTCHANGE " " MSG_E5);
+ if (thermalManager.targetTooColdToExtrude(4))
+ MENU_ITEM_P(submenu, msg4, lcd_temp_menu_e4_filament_change);
+ else
+ MENU_ITEM_P(gcode, msg4, PSTR("M600 B0 T4"));
+ #endif // E_STEPPERS > 4
+ #endif // E_STEPPERS > 3
+ #endif // E_STEPPERS > 2
+ #endif // E_STEPPERS == 1
+
+ #if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
+ if (!planner.movesplanned() && !IS_SD_FILE_OPEN) {
+ // Load filament
+ #if E_STEPPERS == 1
+ PGM_P msg0 = PSTR(MSG_FILAMENTLOAD);
+ if (thermalManager.targetTooColdToExtrude(active_extruder))
+ MENU_ITEM_P(submenu, msg0, lcd_temp_menu_e0_filament_load);
+ else
+ MENU_ITEM_P(gcode, msg0, PSTR("M701"));
+ #else
+ PGM_P msg0 = PSTR(MSG_FILAMENTLOAD " " MSG_E1);
+ PGM_P msg1 = PSTR(MSG_FILAMENTLOAD " " MSG_E2);
+ if (thermalManager.targetTooColdToExtrude(0))
+ MENU_ITEM_P(submenu, msg0, lcd_temp_menu_e0_filament_load);
+ else
+ MENU_ITEM_P(gcode, msg0, PSTR("M701 T0"));
+ if (thermalManager.targetTooColdToExtrude(1))
+ MENU_ITEM_P(submenu, msg1, lcd_temp_menu_e1_filament_load);
+ else
+ MENU_ITEM_P(gcode, msg1, PSTR("M701 T1"));
+ #if E_STEPPERS > 2
+ PGM_P msg2 = PSTR(MSG_FILAMENTLOAD " " MSG_E3);
+ if (thermalManager.targetTooColdToExtrude(2))
+ MENU_ITEM_P(submenu, msg2, lcd_temp_menu_e2_filament_load);
+ else
+ MENU_ITEM_P(gcode, msg2, PSTR("M701 T2"));
+ #if E_STEPPERS > 3
+ PGM_P msg3 = PSTR(MSG_FILAMENTLOAD " " MSG_E4);
+ if (thermalManager.targetTooColdToExtrude(3))
+ MENU_ITEM_P(submenu, msg3, lcd_temp_menu_e3_filament_load);
+ else
+ MENU_ITEM_P(gcode, msg3, PSTR("M701 T3"));
+ #if E_STEPPERS > 4
+ PGM_P msg4 = PSTR(MSG_FILAMENTLOAD " " MSG_E5);
+ if (thermalManager.targetTooColdToExtrude(4))
+ MENU_ITEM_P(submenu, msg4, lcd_temp_menu_e4_filament_load);
+ else
+ MENU_ITEM_P(gcode, msg4, PSTR("M701 T4"));
+ #endif // E_STEPPERS > 4
+ #endif // E_STEPPERS > 3
+ #endif // E_STEPPERS > 2
+ #endif // E_STEPPERS == 1
+
+ // Unload filament
+ #if E_STEPPERS == 1
+ if (!thermalManager.targetTooColdToExtrude(active_extruder))
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD, PSTR("M702"));
+ else
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD, lcd_temp_menu_e0_filament_unload);
+ #else
+ #if ENABLED(FILAMENT_UNLOAD_ALL_EXTRUDERS)
+ if (!thermalManager.targetTooColdToExtrude(0)
+ #if E_STEPPERS > 1
+ && !thermalManager.targetTooColdToExtrude(1)
+ #if E_STEPPERS > 2
+ && !thermalManager.targetTooColdToExtrude(2)
+ #if E_STEPPERS > 3
+ && !thermalManager.targetTooColdToExtrude(3)
+ #if E_STEPPERS > 4
+ && !thermalManager.targetTooColdToExtrude(4)
+ #endif // E_STEPPERS > 4
+ #endif // E_STEPPERS > 3
+ #endif // E_STEPPERS > 2
+ #endif // E_STEPPERS > 1
+ )
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD_ALL, PSTR("M702"));
+ else
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD_ALL, lcd_unload_filament_all_temp_menu);
+ #endif
+ if (!thermalManager.targetTooColdToExtrude(0))
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E1, PSTR("M702 T0"));
+ else
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E1, lcd_temp_menu_e0_filament_unload);
+ if (!thermalManager.targetTooColdToExtrude(1))
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E2, PSTR("M702 T1"));
+ else
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E2, lcd_temp_menu_e1_filament_unload);
+ #if E_STEPPERS > 2
+ if (!thermalManager.targetTooColdToExtrude(2))
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E3, PSTR("M702 T2"));
+ else
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E3, lcd_temp_menu_e2_filament_unload);
+ #if E_STEPPERS > 3
+ if (!thermalManager.targetTooColdToExtrude(3))
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E4, PSTR("M702 T3"));
+ else
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E4, lcd_temp_menu_e3_filament_unload);
+ #if E_STEPPERS > 4
+ if (!thermalManager.targetTooColdToExtrude(4))
+ MENU_ITEM(gcode, MSG_FILAMENTUNLOAD " " MSG_E5, PSTR("M702 T4"));
+ else
+ MENU_ITEM(submenu, MSG_FILAMENTUNLOAD " " MSG_E5, lcd_temp_menu_e4_filament_unload);
+ #endif // E_STEPPERS > 4
+ #endif // E_STEPPERS > 3
+ #endif // E_STEPPERS > 2
+ #endif // E_STEPPERS == 1
+ }
+ #endif
+
+ END_MENU();
+ }
+ #endif
+
+ static AdvancedPauseMode advanced_pause_mode = ADVANCED_PAUSE_MODE_PAUSE_PRINT;
+ static uint8_t hotend_status_extruder = 0;
+
+ static const char* advanced_pause_header() {
+ switch (advanced_pause_mode) {
+ case ADVANCED_PAUSE_MODE_LOAD_FILAMENT:
+ return PSTR(MSG_FILAMENT_CHANGE_HEADER_LOAD);
+ case ADVANCED_PAUSE_MODE_UNLOAD_FILAMENT:
+ return PSTR(MSG_FILAMENT_CHANGE_HEADER_UNLOAD);
+ default: break;
+ }
+ return PSTR(MSG_FILAMENT_CHANGE_HEADER_PAUSE);
+ }
+
// Portions from STATIC_ITEM...
#define HOTEND_STATUS_ITEM() do { \
if (_menuLineNr == _thisItemNr) { \
if (lcdDrawUpdate) { \
lcd_implementation_drawmenu_static(_lcdLineNr, PSTR(MSG_FILAMENT_CHANGE_NOZZLE), false, true); \
- lcd_implementation_hotend_status(_lcdLineNr); \
+ lcd_implementation_hotend_status(_lcdLineNr, hotend_status_extruder); \
} \
if (_skipStatic && encoderLine <= _thisItemNr) { \
encoderPosition += ENCODER_STEPS_PER_MENU_ITEM; \
@@ -4143,18 +4365,6 @@ void kill_screen(const char* lcd_msg) {
++_thisItemNr; \
}while(0)
- void lcd_advanced_pause_toocold_menu() {
- START_MENU();
- STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true);
- STATIC_ITEM(MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false);
- MENU_BACK(MSG_BACK);
- #if LCD_HEIGHT > 4
- STATIC_ITEM(" ");
- #endif
- HOTEND_STATUS_ITEM();
- END_MENU();
- }
-
void lcd_advanced_pause_resume_print() {
advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_RESUME_PRINT;
}
@@ -4169,13 +4379,13 @@ void kill_screen(const char* lcd_msg) {
STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER, true, false);
#endif
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_advanced_pause_resume_print);
- MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_EXTRUDE, lcd_advanced_pause_extrude_more);
+ MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_PURGE, lcd_advanced_pause_extrude_more);
END_MENU();
}
void lcd_advanced_pause_init_message() {
START_SCREEN();
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1);
#ifdef MSG_FILAMENT_CHANGE_INIT_2
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_2);
@@ -4198,7 +4408,7 @@ void kill_screen(const char* lcd_msg) {
void lcd_advanced_pause_unload_message() {
START_SCREEN();
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1);
#ifdef MSG_FILAMENT_CHANGE_UNLOAD_2
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_2);
@@ -4221,7 +4431,7 @@ void kill_screen(const char* lcd_msg) {
void lcd_advanced_pause_wait_for_nozzles_to_heat() {
START_SCREEN();
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1);
#ifdef MSG_FILAMENT_CHANGE_HEATING_2
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_2);
@@ -4238,7 +4448,7 @@ void kill_screen(const char* lcd_msg) {
void lcd_advanced_pause_heat_nozzle() {
START_SCREEN();
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1);
#ifdef MSG_FILAMENT_CHANGE_INSERT_2
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_2);
@@ -4255,7 +4465,7 @@ void kill_screen(const char* lcd_msg) {
void lcd_advanced_pause_insert_message() {
START_SCREEN();
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1);
#ifdef MSG_FILAMENT_CHANGE_INSERT_2
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_2);
@@ -4278,7 +4488,7 @@ void kill_screen(const char* lcd_msg) {
void lcd_advanced_pause_load_message() {
START_SCREEN();
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1);
#ifdef MSG_FILAMENT_CHANGE_LOAD_2
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_2);
@@ -4299,18 +4509,18 @@ void kill_screen(const char* lcd_msg) {
END_SCREEN();
}
- void lcd_advanced_pause_extrude_message() {
+ void lcd_advanced_pause_purge_message() {
START_SCREEN();
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
- STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_1);
- #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_2
- STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_2);
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
+ STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_1);
+ #ifdef MSG_FILAMENT_CHANGE_PURGE_2
+ STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_2);
#define __FC_LINES_G 3
#else
#define __FC_LINES_G 2
#endif
- #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3
- STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3);
+ #ifdef MSG_FILAMENT_CHANGE_PURGE_3
+ STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_3);
#define _FC_LINES_G (__FC_LINES_G + 1)
#else
#define _FC_LINES_G __FC_LINES_G
@@ -4324,7 +4534,7 @@ void kill_screen(const char* lcd_msg) {
void lcd_advanced_pause_resume_message() {
START_SCREEN();
- STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
+ STATIC_ITEM_P(advanced_pause_header(), true, true);
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_1);
#ifdef MSG_FILAMENT_CHANGE_RESUME_2
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_2);
@@ -4335,49 +4545,38 @@ void kill_screen(const char* lcd_msg) {
END_SCREEN();
}
- void lcd_advanced_pause_show_message(const AdvancedPauseMessage message) {
+ FORCE_INLINE screenFunc_t ap_message_screen(const AdvancedPauseMessage message) {
switch (message) {
- case ADVANCED_PAUSE_MESSAGE_INIT:
- defer_return_to_status = true;
- lcd_goto_screen(lcd_advanced_pause_init_message);
- break;
- case ADVANCED_PAUSE_MESSAGE_UNLOAD:
- defer_return_to_status = true;
- lcd_goto_screen(lcd_advanced_pause_unload_message);
- break;
- case ADVANCED_PAUSE_MESSAGE_INSERT:
- defer_return_to_status = true;
- lcd_goto_screen(lcd_advanced_pause_insert_message);
- break;
- case ADVANCED_PAUSE_MESSAGE_LOAD:
- defer_return_to_status = true;
- lcd_goto_screen(lcd_advanced_pause_load_message);
- break;
- case ADVANCED_PAUSE_MESSAGE_EXTRUDE:
- defer_return_to_status = true;
- lcd_goto_screen(lcd_advanced_pause_extrude_message);
- break;
- case ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE:
- defer_return_to_status = true;
- lcd_goto_screen(lcd_advanced_pause_heat_nozzle);
- break;
- case ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT:
- defer_return_to_status = true;
- lcd_goto_screen(lcd_advanced_pause_wait_for_nozzles_to_heat);
- break;
- case ADVANCED_PAUSE_MESSAGE_OPTION:
- defer_return_to_status = true;
- advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
- lcd_goto_screen(lcd_advanced_pause_option_menu);
- break;
- case ADVANCED_PAUSE_MESSAGE_RESUME:
- defer_return_to_status = true;
- lcd_goto_screen(lcd_advanced_pause_resume_message);
- break;
+ case ADVANCED_PAUSE_MESSAGE_INIT: return lcd_advanced_pause_init_message;
+ case ADVANCED_PAUSE_MESSAGE_UNLOAD: return lcd_advanced_pause_unload_message;
+ case ADVANCED_PAUSE_MESSAGE_INSERT: return lcd_advanced_pause_insert_message;
+ case ADVANCED_PAUSE_MESSAGE_LOAD: return lcd_advanced_pause_load_message;
+ case ADVANCED_PAUSE_MESSAGE_PURGE: return lcd_advanced_pause_purge_message;
+ case ADVANCED_PAUSE_MESSAGE_RESUME: return lcd_advanced_pause_resume_message;
+ case ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE: return lcd_advanced_pause_heat_nozzle;
+ case ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT: return lcd_advanced_pause_wait_for_nozzles_to_heat;
+ case ADVANCED_PAUSE_MESSAGE_OPTION: advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
+ return lcd_advanced_pause_option_menu;
case ADVANCED_PAUSE_MESSAGE_STATUS:
- lcd_return_to_status();
- break;
+ default: break;
}
+ return NULL;
+ }
+
+ void lcd_advanced_pause_show_message(
+ const AdvancedPauseMessage message,
+ const AdvancedPauseMode mode/*=ADVANCED_PAUSE_MODE_PAUSE_PRINT*/,
+ const uint8_t extruder/*=active_extruder*/
+ ) {
+ advanced_pause_mode = mode;
+ hotend_status_extruder = extruder;
+ const screenFunc_t next_screen = ap_message_screen(message);
+ if (next_screen) {
+ defer_return_to_status = true;
+ lcd_goto_screen(next_screen);
+ }
+ else
+ lcd_return_to_status();
}
#endif // ADVANCED_PAUSE_FEATURE
@@ -4738,7 +4937,7 @@ void lcd_update() {
if (UBL_CONDITION && LCD_CLICKED) {
if (!wait_for_unclick) { // If not waiting for a debounce release:
wait_for_unclick = true; // Set debounce flag to ignore continous clicks
- lcd_clicked = !wait_for_user && !no_reentry; // Flag the click if allowed
+ lcd_clicked = !wait_for_user && !no_reentry; // Keep the click if not waiting for a user-click
wait_for_user = false; // Any click clears wait for user
lcd_quick_feedback(); // Always make a click sound
}
diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h
index 23148ae351..98e8ffa134 100644
--- a/Marlin/src/lcd/ultralcd.h
+++ b/Marlin/src/lcd/ultralcd.h
@@ -29,6 +29,10 @@
#include "../Marlin.h"
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
+ #include "../feature/pause.h"
+ #endif
+
#if ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(G26_MESH_VALIDATION)
extern bool lcd_external_control;
#else
@@ -116,20 +120,11 @@
void lcd_completion_feedback(const bool good=true);
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- enum AdvancedPauseMessage {
- ADVANCED_PAUSE_MESSAGE_INIT,
- ADVANCED_PAUSE_MESSAGE_UNLOAD,
- ADVANCED_PAUSE_MESSAGE_INSERT,
- ADVANCED_PAUSE_MESSAGE_LOAD,
- ADVANCED_PAUSE_MESSAGE_EXTRUDE,
- ADVANCED_PAUSE_MESSAGE_OPTION,
- ADVANCED_PAUSE_MESSAGE_RESUME,
- ADVANCED_PAUSE_MESSAGE_STATUS,
- ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE,
- ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT
- };
- void lcd_advanced_pause_show_message(const AdvancedPauseMessage message);
- #endif
+ extern uint8_t active_extruder;
+ void lcd_advanced_pause_show_message(const AdvancedPauseMessage message,
+ const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_PAUSE_PRINT,
+ const uint8_t extruder=active_extruder);
+ #endif // ADVANCED_PAUSE_FEATURE
#if ENABLED(G26_MESH_VALIDATION)
void lcd_chirp();
diff --git a/Marlin/src/lcd/ultralcd_impl_DOGM.h b/Marlin/src/lcd/ultralcd_impl_DOGM.h
index 27cfc8d4f4..cf1719297f 100644
--- a/Marlin/src/lcd/ultralcd_impl_DOGM.h
+++ b/Marlin/src/lcd/ultralcd_impl_DOGM.h
@@ -773,7 +773,7 @@ static void lcd_implementation_status_screen() {
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- static void lcd_implementation_hotend_status(const uint8_t row) {
+ static void lcd_implementation_hotend_status(const uint8_t row, const uint8_t extruder=active_extruder) {
row_y1 = row * row_height + 1;
row_y2 = row_y1 + row_height - 1;
@@ -781,13 +781,13 @@ static void lcd_implementation_status_screen() {
u8g.setPrintPos(LCD_PIXEL_WIDTH - 11 * (DOG_CHAR_WIDTH), row_y2);
lcd_print('E');
- lcd_print((char)('1' + active_extruder));
+ lcd_print((char)('1' + extruder));
lcd_print(' ');
- lcd_print(itostr3(thermalManager.degHotend(active_extruder)));
+ lcd_print(itostr3(thermalManager.degHotend(extruder)));
lcd_print('/');
- if (lcd_blink() || !thermalManager.is_heater_idle(active_extruder))
- lcd_print(itostr3(thermalManager.degTargetHotend(active_extruder)));
+ if (lcd_blink() || !thermalManager.is_heater_idle(extruder))
+ lcd_print(itostr3(thermalManager.degTargetHotend(extruder)));
}
#endif // ADVANCED_PAUSE_FEATURE
diff --git a/Marlin/src/lcd/ultralcd_impl_HD44780.h b/Marlin/src/lcd/ultralcd_impl_HD44780.h
index 72f2574b81..0331af6819 100644
--- a/Marlin/src/lcd/ultralcd_impl_HD44780.h
+++ b/Marlin/src/lcd/ultralcd_impl_HD44780.h
@@ -803,7 +803,6 @@ static void lcd_implementation_status_screen() {
// If the first line has two extruder temps,
// show more temperatures on the next line
- // instead of
#if HOTENDS > 2 || (HOTENDS > 1 && TEMP_SENSOR_BED)
@@ -954,10 +953,10 @@ static void lcd_implementation_status_screen() {
#if ENABLED(ADVANCED_PAUSE_FEATURE)
- static void lcd_implementation_hotend_status(const uint8_t row) {
+ static void lcd_implementation_hotend_status(const uint8_t row, const uint8_t extruder=active_extruder) {
if (row < LCD_HEIGHT) {
lcd.setCursor(LCD_WIDTH - 9, row);
- _draw_heater_status(active_extruder, LCD_STR_THERMOMETER[0], lcd_blink());
+ _draw_heater_status(extruder, LCD_STR_THERMOMETER[0], lcd_blink());
}
}
diff --git a/Marlin/src/libs/nozzle.cpp b/Marlin/src/libs/nozzle.cpp
index 93ed937d66..9d62cf3912 100644
--- a/Marlin/src/libs/nozzle.cpp
+++ b/Marlin/src/libs/nozzle.cpp
@@ -162,7 +162,7 @@
#if ENABLED(NOZZLE_PARK_FEATURE)
- void Nozzle::park(const uint8_t &z_action, const point_t &park /*= NOZZLE_PARK_POINT*/) {
+ void Nozzle::park(const uint8_t z_action, const point_t &park /*= NOZZLE_PARK_POINT*/) {
const float fr_xy = NOZZLE_PARK_XY_FEEDRATE;
const float fr_z = NOZZLE_PARK_Z_FEEDRATE;
diff --git a/Marlin/src/libs/nozzle.h b/Marlin/src/libs/nozzle.h
index 4629d7b948..3adf6f3ac8 100644
--- a/Marlin/src/libs/nozzle.h
+++ b/Marlin/src/libs/nozzle.h
@@ -86,7 +86,7 @@ class Nozzle {
#if ENABLED(NOZZLE_PARK_FEATURE)
- static void park(const uint8_t &z_action, const point_t &park = NOZZLE_PARK_POINT) _Os;
+ static void park(const uint8_t z_action, const point_t &park=NOZZLE_PARK_POINT) _Os;
#endif
};
diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp
index 9cc2b66782..5b986e9e41 100644
--- a/Marlin/src/module/configuration_store.cpp
+++ b/Marlin/src/module/configuration_store.cpp
@@ -36,13 +36,13 @@
*
*/
-#define EEPROM_VERSION "V47"
+#define EEPROM_VERSION "V48"
// Change EEPROM version if these are changed:
#define EEPROM_OFFSET 100
/**
- * V47 EEPROM Layout:
+ * V48 EEPROM Layout:
*
* 100 Version (char x4)
* 104 EEPROM CRC16 (uint16_t)
@@ -139,7 +139,7 @@
*
* Volumetric Extrusion: 21 bytes
* 539 M200 D parser.volumetric_enabled (bool)
- * 540 M200 T D planner.filament_size (float x5) (T0..3)
+ * 540 M200 T D planner.filament_size (float x5) (T0..4)
*
* HAS_TRINAMIC: 22 bytes
* 560 M906 X Stepper X current (uint16_t)
@@ -154,7 +154,7 @@
* 578 M906 E3 Stepper E3 current (uint16_t)
* 580 M906 E4 Stepper E4 current (uint16_t)
*
- * SENSORLESS HOMING 4 bytes
+ * SENSORLESS_HOMING: 4 bytes
* 582 M914 X Stepper X and X2 threshold (int16_t)
* 584 M914 Y Stepper Y and Y2 threshold (int16_t)
*
@@ -167,7 +167,7 @@
* 598 M907 Z Stepper Z current (uint32_t)
* 602 M907 E Stepper E current (uint32_t)
*
- * CNC_COORDINATE_SYSTEMS 108 bytes
+ * CNC_COORDINATE_SYSTEMS: 108 bytes
* 606 G54-G59.3 coordinate_system (float x 27)
*
* SKEW_CORRECTION: 12 bytes
@@ -175,8 +175,12 @@
* 718 M852 J planner.xz_skew_factor (float)
* 722 M852 K planner.yz_skew_factor (float)
*
- * 726 Minimum end-point
- * 2255 (726 + 208 + 36 + 9 + 288 + 988) Maximum end-point
+ * ADVANCED_PAUSE_FEATURE: 40 bytes
+ * 726 M603 T U filament_change_unload_length (float x 5) (T0..4)
+ * 746 M603 T L filament_change_load_length (float x 5) (T0..4)
+ *
+ * 766 Minimum end-point
+ * 2295 (766 + 208 + 36 + 9 + 288 + 988) Maximum end-point
*
* ========================================================================
* meshes_begin (between max and min end-point, directly above)
@@ -698,6 +702,23 @@ void MarlinSettings::postprocess() {
for (uint8_t q = 3; q--;) EEPROM_WRITE(dummy);
#endif
+ //
+ // Advanced Pause filament load & unload lengths
+ //
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
+ for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
+ if (q < COUNT(filament_change_unload_length)) dummy = filament_change_unload_length[q];
+ EEPROM_WRITE(dummy);
+ }
+ for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
+ if (q < COUNT(filament_change_load_length)) dummy = filament_change_load_length[q];
+ EEPROM_WRITE(dummy);
+ }
+ #else
+ dummy = 0.0f;
+ for (uint8_t q = MAX_EXTRUDERS * 2; q--;) EEPROM_WRITE(dummy);
+ #endif
+
if (!eeprom_error) {
#if ENABLED(EEPROM_CHITCHAT)
const int eeprom_size = eeprom_index;
@@ -1183,6 +1204,23 @@ void MarlinSettings::postprocess() {
for (uint8_t q = 3; q--;) EEPROM_READ(dummy);
#endif
+ //
+ // Advanced Pause filament load & unload lengths
+ //
+
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
+ for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
+ EEPROM_READ(dummy);
+ if (q < COUNT(filament_change_unload_length)) filament_change_unload_length[q] = dummy;
+ }
+ for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) {
+ EEPROM_READ(dummy);
+ if (q < COUNT(filament_change_load_length)) filament_change_load_length[q] = dummy;
+ }
+ #else
+ for (uint8_t q = MAX_EXTRUDERS * 2; q--;) EEPROM_READ(dummy);
+ #endif
+
if (working_crc == stored_crc) {
postprocess();
#if ENABLED(EEPROM_CHITCHAT)
@@ -1593,6 +1631,13 @@ void MarlinSettings::reset() {
#endif
#endif
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
+ for (uint8_t e = 0; e < E_STEPPERS; e++) {
+ filament_change_unload_length[e] = FILAMENT_CHANGE_UNLOAD_LENGTH;
+ filament_change_load_length[e] = FILAMENT_CHANGE_LOAD_LENGTH;
+ }
+ #endif
+
postprocess();
#if ENABLED(EEPROM_CHITCHAT)
@@ -1804,36 +1849,35 @@ void MarlinSettings::reset() {
}
#endif
- #if ENABLED(MESH_BED_LEVELING)
+ /**
+ * Bed Leveling
+ */
+ #if HAS_LEVELING
- if (!forReplay) {
- CONFIG_ECHO_START;
- SERIAL_ECHOLNPGM("Mesh Bed Leveling:");
- }
- CONFIG_ECHO_START;
- SERIAL_ECHOPAIR(" M420 S", leveling_is_valid() ? 1 : 0);
- #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
- SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.z_fade_height));
- #endif
- SERIAL_EOL();
- for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) {
- for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) {
+ #if ENABLED(MESH_BED_LEVELING)
+
+ if (!forReplay) {
CONFIG_ECHO_START;
- SERIAL_ECHOPAIR(" G29 S3 X", (int)px + 1);
- SERIAL_ECHOPAIR(" Y", (int)py + 1);
- SERIAL_ECHOPGM(" Z");
- SERIAL_PROTOCOL_F(LINEAR_UNIT(mbl.z_values[px][py]), 5);
- SERIAL_EOL();
+ SERIAL_ECHOLNPGM("Mesh Bed Leveling:");
}
- }
- #elif ENABLED(AUTO_BED_LEVELING_UBL)
+ #elif ENABLED(AUTO_BED_LEVELING_UBL)
+
+ if (!forReplay) {
+ CONFIG_ECHO_START;
+ ubl.echo_name();
+ SERIAL_ECHOLNPGM(":");
+ }
+
+ #elif HAS_ABL
+
+ if (!forReplay) {
+ CONFIG_ECHO_START;
+ SERIAL_ECHOLNPGM("Auto Bed Leveling:");
+ }
+
+ #endif
- if (!forReplay) {
- CONFIG_ECHO_START;
- ubl.echo_name();
- SERIAL_ECHOLNPGM(":");
- }
CONFIG_ECHO_START;
SERIAL_ECHOPAIR(" M420 S", planner.leveling_active ? 1 : 0);
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
@@ -1841,29 +1885,32 @@ void MarlinSettings::reset() {
#endif
SERIAL_EOL();
- if (!forReplay) {
- SERIAL_EOL();
- ubl.report_state();
+ #if ENABLED(MESH_BED_LEVELING)
- SERIAL_ECHOLNPAIR("\nActive Mesh Slot: ", ubl.storage_slot);
- SERIAL_ECHOPAIR("EEPROM can hold ", calc_num_meshes());
- SERIAL_ECHOLNPGM(" meshes.\n");
- }
+ for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) {
+ for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) {
+ CONFIG_ECHO_START;
+ SERIAL_ECHOPAIR(" G29 S3 X", (int)px + 1);
+ SERIAL_ECHOPAIR(" Y", (int)py + 1);
+ SERIAL_ECHOPGM(" Z");
+ SERIAL_PROTOCOL_F(LINEAR_UNIT(mbl.z_values[px][py]), 5);
+ SERIAL_EOL();
+ }
+ }
- #elif HAS_ABL
+ #elif ENABLED(AUTO_BED_LEVELING_UBL)
+
+ if (!forReplay) {
+ SERIAL_EOL();
+ ubl.report_state();
+ SERIAL_ECHOLNPAIR("\nActive Mesh Slot: ", ubl.storage_slot);
+ SERIAL_ECHOPAIR("EEPROM can hold ", calc_num_meshes());
+ SERIAL_ECHOLNPGM(" meshes.\n");
+ }
- if (!forReplay) {
- CONFIG_ECHO_START;
- SERIAL_ECHOLNPGM("Auto Bed Leveling:");
- }
- CONFIG_ECHO_START;
- SERIAL_ECHOPAIR(" M420 S", planner.leveling_active ? 1 : 0);
- #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
- SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.z_fade_height));
#endif
- SERIAL_EOL();
- #endif
+ #endif // HAS_LEVELING
#if ENABLED(DELTA)
if (!forReplay) {
@@ -2045,7 +2092,7 @@ void MarlinSettings::reset() {
/**
* TMC2130 stepper driver current
*/
- #if ENABLED(HAVE_TMC2130)
+ #if HAS_TRINAMIC
if (!forReplay) {
CONFIG_ECHO_START;
SERIAL_ECHOLNPGM("Stepper driver current:");
@@ -2091,7 +2138,7 @@ void MarlinSettings::reset() {
/**
* TMC2130 Sensorless homing thresholds
*/
- #if ENABLED(HAVE_TMC2130) && ENABLED(SENSORLESS_HOMING)
+ #if ENABLED(SENSORLESS_HOMING)
if (!forReplay) {
CONFIG_ECHO_START;
SERIAL_ECHOLNPGM("Sensorless homing threshold:");
@@ -2137,6 +2184,42 @@ void MarlinSettings::reset() {
SERIAL_ECHOPAIR(" E", stepper.motor_current_setting[2]);
SERIAL_EOL();
#endif
+
+ /**
+ * Advanced Pause filament load & unload lengths
+ */
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
+ if (!forReplay) {
+ CONFIG_ECHO_START;
+ SERIAL_ECHOLNPGM("Filament load/unload lengths:");
+ }
+ CONFIG_ECHO_START;
+ #if EXTRUDERS == 1
+ SERIAL_ECHOPAIR(" M603 L", LINEAR_UNIT(filament_change_load_length[0]));
+ SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[0]));
+ #else
+ SERIAL_ECHOPAIR(" M603 T0 L", LINEAR_UNIT(filament_change_load_length[0]));
+ SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[0]));
+ CONFIG_ECHO_START;
+ SERIAL_ECHOPAIR(" M603 T1 L", LINEAR_UNIT(filament_change_load_length[1]));
+ SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[1]));
+ #if EXTRUDERS > 2
+ CONFIG_ECHO_START;
+ SERIAL_ECHOPAIR(" M603 T2 L", LINEAR_UNIT(filament_change_load_length[2]));
+ SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[2]));
+ #if EXTRUDERS > 3
+ CONFIG_ECHO_START;
+ SERIAL_ECHOPAIR(" M603 T3 L", LINEAR_UNIT(filament_change_load_length[3]));
+ SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[3]));
+ #if EXTRUDERS > 4
+ CONFIG_ECHO_START;
+ SERIAL_ECHOPAIR(" M603 T4 L", LINEAR_UNIT(filament_change_load_length[4]));
+ SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[4]));
+ #endif // EXTRUDERS > 4
+ #endif // EXTRUDERS > 3
+ #endif // EXTRUDERS > 2
+ #endif // EXTRUDERS == 1
+ #endif // ADVANCED_PAUSE_FEATURE
}
#endif // !DISABLE_M503