From 8afb83406eb33fb40fcd6f7abce0440c443a62a3 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Sun, 4 Nov 2018 23:08:23 +0100 Subject: [PATCH] Wizard for assembled printers (contains more steps now) --- Firmware/ultralcd.cpp | 103 ++++++++++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 39 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7dbf768d3..efae8bafb 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4368,18 +4368,58 @@ static void wait_preheat() plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder); delay_keep_alive(2000); lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING)); - while (abs(degHotend(0) - degTargetHotend(0)) > 3) { + lcd_set_custom_characters(); + while (abs(degHotend(0) - degTargetHotend(0)) > 3) { lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING)); lcd_set_cursor(0, 4); - lcd_print(LCD_STR_THERMOMETER[0]); - lcd_print(ftostr3(degHotend(0))); - lcd_print("/"); - lcd_print(degTargetHotend(0)); - lcd_print(LCD_STR_DEGREE); - lcd_set_custom_characters(); + //Print the hotend temperature (9 chars total) + lcdui_print_temp(LCD_STR_THERMOMETER[0], (int)(degHotend(0) + 0.5), (int)(degTargetHotend(0) + 0.5)); delay_keep_alive(1000); } + +} + +static void lcd_wizard_unload() +{ + if(mmu_enabled) + { + int8_t unload = lcd_show_multiscreen_message_two_choices_and_wait_P( + _i("Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube.") + ,false, true, _i("Unload"), _i("Eject")); + if (unload) + { + extr_unload_0(); + } + else + { + mmu_eject_fil_0(); + } + } + else + { + unload_filament(); + } +} + +static void lcd_wizard_load() +{ + if (mmu_enabled) + { + lcd_show_fullscreen_message_and_wait_P(_i("Please insert PLA filament to the first tube of MMU, then press the knob to load it."));////c=20 r=8 + } + else + { + lcd_show_fullscreen_message_and_wait_P(_i("Please insert PLA filament to the extruder, then press knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8 + } + lcd_update_enable(false); + lcd_clear(); + lcd_puts_at_P(0, 2, _T(MSG_LOADING_FILAMENT)); +#ifdef SNMM + change_extr(0); +#endif + loading_flag = true; + gcode_M701(); } //! @brief Printer first run wizard (Selftest and calibration) @@ -4456,11 +4496,25 @@ void lcd_wizard(WizState state) else end = true; break; case S::Z: //z calibration + lcd_show_fullscreen_message_and_wait_P(_i("Please remove shipping helpers first.")); + lcd_show_fullscreen_message_and_wait_P(_i("Now remove the test print from steel sheet.")); lcd_show_fullscreen_message_and_wait_P(_i("I will run z calibration now."));////MSG_WIZARD_Z_CAL c=20 r=8 wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false); if (!wizard_event) lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET)); wizard_event = gcode_M45(true, 0); - if (wizard_event) state = S::Finish; //shipped, no need to set first layer, go to final message directly + if (wizard_event) { + //current filament needs to be unloaded and then new filament should be loaded + //start to preheat nozzle for unloading remaining PLA filament + setTargetHotend(PLA_PREHEAT_HOTEND_TEMP, 0); + lcd_display_message_fullscreen_P(_i("Now I will preheat nozzle for PLA.")); + wait_preheat(); + //unload current filament + lcd_wizard_unload(); + //load filament + lcd_wizard_load(); + setTargetHotend(0, 0); //we are finished, cooldown nozzle + state = S::Finish; //shipped, no need to set first layer, go to final message directly + } else end = true; break; case S::IsFil: //is filament loaded? @@ -4495,40 +4549,11 @@ void lcd_wizard(WizState state) break; case S::Unload: wait_preheat(); - if(mmu_enabled) - { - int8_t unload = lcd_show_multiscreen_message_two_choices_and_wait_P( - _i("Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube.") - ,false, true, _i("Unload"), _i("Eject")); - if (unload) - { - extr_unload_0(); - } else - { - mmu_eject_fil_0(); - } - } else - { - unload_filament(); - } + lcd_wizard_unload(); state = S::LoadFil; break; case S::LoadFil: //load filament - if (mmu_enabled) - { - lcd_show_fullscreen_message_and_wait_P(_i("Please insert PLA filament to the first tube of MMU, then press the knob to load it."));////c=20 r=8 - } else - { - lcd_show_fullscreen_message_and_wait_P(_i("Please insert PLA filament to the extruder, then press knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8 - } - lcd_update_enable(false); - lcd_clear(); - lcd_puts_at_P(0, 2, _T(MSG_LOADING_FILAMENT)); -#ifdef SNMM - change_extr(0); -#endif - loading_flag = true; - gcode_M701(); + lcd_wizard_load(); state = S::Lay1Cal; break; case S::IsPla: