From 8a453e65f8fd6a4cd5a672be31c1e1a12765ff59 Mon Sep 17 00:00:00 2001 From: PavelSindler <sindlerpa@gmail.com> Date: Wed, 29 Aug 2018 13:16:17 +0200 Subject: [PATCH] eject filament allowed only when nozzle is hot (there can be filament loaded in printer nozzle) --- Firmware/mmu.cpp | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 12319d97..a23a402a 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -954,13 +954,37 @@ void mmu_eject_filament(uint8_t filament, bool recover) { if (filament < 5) { - mmu_command(MMU_CMD_E0 + filament); - manage_response(false, false); - if (recover) + + if (degHotend0() > EXTRUDE_MINTEMP) { - lcd_show_fullscreen_message_and_wait_P(_i("Please remove filament and then press the knob.")); - mmu_command(MMU_CMD_R0); + st_synchronize(); + lcd_update_enable(false); + lcd_clear(); + lcd_set_cursor(0, 1); lcd_puts_P(_i("Ejecting filament")); + current_position[E_AXIS] -= 80; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder); + st_synchronize(); + + lcd_update_enable(true); + + mmu_command(MMU_CMD_E0 + filament); manage_response(false, false); + if (recover) + { + lcd_show_fullscreen_message_and_wait_P(_i("Please remove filament and then press the knob.")); + mmu_command(MMU_CMD_R0); + manage_response(false, false); + } + } + else + { + lcd_clear(); + lcd_set_cursor(0, 0); + lcd_puts_P(_T(MSG_ERROR)); + lcd_set_cursor(0, 2); + lcd_puts_P(_T(MSG_PREHEAT_NOZZLE)); + delay(2000); + lcd_clear(); } } else