Unify M600 and M125 pause features (#6407)
* Unify M600 and M125 pause features * Cleanup per thinkyhead's comments * Rename filament_change_menu_response to advanced_pause_menu_response * Include HAS_BED_PROBE in QUIET_PROBING * Update gMax example file * is_idle() is out of scope without the braces * Convert FT-i3-2020 to Advance Pause names... * Allow pause even if not printing
This commit is contained in:
parent
73ed0c63b4
commit
fb5e0ffe16
|
@ -652,7 +652,7 @@
|
||||||
#if FAN_COUNT == 0
|
#if FAN_COUNT == 0
|
||||||
#undef PROBING_FANS_OFF
|
#undef PROBING_FANS_OFF
|
||||||
#endif
|
#endif
|
||||||
#define QUIET_PROBING (ENABLED(PROBING_HEATERS_OFF) || ENABLED(PROBING_FANS_OFF))
|
#define QUIET_PROBING (HAS_BED_PROBE && (ENABLED(PROBING_HEATERS_OFF) || ENABLED(PROBING_FANS_OFF)))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Servos and probes
|
* Servos and probes
|
||||||
|
|
|
@ -763,22 +763,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -789,14 +790,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void idle(
|
void idle(
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
bool no_stepper_sleep = false // pass true to keep steppers from disabling on timeout
|
bool no_stepper_sleep = false // pass true to keep steppers from disabling on timeout
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
|
@ -369,8 +369,8 @@ extern float soft_endstop_min[XYZ], soft_endstop_max[XYZ];
|
||||||
extern int meas_delay_cm; // Delay distance
|
extern int meas_delay_cm; // Delay distance
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
extern FilamentChangeMenuResponse filament_change_menu_response;
|
extern AdvancedPauseMenuResponse advanced_pause_menu_response;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||||
|
|
|
@ -195,7 +195,7 @@
|
||||||
* M502 - Revert to the default "factory settings". ** Does not write them to EEPROM! **
|
* M502 - Revert to the default "factory settings". ** Does not write them to EEPROM! **
|
||||||
* M503 - Print the current settings (in memory): "M503 S<verbose>". S0 specifies compact output.
|
* M503 - Print the current settings (in memory): "M503 S<verbose>". S0 specifies compact output.
|
||||||
* M540 - Enable/disable SD card abort on endstop hit: "M540 S<state>". (Requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
|
* M540 - Enable/disable SD card abort on endstop hit: "M540 S<state>". (Requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
|
||||||
* M600 - Pause for filament change: "M600 X<pos> Y<pos> Z<raise> E<first_retract> L<later_retract>". (Requires FILAMENT_CHANGE_FEATURE)
|
* M600 - Pause for filament change: "M600 X<pos> Y<pos> Z<raise> E<first_retract> L<later_retract>". (Requires ADVANCED_PAUSE_FEATURE)
|
||||||
* M665 - Set delta configurations: "M665 L<diagonal rod> R<delta radius> S<segments/s> A<rod A trim mm> B<rod B trim mm> C<rod C trim mm> I<tower A trim angle> J<tower B trim angle> K<tower C trim angle>" (Requires DELTA)
|
* M665 - Set delta configurations: "M665 L<diagonal rod> R<delta radius> S<segments/s> A<rod A trim mm> B<rod B trim mm> C<rod C trim mm> I<tower A trim angle> J<tower B trim angle> K<tower C trim angle>" (Requires DELTA)
|
||||||
* M666 - Set delta endstop adjustment. (Requires DELTA)
|
* M666 - Set delta endstop adjustment. (Requires DELTA)
|
||||||
* M605 - Set dual x-carriage movement mode: "M605 S<mode> [X<x_offset>] [R<temp_offset>]". (Requires DUAL_X_CARRIAGE)
|
* M605 - Set dual x-carriage movement mode: "M605 S<mode> [X<x_offset>] [R<temp_offset>]". (Requires DUAL_X_CARRIAGE)
|
||||||
|
@ -627,8 +627,8 @@ float cartes[XYZ] = { 0 };
|
||||||
static bool filament_ran_out = false;
|
static bool filament_ran_out = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
FilamentChangeMenuResponse filament_change_menu_response;
|
AdvancedPauseMenuResponse advanced_pause_menu_response;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(MIXING_EXTRUDER)
|
#if ENABLED(MIXING_EXTRUDER)
|
||||||
|
@ -5738,14 +5738,244 @@ inline void gcode_M17() {
|
||||||
#define RUNPLAN(RATE_MM_S) line_to_destination(RATE_MM_S)
|
#define RUNPLAN(RATE_MM_S) line_to_destination(RATE_MM_S)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(PARK_HEAD_ON_PAUSE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
|
||||||
float resume_position[XYZE];
|
static float resume_position[XYZE];
|
||||||
bool move_away_flag = false;
|
static bool move_away_flag = false;
|
||||||
|
#if ENABLED(SDSUPPORT)
|
||||||
|
static bool sd_print_paused = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void filament_change_beep(const int max_beep_count, const bool init=false) {
|
||||||
|
static millis_t next_buzz = 0;
|
||||||
|
static uint16_t runout_beep = 0;
|
||||||
|
|
||||||
|
if (init) next_buzz = runout_beep = 0;
|
||||||
|
|
||||||
|
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);
|
||||||
|
runout_beep++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool pause_print(const float& retract, const float& z_lift, const float& x_pos, const float& y_pos,
|
||||||
|
const float& unload_length = 0 , int max_beep_count = 0, bool show_lcd = false) {
|
||||||
|
if (move_away_flag) return false; // already paused
|
||||||
|
|
||||||
|
if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder) && unload_length > 0) {
|
||||||
|
SERIAL_ERROR_START;
|
||||||
|
SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const bool job_running = print_job_timer.isRunning();
|
||||||
|
|
||||||
|
// Indicate that the printer is paused
|
||||||
|
move_away_flag = true;
|
||||||
|
|
||||||
|
// Pause the print job and timer
|
||||||
|
#if ENABLED(SDSUPPORT)
|
||||||
|
if (card.sdprinting) {
|
||||||
|
card.pauseSDPrint();
|
||||||
|
sd_print_paused = true;
|
||||||
|
}
|
||||||
|
#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
|
||||||
|
}
|
||||||
|
stepper.synchronize();
|
||||||
|
|
||||||
|
// Save current position
|
||||||
|
COPY(resume_position, current_position);
|
||||||
|
set_destination_to_current();
|
||||||
|
|
||||||
|
// Initial retract before move to filament change position
|
||||||
|
destination[E_AXIS] += retract;
|
||||||
|
|
||||||
|
RUNPLAN(PAUSE_PARK_RETRACT_FEEDRATE);
|
||||||
|
|
||||||
|
// Lift Z axis
|
||||||
|
if (z_lift > 0) {
|
||||||
|
destination[Z_AXIS] += z_lift;
|
||||||
|
NOMORE(destination[Z_AXIS], Z_MAX_POS);
|
||||||
|
RUNPLAN(PAUSE_PARK_Z_FEEDRATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move XY axes to filament exchange position
|
||||||
|
destination[X_AXIS] = x_pos;
|
||||||
|
destination[Y_AXIS] = y_pos;
|
||||||
|
|
||||||
|
clamp_to_software_endstops(destination);
|
||||||
|
RUNPLAN(PAUSE_PARK_XY_FEEDRATE);
|
||||||
|
stepper.synchronize();
|
||||||
|
|
||||||
|
if (unload_length != 0) {
|
||||||
|
if (show_lcd) {
|
||||||
|
#if ENABLED(ULTIPANEL)
|
||||||
|
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_UNLOAD);
|
||||||
|
idle();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unload filament
|
||||||
|
destination[E_AXIS] += unload_length;
|
||||||
|
RUNPLAN(FILAMENT_CHANGE_UNLOAD_FEEDRATE);
|
||||||
|
stepper.synchronize();
|
||||||
|
|
||||||
|
if (show_lcd) {
|
||||||
|
#if ENABLED(ULTIPANEL)
|
||||||
|
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INSERT);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#if HAS_BUZZER
|
||||||
|
filament_change_beep(max_beep_count, true);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
idle();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disable extruders steppers for manual filament changing
|
||||||
|
disable_e_steppers();
|
||||||
|
safe_delay(100);
|
||||||
|
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wait_for_filament_reload(int 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
|
||||||
|
while (wait_for_user) {
|
||||||
|
#if HAS_BUZZER
|
||||||
|
filament_change_beep(max_beep_count);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!nozzle_timed_out)
|
||||||
|
HOTEND_LOOP()
|
||||||
|
nozzle_timed_out |= thermalManager.is_heater_idle(e);
|
||||||
|
|
||||||
|
#if ENABLED(ULTIPANEL)
|
||||||
|
if (nozzle_timed_out)
|
||||||
|
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
idle(true);
|
||||||
|
}
|
||||||
|
KEEPALIVE_STATE(IN_HANDLER);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void resume_print(const float& load_length = 0, const float& initial_extrude_length = 0, int max_beep_count = 0) {
|
||||||
|
bool nozzle_timed_out = false;
|
||||||
|
|
||||||
inline void move_back_on_resume() {
|
|
||||||
if (!move_away_flag) return;
|
if (!move_away_flag) return;
|
||||||
move_away_flag = false;
|
|
||||||
|
// Re-enable the heaters if they timed out
|
||||||
|
HOTEND_LOOP() {
|
||||||
|
nozzle_timed_out |= thermalManager.is_heater_idle(e);
|
||||||
|
thermalManager.reset_heater_idle_timer(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if ENABLED(ULTIPANEL)
|
||||||
|
// Show "wait for heating"
|
||||||
|
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wait_for_heatup = true;
|
||||||
|
while (wait_for_heatup) {
|
||||||
|
idle();
|
||||||
|
wait_for_heatup = false;
|
||||||
|
HOTEND_LOOP() {
|
||||||
|
if (abs(thermalManager.degHotend(e) - thermalManager.degTargetHotend(e)) > 3) {
|
||||||
|
wait_for_heatup = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#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
|
||||||
|
destination[E_AXIS] += load_length;
|
||||||
|
|
||||||
|
RUNPLAN(FILAMENT_CHANGE_LOAD_FEEDRATE);
|
||||||
|
stepper.synchronize();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if ENABLED(ULTIPANEL) && defined(ADVANCED_PAUSE_EXTRUDE_LENGTH) && ADVANCED_PAUSE_EXTRUDE_LENGTH > 0
|
||||||
|
|
||||||
|
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
|
||||||
|
destination[E_AXIS] += extrude_length;
|
||||||
|
RUNPLAN(ADVANCED_PAUSE_EXTRUDE_FEEDRATE);
|
||||||
|
stepper.synchronize();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Set extruder to saved position
|
// Set extruder to saved position
|
||||||
destination[E_AXIS] = current_position[E_AXIS] = resume_position[E_AXIS];
|
destination[E_AXIS] = current_position[E_AXIS] = resume_position[E_AXIS];
|
||||||
|
@ -5753,24 +5983,38 @@ inline void gcode_M17() {
|
||||||
|
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC
|
||||||
// Move XYZ to starting position
|
// Move XYZ to starting position
|
||||||
planner.buffer_line_kinematic(lastpos, FILAMENT_CHANGE_XY_FEEDRATE, active_extruder);
|
planner.buffer_line_kinematic(lastpos, PAUSE_PARK_XY_FEEDRATE, active_extruder);
|
||||||
#else
|
#else
|
||||||
// Move XY to starting position, then Z
|
// Move XY to starting position, then Z
|
||||||
destination[X_AXIS] = resume_position[X_AXIS];
|
destination[X_AXIS] = resume_position[X_AXIS];
|
||||||
destination[Y_AXIS] = resume_position[Y_AXIS];
|
destination[Y_AXIS] = resume_position[Y_AXIS];
|
||||||
RUNPLAN(FILAMENT_CHANGE_XY_FEEDRATE);
|
RUNPLAN(PAUSE_PARK_XY_FEEDRATE);
|
||||||
destination[Z_AXIS] = resume_position[Z_AXIS];
|
destination[Z_AXIS] = resume_position[Z_AXIS];
|
||||||
RUNPLAN(FILAMENT_CHANGE_Z_FEEDRATE);
|
RUNPLAN(PAUSE_PARK_Z_FEEDRATE);
|
||||||
#endif
|
#endif
|
||||||
stepper.synchronize();
|
stepper.synchronize();
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||||
filament_ran_out = false;
|
filament_ran_out = false;
|
||||||
#endif
|
#endif
|
||||||
set_current_to_destination();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // PARK_HEAD_ON_PAUSE
|
set_current_to_destination();
|
||||||
|
|
||||||
|
#if ENABLED(ULTIPANEL)
|
||||||
|
// Show status screen
|
||||||
|
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_STATUS);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(SDSUPPORT)
|
||||||
|
if (sd_print_paused) {
|
||||||
|
card.startFileprint();
|
||||||
|
sd_print_paused = false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
move_away_flag = false;
|
||||||
|
}
|
||||||
|
#endif // ADVANCED_PAUSE_FEATURE
|
||||||
|
|
||||||
#if ENABLED(SDSUPPORT)
|
#if ENABLED(SDSUPPORT)
|
||||||
|
|
||||||
|
@ -5803,7 +6047,7 @@ inline void gcode_M17() {
|
||||||
*/
|
*/
|
||||||
inline void gcode_M24() {
|
inline void gcode_M24() {
|
||||||
#if ENABLED(PARK_HEAD_ON_PAUSE)
|
#if ENABLED(PARK_HEAD_ON_PAUSE)
|
||||||
move_back_on_resume();
|
resume_print();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
card.startFileprint();
|
card.startFileprint();
|
||||||
|
@ -7462,90 +7706,56 @@ inline void gcode_M121() { endstops.enable_globally(false); }
|
||||||
* Z = override Z raise
|
* Z = override Z raise
|
||||||
*/
|
*/
|
||||||
inline void gcode_M125() {
|
inline void gcode_M125() {
|
||||||
if (move_away_flag) return; // already paused
|
|
||||||
|
|
||||||
const bool job_running = print_job_timer.isRunning();
|
|
||||||
|
|
||||||
// there are blocks after this one, or sd printing
|
|
||||||
move_away_flag = job_running || planner.blocks_queued()
|
|
||||||
#if ENABLED(SDSUPPORT)
|
|
||||||
|| card.sdprinting
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
|
|
||||||
if (!move_away_flag) return; // nothing to pause
|
|
||||||
|
|
||||||
// M125 can be used to pause a print too
|
|
||||||
#if ENABLED(SDSUPPORT)
|
|
||||||
card.pauseSDPrint();
|
|
||||||
#endif
|
|
||||||
print_job_timer.pause();
|
|
||||||
|
|
||||||
// Save current position
|
|
||||||
COPY(resume_position, current_position);
|
|
||||||
|
|
||||||
set_destination_to_current();
|
|
||||||
|
|
||||||
// Initial retract before move to filament change position
|
// Initial retract before move to filament change position
|
||||||
destination[E_AXIS] += parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0
|
const float retract = parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0
|
||||||
#if defined(FILAMENT_CHANGE_RETRACT_LENGTH) && FILAMENT_CHANGE_RETRACT_LENGTH > 0
|
#if defined(PAUSE_PARK_RETRACT_LENGTH) && PAUSE_PARK_RETRACT_LENGTH > 0
|
||||||
- (FILAMENT_CHANGE_RETRACT_LENGTH)
|
- (PAUSE_PARK_RETRACT_LENGTH)
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
RUNPLAN(FILAMENT_CHANGE_RETRACT_FEEDRATE);
|
|
||||||
|
|
||||||
// Lift Z axis
|
// Lift Z axis
|
||||||
const float z_lift = parser.seen('Z') ? parser.value_linear_units() :
|
const float z_lift = parser.seen('Z') ? parser.value_linear_units() :
|
||||||
#if defined(FILAMENT_CHANGE_Z_ADD) && FILAMENT_CHANGE_Z_ADD > 0
|
#if defined(PAUSE_PARK_Z_ADD) && PAUSE_PARK_Z_ADD > 0
|
||||||
FILAMENT_CHANGE_Z_ADD
|
PAUSE_PARK_Z_ADD
|
||||||
#else
|
#else
|
||||||
0
|
0
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
if (z_lift > 0) {
|
|
||||||
destination[Z_AXIS] += z_lift;
|
|
||||||
NOMORE(destination[Z_AXIS], Z_MAX_POS);
|
|
||||||
RUNPLAN(FILAMENT_CHANGE_Z_FEEDRATE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Move XY axes to filament change position or given position
|
// Move XY axes to filament change position or given position
|
||||||
destination[X_AXIS] = parser.seen('X') ? parser.value_linear_units() : 0
|
const float x_pos = parser.seen('X') ? parser.value_linear_units() : 0
|
||||||
#ifdef FILAMENT_CHANGE_X_POS
|
#ifdef PAUSE_PARK_X_POS
|
||||||
+ FILAMENT_CHANGE_X_POS
|
+ PAUSE_PARK_X_POS
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
destination[Y_AXIS] = parser.seen('Y') ? parser.value_linear_units() : 0
|
const float y_pos = parser.seen('Y') ? parser.value_linear_units() : 0
|
||||||
#ifdef FILAMENT_CHANGE_Y_POS
|
#ifdef PAUSE_PARK_Y_POS
|
||||||
+ FILAMENT_CHANGE_Y_POS
|
+ PAUSE_PARK_Y_POS
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
#if HOTENDS > 1 && DISABLED(DUAL_X_CARRIAGE)
|
#if HOTENDS > 1 && DISABLED(DUAL_X_CARRIAGE)
|
||||||
if (active_extruder > 0) {
|
if (active_extruder > 0) {
|
||||||
if (!parser.seen('X')) destination[X_AXIS] += hotend_offset[X_AXIS][active_extruder];
|
if (!parser.seen('X')) x_pos += hotend_offset[X_AXIS][active_extruder];
|
||||||
if (!parser.seen('Y')) destination[Y_AXIS] += hotend_offset[Y_AXIS][active_extruder];
|
if (!parser.seen('Y')) y_pos += hotend_offset[Y_AXIS][active_extruder];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
clamp_to_software_endstops(destination);
|
const bool job_running = print_job_timer.isRunning();
|
||||||
RUNPLAN(FILAMENT_CHANGE_XY_FEEDRATE);
|
|
||||||
set_current_to_destination();
|
|
||||||
stepper.synchronize();
|
|
||||||
disable_e_steppers();
|
|
||||||
|
|
||||||
|
if (pause_print(retract, z_lift, x_pos, y_pos)) {
|
||||||
#if DISABLED(SDSUPPORT)
|
#if DISABLED(SDSUPPORT)
|
||||||
// Wait for lcd click or M108
|
// Wait for lcd click or M108
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
wait_for_filament_reload();
|
||||||
wait_for_user = true;
|
|
||||||
while (wait_for_user) idle();
|
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
|
||||||
|
|
||||||
// Return to print position and continue
|
// Return to print position and continue
|
||||||
move_back_on_resume();
|
resume_print();
|
||||||
|
|
||||||
if (job_running) print_job_timer.start();
|
if (job_running) print_job_timer.start();
|
||||||
move_away_flag = false;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif // PARK_HEAD_ON_PAUSE
|
#endif // PARK_HEAD_ON_PAUSE
|
||||||
|
|
||||||
|
@ -8812,25 +9022,7 @@ inline void gcode_M503() {
|
||||||
|
|
||||||
#endif // HAS_BED_PROBE
|
#endif // HAS_BED_PROBE
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
|
||||||
void filament_change_beep(const bool init=false) {
|
|
||||||
static millis_t next_buzz = 0;
|
|
||||||
static uint16_t runout_beep = 0;
|
|
||||||
|
|
||||||
if (init) next_buzz = runout_beep = 0;
|
|
||||||
|
|
||||||
const millis_t ms = millis();
|
|
||||||
if (ELAPSED(ms, next_buzz)) {
|
|
||||||
if (runout_beep <= FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS + 5) { // Only beep as long as we're supposed to
|
|
||||||
next_buzz = ms + (runout_beep <= FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS ? 2500 : 400);
|
|
||||||
BUZZ(300, 2000);
|
|
||||||
runout_beep++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool busy_doing_M600 = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* M600: Pause for filament change
|
* M600: Pause for filament change
|
||||||
|
@ -8839,231 +9031,77 @@ inline void gcode_M503() {
|
||||||
* Z[distance] - Move the Z axis by this distance
|
* Z[distance] - Move the Z axis by this distance
|
||||||
* X[position] - Move to this X position, with Y
|
* X[position] - Move to this X position, with Y
|
||||||
* Y[position] - Move to this Y position, with X
|
* Y[position] - Move to this Y position, with X
|
||||||
* L[distance] - Retract distance for removal (manual reload)
|
* U[distance] - Retract distance for removal (negative value) (manual reload)
|
||||||
|
* L[distance] - Extrude distance for insertion (positive value) (manual reload)
|
||||||
|
* B[count] - Number of times to beep, -1 for indefinite (if equipped with a buzzer)
|
||||||
*
|
*
|
||||||
* Default values are used for omitted arguments.
|
* Default values are used for omitted arguments.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
inline void gcode_M600() {
|
inline void gcode_M600() {
|
||||||
|
|
||||||
if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder)) {
|
|
||||||
SERIAL_ERROR_START;
|
|
||||||
SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
busy_doing_M600 = true; // Stepper Motors can't timeout when this is set
|
|
||||||
|
|
||||||
// Pause the print job timer
|
|
||||||
const bool job_running = print_job_timer.isRunning();
|
|
||||||
|
|
||||||
print_job_timer.pause();
|
|
||||||
|
|
||||||
// Show initial message and wait for synchronize steppers
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INIT);
|
|
||||||
stepper.synchronize();
|
|
||||||
|
|
||||||
// Save current position of all axes
|
|
||||||
float lastpos[XYZE];
|
|
||||||
COPY(lastpos, current_position);
|
|
||||||
set_destination_to_current();
|
|
||||||
|
|
||||||
// Initial retract before move to filament change position
|
// Initial retract before move to filament change position
|
||||||
destination[E_AXIS] += parser.seen('E') ? parser.value_axis_units(E_AXIS) : 0
|
const float retract = parser.seen('E') ? parser.value_axis_units(E_AXIS) : 0
|
||||||
#if defined(FILAMENT_CHANGE_RETRACT_LENGTH) && FILAMENT_CHANGE_RETRACT_LENGTH > 0
|
#if defined(PAUSE_PARK_RETRACT_LENGTH) && PAUSE_PARK_RETRACT_LENGTH > 0
|
||||||
- (FILAMENT_CHANGE_RETRACT_LENGTH)
|
- (PAUSE_PARK_RETRACT_LENGTH)
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
RUNPLAN(FILAMENT_CHANGE_RETRACT_FEEDRATE);
|
|
||||||
|
|
||||||
// Lift Z axis
|
// Lift Z axis
|
||||||
float z_lift = parser.seen('Z') ? parser.value_linear_units() :
|
const float z_lift = parser.seen('Z') ? parser.value_linear_units() :
|
||||||
#if defined(FILAMENT_CHANGE_Z_ADD) && FILAMENT_CHANGE_Z_ADD > 0
|
#if defined(PAUSE_PARK_Z_ADD) && PAUSE_PARK_Z_ADD > 0
|
||||||
FILAMENT_CHANGE_Z_ADD
|
PAUSE_PARK_Z_ADD
|
||||||
#else
|
#else
|
||||||
0
|
0
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
if (z_lift > 0) {
|
|
||||||
destination[Z_AXIS] += z_lift;
|
|
||||||
NOMORE(destination[Z_AXIS], Z_MAX_POS);
|
|
||||||
RUNPLAN(FILAMENT_CHANGE_Z_FEEDRATE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Move XY axes to filament exchange position
|
// Move XY axes to filament exchange position
|
||||||
if (parser.seen('X')) destination[X_AXIS] = parser.value_linear_units();
|
const float x_pos = parser.seen('X') ? parser.value_linear_units() : 0
|
||||||
#ifdef FILAMENT_CHANGE_X_POS
|
#ifdef PAUSE_PARK_X_POS
|
||||||
else destination[X_AXIS] = FILAMENT_CHANGE_X_POS;
|
+ PAUSE_PARK_X_POS
|
||||||
#endif
|
#endif
|
||||||
|
;
|
||||||
if (parser.seen('Y')) destination[Y_AXIS] = parser.value_linear_units();
|
const float y_pos = parser.seen('Y') ? parser.value_linear_units() : 0
|
||||||
#ifdef FILAMENT_CHANGE_Y_POS
|
#ifdef PAUSE_PARK_Y_POS
|
||||||
else destination[Y_AXIS] = FILAMENT_CHANGE_Y_POS;
|
+ PAUSE_PARK_Y_POS
|
||||||
#endif
|
#endif
|
||||||
|
;
|
||||||
RUNPLAN(FILAMENT_CHANGE_XY_FEEDRATE);
|
|
||||||
|
|
||||||
stepper.synchronize();
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_UNLOAD);
|
|
||||||
idle();
|
|
||||||
|
|
||||||
// Unload filament
|
// Unload filament
|
||||||
destination[E_AXIS] += parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0
|
const float unload_length = parser.seen('U') ? parser.value_axis_units(E_AXIS) : 0
|
||||||
#if FILAMENT_CHANGE_UNLOAD_LENGTH > 0
|
#if defined(FILAMENT_CHANGE_UNLOAD_LENGTH) && FILAMENT_CHANGE_UNLOAD_LENGTH > 0
|
||||||
- (FILAMENT_CHANGE_UNLOAD_LENGTH)
|
- (FILAMENT_CHANGE_UNLOAD_LENGTH)
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
RUNPLAN(FILAMENT_CHANGE_UNLOAD_FEEDRATE);
|
|
||||||
|
|
||||||
// Synchronize steppers and then disable extruders steppers for manual filament changing
|
|
||||||
stepper.synchronize();
|
|
||||||
disable_e_steppers();
|
|
||||||
safe_delay(100);
|
|
||||||
|
|
||||||
const millis_t nozzle_timeout = millis() + (millis_t)(FILAMENT_CHANGE_NOZZLE_TIMEOUT) * 1000UL;
|
|
||||||
bool nozzle_timed_out = false;
|
|
||||||
|
|
||||||
// Wait for filament insert by user and press button
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT);
|
|
||||||
|
|
||||||
#if HAS_BUZZER
|
|
||||||
filament_change_beep(true);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
idle();
|
|
||||||
|
|
||||||
int16_t temps[HOTENDS];
|
|
||||||
HOTEND_LOOP() temps[e] = thermalManager.target_temperature[e]; // Save nozzle temps
|
|
||||||
|
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
|
||||||
wait_for_user = true; // LCD click or M108 will clear this
|
|
||||||
while (wait_for_user) {
|
|
||||||
|
|
||||||
if (nozzle_timed_out)
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
|
|
||||||
|
|
||||||
#if HAS_BUZZER
|
|
||||||
filament_change_beep();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!nozzle_timed_out && ELAPSED(millis(), nozzle_timeout)) {
|
|
||||||
nozzle_timed_out = true; // on nozzle timeout remember the nozzles need to be reheated
|
|
||||||
HOTEND_LOOP() thermalManager.setTargetHotend(0, e); // Turn off all the nozzles
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
|
|
||||||
}
|
|
||||||
idle(true);
|
|
||||||
}
|
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
|
||||||
|
|
||||||
if (nozzle_timed_out) // Turn nozzles back on if they were turned off
|
|
||||||
HOTEND_LOOP() thermalManager.setTargetHotend(temps[e], e);
|
|
||||||
|
|
||||||
// Show "wait for heating"
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT);
|
|
||||||
|
|
||||||
wait_for_heatup = true;
|
|
||||||
while (wait_for_heatup) {
|
|
||||||
idle();
|
|
||||||
wait_for_heatup = false;
|
|
||||||
HOTEND_LOOP() {
|
|
||||||
if (abs(thermalManager.degHotend(e) - temps[e]) > 3) {
|
|
||||||
wait_for_heatup = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Show "insert filament"
|
|
||||||
if (nozzle_timed_out)
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT);
|
|
||||||
|
|
||||||
#if HAS_BUZZER
|
|
||||||
filament_change_beep(true);
|
|
||||||
#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();
|
|
||||||
#endif
|
|
||||||
idle(true);
|
|
||||||
}
|
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
|
||||||
|
|
||||||
// Show "load" message
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_LOAD);
|
|
||||||
|
|
||||||
// Load filament
|
// Load filament
|
||||||
destination[E_AXIS] += parser.seen('L') ? -parser.value_axis_units(E_AXIS) : 0
|
const float load_length = parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0
|
||||||
#if FILAMENT_CHANGE_LOAD_LENGTH > 0
|
#ifdef FILAMENT_CHANGE_LOAD_LENGTH
|
||||||
+ FILAMENT_CHANGE_LOAD_LENGTH
|
+ FILAMENT_CHANGE_LOAD_LENGTH
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
RUNPLAN(FILAMENT_CHANGE_LOAD_FEEDRATE);
|
const int beep_count = parser.seen('B') ? parser.value_int() :
|
||||||
stepper.synchronize();
|
#ifdef FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS
|
||||||
|
FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS
|
||||||
#if defined(FILAMENT_CHANGE_EXTRUDE_LENGTH) && FILAMENT_CHANGE_EXTRUDE_LENGTH > 0
|
|
||||||
|
|
||||||
do {
|
|
||||||
// "Wait for filament extrude"
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_EXTRUDE);
|
|
||||||
|
|
||||||
// Extrude filament to get into hotend
|
|
||||||
destination[E_AXIS] += FILAMENT_CHANGE_EXTRUDE_LENGTH;
|
|
||||||
RUNPLAN(FILAMENT_CHANGE_EXTRUDE_FEEDRATE);
|
|
||||||
stepper.synchronize();
|
|
||||||
|
|
||||||
// Show "Extrude More" / "Resume" menu and wait for reply
|
|
||||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
|
||||||
wait_for_user = false;
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_OPTION);
|
|
||||||
while (filament_change_menu_response == FILAMENT_CHANGE_RESPONSE_WAIT_FOR) idle(true);
|
|
||||||
KEEPALIVE_STATE(IN_HANDLER);
|
|
||||||
|
|
||||||
// Keep looping if "Extrude More" was selected
|
|
||||||
} while (filament_change_menu_response == FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// "Wait for print to resume"
|
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_RESUME);
|
|
||||||
|
|
||||||
// Set extruder to saved position
|
|
||||||
destination[E_AXIS] = current_position[E_AXIS] = lastpos[E_AXIS];
|
|
||||||
planner.set_e_position_mm(current_position[E_AXIS]);
|
|
||||||
|
|
||||||
#if IS_KINEMATIC
|
|
||||||
// Move XYZ to starting position
|
|
||||||
planner.buffer_line_kinematic(lastpos, FILAMENT_CHANGE_XY_FEEDRATE, active_extruder);
|
|
||||||
#else
|
#else
|
||||||
// Move XY to starting position, then Z
|
-1
|
||||||
destination[X_AXIS] = lastpos[X_AXIS];
|
|
||||||
destination[Y_AXIS] = lastpos[Y_AXIS];
|
|
||||||
RUNPLAN(FILAMENT_CHANGE_XY_FEEDRATE);
|
|
||||||
destination[Z_AXIS] = lastpos[Z_AXIS];
|
|
||||||
RUNPLAN(FILAMENT_CHANGE_Z_FEEDRATE);
|
|
||||||
#endif
|
#endif
|
||||||
stepper.synchronize();
|
;
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
const bool job_running = print_job_timer.isRunning();
|
||||||
filament_ran_out = false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Show status screen
|
if (pause_print(retract, z_lift, x_pos, y_pos, unload_length, beep_count, true)) {
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_STATUS);
|
wait_for_filament_reload(beep_count);
|
||||||
|
resume_print(load_length, ADVANCED_PAUSE_EXTRUDE_LENGTH, beep_count);
|
||||||
|
}
|
||||||
|
|
||||||
// Resume the print job timer if it was running
|
// Resume the print job timer if it was running
|
||||||
if (job_running) print_job_timer.start();
|
if (job_running) print_job_timer.start();
|
||||||
|
|
||||||
busy_doing_M600 = false; // Allow Stepper Motors to be turned off during inactivity
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FILAMENT_CHANGE_FEATURE
|
#endif // ADVANCED_PAUSE_FEATURE
|
||||||
|
|
||||||
#if ENABLED(DUAL_X_CARRIAGE)
|
#if ENABLED(DUAL_X_CARRIAGE)
|
||||||
|
|
||||||
|
@ -10569,11 +10607,11 @@ void process_next_command() {
|
||||||
break;
|
break;
|
||||||
#endif // HAS_BED_PROBE
|
#endif // HAS_BED_PROBE
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
case 600: // M600: Pause for filament change
|
case 600: // M600: Pause for filament change
|
||||||
gcode_M600();
|
gcode_M600();
|
||||||
break;
|
break;
|
||||||
#endif // FILAMENT_CHANGE_FEATURE
|
#endif // ADVANCED_PAUSE_FEATURE
|
||||||
|
|
||||||
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
|
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
|
||||||
case 605: // M605: Set Dual X Carriage movement mode
|
case 605: // M605: Set Dual X Carriage movement mode
|
||||||
|
@ -12064,13 +12102,13 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prevent steppers timing-out in the middle of M600
|
// Prevent steppers timing-out in the middle of M600
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE) && ENABLED(FILAMENT_CHANGE_NO_STEPPER_TIMEOUT)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE) && ENABLED(PAUSE_PARK_NO_STEPPER_TIMEOUT)
|
||||||
#define M600_TEST !busy_doing_M600
|
#define MOVE_AWAY_TEST !move_away_flag
|
||||||
#else
|
#else
|
||||||
#define M600_TEST true
|
#define MOVE_AWAY_TEST true
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (M600_TEST && stepper_inactive_time && ELAPSED(ms, previous_cmd_ms + stepper_inactive_time)
|
if (MOVE_AWAY_TEST && stepper_inactive_time && ELAPSED(ms, previous_cmd_ms + stepper_inactive_time)
|
||||||
&& !ignore_stepper_queue && !planner.blocks_queued()) {
|
&& !ignore_stepper_queue && !planner.blocks_queued()) {
|
||||||
#if ENABLED(DISABLE_INACTIVE_X)
|
#if ENABLED(DISABLE_INACTIVE_X)
|
||||||
disable_X();
|
disable_X();
|
||||||
|
@ -12216,7 +12254,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) {
|
||||||
* Standard idle routine keeps the machine alive
|
* Standard idle routine keeps the machine alive
|
||||||
*/
|
*/
|
||||||
void idle(
|
void idle(
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
bool no_stepper_sleep/*=false*/
|
bool no_stepper_sleep/*=false*/
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
|
@ -12229,7 +12267,7 @@ void idle(
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
manage_inactivity(
|
manage_inactivity(
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
no_stepper_sleep
|
no_stepper_sleep
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
|
|
|
@ -99,7 +99,31 @@
|
||||||
#elif defined(SERVO_DEACTIVATION_DELAY)
|
#elif defined(SERVO_DEACTIVATION_DELAY)
|
||||||
#error "SERVO_DEACTIVATION_DELAY is deprecated. Use SERVO_DELAY instead."
|
#error "SERVO_DEACTIVATION_DELAY is deprecated. Use SERVO_DELAY instead."
|
||||||
#elif ENABLED(FILAMENTCHANGEENABLE)
|
#elif ENABLED(FILAMENTCHANGEENABLE)
|
||||||
#error "FILAMENTCHANGEENABLE is now FILAMENT_CHANGE_FEATURE. Please update your configuration."
|
#error "FILAMENTCHANGEENABLE is now ADVANCED_PAUSE_FEATURE. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||||
|
#error "FILAMENT_CHANGE_FEATURE is now ADVANCED_PAUSE_FEATURE. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_X_POS)
|
||||||
|
#error "FILAMENT_CHANGE_X_POS is now PAUSE_PARK_X_POS. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_Y_POS)
|
||||||
|
#error "FILAMENT_CHANGE_Y_POS is now PAUSE_PARK_Y_POS. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_Z_ADD)
|
||||||
|
#error "FILAMENT_CHANGE_Z_ADD is now PAUSE_PARK_Z_ADD. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_XY_FEEDRATE)
|
||||||
|
#error "FILAMENT_CHANGE_XY_FEEDRATE is now PAUSE_PARK_XY_FEEDRATE. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_Z_FEEDRATE)
|
||||||
|
#error "FILAMENT_CHANGE_Z_FEEDRATE is now PAUSE_PARK_Z_FEEDRATE. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_RETRACT_FEEDRATE)
|
||||||
|
#error "FILAMENT_CHANGE_RETRACT_FEEDRATE is now PAUSE_PARK_RETRACT_FEEDRATE. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_RETRACT_LENGTH)
|
||||||
|
#error "FILAMENT_CHANGE_RETRACT_LENGTH is now PAUSE_PARK_RETRACT_LENGTH. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_EXTRUDE_FEEDRATE)
|
||||||
|
#error "FILAMENT_CHANGE_EXTRUDE_FEEDRATE is now ADVANCED_PAUSE_EXTRUDE_FEEDRATE. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_EXTRUDE_LENGTH)
|
||||||
|
#error "FILAMENT_CHANGE_EXTRUDE_LENGTH is now ADVANCED_PAUSE_EXTRUDE_LENGTH. Please update your configuration."
|
||||||
|
#elif ENABLED(FILAMENT_CHANGE_NOZZLE_TIMEOUT)
|
||||||
|
#error "FILAMENT_CHANGE_NOZZLE_TIMEOUT is now PAUSE_PARK_NOZZLE_TIMEOUT. 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)
|
#elif defined(PLA_PREHEAT_HOTEND_TEMP)
|
||||||
#error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND. Please update your configuration."
|
#error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND. Please update your configuration."
|
||||||
#elif defined(PLA_PREHEAT_HPB_TEMP)
|
#elif defined(PLA_PREHEAT_HPB_TEMP)
|
||||||
|
@ -286,19 +310,19 @@
|
||||||
#error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN."
|
#error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN."
|
||||||
#elif DISABLED(SDSUPPORT) && DISABLED(PRINTJOB_TIMER_AUTOSTART)
|
#elif DISABLED(SDSUPPORT) && DISABLED(PRINTJOB_TIMER_AUTOSTART)
|
||||||
#error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART."
|
#error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART."
|
||||||
#elif DISABLED(FILAMENT_CHANGE_FEATURE)
|
#elif DISABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
static_assert(NULL == strstr(FILAMENT_RUNOUT_SCRIPT, "M600"), "FILAMENT_CHANGE_FEATURE is required to use M600 with FILAMENT_RUNOUT_SENSOR.");
|
static_assert(NULL == strstr(FILAMENT_RUNOUT_SCRIPT, "M600"), "ADVANCED_PAUSE_FEATURE is required to use M600 with FILAMENT_RUNOUT_SENSOR.");
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change with Extruder Runout Prevention
|
* Advanced Pause
|
||||||
*/
|
*/
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#if DISABLED(ULTIPANEL)
|
#if DISABLED(ULTIPANEL)
|
||||||
#error "FILAMENT_CHANGE_FEATURE currently requires an LCD controller."
|
#error "ADVANCED_PAUSE_FEATURE currently requires an LCD controller."
|
||||||
#elif ENABLED(EXTRUDER_RUNOUT_PREVENT)
|
#elif ENABLED(EXTRUDER_RUNOUT_PREVENT)
|
||||||
#error "EXTRUDER_RUNOUT_PREVENT is incompatible with FILAMENT_CHANGE_FEATURE."
|
#error "EXTRUDER_RUNOUT_PREVENT is incompatible with ADVANCED_PAUSE_FEATURE."
|
||||||
#elif ENABLED(PARK_HEAD_ON_PAUSE) && DISABLED(SDSUPPORT) && DISABLED(ULTIPANEL) && DISABLED(EMERGENCY_PARSER)
|
#elif ENABLED(PARK_HEAD_ON_PAUSE) && DISABLED(SDSUPPORT) && DISABLED(ULTIPANEL) && DISABLED(EMERGENCY_PARSER)
|
||||||
#error "PARK_HEAD_ON_PAUSE requires SDSUPPORT, EMERGENCY_PARSER, or an LCD controller."
|
#error "PARK_HEAD_ON_PAUSE requires SDSUPPORT, EMERGENCY_PARSER, or an LCD controller."
|
||||||
#endif
|
#endif
|
||||||
|
@ -545,6 +569,13 @@ static_assert(1 >= 0
|
||||||
#error "Probes need Z_CLEARANCE_BETWEEN_PROBES >= 0."
|
#error "Probes need Z_CLEARANCE_BETWEEN_PROBES >= 0."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Advanced Pause is required in order to turn the heaters off during probing
|
||||||
|
*/
|
||||||
|
#if (ENABLED(PROBING_HEATERS_OFF) && DISABLED(ADVANCED_PAUSE_FEATURE))
|
||||||
|
#error "PROBING_HEATERS_OFF requires ADVANCED_PAUSE_FEATURE"
|
||||||
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -108,25 +108,25 @@ enum EndstopEnum {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
enum FilamentChangeMenuResponse {
|
enum AdvancedPauseMenuResponse {
|
||||||
FILAMENT_CHANGE_RESPONSE_WAIT_FOR,
|
ADVANCED_PAUSE_RESPONSE_WAIT_FOR,
|
||||||
FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE,
|
ADVANCED_PAUSE_RESPONSE_EXTRUDE_MORE,
|
||||||
FILAMENT_CHANGE_RESPONSE_RESUME_PRINT
|
ADVANCED_PAUSE_RESPONSE_RESUME_PRINT
|
||||||
};
|
};
|
||||||
|
|
||||||
#if ENABLED(ULTIPANEL)
|
#if ENABLED(ULTIPANEL)
|
||||||
enum FilamentChangeMessage {
|
enum AdvancedPauseMessage {
|
||||||
FILAMENT_CHANGE_MESSAGE_INIT,
|
ADVANCED_PAUSE_MESSAGE_INIT,
|
||||||
FILAMENT_CHANGE_MESSAGE_UNLOAD,
|
ADVANCED_PAUSE_MESSAGE_UNLOAD,
|
||||||
FILAMENT_CHANGE_MESSAGE_INSERT,
|
ADVANCED_PAUSE_MESSAGE_INSERT,
|
||||||
FILAMENT_CHANGE_MESSAGE_LOAD,
|
ADVANCED_PAUSE_MESSAGE_LOAD,
|
||||||
FILAMENT_CHANGE_MESSAGE_EXTRUDE,
|
ADVANCED_PAUSE_MESSAGE_EXTRUDE,
|
||||||
FILAMENT_CHANGE_MESSAGE_OPTION,
|
ADVANCED_PAUSE_MESSAGE_OPTION,
|
||||||
FILAMENT_CHANGE_MESSAGE_RESUME,
|
ADVANCED_PAUSE_MESSAGE_RESUME,
|
||||||
FILAMENT_CHANGE_MESSAGE_STATUS,
|
ADVANCED_PAUSE_MESSAGE_STATUS,
|
||||||
FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE,
|
ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE,
|
||||||
FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT
|
ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 30 // X position of hotend
|
#define PAUSE_PARK_X_POS 30 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 10 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 10 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 1 // Initial retract in mm
|
#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
|
// 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_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
|
//#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -763,22 +763,25 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
#define FILAMENT_CHANGE_FEATURE
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#define ADVANCED_PAUSE_FEATURE
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_X_POS 10 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Y_POS 10 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -789,16 +792,16 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// @section tmc
|
// @section tmc
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -740,22 +740,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -766,14 +767,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -769,22 +769,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS (X_MAX_POS-3) // X position of hotend
|
#define PAUSE_PARK_X_POS (X_MAX_POS-3) // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -795,14 +796,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 100 // X position of hotend
|
#define PAUSE_PARK_X_POS 100 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 100 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 100 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 20 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 20 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 5 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 600 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 100 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 100 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -759,22 +759,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -785,14 +786,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -761,22 +761,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -787,14 +788,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -760,22 +760,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -786,14 +787,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -758,22 +758,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -784,14 +785,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -758,22 +758,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -784,14 +785,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -763,22 +763,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -789,14 +790,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -758,22 +758,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -784,14 +785,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -763,22 +763,25 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
#define FILAMENT_CHANGE_FEATURE
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#define ADVANCED_PAUSE_FEATURE
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_X_POS 75 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Y_POS 75 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -789,14 +792,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -756,22 +756,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -782,14 +783,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -759,22 +759,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filament Change
|
* Advanced Pause
|
||||||
* Experimental filament change support.
|
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||||
* Adds the GCode M600 for initiating filament change.
|
* Adds the GCode M600 for initiating filament change.
|
||||||
|
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
|
||||||
*
|
*
|
||||||
* Requires an LCD display.
|
* Requires an LCD display.
|
||||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||||
*/
|
*/
|
||||||
//#define FILAMENT_CHANGE_FEATURE
|
//#define ADVANCED_PAUSE_FEATURE
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
#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
|
// 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_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
|
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||||
|
@ -785,14 +786,14 @@
|
||||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
#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,
|
// 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
|
// Short or zero length for printers without bowden where loading is not used
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
#define ADVANCED_PAUSE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||||
#define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||||
// 0 to disable for manual extrusion
|
// 0 to disable for manual extrusion
|
||||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
// 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
|
// or until outcoming filament color is not clear for filament color change
|
||||||
#define FILAMENT_CHANGE_NOZZLE_TIMEOUT 45 // Turn off nozzle if user doesn't change filament within this time limit in seconds
|
#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 FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS 5 // Number of alert beeps before printer goes quiet
|
||||||
#define FILAMENT_CHANGE_NO_STEPPER_TIMEOUT // Enable to have stepper motors hold position during filament change
|
#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.
|
// 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 PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -214,8 +214,8 @@
|
||||||
#define MSG_DRIVE_STRENGTH _UxGT("Fuerza d'o driver")
|
#define MSG_DRIVE_STRENGTH _UxGT("Fuerza d'o driver")
|
||||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Escri. DAC EEPROM")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("Escri. DAC EEPROM")
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("Cambear filamento")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Opcion de cambio:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mas")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mas")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resumir imp.")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resumir imp.")
|
||||||
|
|
||||||
|
|
|
@ -216,8 +216,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CHANGE FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CHANGE OPTIONS:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude more")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude more")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resume print")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resume print")
|
||||||
|
|
||||||
|
|
|
@ -218,8 +218,8 @@
|
||||||
#define MSG_DRIVE_STRENGTH _UxGT("Força motor")
|
#define MSG_DRIVE_STRENGTH _UxGT("Força motor")
|
||||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CANVI DE FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("OPCIONS CANVI:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudeix mes")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudeix mes")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Repren impressió")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Repren impressió")
|
||||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Temp minima es ")
|
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Temp minima es ")
|
||||||
|
|
|
@ -225,8 +225,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Motor %")
|
#define MSG_DAC_PERCENT _UxGT("Motor %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Ulozit do EEPROM")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("Ulozit do EEPROM")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("VYMENA FILAMENTU")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CO DAL?")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Jeste vytlacit")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Jeste vytlacit")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Obnovit tisk")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Obnovit tisk")
|
||||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. teplota je ")
|
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. teplota je ")
|
||||||
|
|
|
@ -215,8 +215,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Driv %")
|
#define MSG_DAC_PERCENT _UxGT("Driv %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Skriv")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Skriv")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("SKIFT FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Skift muligheder:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruder mere")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruder mere")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Forsæt print")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Forsæt print")
|
||||||
|
|
||||||
|
|
|
@ -227,8 +227,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Treiber %")
|
#define MSG_DAC_PERCENT _UxGT("Treiber %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Werte speichern")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("Werte speichern")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ÄNDERE FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ÄNDERE OPTIONEN:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude mehr")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude mehr")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Drucke weiter")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Drucke weiter")
|
||||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. Temperatur ist ")
|
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. Temperatur ist ")
|
||||||
|
|
|
@ -499,6 +499,9 @@
|
||||||
#ifndef MSG_USERWAIT
|
#ifndef MSG_USERWAIT
|
||||||
#define MSG_USERWAIT _UxGT("Click to resume...")
|
#define MSG_USERWAIT _UxGT("Click to resume...")
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MSG_PRINT_PAUSED
|
||||||
|
#define MSG_PRINT_PAUSED _UxGT("Print paused")
|
||||||
|
#endif
|
||||||
#ifndef MSG_RESUMING
|
#ifndef MSG_RESUMING
|
||||||
#define MSG_RESUMING _UxGT("Resuming print")
|
#define MSG_RESUMING _UxGT("Resuming print")
|
||||||
#endif
|
#endif
|
||||||
|
@ -742,10 +745,10 @@
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
||||||
#endif
|
#endif
|
||||||
#ifndef MSG_FILAMENT_CHANGE_HEADER
|
#ifndef MSG_FILAMENT_CHANGE_HEADER
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CHANGE FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#endif
|
#endif
|
||||||
#ifndef MSG_FILAMENT_CHANGE_OPTION_HEADER
|
#ifndef MSG_FILAMENT_CHANGE_OPTION_HEADER
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CHANGE OPTIONS:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#endif
|
#endif
|
||||||
#ifndef MSG_FILAMENT_CHANGE_OPTION_EXTRUDE
|
#ifndef MSG_FILAMENT_CHANGE_OPTION_EXTRUDE
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude more")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude more")
|
||||||
|
|
|
@ -221,8 +221,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Escribe DAC EEPROM")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("Escribe DAC EEPROM")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("Cambiar Filamento")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Opciones de cambio:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mas")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mas")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resumir imp.")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resumir imp.")
|
||||||
|
|
||||||
|
|
|
@ -229,8 +229,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM sauv.")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM sauv.")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CHANGER FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CHANGER OPTIONS:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("+ extrusion")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("+ extrusion")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Reprendre impr.")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Reprendre impr.")
|
||||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("La temp. minimum est ")
|
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("La temp. minimum est ")
|
||||||
|
|
|
@ -212,8 +212,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Motor %")
|
#define MSG_DAC_PERCENT _UxGT("Motor %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Garda DAC EEPROM")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("Garda DAC EEPROM")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("TROCO FILAMENTO")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("OPCIONS TROCO:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mais")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mais")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Segue traballo")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Segue traballo")
|
||||||
|
|
||||||
|
|
|
@ -213,8 +213,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CHANGE FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CHANGE OPTIONS:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudiraj više")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudiraj više")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Nastavi print")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Nastavi print")
|
||||||
|
|
||||||
|
|
|
@ -238,8 +238,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Scrivi DAC EEPROM")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("Scrivi DAC EEPROM")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CAMBIA FILAMENTO")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CAMBIA OPZIONI:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Estrusione")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Estrusione")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Riprendi stampa")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Riprendi stampa")
|
||||||
#if ENABLED(DOGLCD)
|
#if ENABLED(DOGLCD)
|
||||||
|
|
|
@ -285,8 +285,8 @@
|
||||||
#define MSG_DAC_PERCENT "DAC\xbc\xad\xc2\xd8\xae\xb8" // "DACシュツリョク" ("Driver %")
|
#define MSG_DAC_PERCENT "DAC\xbc\xad\xc2\xd8\xae\xb8" // "DACシュツリョク" ("Driver %")
|
||||||
#endif
|
#endif
|
||||||
#define MSG_DAC_EEPROM_WRITE MSG_STORE_EPROM // "メモリヘカクノウ" ("DAC EEPROM Write")
|
#define MSG_DAC_EEPROM_WRITE MSG_STORE_EPROM // "メモリヘカクノウ" ("DAC EEPROM Write")
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER "\xcc\xa8\xd7\xd2\xdd\xc4\xba\xb3\xb6\xdd" // "フィラメントコウカン" ("CHANGE FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER "PRINT PAUSED"
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER "\xc4\xde\xb3\xbb\xa6\xbe\xdd\xc0\xb8\xbc\xc3\xb8\xc0\xde\xbb\xb2" // "ドウサヲセンタクシテクダサイ" ("CHANGE OPTIONS:")
|
#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_FILAMENT_CHANGE_OPTION_EXTRUDE "\xbb\xd7\xc6\xb5\xbc\xc0\xde\xbd" // "サラニオシダス" ("Extrude more")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2" // "プリントサイカイ" ("Resume print")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2" // "プリントサイカイ" ("Resume print")
|
||||||
|
|
||||||
|
|
|
@ -212,8 +212,8 @@
|
||||||
#define MSG_DRIVE_STRENGTH _UxGT("モータークドウリョク") // "Drive Strength"
|
#define MSG_DRIVE_STRENGTH _UxGT("モータークドウリョク") // "Drive Strength"
|
||||||
#define MSG_DAC_PERCENT _UxGT("DACシュツリョク %") // "Driver %"
|
#define MSG_DAC_PERCENT _UxGT("DACシュツリョク %") // "Driver %"
|
||||||
#define MSG_DAC_EEPROM_WRITE MSG_STORE_EPROM // "DAC EEPROM Write"
|
#define MSG_DAC_EEPROM_WRITE MSG_STORE_EPROM // "DAC EEPROM Write"
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("フィラメントコウカン") // "CHANGE FILAMENT"
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ドウサヲセンタクシテクダサイ") // "CHANGE OPTIONS:"
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("サラニオシダス") // "Extrude more"
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("サラニオシダス") // "Extrude more"
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("プリントサイカイ") // "Resume print"
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("プリントサイカイ") // "Resume print"
|
||||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("コウカンヲカイシシマス") // "Wait for start"
|
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("コウカンヲカイシシマス") // "Wait for start"
|
||||||
|
|
|
@ -224,8 +224,8 @@
|
||||||
#define MSG_DRIVE_STRENGTH _UxGT("Motorstroom")
|
#define MSG_DRIVE_STRENGTH _UxGT("Motorstroom")
|
||||||
#define MSG_DAC_PERCENT _UxGT("Driver %") //accepted English term in Dutch
|
#define MSG_DAC_PERCENT _UxGT("Driver %") //accepted English term in Dutch
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC Opslaan")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC Opslaan")
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("WISSEL FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("WISSEL OPTIES:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudeer meer")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudeer meer")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Hervat print")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Hervat print")
|
||||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Minimum Temp is ")
|
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Minimum Temp is ")
|
||||||
|
|
|
@ -433,8 +433,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("Sila %")
|
#define MSG_DAC_PERCENT _UxGT("Sila %")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Zapisz DAC EEPROM")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("Zapisz DAC EEPROM")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ZMIEN FILAMENT")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ZMIEN OPCJE:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Ekstruduj wiecej")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Ekstruduj wiecej")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Wznow drukowanie")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Wznow drukowanie")
|
||||||
|
|
||||||
|
|
|
@ -227,8 +227,8 @@
|
||||||
|
|
||||||
#define MSG_DRIVE_STRENGTH _UxGT("Sürücü Gücü") // Sürücü Gücü
|
#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_DAC_PERCENT _UxGT("Sürücü %") // Sürücü %
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC'ı EEPROM'a Yaz") // DAC'ı EEPROM'a Yaz
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("Filaman Değiştir") // Filaman Değiştir
|
#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_HEADER _UxGT("Seçenekler:") // Seçenekler:
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Daha Akıt") // Daha Akıt
|
#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_OPTION_RESUME _UxGT("Baskıyı sürdür") // Baskıyı sürdür
|
||||||
|
|
|
@ -203,8 +203,8 @@
|
||||||
#define MSG_DAC_PERCENT _UxGT("% мотору")
|
#define MSG_DAC_PERCENT _UxGT("% мотору")
|
||||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Запис ЦАП на ПЗП")
|
#define MSG_DAC_EEPROM_WRITE _UxGT("Запис ЦАП на ПЗП")
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ЗАМІНА ВОЛОКНА")
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("НАЛАШТ. ЗАМІНИ:")
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Екструдувати")
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Екструдувати")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Відновити друк")
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Відновити друк")
|
||||||
|
|
||||||
|
|
|
@ -199,8 +199,8 @@
|
||||||
#define MSG_INFO_MAX_TEMP _UxGT("最高温度") //"Max Temp"
|
#define MSG_INFO_MAX_TEMP _UxGT("最高温度") //"Max Temp"
|
||||||
#define MSG_INFO_PSU _UxGT("电源供应") //"Power Supply"
|
#define MSG_INFO_PSU _UxGT("电源供应") //"Power Supply"
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("修改丝料") //"CHANGE FILAMENT"
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("修改选项:") //"CHANGE OPTIONS:"
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("挤出更多") //"Extrude more"
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("挤出更多") //"Extrude more"
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢复打印") //"Resume print"
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢复打印") //"Resume print"
|
||||||
|
|
||||||
|
|
|
@ -199,8 +199,8 @@
|
||||||
#define MSG_INFO_MAX_TEMP _UxGT("最高溫度") //"Max Temp"
|
#define MSG_INFO_MAX_TEMP _UxGT("最高溫度") //"Max Temp"
|
||||||
#define MSG_INFO_PSU _UxGT("電源供應") //"Power Supply"
|
#define MSG_INFO_PSU _UxGT("電源供應") //"Power Supply"
|
||||||
|
|
||||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("修改絲料") //"CHANGE FILAMENT"
|
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("修改選項:") //"CHANGE OPTIONS:"
|
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("擠出更多") //"Extrude more"
|
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("擠出更多") //"Extrude more"
|
||||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢複列印") //"Resume print"
|
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢複列印") //"Resume print"
|
||||||
|
|
||||||
|
|
|
@ -202,9 +202,14 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS],
|
||||||
|
|
||||||
#if ENABLED(PROBING_HEATERS_OFF)
|
#if ENABLED(PROBING_HEATERS_OFF)
|
||||||
bool Temperature::paused;
|
bool Temperature::paused;
|
||||||
int16_t Temperature::paused_hotend_temp[HOTENDS];
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
millis_t Temperature::heater_idle_timeout_ms[HOTENDS] = { 0 };
|
||||||
|
bool Temperature::heater_idle_timeout_exceeded[HOTENDS] = { false };
|
||||||
#if HAS_TEMP_BED
|
#if HAS_TEMP_BED
|
||||||
int16_t Temperature::paused_bed_temp;
|
millis_t Temperature::bed_idle_timeout_ms = 0;
|
||||||
|
bool Temperature::bed_idle_timeout_exceeded = false;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -554,11 +559,22 @@ float Temperature::get_pid_output(int e) {
|
||||||
pid_error[HOTEND_INDEX] = target_temperature[HOTEND_INDEX] - current_temperature[HOTEND_INDEX];
|
pid_error[HOTEND_INDEX] = target_temperature[HOTEND_INDEX] - current_temperature[HOTEND_INDEX];
|
||||||
dTerm[HOTEND_INDEX] = K2 * PID_PARAM(Kd, HOTEND_INDEX) * (current_temperature[HOTEND_INDEX] - temp_dState[HOTEND_INDEX]) + K1 * dTerm[HOTEND_INDEX];
|
dTerm[HOTEND_INDEX] = K2 * PID_PARAM(Kd, HOTEND_INDEX) * (current_temperature[HOTEND_INDEX] - temp_dState[HOTEND_INDEX]) + K1 * dTerm[HOTEND_INDEX];
|
||||||
temp_dState[HOTEND_INDEX] = current_temperature[HOTEND_INDEX];
|
temp_dState[HOTEND_INDEX] = current_temperature[HOTEND_INDEX];
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
if (heater_idle_timeout_exceeded[HOTEND_INDEX]) {
|
||||||
|
pid_output = 0;
|
||||||
|
pid_reset[HOTEND_INDEX] = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
if (pid_error[HOTEND_INDEX] > PID_FUNCTIONAL_RANGE) {
|
if (pid_error[HOTEND_INDEX] > PID_FUNCTIONAL_RANGE) {
|
||||||
pid_output = BANG_MAX;
|
pid_output = BANG_MAX;
|
||||||
pid_reset[HOTEND_INDEX] = true;
|
pid_reset[HOTEND_INDEX] = true;
|
||||||
}
|
}
|
||||||
else if (pid_error[HOTEND_INDEX] < -(PID_FUNCTIONAL_RANGE) || target_temperature[HOTEND_INDEX] == 0) {
|
else if (pid_error[HOTEND_INDEX] < -(PID_FUNCTIONAL_RANGE) || target_temperature[HOTEND_INDEX] == 0
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
|| heater_idle_timeout_exceeded[HOTEND_INDEX]
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
pid_output = 0;
|
pid_output = 0;
|
||||||
pid_reset[HOTEND_INDEX] = true;
|
pid_reset[HOTEND_INDEX] = true;
|
||||||
}
|
}
|
||||||
|
@ -618,6 +634,11 @@ float Temperature::get_pid_output(int e) {
|
||||||
#endif // PID_DEBUG
|
#endif // PID_DEBUG
|
||||||
|
|
||||||
#else /* PID off */
|
#else /* PID off */
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
if (heater_idle_timeout_exceeded[HOTEND_INDEX])
|
||||||
|
pid_output = 0;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
pid_output = (current_temperature[HOTEND_INDEX] < target_temperature[HOTEND_INDEX]) ? PID_MAX : 0;
|
pid_output = (current_temperature[HOTEND_INDEX] < target_temperature[HOTEND_INDEX]) ? PID_MAX : 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -699,12 +720,17 @@ void Temperature::manage_heater() {
|
||||||
if (current_temperature[0] < max(HEATER_0_MINTEMP, MAX6675_TMIN + .01)) min_temp_error(0);
|
if (current_temperature[0] < max(HEATER_0_MINTEMP, MAX6675_TMIN + .01)) min_temp_error(0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if WATCH_HOTENDS || WATCH_THE_BED || DISABLED(PIDTEMPBED) || HAS_AUTO_FAN
|
#if WATCH_HOTENDS || WATCH_THE_BED || DISABLED(PIDTEMPBED) || HAS_AUTO_FAN || ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
millis_t ms = millis();
|
millis_t ms = millis();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
HOTEND_LOOP() {
|
HOTEND_LOOP() {
|
||||||
|
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
if (!heater_idle_timeout_exceeded[e] && heater_idle_timeout_ms[e] && ELAPSED(ms, heater_idle_timeout_ms[e]))
|
||||||
|
heater_idle_timeout_exceeded[e] = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
|
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
|
||||||
// Check for thermal runaway
|
// Check for thermal runaway
|
||||||
thermal_runaway_protection(&thermal_runaway_state_machine[e], &thermal_runaway_timer[e], current_temperature[e], target_temperature[e], e, THERMAL_PROTECTION_PERIOD, THERMAL_PROTECTION_HYSTERESIS);
|
thermal_runaway_protection(&thermal_runaway_state_machine[e], &thermal_runaway_timer[e], current_temperature[e], target_temperature[e], e, THERMAL_PROTECTION_PERIOD, THERMAL_PROTECTION_HYSTERESIS);
|
||||||
|
@ -722,16 +748,6 @@ void Temperature::manage_heater() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if WATCH_THE_BED
|
|
||||||
// Make sure temperature is increasing
|
|
||||||
if (watch_bed_next_ms && ELAPSED(ms, watch_bed_next_ms)) { // Time to check the bed?
|
|
||||||
if (degBed() < watch_target_bed_temp) // Failed to increase enough?
|
|
||||||
_temp_error(-1, PSTR(MSG_T_HEATING_FAILED), PSTR(MSG_HEATING_FAILED_LCD));
|
|
||||||
else // Start again if the target is still far off
|
|
||||||
start_watching_bed();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
|
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
|
||||||
// Make sure measured temperatures are close together
|
// Make sure measured temperatures are close together
|
||||||
if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF)
|
if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF)
|
||||||
|
@ -761,17 +777,44 @@ void Temperature::manage_heater() {
|
||||||
}
|
}
|
||||||
#endif // FILAMENT_WIDTH_SENSOR
|
#endif // FILAMENT_WIDTH_SENSOR
|
||||||
|
|
||||||
|
#if WATCH_THE_BED
|
||||||
|
// Make sure temperature is increasing
|
||||||
|
if (watch_bed_next_ms && ELAPSED(ms, watch_bed_next_ms)) { // Time to check the bed?
|
||||||
|
if (degBed() < watch_target_bed_temp) // Failed to increase enough?
|
||||||
|
_temp_error(-1, PSTR(MSG_T_HEATING_FAILED), PSTR(MSG_HEATING_FAILED_LCD));
|
||||||
|
else // Start again if the target is still far off
|
||||||
|
start_watching_bed();
|
||||||
|
}
|
||||||
|
#endif // WATCH_THE_BED
|
||||||
|
|
||||||
#if DISABLED(PIDTEMPBED)
|
#if DISABLED(PIDTEMPBED)
|
||||||
if (PENDING(ms, next_bed_check_ms)) return;
|
if (PENDING(ms, next_bed_check_ms)) return;
|
||||||
next_bed_check_ms = ms + BED_CHECK_INTERVAL;
|
next_bed_check_ms = ms + BED_CHECK_INTERVAL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if TEMP_SENSOR_BED != 0
|
#if HAS_TEMP_BED
|
||||||
|
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
if (!bed_idle_timeout_exceeded && bed_idle_timeout_ms && ELAPSED(ms, bed_idle_timeout_ms))
|
||||||
|
bed_idle_timeout_exceeded = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HAS_THERMALLY_PROTECTED_BED
|
#if HAS_THERMALLY_PROTECTED_BED
|
||||||
thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, -1, THERMAL_PROTECTION_BED_PERIOD, THERMAL_PROTECTION_BED_HYSTERESIS);
|
thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, -1, THERMAL_PROTECTION_BED_PERIOD, THERMAL_PROTECTION_BED_HYSTERESIS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
if (bed_idle_timeout_exceeded)
|
||||||
|
{
|
||||||
|
soft_pwm_amount_bed = 0;
|
||||||
|
|
||||||
|
#if DISABLED(PIDTEMPBED)
|
||||||
|
WRITE_HEATER_BED(LOW);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
#if ENABLED(PIDTEMPBED)
|
#if ENABLED(PIDTEMPBED)
|
||||||
soft_pwm_amount_bed = WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP) ? (int)get_pid_output_bed() >> 1 : 0;
|
soft_pwm_amount_bed = WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP) ? (int)get_pid_output_bed() >> 1 : 0;
|
||||||
|
|
||||||
|
@ -797,7 +840,8 @@ void Temperature::manage_heater() {
|
||||||
WRITE_HEATER_BED(LOW);
|
WRITE_HEATER_BED(LOW);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif // TEMP_SENSOR_BED != 0
|
}
|
||||||
|
#endif // HAS_TEMP_BED
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PGM_RD_W(x) (short)pgm_read_word(&x)
|
#define PGM_RD_W(x) (short)pgm_read_word(&x)
|
||||||
|
@ -1180,10 +1224,6 @@ void Temperature::init() {
|
||||||
|
|
||||||
#if ENABLED(PROBING_HEATERS_OFF)
|
#if ENABLED(PROBING_HEATERS_OFF)
|
||||||
paused = false;
|
paused = false;
|
||||||
ZERO(paused_hotend_temp);
|
|
||||||
#if HAS_TEMP_BED
|
|
||||||
paused_bed_temp = 0;
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1246,11 +1286,29 @@ void Temperature::init() {
|
||||||
SERIAL_ECHOPAIR(" ; Timer:", *timer);
|
SERIAL_ECHOPAIR(" ; Timer:", *timer);
|
||||||
SERIAL_ECHOPAIR(" ; Temperature:", current);
|
SERIAL_ECHOPAIR(" ; Temperature:", current);
|
||||||
SERIAL_ECHOPAIR(" ; Target Temp:", target);
|
SERIAL_ECHOPAIR(" ; Target Temp:", target);
|
||||||
|
if (heater_id >= 0)
|
||||||
|
SERIAL_ECHOPAIR(" ; Idle Timeout:", heater_idle_timeout_exceeded[heater_id]);
|
||||||
|
else
|
||||||
|
SERIAL_ECHOPAIR(" ; Idle Timeout:", bed_idle_timeout_exceeded);
|
||||||
SERIAL_EOL;
|
SERIAL_EOL;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int heater_index = heater_id >= 0 ? heater_id : HOTENDS;
|
int heater_index = heater_id >= 0 ? heater_id : HOTENDS;
|
||||||
|
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
// If the heater idle timeout expires, restart
|
||||||
|
if (heater_id >= 0 && heater_idle_timeout_exceeded[heater_id]) {
|
||||||
|
*state = TRInactive;
|
||||||
|
tr_target_temperature[heater_index] = 0;
|
||||||
|
}
|
||||||
|
#if HAS_TEMP_BED
|
||||||
|
else if (heater_id < 0 && bed_idle_timeout_exceeded) {
|
||||||
|
*state = TRInactive;
|
||||||
|
tr_target_temperature[heater_index] = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
#endif
|
||||||
// If the target temperature changes, restart
|
// If the target temperature changes, restart
|
||||||
if (tr_target_temperature[heater_index] != target) {
|
if (tr_target_temperature[heater_index] != target) {
|
||||||
tr_target_temperature[heater_index] = target;
|
tr_target_temperature[heater_index] = target;
|
||||||
|
@ -1290,11 +1348,7 @@ void Temperature::disable_all_heaters() {
|
||||||
|
|
||||||
// Unpause and reset everything
|
// Unpause and reset everything
|
||||||
#if ENABLED(PROBING_HEATERS_OFF)
|
#if ENABLED(PROBING_HEATERS_OFF)
|
||||||
paused = false;
|
pause(false);
|
||||||
ZERO(paused_hotend_temp);
|
|
||||||
#if HAS_TEMP_BED
|
|
||||||
paused_bed_temp = 0;
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// If all heaters go down then for sure our print job has stopped
|
// If all heaters go down then for sure our print job has stopped
|
||||||
|
@ -1337,19 +1391,15 @@ void Temperature::disable_all_heaters() {
|
||||||
if (p != paused) {
|
if (p != paused) {
|
||||||
paused = p;
|
paused = p;
|
||||||
if (p) {
|
if (p) {
|
||||||
HOTEND_LOOP() {
|
HOTEND_LOOP() start_heater_idle_timer(e, 0); // timeout immediately
|
||||||
paused_hotend_temp[e] = degTargetHotend(e);
|
|
||||||
setTargetHotend(0, e);
|
|
||||||
}
|
|
||||||
#if HAS_TEMP_BED
|
#if HAS_TEMP_BED
|
||||||
paused_bed_temp = degTargetBed();
|
start_bed_idle_timer(0); // timeout immediately
|
||||||
setTargetBed(0);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
HOTEND_LOOP() setTargetHotend(paused_hotend_temp[e], e);
|
HOTEND_LOOP() reset_heater_idle_timer(e);
|
||||||
#if HAS_TEMP_BED
|
#if HAS_TEMP_BED
|
||||||
setTargetBed(paused_bed_temp);
|
reset_bed_idle_timer();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -257,10 +257,14 @@ class Temperature {
|
||||||
|
|
||||||
#if ENABLED(PROBING_HEATERS_OFF)
|
#if ENABLED(PROBING_HEATERS_OFF)
|
||||||
static bool paused;
|
static bool paused;
|
||||||
static int16_t paused_hotend_temp[HOTENDS];
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
static millis_t heater_idle_timeout_ms[HOTENDS];
|
||||||
|
static bool heater_idle_timeout_exceeded[HOTENDS];
|
||||||
#if HAS_TEMP_BED
|
#if HAS_TEMP_BED
|
||||||
static int16_t paused_bed_temp;
|
static millis_t bed_idle_timeout_ms;
|
||||||
|
static bool bed_idle_timeout_exceeded;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -458,6 +462,54 @@ class Temperature {
|
||||||
|
|
||||||
#if ENABLED(PROBING_HEATERS_OFF)
|
#if ENABLED(PROBING_HEATERS_OFF)
|
||||||
static void pause(const bool p);
|
static void pause(const bool p);
|
||||||
|
static bool is_paused() { return paused; }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
static void start_heater_idle_timer(uint8_t e, millis_t timeout_ms) {
|
||||||
|
#if HOTENDS == 1
|
||||||
|
UNUSED(e);
|
||||||
|
#endif
|
||||||
|
heater_idle_timeout_ms[HOTEND_INDEX] = millis() + timeout_ms;
|
||||||
|
heater_idle_timeout_exceeded[HOTEND_INDEX] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void reset_heater_idle_timer(uint8_t e) {
|
||||||
|
#if HOTENDS == 1
|
||||||
|
UNUSED(e);
|
||||||
|
#endif
|
||||||
|
heater_idle_timeout_ms[HOTEND_INDEX] = 0;
|
||||||
|
heater_idle_timeout_exceeded[HOTEND_INDEX] = false;
|
||||||
|
#if WATCH_HOTENDS
|
||||||
|
start_watching_heater(HOTEND_INDEX);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool is_heater_idle(uint8_t e) {
|
||||||
|
#if HOTENDS == 1
|
||||||
|
UNUSED(e);
|
||||||
|
#endif
|
||||||
|
return heater_idle_timeout_exceeded[HOTEND_INDEX];
|
||||||
|
}
|
||||||
|
|
||||||
|
#if HAS_TEMP_BED
|
||||||
|
static void start_bed_idle_timer(millis_t timeout_ms) {
|
||||||
|
bed_idle_timeout_ms = millis() + timeout_ms;
|
||||||
|
bed_idle_timeout_exceeded = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void reset_bed_idle_timer() {
|
||||||
|
bed_idle_timeout_ms = 0;
|
||||||
|
bed_idle_timeout_exceeded = false;
|
||||||
|
#if WATCH_THE_BED
|
||||||
|
start_watching_bed();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool is_bed_idle() {
|
||||||
|
return bed_idle_timeout_exceeded;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -126,16 +126,16 @@ uint16_t max_display_update_time = 0;
|
||||||
void lcd_info_menu();
|
void lcd_info_menu();
|
||||||
#endif // LCD_INFO_MENU
|
#endif // LCD_INFO_MENU
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
void lcd_filament_change_toocold_menu();
|
void lcd_advanced_pause_toocold_menu();
|
||||||
void lcd_filament_change_option_menu();
|
void lcd_advanced_pause_option_menu();
|
||||||
void lcd_filament_change_init_message();
|
void lcd_advanced_pause_init_message();
|
||||||
void lcd_filament_change_unload_message();
|
void lcd_advanced_pause_unload_message();
|
||||||
void lcd_filament_change_insert_message();
|
void lcd_advanced_pause_insert_message();
|
||||||
void lcd_filament_change_load_message();
|
void lcd_advanced_pause_load_message();
|
||||||
void lcd_filament_change_heat_nozzle();
|
void lcd_advanced_pause_heat_nozzle();
|
||||||
void lcd_filament_change_extrude_message();
|
void lcd_advanced_pause_extrude_message();
|
||||||
void lcd_filament_change_resume_message();
|
void lcd_advanced_pause_resume_message();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(DAC_STEPPER_CURRENT)
|
#if ENABLED(DAC_STEPPER_CURRENT)
|
||||||
|
@ -676,6 +676,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
#if ENABLED(PARK_HEAD_ON_PAUSE)
|
#if ENABLED(PARK_HEAD_ON_PAUSE)
|
||||||
enqueue_and_echo_commands_P(PSTR("M125"));
|
enqueue_and_echo_commands_P(PSTR("M125"));
|
||||||
#endif
|
#endif
|
||||||
|
lcd_setstatuspgm(PSTR(MSG_PRINT_PAUSED), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_sdcard_resume() {
|
void lcd_sdcard_resume() {
|
||||||
|
@ -685,6 +686,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
card.startFileprint();
|
card.startFileprint();
|
||||||
print_job_timer.start();
|
print_job_timer.start();
|
||||||
#endif
|
#endif
|
||||||
|
lcd_setstatuspgm(PSTR(""), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_sdcard_stop() {
|
void lcd_sdcard_stop() {
|
||||||
|
@ -1006,15 +1008,15 @@ void kill_screen(const char* lcd_msg) {
|
||||||
void watch_temp_callback_bed() { thermalManager.start_watching_bed(); }
|
void watch_temp_callback_bed() { thermalManager.start_watching_bed(); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
void lcd_enqueue_filament_change() {
|
void lcd_enqueue_filament_change() {
|
||||||
if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder)) {
|
if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder)) {
|
||||||
lcd_save_previous_screen();
|
lcd_save_previous_screen();
|
||||||
lcd_goto_screen(lcd_filament_change_toocold_menu);
|
lcd_goto_screen(lcd_advanced_pause_toocold_menu);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INIT);
|
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT);
|
||||||
enqueue_and_echo_commands_P(PSTR("M600"));
|
enqueue_and_echo_commands_P(PSTR("M600 B0"));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1129,7 +1131,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
//
|
//
|
||||||
// Change filament
|
// Change filament
|
||||||
//
|
//
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
if (!thermalManager.tooColdToExtrude(active_extruder))
|
if (!thermalManager.tooColdToExtrude(active_extruder))
|
||||||
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
|
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
|
||||||
#endif
|
#endif
|
||||||
|
@ -2043,7 +2045,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
//
|
//
|
||||||
// Change filament
|
// Change filament
|
||||||
//
|
//
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
if (!thermalManager.tooColdToExtrude(active_extruder))
|
if (!thermalManager.tooColdToExtrude(active_extruder))
|
||||||
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
|
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
|
||||||
#endif
|
#endif
|
||||||
|
@ -3183,7 +3185,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
* Filament Change Feature Screens
|
* Filament Change Feature Screens
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
|
||||||
// Portions from STATIC_ITEM...
|
// Portions from STATIC_ITEM...
|
||||||
#define HOTEND_STATUS_ITEM() do { \
|
#define HOTEND_STATUS_ITEM() do { \
|
||||||
|
@ -3201,7 +3203,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
++_thisItemNr; \
|
++_thisItemNr; \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
void lcd_filament_change_toocold_menu() {
|
void lcd_advanced_pause_toocold_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true);
|
STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true);
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false);
|
||||||
|
@ -3213,25 +3215,25 @@ void kill_screen(const char* lcd_msg) {
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_resume_print() {
|
void lcd_advanced_pause_resume_print() {
|
||||||
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_RESUME_PRINT;
|
advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_RESUME_PRINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_extrude_more() {
|
void lcd_advanced_pause_extrude_more() {
|
||||||
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE;
|
advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_EXTRUDE_MORE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_option_menu() {
|
void lcd_advanced_pause_option_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
#if LCD_HEIGHT > 2
|
#if LCD_HEIGHT > 2
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER, true, false);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER, true, false);
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_filament_change_resume_print);
|
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_advanced_pause_resume_print);
|
||||||
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_EXTRUDE, lcd_filament_change_extrude_more);
|
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_EXTRUDE, lcd_advanced_pause_extrude_more);
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_init_message() {
|
void lcd_advanced_pause_init_message() {
|
||||||
START_SCREEN();
|
START_SCREEN();
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1);
|
||||||
|
@ -3254,7 +3256,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
END_SCREEN();
|
END_SCREEN();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_unload_message() {
|
void lcd_advanced_pause_unload_message() {
|
||||||
START_SCREEN();
|
START_SCREEN();
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1);
|
||||||
|
@ -3277,7 +3279,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
END_SCREEN();
|
END_SCREEN();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_wait_for_nozzles_to_heat() {
|
void lcd_advanced_pause_wait_for_nozzles_to_heat() {
|
||||||
START_SCREEN();
|
START_SCREEN();
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1);
|
||||||
|
@ -3294,7 +3296,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
END_SCREEN();
|
END_SCREEN();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_heat_nozzle() {
|
void lcd_advanced_pause_heat_nozzle() {
|
||||||
START_SCREEN();
|
START_SCREEN();
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1);
|
||||||
|
@ -3311,7 +3313,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
END_SCREEN();
|
END_SCREEN();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_insert_message() {
|
void lcd_advanced_pause_insert_message() {
|
||||||
START_SCREEN();
|
START_SCREEN();
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1);
|
||||||
|
@ -3334,7 +3336,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
END_SCREEN();
|
END_SCREEN();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_load_message() {
|
void lcd_advanced_pause_load_message() {
|
||||||
START_SCREEN();
|
START_SCREEN();
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1);
|
||||||
|
@ -3357,7 +3359,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
END_SCREEN();
|
END_SCREEN();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_extrude_message() {
|
void lcd_advanced_pause_extrude_message() {
|
||||||
START_SCREEN();
|
START_SCREEN();
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_1);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_1);
|
||||||
|
@ -3380,7 +3382,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
END_SCREEN();
|
END_SCREEN();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_resume_message() {
|
void lcd_advanced_pause_resume_message() {
|
||||||
START_SCREEN();
|
START_SCREEN();
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_1);
|
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_1);
|
||||||
|
@ -3393,44 +3395,52 @@ void kill_screen(const char* lcd_msg) {
|
||||||
END_SCREEN();
|
END_SCREEN();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_filament_change_show_message(const FilamentChangeMessage message) {
|
void lcd_advanced_pause_show_message(const AdvancedPauseMessage message) {
|
||||||
switch (message) {
|
switch (message) {
|
||||||
case FILAMENT_CHANGE_MESSAGE_INIT:
|
case ADVANCED_PAUSE_MESSAGE_INIT:
|
||||||
defer_return_to_status = true;
|
defer_return_to_status = true;
|
||||||
lcd_goto_screen(lcd_filament_change_init_message);
|
lcd_goto_screen(lcd_advanced_pause_init_message);
|
||||||
break;
|
break;
|
||||||
case FILAMENT_CHANGE_MESSAGE_UNLOAD:
|
case ADVANCED_PAUSE_MESSAGE_UNLOAD:
|
||||||
lcd_goto_screen(lcd_filament_change_unload_message);
|
defer_return_to_status = true;
|
||||||
|
lcd_goto_screen(lcd_advanced_pause_unload_message);
|
||||||
break;
|
break;
|
||||||
case FILAMENT_CHANGE_MESSAGE_INSERT:
|
case ADVANCED_PAUSE_MESSAGE_INSERT:
|
||||||
lcd_goto_screen(lcd_filament_change_insert_message);
|
defer_return_to_status = true;
|
||||||
|
lcd_goto_screen(lcd_advanced_pause_insert_message);
|
||||||
break;
|
break;
|
||||||
case FILAMENT_CHANGE_MESSAGE_LOAD:
|
case ADVANCED_PAUSE_MESSAGE_LOAD:
|
||||||
lcd_goto_screen(lcd_filament_change_load_message);
|
defer_return_to_status = true;
|
||||||
|
lcd_goto_screen(lcd_advanced_pause_load_message);
|
||||||
break;
|
break;
|
||||||
case FILAMENT_CHANGE_MESSAGE_EXTRUDE:
|
case ADVANCED_PAUSE_MESSAGE_EXTRUDE:
|
||||||
lcd_goto_screen(lcd_filament_change_extrude_message);
|
defer_return_to_status = true;
|
||||||
|
lcd_goto_screen(lcd_advanced_pause_extrude_message);
|
||||||
break;
|
break;
|
||||||
case FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE:
|
case ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE:
|
||||||
lcd_goto_screen(lcd_filament_change_heat_nozzle);
|
defer_return_to_status = true;
|
||||||
|
lcd_goto_screen(lcd_advanced_pause_heat_nozzle);
|
||||||
break;
|
break;
|
||||||
case FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT:
|
case ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT:
|
||||||
lcd_goto_screen(lcd_filament_change_wait_for_nozzles_to_heat);
|
defer_return_to_status = true;
|
||||||
|
lcd_goto_screen(lcd_advanced_pause_wait_for_nozzles_to_heat);
|
||||||
break;
|
break;
|
||||||
case FILAMENT_CHANGE_MESSAGE_OPTION:
|
case ADVANCED_PAUSE_MESSAGE_OPTION:
|
||||||
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_WAIT_FOR;
|
defer_return_to_status = true;
|
||||||
lcd_goto_screen(lcd_filament_change_option_menu);
|
advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
||||||
|
lcd_goto_screen(lcd_advanced_pause_option_menu);
|
||||||
break;
|
break;
|
||||||
case FILAMENT_CHANGE_MESSAGE_RESUME:
|
case ADVANCED_PAUSE_MESSAGE_RESUME:
|
||||||
lcd_goto_screen(lcd_filament_change_resume_message);
|
defer_return_to_status = true;
|
||||||
|
lcd_goto_screen(lcd_advanced_pause_resume_message);
|
||||||
break;
|
break;
|
||||||
case FILAMENT_CHANGE_MESSAGE_STATUS:
|
case ADVANCED_PAUSE_MESSAGE_STATUS:
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FILAMENT_CHANGE_FEATURE
|
#endif // ADVANCED_PAUSE_FEATURE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -83,9 +83,9 @@
|
||||||
void lcd_quick_feedback(); // Audible feedback for a button click - could also be visual
|
void lcd_quick_feedback(); // Audible feedback for a button click - could also be visual
|
||||||
void lcd_completion_feedback(const bool good=true);
|
void lcd_completion_feedback(const bool good=true);
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
void lcd_filament_change_show_message(const FilamentChangeMessage message);
|
void lcd_advanced_pause_show_message(const AdvancedPauseMessage message);
|
||||||
#endif // FILAMENT_CHANGE_FEATURE
|
#endif // ADVANCED_PAUSE_FEATURE
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|
|
@ -340,15 +340,26 @@ FORCE_INLINE void _draw_centered_temp(const int temp, const uint8_t x, const uin
|
||||||
lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
|
lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE void _draw_heater_status(const uint8_t x, const int8_t heater) {
|
FORCE_INLINE void _draw_heater_status(const uint8_t x, const int8_t heater, const bool blink) {
|
||||||
#if HAS_TEMP_BED
|
#if HAS_TEMP_BED
|
||||||
bool isBed = heater < 0;
|
bool isBed = heater < 0;
|
||||||
#else
|
#else
|
||||||
const bool isBed = false;
|
const bool isBed = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (PAGE_UNDER(7))
|
if (PAGE_UNDER(7)) {
|
||||||
_draw_centered_temp((isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater)) + 0.5, x, 7);
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
const bool is_idle = (!isBed ? thermalManager.is_heater_idle(heater) :
|
||||||
|
#if HAS_TEMP_BED
|
||||||
|
thermalManager.is_bed_idle()
|
||||||
|
#else
|
||||||
|
false
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
if (blink || !is_idle)
|
||||||
|
#endif
|
||||||
|
_draw_centered_temp((isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater)) + 0.5, x, 7); }
|
||||||
|
|
||||||
if (PAGE_CONTAINS(21, 28))
|
if (PAGE_CONTAINS(21, 28))
|
||||||
_draw_centered_temp((isBed ? thermalManager.degBed() : thermalManager.degHotend(heater)) + 0.5, x, 28);
|
_draw_centered_temp((isBed ? thermalManager.degBed() : thermalManager.degHotend(heater)) + 0.5, x, 28);
|
||||||
|
@ -415,11 +426,11 @@ static void lcd_implementation_status_screen() {
|
||||||
|
|
||||||
if (PAGE_UNDER(28)) {
|
if (PAGE_UNDER(28)) {
|
||||||
// Extruders
|
// Extruders
|
||||||
HOTEND_LOOP() _draw_heater_status(5 + e * 25, e);
|
HOTEND_LOOP() _draw_heater_status(5 + e * 25, e, blink);
|
||||||
|
|
||||||
// Heated bed
|
// Heated bed
|
||||||
#if HOTENDS < 4 && HAS_TEMP_BED
|
#if HOTENDS < 4 && HAS_TEMP_BED
|
||||||
_draw_heater_status(81, -1);
|
_draw_heater_status(81, -1, blink);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_FAN0
|
#if HAS_FAN0
|
||||||
|
@ -662,7 +673,7 @@ static void lcd_implementation_status_screen() {
|
||||||
uint8_t row_y1, row_y2;
|
uint8_t row_y1, row_y2;
|
||||||
uint8_t constexpr row_height = DOG_CHAR_HEIGHT + 2 * (TALL_FONT_CORRECTION);
|
uint8_t constexpr row_height = DOG_CHAR_HEIGHT + 2 * (TALL_FONT_CORRECTION);
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#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) {
|
||||||
row_y1 = row * row_height + 1;
|
row_y1 = row * row_height + 1;
|
||||||
|
@ -679,7 +690,7 @@ static void lcd_implementation_status_screen() {
|
||||||
lcd_print(itostr3(thermalManager.degTargetHotend(active_extruder)));
|
lcd_print(itostr3(thermalManager.degTargetHotend(active_extruder)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FILAMENT_CHANGE_FEATURE
|
#endif // ADVANCED_PAUSE_FEATURE
|
||||||
|
|
||||||
// Set the colors for a menu item based on whether it is selected
|
// Set the colors for a menu item based on whether it is selected
|
||||||
static void lcd_implementation_mark_as_selected(const uint8_t row, const bool isSelected) {
|
static void lcd_implementation_mark_as_selected(const uint8_t row, const bool isSelected) {
|
||||||
|
|
|
@ -573,6 +573,41 @@ FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FORCE_INLINE void _draw_heater_status(const int8_t heater, const char prefix, const bool blink) {
|
||||||
|
const bool isBed = heater < 0;
|
||||||
|
|
||||||
|
const float t1 = (isBed ? thermalManager.degBed() : thermalManager.degHotend(heater));
|
||||||
|
const float t2 = (isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater));
|
||||||
|
|
||||||
|
if (prefix >= 0) lcd.print(prefix);
|
||||||
|
|
||||||
|
lcd.print(itostr3(t1 + 0.5));
|
||||||
|
lcd.print('/');
|
||||||
|
|
||||||
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
const bool is_idle = (!isBed ? thermalManager.is_heater_idle(heater) :
|
||||||
|
#if HAS_TEMP_BED
|
||||||
|
thermalManager.is_bed_idle()
|
||||||
|
#else
|
||||||
|
false
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!blink && is_idle) {
|
||||||
|
lcd.print(' ');
|
||||||
|
if (t2 >= 10) lcd.print(' ');
|
||||||
|
if (t2 >= 100) lcd.print(' ');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
lcd.print(itostr3left(t2 + 0.5));
|
||||||
|
|
||||||
|
if (prefix >= 0) {
|
||||||
|
lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
|
||||||
|
if (t2 < 10) lcd.print(' ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if ENABLED(LCD_PROGRESS_BAR)
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
|
|
||||||
inline void lcd_draw_progress_bar(const uint8_t percent) {
|
inline void lcd_draw_progress_bar(const uint8_t percent) {
|
||||||
|
@ -616,17 +651,7 @@ Possible status screens:
|
||||||
|01234567890123456789|
|
|01234567890123456789|
|
||||||
*/
|
*/
|
||||||
static void lcd_implementation_status_screen() {
|
static void lcd_implementation_status_screen() {
|
||||||
|
bool blink = lcd_blink();
|
||||||
#define LCD_TEMP_ONLY(T1,T2) \
|
|
||||||
lcd.print(itostr3(T1 + 0.5)); \
|
|
||||||
lcd.print('/'); \
|
|
||||||
lcd.print(itostr3left(T2 + 0.5))
|
|
||||||
|
|
||||||
#define LCD_TEMP(T1,T2,PREFIX) \
|
|
||||||
lcd.print(PREFIX); \
|
|
||||||
LCD_TEMP_ONLY(T1,T2); \
|
|
||||||
lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); \
|
|
||||||
if (T2 < 10) lcd.print(' ')
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Line 1
|
// Line 1
|
||||||
|
@ -639,7 +664,7 @@ static void lcd_implementation_status_screen() {
|
||||||
//
|
//
|
||||||
// Hotend 0 Temperature
|
// Hotend 0 Temperature
|
||||||
//
|
//
|
||||||
LCD_TEMP_ONLY(thermalManager.degHotend(0), thermalManager.degTargetHotend(0));
|
_draw_heater_status(0, -1, blink);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Hotend 1 or Bed Temperature
|
// Hotend 1 or Bed Temperature
|
||||||
|
@ -649,10 +674,10 @@ static void lcd_implementation_status_screen() {
|
||||||
lcd.setCursor(8, 0);
|
lcd.setCursor(8, 0);
|
||||||
#if HOTENDS > 1
|
#if HOTENDS > 1
|
||||||
lcd.print(LCD_STR_THERMOMETER[0]);
|
lcd.print(LCD_STR_THERMOMETER[0]);
|
||||||
LCD_TEMP_ONLY(thermalManager.degHotend(1), thermalManager.degTargetHotend(1));
|
_draw_heater_status(1, -1, blink);
|
||||||
#else
|
#else
|
||||||
lcd.print(LCD_STR_BEDTEMP[0]);
|
lcd.print(LCD_STR_BEDTEMP[0]);
|
||||||
LCD_TEMP_ONLY(thermalManager.degBed(), thermalManager.degTargetBed());
|
_draw_heater_status(-1, -1, blink);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // HOTENDS > 1 || TEMP_SENSOR_BED != 0
|
#endif // HOTENDS > 1 || TEMP_SENSOR_BED != 0
|
||||||
|
@ -662,7 +687,7 @@ static void lcd_implementation_status_screen() {
|
||||||
//
|
//
|
||||||
// Hotend 0 Temperature
|
// Hotend 0 Temperature
|
||||||
//
|
//
|
||||||
LCD_TEMP(thermalManager.degHotend(0), thermalManager.degTargetHotend(0), LCD_STR_THERMOMETER[0]);
|
_draw_heater_status(0, LCD_STR_THERMOMETER[0], blink);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Hotend 1 or Bed Temperature
|
// Hotend 1 or Bed Temperature
|
||||||
|
@ -670,9 +695,9 @@ static void lcd_implementation_status_screen() {
|
||||||
#if HOTENDS > 1 || TEMP_SENSOR_BED != 0
|
#if HOTENDS > 1 || TEMP_SENSOR_BED != 0
|
||||||
lcd.setCursor(10, 0);
|
lcd.setCursor(10, 0);
|
||||||
#if HOTENDS > 1
|
#if HOTENDS > 1
|
||||||
LCD_TEMP(thermalManager.degHotend(1), thermalManager.degTargetHotend(1), LCD_STR_THERMOMETER[0]);
|
_draw_heater_status(1, LCD_STR_THERMOMETER[0], blink);
|
||||||
#else
|
#else
|
||||||
LCD_TEMP(thermalManager.degBed(), thermalManager.degTargetBed(), LCD_STR_BEDTEMP[0]);
|
_draw_heater_status(-1, LCD_STR_BEDTEMP[0], blink);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // HOTENDS > 1 || TEMP_SENSOR_BED != 0
|
#endif // HOTENDS > 1 || TEMP_SENSOR_BED != 0
|
||||||
|
@ -685,8 +710,6 @@ static void lcd_implementation_status_screen() {
|
||||||
|
|
||||||
#if LCD_HEIGHT > 2
|
#if LCD_HEIGHT > 2
|
||||||
|
|
||||||
bool blink = lcd_blink();
|
|
||||||
|
|
||||||
#if LCD_WIDTH < 20
|
#if LCD_WIDTH < 20
|
||||||
|
|
||||||
#if ENABLED(SDSUPPORT)
|
#if ENABLED(SDSUPPORT)
|
||||||
|
@ -708,7 +731,7 @@ static void lcd_implementation_status_screen() {
|
||||||
// If we both have a 2nd extruder and a heated bed,
|
// If we both have a 2nd extruder and a heated bed,
|
||||||
// show the heated bed temp on the left,
|
// show the heated bed temp on the left,
|
||||||
// since the first line is filled with extruder temps
|
// since the first line is filled with extruder temps
|
||||||
LCD_TEMP(thermalManager.degBed(), thermalManager.degTargetBed(), LCD_STR_BEDTEMP[0]);
|
_draw_heater_status(-1, LCD_STR_BEDTEMP[0], blink);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// Before homing the axis letters are blinking 'X' <-> '?'.
|
// Before homing the axis letters are blinking 'X' <-> '?'.
|
||||||
|
@ -803,7 +826,7 @@ static void lcd_implementation_status_screen() {
|
||||||
|
|
||||||
#if ENABLED(ULTIPANEL)
|
#if ENABLED(ULTIPANEL)
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
#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) {
|
||||||
if (row < LCD_HEIGHT) {
|
if (row < LCD_HEIGHT) {
|
||||||
|
@ -815,7 +838,7 @@ static void lcd_implementation_status_screen() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FILAMENT_CHANGE_FEATURE
|
#endif // ADVANCED_PAUSE_FEATURE
|
||||||
|
|
||||||
static void lcd_implementation_drawmenu_static(const uint8_t row, const char* pstr, const bool center=true, const bool invert=false, const char *valstr=NULL) {
|
static void lcd_implementation_drawmenu_static(const uint8_t row, const char* pstr, const bool center=true, const bool invert=false, const char *valstr=NULL) {
|
||||||
UNUSED(invert);
|
UNUSED(invert);
|
||||||
|
|
Loading…
Reference in a new issue