diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b8c6083c..9a569e8c 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -293,7 +293,7 @@ unsigned long pause_time = 0; unsigned long start_pause_print = millis(); unsigned long t_fan_rising_edge = millis(); -unsigned long load_filament_time; +//unsigned long load_filament_time; bool mesh_bed_leveling_flag = false; bool mesh_bed_run_from_menu = false; @@ -5386,6 +5386,50 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder); st_synchronize(); + KEEPALIVE_STATE(PAUSED_FOR_USER); + + uint8_t cnt = 0; + int counterBeep = 0; + lcd_display_message_fullscreen_P(MSG_PRESS_TO_UNLOAD); + while (!lcd_clicked()) { + + cnt++; + manage_heater(); + manage_inactivity(true); + + /*#ifdef SNMM + target[E_AXIS] += 0.002; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 500, active_extruder); + + #endif // SNMM*/ + + if (cnt == 0) + { +#if BEEPER > 0 + if (counterBeep == 500) { + counterBeep = 0; + } + SET_OUTPUT(BEEPER); + if (counterBeep == 0) { + WRITE(BEEPER, HIGH); + } + if (counterBeep == 20) { + WRITE(BEEPER, LOW); + } + counterBeep++; +#else +#if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS) + lcd_buzz(1000 / 6, 100); +#else + lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ); +#endif +#endif + } + + } + WRITE(BEEPER, LOW); + KEEPALIVE_STATE(IN_HANDLER); + custom_message = true; lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); @@ -5436,14 +5480,12 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp delay(100); //Wait for user to insert filament - uint8_t cnt=0; - int counterBeep = 0; lcd_wait_interact(); - load_filament_time = millis(); + //load_filament_time = millis(); KEEPALIVE_STATE(PAUSED_FOR_USER); while(!lcd_clicked()){ - cnt++; + manage_heater(); manage_inactivity(true); @@ -5453,31 +5495,8 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp #endif // SNMM*/ - if(cnt==0) - { - #if BEEPER > 0 - if (counterBeep== 500){ - counterBeep = 0; - } - SET_OUTPUT(BEEPER); - if (counterBeep== 0){ - WRITE(BEEPER,HIGH); - } - if (counterBeep== 20){ - WRITE(BEEPER,LOW); - } - counterBeep++; - #else - #if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS) - lcd_buzz(1000/6,100); - #else - lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS,LCD_FEEDBACK_FREQUENCY_HZ); - #endif - #endif - } - } - WRITE(BEEPER, LOW); + //WRITE(BEEPER, LOW); KEEPALIVE_STATE(IN_HANDLER); #ifdef SNMM diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 1fe4c36a..0b6c14a9 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -1281,6 +1281,13 @@ const char * const MSG_PRESS_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_PRESS_CZ }; +const char MSG_PRESS_TO_UNLOAD_EN[] PROGMEM = "Please press the knob to unload filament"; +const char MSG_PRESS_TO_UNLOAD_CZ[] PROGMEM = "Pro vysunuti filamentu stisknete prosim tlacitko"; +const char * const MSG_PRESS_TO_UNLOAD_LANG_TABLE[LANG_NUM] PROGMEM = { + MSG_PRESS_TO_UNLOAD_EN, + MSG_PRESS_TO_UNLOAD_CZ +}; + const char MSG_PRINTER_DISCONNECTED_EN[] PROGMEM = "Printer disconnected"; const char * const MSG_PRINTER_DISCONNECTED_LANG_TABLE[1] PROGMEM = { MSG_PRINTER_DISCONNECTED_EN diff --git a/Firmware/language_all.h b/Firmware/language_all.h index a4621c66..1726d9c7 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -436,6 +436,8 @@ extern const char* const MSG_PREPARE_FILAMENT_LANG_TABLE[LANG_NUM]; #define MSG_PREPARE_FILAMENT LANG_TABLE_SELECT(MSG_PREPARE_FILAMENT_LANG_TABLE) extern const char* const MSG_PRESS_LANG_TABLE[LANG_NUM]; #define MSG_PRESS LANG_TABLE_SELECT(MSG_PRESS_LANG_TABLE) +extern const char* const MSG_PRESS_TO_UNLOAD_LANG_TABLE[LANG_NUM]; +#define MSG_PRESS_TO_UNLOAD LANG_TABLE_SELECT(MSG_PRESS_TO_UNLOAD_LANG_TABLE) extern const char* const MSG_PRINTER_DISCONNECTED_LANG_TABLE[1]; #define MSG_PRINTER_DISCONNECTED LANG_TABLE_SELECT_EXPLICIT(MSG_PRINTER_DISCONNECTED_LANG_TABLE, 0) extern const char* const MSG_PRINT_ABORTED_LANG_TABLE[LANG_NUM]; diff --git a/Firmware/language_cz.h b/Firmware/language_cz.h index 1640382c..9789c49d 100644 --- a/Firmware/language_cz.h +++ b/Firmware/language_cz.h @@ -349,4 +349,5 @@ #define MSG_STEEL_SHEET_CHECK "Je tiskovy plat na heatbed?" #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?" \ No newline at end of file +#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 diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 511c7c6e..ddd25afb 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -366,3 +366,4 @@ #define(length=11, lines=1) MSG_INFO_FILAMENT_YDIFF "Fil. Ydiff:" #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"