@@ -972,15 +972,18 @@ void lcd_commands()
972
972
{
973
973
if (!blocks_queued () && cmd_buffer_empty () && !saved_printing)
974
974
{
975
+ #ifndef QUICK_NOZZLE_CHANGE // thermal model can be ignored if a quickchange nozzle is in use, no heatup necessary
975
976
#ifdef THERMAL_MODEL
976
977
static bool was_enabled;
977
978
#endif // THERMAL_MODEL
979
+ #endif // QUICK_NOZZLE_CHANGE
978
980
switch (lcd_commands_step)
979
981
{
980
982
case 0 :
981
983
lcd_commands_step = 3 ;
982
984
break ;
983
985
case 3 :
986
+ #ifndef QUICK_NOZZLE_CHANGE
984
987
lcd_update_enabled = false ; // hack to avoid lcd_update recursion.
985
988
lcd_show_fullscreen_message_and_wait_P (_T (MSG_NOZZLE_CNG_READ_HELP));
986
989
lcd_update_enabled = true ;
@@ -992,30 +995,47 @@ void lcd_commands()
992
995
was_enabled = thermal_model_enabled ();
993
996
thermal_model_set_enabled (false );
994
997
#endif // THERMAL_MODEL
998
+ #else // nozzle change without heating
999
+ while ((int )degHotend (active_extruder)>40 ) { // check temp
1000
+ fanSpeed = 255 ; // turn on fan
1001
+ disable_heater ();
1002
+ uint8_t choice = lcd_show_multiscreen_message_yes_no_and_wait_P (_T (MSG_NOZZLE_CNG_COOLDOWN), true , LCD_LEFT_BUTTON_CHOICE);
1003
+ lcd_update_enabled = false ; // hack to avoid lcd_update recursion.
1004
+ if (choice == LCD_MIDDLE_BUTTON_CHOICE) {
1005
+ lcd_update_enabled = true ;
1006
+ lcd_draw_update = 2 ; // force lcd clear and update after the stack unwinds.
1007
+ break ;
1008
+ }
1009
+ lcd_update_enabled = true ;
1010
+ lcd_draw_update = 2 ; // force lcd clear and update after the stack unwinds.
1011
+ }
1012
+ enquecommand_P (G28W); // home
1013
+ enquecommand_P (PSTR (" G1 X125 Z200 F1000" )); // move to top center
1014
+ #endif // QUICK_NOZZLE_CHANGE
995
1015
lcd_commands_step = 2 ;
996
1016
break ;
997
1017
case 2 :
998
- // |0123456789012456789|
999
- // |Hotend at 280C!
1000
- // |Nozzle changed and
1001
- // |tightend to specs?
1002
- // | Yes No
1003
1018
enquecommand_P (PSTR (" M84 XY" ));
1004
1019
lcd_update_enabled = false ; // hack to avoid lcd_update recursion.
1005
1020
if (lcd_show_multiscreen_message_yes_no_and_wait_P (_T (MSG_NOZZLE_CNG_CHANGED), false ) == LCD_LEFT_BUTTON_CHOICE) {
1021
+ #ifndef QUICK_NOZZLE_CHANGE
1006
1022
setTargetHotend (0 );
1007
1023
#ifdef THERMAL_MODEL
1008
1024
thermal_model_set_enabled (was_enabled);
1009
1025
#endif // THERMAL_MODEL
1026
+ #else
1027
+ fanSpeed = 0 ; // turn off fan
1028
+ #endif // QUICK_NOZZLE_CHANGE
1010
1029
lcd_commands_step = 1 ;
1011
1030
}
1012
1031
lcd_update_enabled = true ;
1013
1032
break ;
1014
1033
case 1 :
1015
- lcd_setstatuspgm (MSG_WELCOME);
1016
1034
lcd_commands_step = 0 ;
1017
1035
lcd_commands_type = LcdCommands::Idle;
1018
1036
SetPrinterState (PrinterState::Idle);
1037
+ menu_goto (lcd_hw_setup_menu, 2 , true );
1038
+ menu_depth = 3 ;
1019
1039
break ;
1020
1040
}
1021
1041
}
0 commit comments