diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 9a569e8c..11ef92b2 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5428,57 +5428,64 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp } WRITE(BEEPER, LOW); - KEEPALIVE_STATE(IN_HANDLER); - - custom_message = true; - lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); - - // Unload filament - if(code_seen('L')) - { - target[E_AXIS]+= code_value(); - } - else - { - #ifdef SNMM - - #else - #ifdef FILAMENTCHANGE_FINALRETRACT - target[E_AXIS] += FILAMENTCHANGE_FINALRETRACT; - #endif - #endif // SNMM - } + + lcd_change_fil_state = 0; + while (lcd_change_fil_state == 0) { + lcd_display_message_fullscreen_P(MSG_UNLOADING_FILAMENT); + KEEPALIVE_STATE(IN_HANDLER); + custom_message = true; + lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); + // Unload filament + if (code_seen('L')) + { + target[E_AXIS] += code_value(); + } + else + { #ifdef SNMM - target[E_AXIS] += 12; - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500, active_extruder); - target[E_AXIS] += 6; - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder); - target[E_AXIS] += (FIL_LOAD_LENGTH * -1); - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder); - st_synchronize(); - target[E_AXIS] += (FIL_COOLING); - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); - target[E_AXIS] += (FIL_COOLING*-1); - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); - target[E_AXIS] += (bowden_length[snmm_extruder] *-1); - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder); - st_synchronize(); #else -// plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder); - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500/60, active_extruder); +#ifdef FILAMENTCHANGE_FINALRETRACT + target[E_AXIS] += FILAMENTCHANGE_FINALRETRACT; +#endif #endif // SNMM - + } - //finish moves - st_synchronize(); - //disable extruder steppers so filament can be removed - disable_e0(); - disable_e1(); - disable_e2(); - delay(100); - +#ifdef SNMM + target[E_AXIS] += 12; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500, active_extruder); + target[E_AXIS] += 6; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder); + target[E_AXIS] += (FIL_LOAD_LENGTH * -1); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder); + st_synchronize(); + target[E_AXIS] += (FIL_COOLING); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); + target[E_AXIS] += (FIL_COOLING*-1); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); + target[E_AXIS] += (bowden_length[snmm_extruder] * -1); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder); + st_synchronize(); + +#else + // plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500 / 60, active_extruder); +#endif // SNMM + + + //finish moves + st_synchronize(); + //disable extruder steppers so filament can be removed + disable_e0(); + disable_e1(); + disable_e2(); + delay(100); + KEEPALIVE_STATE(PAUSED_FOR_USER); + lcd_change_fil_state = !lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_UNLOAD_SUCCESSFULL, false, false); + //lcd_return_to_status(); + lcd_update_enable(true); + } //Wait for user to insert filament lcd_wait_interact(); //load_filament_time = millis(); diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 0b6c14a9..ce2831aa 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -1953,6 +1953,13 @@ const char * const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_UNLOAD_FILAMENT_4_CZ }; +const char MSG_UNLOAD_SUCCESSFULL_EN[] PROGMEM = "Repeat unloading filament?"; +const char MSG_UNLOAD_SUCCESSFULL_CZ[] PROGMEM = "Opakovat vysunuti filamentu?"; +const char * const MSG_UNLOAD_SUCCESSFULL_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_UNLOAD_SUCCESSFULL_EN, + MSG_UNLOAD_SUCCESSFULL_CZ +}; + const char MSG_USB_PRINTING_EN[] PROGMEM = "USB printing "; const char MSG_USB_PRINTING_CZ[] PROGMEM = "Tisk z USB "; const char * const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM] PROGMEM = { diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 1726d9c7..f46f025e 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -652,6 +652,8 @@ extern const char* const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM]; #define MSG_UNLOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_3_LANG_TABLE) extern const char* const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM]; #define MSG_UNLOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_4_LANG_TABLE) +extern const char* const MSG_UNLOAD_SUCCESSFULL_LANG_TABLE[LANG_NUM]; +#define MSG_UNLOAD_SUCCESSFULL LANG_TABLE_SELECT(MSG_UNLOAD_SUCCESSFULL_LANG_TABLE) extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM]; #define MSG_USB_PRINTING LANG_TABLE_SELECT(MSG_USB_PRINTING_LANG_TABLE) extern const char* const MSG_USED_LANG_TABLE[LANG_NUM]; diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index 9789c49d..c4989d57 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -350,4 +350,5 @@ #define MSG_REMOVE_STEEL_SHEET "Odstrante tiskovy plat z heatbed prosim." #define MSG_PLACE_STEEL_SHEET "Umistete prosim tiskovy plat na heatbed" #define MSG_RECOVER_PRINT "Detekovan vypadek proudu.Obnovit tisk?" -#define MSG_PRESS_TO_UNLOAD "Pro vysunuti filamentu stisknete prosim tlacitko" \ No newline at end of file +#define MSG_PRESS_TO_UNLOAD "Pro vysunuti filamentu stisknete prosim tlacitko" +#define MSG_UNLOAD_SUCCESSFULL "Opakovat vysunuti filamentu?" \ No newline at end of file diff --git a/Firmware/language_en.h b/Firmware/language_en.h index ddd25afb..e596b35b 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -367,3 +367,4 @@ #define(length=17, lines=1) MSG_FANS_CHECK_ON "Fans check [on]" #define(length=17, lines=1) MSG_FANS_CHECK_OFF "Fans check [off]" #define(length=20, lines=4) MSG_PRESS_TO_UNLOAD "Please press the knob to unload filament" +#define(length=20, lines=2) MSG_UNLOAD_SUCCESSFULL "Repeat unloading filament?"