Implement filament change continuous purge
This commit is contained in:
parent
d133ad61f3
commit
2fa0a73c2c
5 changed files with 78 additions and 38 deletions
|
@ -116,7 +116,7 @@ script:
|
|||
# ULTIMAKERCONTROLLER, FILAMENT_LCD_DISPLAY, FILAMENT_WIDTH_SENSOR,
|
||||
# PRINTCOUNTER, NOZZLE_PARK_FEATURE, NOZZLE_CLEAN_FEATURE, PCA9632,
|
||||
# Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS, BEZIER_CURVE_SUPPORT, EXPERIMENTAL_I2CBUS,
|
||||
# ADVANCED_PAUSE_FEATURE, PARK_HEAD_ON_PAUSE, LCD_INFO_MENU,
|
||||
# ADVANCED_PAUSE_FEATURE, ADVANCED_PAUSE_CONTINUOUS_PURGE, PARK_HEAD_ON_PAUSE, LCD_INFO_MENU,
|
||||
# EEPROM_SETTINGS, EEPROM_CHITCHAT, M100_FREE_MEMORY_WATCHER,
|
||||
# INCH_MODE_SUPPORT, TEMPERATURE_UNITS_SUPPORT
|
||||
#
|
||||
|
@ -127,7 +127,7 @@ script:
|
|||
- opt_enable ULTIMAKERCONTROLLER SDSUPPORT
|
||||
- opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PCA9632 USE_XMAX_PLUG
|
||||
- opt_enable_adv BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS
|
||||
- opt_enable_adv ADVANCED_PAUSE_FEATURE FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE LCD_INFO_MENU M114_DETAIL
|
||||
- opt_enable_adv ADVANCED_PAUSE_FEATURE ADVANCED_PAUSE_CONTINUOUS_PURGE FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE LCD_INFO_MENU M114_DETAIL
|
||||
- opt_set_adv PWM_MOTOR_CURRENT {1300,1300,1250}
|
||||
- opt_set_adv I2C_SLAVE_ADDRESS 63
|
||||
- build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
|
||||
|
|
|
@ -921,6 +921,7 @@
|
|||
#define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
|
||||
#define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
|
||||
#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
|
||||
//#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.
|
||||
|
||||
#define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
|
||||
#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
|
||||
|
|
|
@ -187,6 +187,20 @@ bool load_filament(const float &load_length/*=0*/, const float &purge_length/*=0
|
|||
// Load filament
|
||||
if (load_length) do_pause_e_move(load_length, FILAMENT_CHANGE_LOAD_FEEDRATE);
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||
|
||||
#if ENABLED(ULTIPANEL)
|
||||
if (show_lcd)
|
||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_CONTINUOUS_PURGE);
|
||||
#endif
|
||||
|
||||
wait_for_user = true;
|
||||
for (float purge_count = purge_length; purge_count > 0 && wait_for_user; --purge_count)
|
||||
do_pause_e_move(1, ADVANCED_PAUSE_EXTRUDE_FEEDRATE);
|
||||
wait_for_user = false;
|
||||
|
||||
#else
|
||||
|
||||
do {
|
||||
if (purge_length > 0) {
|
||||
// "Wait for filament purge"
|
||||
|
@ -219,6 +233,8 @@ bool load_filament(const float &load_length/*=0*/, const float &purge_length/*=0
|
|||
#endif
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -44,6 +44,9 @@ enum AdvancedPauseMessage : char {
|
|||
ADVANCED_PAUSE_MESSAGE_INSERT,
|
||||
ADVANCED_PAUSE_MESSAGE_LOAD,
|
||||
ADVANCED_PAUSE_MESSAGE_PURGE,
|
||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||
ADVANCED_PAUSE_MESSAGE_CONTINUOUS_PURGE,
|
||||
#endif
|
||||
ADVANCED_PAUSE_MESSAGE_OPTION,
|
||||
ADVANCED_PAUSE_MESSAGE_RESUME,
|
||||
ADVANCED_PAUSE_MESSAGE_STATUS,
|
||||
|
|
|
@ -218,14 +218,6 @@ uint16_t max_display_update_time = 0;
|
|||
#else
|
||||
void lcd_temp_menu_e0_filament_change();
|
||||
#endif
|
||||
void lcd_advanced_pause_option_menu();
|
||||
void lcd_advanced_pause_init_message();
|
||||
void lcd_advanced_pause_unload_message();
|
||||
void lcd_advanced_pause_insert_message();
|
||||
void lcd_advanced_pause_load_message();
|
||||
void lcd_advanced_pause_heat_nozzle();
|
||||
void lcd_advanced_pause_purge_message();
|
||||
void lcd_advanced_pause_resume_message();
|
||||
#endif
|
||||
|
||||
#if ENABLED(DAC_STEPPER_CURRENT)
|
||||
|
@ -4602,6 +4594,31 @@ void kill_screen(const char* lcd_msg) {
|
|||
END_SCREEN();
|
||||
}
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||
void lcd_advanced_pause_continuous_purge_menu() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_1);
|
||||
#ifdef MSG_FILAMENT_CHANGE_PURGE_2
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_2);
|
||||
#define __FC_LINES_G 3
|
||||
#else
|
||||
#define __FC_LINES_G 2
|
||||
#endif
|
||||
#ifdef MSG_FILAMENT_CHANGE_PURGE_3
|
||||
STATIC_ITEM(MSG_FILAMENT_CHANGE_PURGE_3);
|
||||
#define _FC_LINES_G (__FC_LINES_G + 1)
|
||||
#else
|
||||
#define _FC_LINES_G __FC_LINES_G
|
||||
#endif
|
||||
#if LCD_HEIGHT > _FC_LINES_G + 1
|
||||
STATIC_ITEM(" ");
|
||||
#endif
|
||||
HOTEND_STATUS_ITEM();
|
||||
STATIC_ITEM(MSG_USERWAIT);
|
||||
END_SCREEN();
|
||||
}
|
||||
#endif
|
||||
|
||||
void lcd_advanced_pause_resume_message() {
|
||||
START_SCREEN();
|
||||
STATIC_ITEM_P(advanced_pause_header(), true, true);
|
||||
|
@ -4627,6 +4644,9 @@ void kill_screen(const char* lcd_msg) {
|
|||
case ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT: return lcd_advanced_pause_wait_for_nozzles_to_heat;
|
||||
case ADVANCED_PAUSE_MESSAGE_OPTION: advanced_pause_menu_response = ADVANCED_PAUSE_RESPONSE_WAIT_FOR;
|
||||
return lcd_advanced_pause_option_menu;
|
||||
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
|
||||
case ADVANCED_PAUSE_MESSAGE_CONTINUOUS_PURGE: return lcd_advanced_pause_continuous_purge_menu;
|
||||
#endif
|
||||
case ADVANCED_PAUSE_MESSAGE_STATUS:
|
||||
default: break;
|
||||
}
|
||||
|
|
Reference in a new issue