mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-23 12:04:19 +00:00
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
|
||||
#undef PROBING_FANS_OFF
|
||||
#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
|
||||
|
@ -763,22 +763,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -789,14 +790,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -48,7 +48,7 @@
|
||||
#endif
|
||||
|
||||
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
|
||||
#endif
|
||||
);
|
||||
@ -369,8 +369,8 @@ extern float soft_endstop_min[XYZ], soft_endstop_max[XYZ];
|
||||
extern int meas_delay_cm; // Delay distance
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
extern FilamentChangeMenuResponse filament_change_menu_response;
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
extern AdvancedPauseMenuResponse advanced_pause_menu_response;
|
||||
#endif
|
||||
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
|
@ -195,7 +195,7 @@
|
||||
* 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.
|
||||
* 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)
|
||||
* 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)
|
||||
@ -627,8 +627,8 @@ float cartes[XYZ] = { 0 };
|
||||
static bool filament_ran_out = false;
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
FilamentChangeMenuResponse filament_change_menu_response;
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
AdvancedPauseMenuResponse advanced_pause_menu_response;
|
||||
#endif
|
||||
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
@ -5738,14 +5738,244 @@ inline void gcode_M17() {
|
||||
#define RUNPLAN(RATE_MM_S) line_to_destination(RATE_MM_S)
|
||||
#endif
|
||||
|
||||
#if ENABLED(PARK_HEAD_ON_PAUSE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
|
||||
float resume_position[XYZE];
|
||||
bool move_away_flag = false;
|
||||
static float resume_position[XYZE];
|
||||
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;
|
||||
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
|
||||
destination[E_AXIS] = current_position[E_AXIS] = resume_position[E_AXIS];
|
||||
@ -5753,24 +5983,38 @@ inline void gcode_M17() {
|
||||
|
||||
#if IS_KINEMATIC
|
||||
// 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
|
||||
// Move XY to starting position, then Z
|
||||
destination[X_AXIS] = resume_position[X_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];
|
||||
RUNPLAN(FILAMENT_CHANGE_Z_FEEDRATE);
|
||||
RUNPLAN(PAUSE_PARK_Z_FEEDRATE);
|
||||
#endif
|
||||
stepper.synchronize();
|
||||
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
filament_ran_out = false;
|
||||
#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)
|
||||
|
||||
@ -5803,7 +6047,7 @@ inline void gcode_M17() {
|
||||
*/
|
||||
inline void gcode_M24() {
|
||||
#if ENABLED(PARK_HEAD_ON_PAUSE)
|
||||
move_back_on_resume();
|
||||
resume_print();
|
||||
#endif
|
||||
|
||||
card.startFileprint();
|
||||
@ -7462,89 +7706,55 @@ inline void gcode_M121() { endstops.enable_globally(false); }
|
||||
* Z = override Z raise
|
||||
*/
|
||||
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
|
||||
destination[E_AXIS] += parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0
|
||||
#if defined(FILAMENT_CHANGE_RETRACT_LENGTH) && FILAMENT_CHANGE_RETRACT_LENGTH > 0
|
||||
- (FILAMENT_CHANGE_RETRACT_LENGTH)
|
||||
const float retract = parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0
|
||||
#if defined(PAUSE_PARK_RETRACT_LENGTH) && PAUSE_PARK_RETRACT_LENGTH > 0
|
||||
- (PAUSE_PARK_RETRACT_LENGTH)
|
||||
#endif
|
||||
;
|
||||
RUNPLAN(FILAMENT_CHANGE_RETRACT_FEEDRATE);
|
||||
|
||||
// Lift Z axis
|
||||
const float z_lift = parser.seen('Z') ? parser.value_linear_units() :
|
||||
#if defined(FILAMENT_CHANGE_Z_ADD) && FILAMENT_CHANGE_Z_ADD > 0
|
||||
FILAMENT_CHANGE_Z_ADD
|
||||
#if defined(PAUSE_PARK_Z_ADD) && PAUSE_PARK_Z_ADD > 0
|
||||
PAUSE_PARK_Z_ADD
|
||||
#else
|
||||
0
|
||||
#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
|
||||
destination[X_AXIS] = parser.seen('X') ? parser.value_linear_units() : 0
|
||||
#ifdef FILAMENT_CHANGE_X_POS
|
||||
+ FILAMENT_CHANGE_X_POS
|
||||
const float x_pos = parser.seen('X') ? parser.value_linear_units() : 0
|
||||
#ifdef PAUSE_PARK_X_POS
|
||||
+ PAUSE_PARK_X_POS
|
||||
#endif
|
||||
;
|
||||
destination[Y_AXIS] = parser.seen('Y') ? parser.value_linear_units() : 0
|
||||
#ifdef FILAMENT_CHANGE_Y_POS
|
||||
+ FILAMENT_CHANGE_Y_POS
|
||||
const float y_pos = parser.seen('Y') ? parser.value_linear_units() : 0
|
||||
#ifdef PAUSE_PARK_Y_POS
|
||||
+ PAUSE_PARK_Y_POS
|
||||
#endif
|
||||
;
|
||||
|
||||
#if HOTENDS > 1 && DISABLED(DUAL_X_CARRIAGE)
|
||||
if (active_extruder > 0) {
|
||||
if (!parser.seen('X')) destination[X_AXIS] += hotend_offset[X_AXIS][active_extruder];
|
||||
if (!parser.seen('Y')) destination[Y_AXIS] += hotend_offset[Y_AXIS][active_extruder];
|
||||
if (!parser.seen('X')) x_pos += hotend_offset[X_AXIS][active_extruder];
|
||||
if (!parser.seen('Y')) y_pos += hotend_offset[Y_AXIS][active_extruder];
|
||||
}
|
||||
#endif
|
||||
|
||||
clamp_to_software_endstops(destination);
|
||||
RUNPLAN(FILAMENT_CHANGE_XY_FEEDRATE);
|
||||
set_current_to_destination();
|
||||
stepper.synchronize();
|
||||
disable_e_steppers();
|
||||
const bool job_running = print_job_timer.isRunning();
|
||||
|
||||
#if DISABLED(SDSUPPORT)
|
||||
// Wait for lcd click or M108
|
||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||
wait_for_user = true;
|
||||
while (wait_for_user) idle();
|
||||
KEEPALIVE_STATE(IN_HANDLER);
|
||||
if (pause_print(retract, z_lift, x_pos, y_pos)) {
|
||||
#if DISABLED(SDSUPPORT)
|
||||
// Wait for lcd click or M108
|
||||
wait_for_filament_reload();
|
||||
|
||||
// Return to print position and continue
|
||||
move_back_on_resume();
|
||||
if (job_running) print_job_timer.start();
|
||||
move_away_flag = false;
|
||||
#endif
|
||||
// Return to print position and continue
|
||||
resume_print();
|
||||
|
||||
if (job_running) print_job_timer.start();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#endif // PARK_HEAD_ON_PAUSE
|
||||
@ -8812,25 +9022,7 @@ inline void gcode_M503() {
|
||||
|
||||
#endif // HAS_BED_PROBE
|
||||
|
||||
#if ENABLED(FILAMENT_CHANGE_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;
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
|
||||
/**
|
||||
* M600: Pause for filament change
|
||||
@ -8839,231 +9031,77 @@ inline void gcode_M503() {
|
||||
* Z[distance] - Move the Z axis by this distance
|
||||
* X[position] - Move to this X position, with Y
|
||||
* Y[position] - Move to this Y position, with X
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
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
|
||||
destination[E_AXIS] += parser.seen('E') ? parser.value_axis_units(E_AXIS) : 0
|
||||
#if defined(FILAMENT_CHANGE_RETRACT_LENGTH) && FILAMENT_CHANGE_RETRACT_LENGTH > 0
|
||||
- (FILAMENT_CHANGE_RETRACT_LENGTH)
|
||||
const float retract = parser.seen('E') ? parser.value_axis_units(E_AXIS) : 0
|
||||
#if defined(PAUSE_PARK_RETRACT_LENGTH) && PAUSE_PARK_RETRACT_LENGTH > 0
|
||||
- (PAUSE_PARK_RETRACT_LENGTH)
|
||||
#endif
|
||||
;
|
||||
|
||||
RUNPLAN(FILAMENT_CHANGE_RETRACT_FEEDRATE);
|
||||
|
||||
// Lift Z axis
|
||||
float z_lift = parser.seen('Z') ? parser.value_linear_units() :
|
||||
#if defined(FILAMENT_CHANGE_Z_ADD) && FILAMENT_CHANGE_Z_ADD > 0
|
||||
FILAMENT_CHANGE_Z_ADD
|
||||
const float z_lift = parser.seen('Z') ? parser.value_linear_units() :
|
||||
#if defined(PAUSE_PARK_Z_ADD) && PAUSE_PARK_Z_ADD > 0
|
||||
PAUSE_PARK_Z_ADD
|
||||
#else
|
||||
0
|
||||
#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
|
||||
if (parser.seen('X')) destination[X_AXIS] = parser.value_linear_units();
|
||||
#ifdef FILAMENT_CHANGE_X_POS
|
||||
else destination[X_AXIS] = FILAMENT_CHANGE_X_POS;
|
||||
#endif
|
||||
|
||||
if (parser.seen('Y')) destination[Y_AXIS] = parser.value_linear_units();
|
||||
#ifdef FILAMENT_CHANGE_Y_POS
|
||||
else destination[Y_AXIS] = FILAMENT_CHANGE_Y_POS;
|
||||
#endif
|
||||
|
||||
RUNPLAN(FILAMENT_CHANGE_XY_FEEDRATE);
|
||||
|
||||
stepper.synchronize();
|
||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_UNLOAD);
|
||||
idle();
|
||||
const float x_pos = parser.seen('X') ? parser.value_linear_units() : 0
|
||||
#ifdef PAUSE_PARK_X_POS
|
||||
+ PAUSE_PARK_X_POS
|
||||
#endif
|
||||
;
|
||||
const float y_pos = parser.seen('Y') ? parser.value_linear_units() : 0
|
||||
#ifdef PAUSE_PARK_Y_POS
|
||||
+ PAUSE_PARK_Y_POS
|
||||
#endif
|
||||
;
|
||||
|
||||
// Unload filament
|
||||
destination[E_AXIS] += parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0
|
||||
#if FILAMENT_CHANGE_UNLOAD_LENGTH > 0
|
||||
const float unload_length = parser.seen('U') ? parser.value_axis_units(E_AXIS) : 0
|
||||
#if defined(FILAMENT_CHANGE_UNLOAD_LENGTH) && FILAMENT_CHANGE_UNLOAD_LENGTH > 0
|
||||
- (FILAMENT_CHANGE_UNLOAD_LENGTH)
|
||||
#endif
|
||||
;
|
||||
|
||||
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
|
||||
destination[E_AXIS] += parser.seen('L') ? -parser.value_axis_units(E_AXIS) : 0
|
||||
#if FILAMENT_CHANGE_LOAD_LENGTH > 0
|
||||
const float load_length = parser.seen('L') ? parser.value_axis_units(E_AXIS) : 0
|
||||
#ifdef FILAMENT_CHANGE_LOAD_LENGTH
|
||||
+ FILAMENT_CHANGE_LOAD_LENGTH
|
||||
#endif
|
||||
;
|
||||
|
||||
RUNPLAN(FILAMENT_CHANGE_LOAD_FEEDRATE);
|
||||
stepper.synchronize();
|
||||
const int beep_count = parser.seen('B') ? parser.value_int() :
|
||||
#ifdef FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS
|
||||
FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS
|
||||
#else
|
||||
-1
|
||||
#endif
|
||||
;
|
||||
|
||||
#if defined(FILAMENT_CHANGE_EXTRUDE_LENGTH) && FILAMENT_CHANGE_EXTRUDE_LENGTH > 0
|
||||
const bool job_running = print_job_timer.isRunning();
|
||||
|
||||
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
|
||||
// Move XY to starting position, then Z
|
||||
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
|
||||
stepper.synchronize();
|
||||
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
filament_ran_out = false;
|
||||
#endif
|
||||
|
||||
// Show status screen
|
||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_STATUS);
|
||||
if (pause_print(retract, z_lift, x_pos, y_pos, unload_length, beep_count, true)) {
|
||||
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
|
||||
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)
|
||||
|
||||
@ -10569,11 +10607,11 @@ void process_next_command() {
|
||||
break;
|
||||
#endif // HAS_BED_PROBE
|
||||
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
case 600: // M600: Pause for filament change
|
||||
gcode_M600();
|
||||
break;
|
||||
#endif // FILAMENT_CHANGE_FEATURE
|
||||
#endif // ADVANCED_PAUSE_FEATURE
|
||||
|
||||
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_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
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE) && ENABLED(FILAMENT_CHANGE_NO_STEPPER_TIMEOUT)
|
||||
#define M600_TEST !busy_doing_M600
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE) && ENABLED(PAUSE_PARK_NO_STEPPER_TIMEOUT)
|
||||
#define MOVE_AWAY_TEST !move_away_flag
|
||||
#else
|
||||
#define M600_TEST true
|
||||
#define MOVE_AWAY_TEST true
|
||||
#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()) {
|
||||
#if ENABLED(DISABLE_INACTIVE_X)
|
||||
disable_X();
|
||||
@ -12216,7 +12254,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) {
|
||||
* Standard idle routine keeps the machine alive
|
||||
*/
|
||||
void idle(
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
bool no_stepper_sleep/*=false*/
|
||||
#endif
|
||||
) {
|
||||
@ -12229,7 +12267,7 @@ void idle(
|
||||
#endif
|
||||
|
||||
manage_inactivity(
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
no_stepper_sleep
|
||||
#endif
|
||||
);
|
||||
|
@ -99,7 +99,31 @@
|
||||
#elif defined(SERVO_DEACTIVATION_DELAY)
|
||||
#error "SERVO_DEACTIVATION_DELAY is deprecated. Use SERVO_DELAY instead."
|
||||
#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)
|
||||
#error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND. Please update your configuration."
|
||||
#elif defined(PLA_PREHEAT_HPB_TEMP)
|
||||
@ -286,19 +310,19 @@
|
||||
#error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN."
|
||||
#elif DISABLED(SDSUPPORT) && DISABLED(PRINTJOB_TIMER_AUTOSTART)
|
||||
#error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART."
|
||||
#elif DISABLED(FILAMENT_CHANGE_FEATURE)
|
||||
static_assert(NULL == strstr(FILAMENT_RUNOUT_SCRIPT, "M600"), "FILAMENT_CHANGE_FEATURE is required to use M600 with FILAMENT_RUNOUT_SENSOR.");
|
||||
#elif DISABLED(ADVANCED_PAUSE_FEATURE)
|
||||
static_assert(NULL == strstr(FILAMENT_RUNOUT_SCRIPT, "M600"), "ADVANCED_PAUSE_FEATURE is required to use M600 with FILAMENT_RUNOUT_SENSOR.");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change with Extruder Runout Prevention
|
||||
* Advanced Pause
|
||||
*/
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#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)
|
||||
#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)
|
||||
#error "PARK_HEAD_ON_PAUSE requires SDSUPPORT, EMERGENCY_PARSER, or an LCD controller."
|
||||
#endif
|
||||
@ -545,6 +569,13 @@ static_assert(1 >= 0
|
||||
#error "Probes need Z_CLEARANCE_BETWEEN_PROBES >= 0."
|
||||
#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
|
||||
|
||||
/**
|
||||
|
@ -108,25 +108,25 @@ enum EndstopEnum {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
enum FilamentChangeMenuResponse {
|
||||
FILAMENT_CHANGE_RESPONSE_WAIT_FOR,
|
||||
FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE,
|
||||
FILAMENT_CHANGE_RESPONSE_RESUME_PRINT
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
enum AdvancedPauseMenuResponse {
|
||||
ADVANCED_PAUSE_RESPONSE_WAIT_FOR,
|
||||
ADVANCED_PAUSE_RESPONSE_EXTRUDE_MORE,
|
||||
ADVANCED_PAUSE_RESPONSE_RESUME_PRINT
|
||||
};
|
||||
|
||||
#if ENABLED(ULTIPANEL)
|
||||
enum FilamentChangeMessage {
|
||||
FILAMENT_CHANGE_MESSAGE_INIT,
|
||||
FILAMENT_CHANGE_MESSAGE_UNLOAD,
|
||||
FILAMENT_CHANGE_MESSAGE_INSERT,
|
||||
FILAMENT_CHANGE_MESSAGE_LOAD,
|
||||
FILAMENT_CHANGE_MESSAGE_EXTRUDE,
|
||||
FILAMENT_CHANGE_MESSAGE_OPTION,
|
||||
FILAMENT_CHANGE_MESSAGE_RESUME,
|
||||
FILAMENT_CHANGE_MESSAGE_STATUS,
|
||||
FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE,
|
||||
FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT
|
||||
enum AdvancedPauseMessage {
|
||||
ADVANCED_PAUSE_MESSAGE_INIT,
|
||||
ADVANCED_PAUSE_MESSAGE_UNLOAD,
|
||||
ADVANCED_PAUSE_MESSAGE_INSERT,
|
||||
ADVANCED_PAUSE_MESSAGE_LOAD,
|
||||
ADVANCED_PAUSE_MESSAGE_EXTRUDE,
|
||||
ADVANCED_PAUSE_MESSAGE_OPTION,
|
||||
ADVANCED_PAUSE_MESSAGE_RESUME,
|
||||
ADVANCED_PAUSE_MESSAGE_STATUS,
|
||||
ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE,
|
||||
ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 30 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 10 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 1 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 30 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 10 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 1 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
//#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -763,22 +763,25 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
|
||||
#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 10 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 10 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -789,16 +792,16 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#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
|
||||
|
||||
// @section tmc
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -740,22 +740,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -766,14 +767,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -769,22 +769,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS (X_MAX_POS-3) // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS (X_MAX_POS-3) // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -795,14 +796,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 100 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 100 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 20 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 5 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 100 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 100 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 20 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 5 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 600 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 100 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -759,22 +759,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -785,14 +786,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -761,22 +761,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -787,14 +788,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -760,22 +760,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -786,14 +787,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -758,22 +758,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -784,14 +785,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -758,22 +758,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -784,14 +785,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -763,22 +763,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -789,14 +790,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -758,22 +758,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -784,14 +785,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -763,22 +763,25 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
|
||||
#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 75 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 75 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -789,14 +792,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -756,22 +756,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -782,14 +783,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -759,22 +759,23 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Filament Change
|
||||
* Experimental filament change support.
|
||||
* Advanced Pause
|
||||
* Experimental feature for filament change support and for parking the nozzle when paused.
|
||||
* 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.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
//#define FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend
|
||||
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
|
||||
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_X_POS 3 // X position of hotend
|
||||
#define PAUSE_PARK_Y_POS 3 // Y position of hotend
|
||||
#define PAUSE_PARK_Z_ADD 10 // Z addition of hotend (lift)
|
||||
#define PAUSE_PARK_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
|
||||
#define PAUSE_PARK_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 2 // Initial retract in mm
|
||||
// It is a short retract used immediately after print interrupt before move to filament exchange position
|
||||
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast
|
||||
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
|
||||
@ -785,14 +786,14 @@
|
||||
#define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm
|
||||
// Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
|
||||
// Short or zero length for printers without bowden where loading is not used
|
||||
#define FILAMENT_CHANGE_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_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate
|
||||
#define ADVANCED_PAUSE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is loaded over the hotend,
|
||||
// 0 to disable for manual extrusion
|
||||
// Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
|
||||
// or until outcoming filament color is not clear for filament color change
|
||||
#define 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_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.
|
||||
//#define PARK_HEAD_ON_PAUSE // Go to filament change position on pause, return to print position on resume
|
||||
#endif
|
||||
|
@ -214,8 +214,8 @@
|
||||
#define MSG_DRIVE_STRENGTH _UxGT("Fuerza d'o driver")
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Escri. DAC EEPROM")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("Cambear filamento")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Opcion de cambio:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mas")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resumir imp.")
|
||||
|
||||
|
@ -216,8 +216,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CHANGE FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CHANGE OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude more")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resume print")
|
||||
|
||||
|
@ -218,8 +218,8 @@
|
||||
#define MSG_DRIVE_STRENGTH _UxGT("Força motor")
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CANVI DE FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("OPCIONS CANVI:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudeix mes")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Repren impressió")
|
||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Temp minima es ")
|
||||
|
@ -225,8 +225,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Motor %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Ulozit do EEPROM")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("VYMENA FILAMENTU")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CO DAL?")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Jeste vytlacit")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Obnovit tisk")
|
||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. teplota je ")
|
||||
|
@ -215,8 +215,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Driv %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Skriv")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("SKIFT FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Skift muligheder:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruder mere")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Forsæt print")
|
||||
|
||||
|
@ -227,8 +227,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Treiber %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Werte speichern")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ÄNDERE FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ÄNDERE OPTIONEN:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude mehr")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Drucke weiter")
|
||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. Temperatur ist ")
|
||||
|
@ -499,6 +499,9 @@
|
||||
#ifndef MSG_USERWAIT
|
||||
#define MSG_USERWAIT _UxGT("Click to resume...")
|
||||
#endif
|
||||
#ifndef MSG_PRINT_PAUSED
|
||||
#define MSG_PRINT_PAUSED _UxGT("Print paused")
|
||||
#endif
|
||||
#ifndef MSG_RESUMING
|
||||
#define MSG_RESUMING _UxGT("Resuming print")
|
||||
#endif
|
||||
@ -742,10 +745,10 @@
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
||||
#endif
|
||||
#ifndef MSG_FILAMENT_CHANGE_HEADER
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CHANGE FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#endif
|
||||
#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
|
||||
#ifndef MSG_FILAMENT_CHANGE_OPTION_EXTRUDE
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrude more")
|
||||
|
@ -221,8 +221,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Escribe DAC EEPROM")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("Cambiar Filamento")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Opciones de cambio:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mas")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Resumir imp.")
|
||||
|
||||
|
@ -229,8 +229,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM sauv.")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CHANGER FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CHANGER OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("+ extrusion")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Reprendre impr.")
|
||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("La temp. minimum est ")
|
||||
|
@ -212,8 +212,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Motor %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Garda DAC EEPROM")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("TROCO FILAMENTO")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("OPCIONS TROCO:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extruir mais")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Segue traballo")
|
||||
|
||||
|
@ -213,8 +213,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM Write")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CHANGE FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CHANGE OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudiraj više")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Nastavi print")
|
||||
|
||||
|
@ -238,8 +238,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Scrivi DAC EEPROM")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("CAMBIA FILAMENTO")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("CAMBIA OPZIONI:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Estrusione")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Riprendi stampa")
|
||||
#if ENABLED(DOGLCD)
|
||||
|
@ -285,8 +285,8 @@
|
||||
#define MSG_DAC_PERCENT "DAC\xbc\xad\xc2\xd8\xae\xb8" // "DACシュツリョク" ("Driver %")
|
||||
#endif
|
||||
#define MSG_DAC_EEPROM_WRITE MSG_STORE_EPROM // "メモリヘカクノウ" ("DAC EEPROM Write")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER "\xcc\xa8\xd7\xd2\xdd\xc4\xba\xb3\xb6\xdd" // "フィラメントコウカン" ("CHANGE FILAMENT")
|
||||
#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_HEADER "PRINT PAUSED"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER "RESUME OPTIONS:"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "\xbb\xd7\xc6\xb5\xbc\xc0\xde\xbd" // "サラニオシダス" ("Extrude more")
|
||||
#define MSG_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_DAC_PERCENT _UxGT("DACシュツリョク %") // "Driver %"
|
||||
#define MSG_DAC_EEPROM_WRITE MSG_STORE_EPROM // "DAC EEPROM Write"
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("フィラメントコウカン") // "CHANGE FILAMENT"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ドウサヲセンタクシテクダサイ") // "CHANGE OPTIONS:"
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("サラニオシダス") // "Extrude more"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("プリントサイカイ") // "Resume print"
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("コウカンヲカイシシマス") // "Wait for start"
|
||||
|
@ -224,8 +224,8 @@
|
||||
#define MSG_DRIVE_STRENGTH _UxGT("Motorstroom")
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %") //accepted English term in Dutch
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC Opslaan")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("WISSEL FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("WISSEL OPTIES:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Extrudeer meer")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Hervat print")
|
||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Minimum Temp is ")
|
||||
|
@ -433,8 +433,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("Sila %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Zapisz DAC EEPROM")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ZMIEN FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ZMIEN OPCJE:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Ekstruduj wiecej")
|
||||
#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_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("Filaman Değiştir") // Filaman Değiştir
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("Seçenekler:") // Seçenekler:
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Daha Akıt") // Daha Akıt
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Baskıyı sürdür") // Baskıyı sürdür
|
||||
|
@ -203,8 +203,8 @@
|
||||
#define MSG_DAC_PERCENT _UxGT("% мотору")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Запис ЦАП на ПЗП")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ЗАМІНА ВОЛОКНА")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("НАЛАШТ. ЗАМІНИ:")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Екструдувати")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Відновити друк")
|
||||
|
||||
|
@ -199,8 +199,8 @@
|
||||
#define MSG_INFO_MAX_TEMP _UxGT("最高温度") //"Max Temp"
|
||||
#define MSG_INFO_PSU _UxGT("电源供应") //"Power Supply"
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("修改丝料") //"CHANGE FILAMENT"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("修改选项:") //"CHANGE OPTIONS:"
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("挤出更多") //"Extrude more"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢复打印") //"Resume print"
|
||||
|
||||
|
@ -199,8 +199,8 @@
|
||||
#define MSG_INFO_MAX_TEMP _UxGT("最高溫度") //"Max Temp"
|
||||
#define MSG_INFO_PSU _UxGT("電源供應") //"Power Supply"
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("修改絲料") //"CHANGE FILAMENT"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("修改選項:") //"CHANGE OPTIONS:"
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("擠出更多") //"Extrude more"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢複列印") //"Resume print"
|
||||
|
||||
|
@ -202,9 +202,14 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS],
|
||||
|
||||
#if ENABLED(PROBING_HEATERS_OFF)
|
||||
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
|
||||
int16_t Temperature::paused_bed_temp;
|
||||
millis_t Temperature::bed_idle_timeout_ms = 0;
|
||||
bool Temperature::bed_idle_timeout_exceeded = false;
|
||||
#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];
|
||||
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];
|
||||
#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) {
|
||||
pid_output = BANG_MAX;
|
||||
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_reset[HOTEND_INDEX] = true;
|
||||
}
|
||||
@ -618,6 +634,11 @@ float Temperature::get_pid_output(int e) {
|
||||
#endif // PID_DEBUG
|
||||
|
||||
#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;
|
||||
#endif
|
||||
|
||||
@ -699,12 +720,17 @@ void Temperature::manage_heater() {
|
||||
if (current_temperature[0] < max(HEATER_0_MINTEMP, MAX6675_TMIN + .01)) min_temp_error(0);
|
||||
#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();
|
||||
#endif
|
||||
|
||||
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)
|
||||
// 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);
|
||||
@ -722,16 +748,6 @@ void Temperature::manage_heater() {
|
||||
}
|
||||
#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)
|
||||
// Make sure measured temperatures are close together
|
||||
if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF)
|
||||
@ -761,43 +777,71 @@ void Temperature::manage_heater() {
|
||||
}
|
||||
#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 (PENDING(ms, next_bed_check_ms)) return;
|
||||
next_bed_check_ms = ms + BED_CHECK_INTERVAL;
|
||||
#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
|
||||
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
|
||||
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
soft_pwm_amount_bed = WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP) ? (int)get_pid_output_bed() >> 1 : 0;
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
if (bed_idle_timeout_exceeded)
|
||||
{
|
||||
soft_pwm_amount_bed = 0;
|
||||
|
||||
#elif ENABLED(BED_LIMIT_SWITCHING)
|
||||
// Check if temperature is within the correct band
|
||||
if (WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP)) {
|
||||
if (current_temperature_bed >= target_temperature_bed + BED_HYSTERESIS)
|
||||
soft_pwm_amount_bed = 0;
|
||||
else if (current_temperature_bed <= target_temperature_bed - (BED_HYSTERESIS))
|
||||
soft_pwm_amount_bed = MAX_BED_POWER >> 1;
|
||||
}
|
||||
else {
|
||||
soft_pwm_amount_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#else // !PIDTEMPBED && !BED_LIMIT_SWITCHING
|
||||
// Check if temperature is within the correct range
|
||||
if (WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP)) {
|
||||
soft_pwm_amount_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0;
|
||||
}
|
||||
else {
|
||||
soft_pwm_amount_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
#if DISABLED(PIDTEMPBED)
|
||||
WRITE_HEATER_BED(LOW);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#endif // TEMP_SENSOR_BED != 0
|
||||
{
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
soft_pwm_amount_bed = WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP) ? (int)get_pid_output_bed() >> 1 : 0;
|
||||
|
||||
#elif ENABLED(BED_LIMIT_SWITCHING)
|
||||
// Check if temperature is within the correct band
|
||||
if (WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP)) {
|
||||
if (current_temperature_bed >= target_temperature_bed + BED_HYSTERESIS)
|
||||
soft_pwm_amount_bed = 0;
|
||||
else if (current_temperature_bed <= target_temperature_bed - (BED_HYSTERESIS))
|
||||
soft_pwm_amount_bed = MAX_BED_POWER >> 1;
|
||||
}
|
||||
else {
|
||||
soft_pwm_amount_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#else // !PIDTEMPBED && !BED_LIMIT_SWITCHING
|
||||
// Check if temperature is within the correct range
|
||||
if (WITHIN(current_temperature_bed, BED_MINTEMP, BED_MAXTEMP)) {
|
||||
soft_pwm_amount_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0;
|
||||
}
|
||||
else {
|
||||
soft_pwm_amount_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif // HAS_TEMP_BED
|
||||
}
|
||||
|
||||
#define PGM_RD_W(x) (short)pgm_read_word(&x)
|
||||
@ -1180,10 +1224,6 @@ void Temperature::init() {
|
||||
|
||||
#if ENABLED(PROBING_HEATERS_OFF)
|
||||
paused = false;
|
||||
ZERO(paused_hotend_temp);
|
||||
#if HAS_TEMP_BED
|
||||
paused_bed_temp = 0;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -1246,11 +1286,29 @@ void Temperature::init() {
|
||||
SERIAL_ECHOPAIR(" ; Timer:", *timer);
|
||||
SERIAL_ECHOPAIR(" ; Temperature:", current);
|
||||
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;
|
||||
*/
|
||||
|
||||
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 (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
|
||||
#if ENABLED(PROBING_HEATERS_OFF)
|
||||
paused = false;
|
||||
ZERO(paused_hotend_temp);
|
||||
#if HAS_TEMP_BED
|
||||
paused_bed_temp = 0;
|
||||
#endif
|
||||
pause(false);
|
||||
#endif
|
||||
|
||||
// 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) {
|
||||
paused = p;
|
||||
if (p) {
|
||||
HOTEND_LOOP() {
|
||||
paused_hotend_temp[e] = degTargetHotend(e);
|
||||
setTargetHotend(0, e);
|
||||
}
|
||||
HOTEND_LOOP() start_heater_idle_timer(e, 0); // timeout immediately
|
||||
#if HAS_TEMP_BED
|
||||
paused_bed_temp = degTargetBed();
|
||||
setTargetBed(0);
|
||||
start_bed_idle_timer(0); // timeout immediately
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
HOTEND_LOOP() setTargetHotend(paused_hotend_temp[e], e);
|
||||
HOTEND_LOOP() reset_heater_idle_timer(e);
|
||||
#if HAS_TEMP_BED
|
||||
setTargetBed(paused_bed_temp);
|
||||
reset_bed_idle_timer();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -257,10 +257,14 @@ class Temperature {
|
||||
|
||||
#if ENABLED(PROBING_HEATERS_OFF)
|
||||
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
|
||||
static int16_t paused_bed_temp;
|
||||
static millis_t bed_idle_timeout_ms;
|
||||
static bool bed_idle_timeout_exceeded;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -458,6 +462,54 @@ class Temperature {
|
||||
|
||||
#if ENABLED(PROBING_HEATERS_OFF)
|
||||
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
|
||||
|
||||
private:
|
||||
|
@ -126,16 +126,16 @@ uint16_t max_display_update_time = 0;
|
||||
void lcd_info_menu();
|
||||
#endif // LCD_INFO_MENU
|
||||
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
void lcd_filament_change_toocold_menu();
|
||||
void lcd_filament_change_option_menu();
|
||||
void lcd_filament_change_init_message();
|
||||
void lcd_filament_change_unload_message();
|
||||
void lcd_filament_change_insert_message();
|
||||
void lcd_filament_change_load_message();
|
||||
void lcd_filament_change_heat_nozzle();
|
||||
void lcd_filament_change_extrude_message();
|
||||
void lcd_filament_change_resume_message();
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
void lcd_advanced_pause_toocold_menu();
|
||||
void lcd_advanced_pause_option_menu();
|
||||
void lcd_advanced_pause_init_message();
|
||||
void lcd_advanced_pause_unload_message();
|
||||
void lcd_advanced_pause_insert_message();
|
||||
void lcd_advanced_pause_load_message();
|
||||
void lcd_advanced_pause_heat_nozzle();
|
||||
void lcd_advanced_pause_extrude_message();
|
||||
void lcd_advanced_pause_resume_message();
|
||||
#endif
|
||||
|
||||
#if ENABLED(DAC_STEPPER_CURRENT)
|
||||
@ -676,6 +676,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
#if ENABLED(PARK_HEAD_ON_PAUSE)
|
||||
enqueue_and_echo_commands_P(PSTR("M125"));
|
||||
#endif
|
||||
lcd_setstatuspgm(PSTR(MSG_PRINT_PAUSED), true);
|
||||
}
|
||||
|
||||
void lcd_sdcard_resume() {
|
||||
@ -685,6 +686,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
card.startFileprint();
|
||||
print_job_timer.start();
|
||||
#endif
|
||||
lcd_setstatuspgm(PSTR(""), true);
|
||||
}
|
||||
|
||||
void lcd_sdcard_stop() {
|
||||
@ -1006,15 +1008,15 @@ void kill_screen(const char* lcd_msg) {
|
||||
void watch_temp_callback_bed() { thermalManager.start_watching_bed(); }
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
void lcd_enqueue_filament_change() {
|
||||
if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder)) {
|
||||
lcd_save_previous_screen();
|
||||
lcd_goto_screen(lcd_filament_change_toocold_menu);
|
||||
lcd_goto_screen(lcd_advanced_pause_toocold_menu);
|
||||
return;
|
||||
}
|
||||
lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INIT);
|
||||
enqueue_and_echo_commands_P(PSTR("M600"));
|
||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT);
|
||||
enqueue_and_echo_commands_P(PSTR("M600 B0"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1129,7 +1131,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
//
|
||||
// Change filament
|
||||
//
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
if (!thermalManager.tooColdToExtrude(active_extruder))
|
||||
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
|
||||
#endif
|
||||
@ -2043,7 +2045,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
//
|
||||
// Change filament
|
||||
//
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
if (!thermalManager.tooColdToExtrude(active_extruder))
|
||||
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
|
||||
#endif
|
||||
@ -3183,7 +3185,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
* Filament Change Feature Screens
|
||||
*
|
||||
*/
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
|
||||
// Portions from STATIC_ITEM...
|
||||
#define HOTEND_STATUS_ITEM() do { \
|
||||
@ -3201,7 +3203,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
++_thisItemNr; \
|
||||
} while(0)
|
||||
|
||||
void lcd_filament_change_toocold_menu() {
|
||||
void lcd_advanced_pause_toocold_menu() {
|
||||
START_MENU();
|
||||
STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true);
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false);
|
||||
@ -3213,25 +3215,25 @@ void kill_screen(const char* lcd_msg) {
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
void lcd_filament_change_resume_print() {
|
||||
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_RESUME_PRINT;
|
||||
void lcd_advanced_pause_resume_print() {
|
||||
advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_RESUME_PRINT;
|
||||
}
|
||||
|
||||
void lcd_filament_change_extrude_more() {
|
||||
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE;
|
||||
void lcd_advanced_pause_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();
|
||||
#if LCD_HEIGHT > 2
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER, true, false);
|
||||
#endif
|
||||
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_filament_change_resume_print);
|
||||
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_EXTRUDE, lcd_filament_change_extrude_more);
|
||||
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_advanced_pause_resume_print);
|
||||
MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_EXTRUDE, lcd_advanced_pause_extrude_more);
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
void lcd_filament_change_init_message() {
|
||||
void lcd_advanced_pause_init_message() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1);
|
||||
@ -3254,7 +3256,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
END_SCREEN();
|
||||
}
|
||||
|
||||
void lcd_filament_change_unload_message() {
|
||||
void lcd_advanced_pause_unload_message() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1);
|
||||
@ -3277,7 +3279,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
END_SCREEN();
|
||||
}
|
||||
|
||||
void lcd_filament_change_wait_for_nozzles_to_heat() {
|
||||
void lcd_advanced_pause_wait_for_nozzles_to_heat() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1);
|
||||
@ -3294,7 +3296,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
END_SCREEN();
|
||||
}
|
||||
|
||||
void lcd_filament_change_heat_nozzle() {
|
||||
void lcd_advanced_pause_heat_nozzle() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1);
|
||||
@ -3311,7 +3313,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
END_SCREEN();
|
||||
}
|
||||
|
||||
void lcd_filament_change_insert_message() {
|
||||
void lcd_advanced_pause_insert_message() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1);
|
||||
@ -3334,7 +3336,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
END_SCREEN();
|
||||
}
|
||||
|
||||
void lcd_filament_change_load_message() {
|
||||
void lcd_advanced_pause_load_message() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1);
|
||||
@ -3357,7 +3359,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
END_SCREEN();
|
||||
}
|
||||
|
||||
void lcd_filament_change_extrude_message() {
|
||||
void lcd_advanced_pause_extrude_message() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_1);
|
||||
@ -3380,7 +3382,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
END_SCREEN();
|
||||
}
|
||||
|
||||
void lcd_filament_change_resume_message() {
|
||||
void lcd_advanced_pause_resume_message() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_1);
|
||||
@ -3393,44 +3395,52 @@ void kill_screen(const char* lcd_msg) {
|
||||
END_SCREEN();
|
||||
}
|
||||
|
||||
void lcd_filament_change_show_message(const FilamentChangeMessage message) {
|
||||
void lcd_advanced_pause_show_message(const AdvancedPauseMessage message) {
|
||||
switch (message) {
|
||||
case FILAMENT_CHANGE_MESSAGE_INIT:
|
||||
case ADVANCED_PAUSE_MESSAGE_INIT:
|
||||
defer_return_to_status = true;
|
||||
lcd_goto_screen(lcd_filament_change_init_message);
|
||||
lcd_goto_screen(lcd_advanced_pause_init_message);
|
||||
break;
|
||||
case FILAMENT_CHANGE_MESSAGE_UNLOAD:
|
||||
lcd_goto_screen(lcd_filament_change_unload_message);
|
||||
case ADVANCED_PAUSE_MESSAGE_UNLOAD:
|
||||
defer_return_to_status = true;
|
||||
lcd_goto_screen(lcd_advanced_pause_unload_message);
|
||||
break;
|
||||
case FILAMENT_CHANGE_MESSAGE_INSERT:
|
||||
lcd_goto_screen(lcd_filament_change_insert_message);
|
||||
case ADVANCED_PAUSE_MESSAGE_INSERT:
|
||||
defer_return_to_status = true;
|
||||
lcd_goto_screen(lcd_advanced_pause_insert_message);
|
||||
break;
|
||||
case FILAMENT_CHANGE_MESSAGE_LOAD:
|
||||
lcd_goto_screen(lcd_filament_change_load_message);
|
||||
case ADVANCED_PAUSE_MESSAGE_LOAD:
|
||||
defer_return_to_status = true;
|
||||
lcd_goto_screen(lcd_advanced_pause_load_message);
|
||||
break;
|
||||
case FILAMENT_CHANGE_MESSAGE_EXTRUDE:
|
||||
lcd_goto_screen(lcd_filament_change_extrude_message);
|
||||
case ADVANCED_PAUSE_MESSAGE_EXTRUDE:
|
||||
defer_return_to_status = true;
|
||||
lcd_goto_screen(lcd_advanced_pause_extrude_message);
|
||||
break;
|
||||
case FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE:
|
||||
lcd_goto_screen(lcd_filament_change_heat_nozzle);
|
||||
case ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE:
|
||||
defer_return_to_status = true;
|
||||
lcd_goto_screen(lcd_advanced_pause_heat_nozzle);
|
||||
break;
|
||||
case FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT:
|
||||
lcd_goto_screen(lcd_filament_change_wait_for_nozzles_to_heat);
|
||||
case ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT:
|
||||
defer_return_to_status = true;
|
||||
lcd_goto_screen(lcd_advanced_pause_wait_for_nozzles_to_heat);
|
||||
break;
|
||||
case FILAMENT_CHANGE_MESSAGE_OPTION:
|
||||
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_WAIT_FOR;
|
||||
lcd_goto_screen(lcd_filament_change_option_menu);
|
||||
case ADVANCED_PAUSE_MESSAGE_OPTION:
|
||||
defer_return_to_status = true;
|
||||
advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
||||
lcd_goto_screen(lcd_advanced_pause_option_menu);
|
||||
break;
|
||||
case FILAMENT_CHANGE_MESSAGE_RESUME:
|
||||
lcd_goto_screen(lcd_filament_change_resume_message);
|
||||
case ADVANCED_PAUSE_MESSAGE_RESUME:
|
||||
defer_return_to_status = true;
|
||||
lcd_goto_screen(lcd_advanced_pause_resume_message);
|
||||
break;
|
||||
case FILAMENT_CHANGE_MESSAGE_STATUS:
|
||||
case ADVANCED_PAUSE_MESSAGE_STATUS:
|
||||
lcd_return_to_status();
|
||||
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_completion_feedback(const bool good=true);
|
||||
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
void lcd_filament_change_show_message(const FilamentChangeMessage message);
|
||||
#endif // FILAMENT_CHANGE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
void lcd_advanced_pause_show_message(const AdvancedPauseMessage message);
|
||||
#endif // ADVANCED_PAUSE_FEATURE
|
||||
|
||||
#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 " "));
|
||||
}
|
||||
|
||||
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
|
||||
bool isBed = heater < 0;
|
||||
#else
|
||||
const bool isBed = false;
|
||||
#endif
|
||||
|
||||
if (PAGE_UNDER(7))
|
||||
_draw_centered_temp((isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater)) + 0.5, x, 7);
|
||||
if (PAGE_UNDER(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))
|
||||
_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)) {
|
||||
// Extruders
|
||||
HOTEND_LOOP() _draw_heater_status(5 + e * 25, e);
|
||||
HOTEND_LOOP() _draw_heater_status(5 + e * 25, e, blink);
|
||||
|
||||
// Heated bed
|
||||
#if HOTENDS < 4 && HAS_TEMP_BED
|
||||
_draw_heater_status(81, -1);
|
||||
_draw_heater_status(81, -1, blink);
|
||||
#endif
|
||||
|
||||
#if HAS_FAN0
|
||||
@ -662,7 +673,7 @@ static void lcd_implementation_status_screen() {
|
||||
uint8_t row_y1, row_y2;
|
||||
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) {
|
||||
row_y1 = row * row_height + 1;
|
||||
@ -679,7 +690,7 @@ static void lcd_implementation_status_screen() {
|
||||
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
|
||||
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)
|
||||
|
||||
inline void lcd_draw_progress_bar(const uint8_t percent) {
|
||||
@ -616,17 +651,7 @@ Possible status screens:
|
||||
|01234567890123456789|
|
||||
*/
|
||||
static void lcd_implementation_status_screen() {
|
||||
|
||||
#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(' ')
|
||||
bool blink = lcd_blink();
|
||||
|
||||
//
|
||||
// Line 1
|
||||
@ -639,7 +664,7 @@ static void lcd_implementation_status_screen() {
|
||||
//
|
||||
// Hotend 0 Temperature
|
||||
//
|
||||
LCD_TEMP_ONLY(thermalManager.degHotend(0), thermalManager.degTargetHotend(0));
|
||||
_draw_heater_status(0, -1, blink);
|
||||
|
||||
//
|
||||
// Hotend 1 or Bed Temperature
|
||||
@ -649,10 +674,10 @@ static void lcd_implementation_status_screen() {
|
||||
lcd.setCursor(8, 0);
|
||||
#if HOTENDS > 1
|
||||
lcd.print(LCD_STR_THERMOMETER[0]);
|
||||
LCD_TEMP_ONLY(thermalManager.degHotend(1), thermalManager.degTargetHotend(1));
|
||||
_draw_heater_status(1, -1, blink);
|
||||
#else
|
||||
lcd.print(LCD_STR_BEDTEMP[0]);
|
||||
LCD_TEMP_ONLY(thermalManager.degBed(), thermalManager.degTargetBed());
|
||||
_draw_heater_status(-1, -1, blink);
|
||||
#endif
|
||||
|
||||
#endif // HOTENDS > 1 || TEMP_SENSOR_BED != 0
|
||||
@ -662,7 +687,7 @@ static void lcd_implementation_status_screen() {
|
||||
//
|
||||
// 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
|
||||
@ -670,9 +695,9 @@ static void lcd_implementation_status_screen() {
|
||||
#if HOTENDS > 1 || TEMP_SENSOR_BED != 0
|
||||
lcd.setCursor(10, 0);
|
||||
#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
|
||||
LCD_TEMP(thermalManager.degBed(), thermalManager.degTargetBed(), LCD_STR_BEDTEMP[0]);
|
||||
_draw_heater_status(-1, LCD_STR_BEDTEMP[0], blink);
|
||||
#endif
|
||||
|
||||
#endif // HOTENDS > 1 || TEMP_SENSOR_BED != 0
|
||||
@ -685,8 +710,6 @@ static void lcd_implementation_status_screen() {
|
||||
|
||||
#if LCD_HEIGHT > 2
|
||||
|
||||
bool blink = lcd_blink();
|
||||
|
||||
#if LCD_WIDTH < 20
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
@ -708,7 +731,7 @@ static void lcd_implementation_status_screen() {
|
||||
// If we both have a 2nd extruder and a heated bed,
|
||||
// show the heated bed temp on the left,
|
||||
// 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
|
||||
// Before homing the axis letters are blinking 'X' <-> '?'.
|
||||
@ -803,7 +826,7 @@ static void lcd_implementation_status_screen() {
|
||||
|
||||
#if ENABLED(ULTIPANEL)
|
||||
|
||||
#if ENABLED(FILAMENT_CHANGE_FEATURE)
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
|
||||
static void lcd_implementation_hotend_status(const uint8_t row) {
|
||||
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) {
|
||||
UNUSED(invert);
|
||||
|
Loading…
Reference in New Issue
Block a user