Improve M600 with timeout, wait for heatup.

This commit is contained in:
Roxy-3D
2017-01-21 16:10:57 -07:00
committed by Scott Lahteine
parent 58b8e0cae7
commit 8bf0b496b9
11 changed files with 212 additions and 18 deletions

View File

@ -54,6 +54,7 @@ char lcd_status_message[3 * (LCD_WIDTH) + 1] = WELCOME_MSG; // worst case is kan
#if ENABLED(DOGLCD)
#include "ultralcd_impl_DOGM.h"
#include <U8glib.h>
#else
#include "ultralcd_impl_HD44780.h"
#endif
@ -151,6 +152,7 @@ uint16_t max_display_update_time = 0;
void lcd_filament_change_unload_message();
void lcd_filament_change_insert_message();
void lcd_filament_change_load_message();
void lcd_filament_change_heat_nozzle();
void lcd_filament_change_extrude_message();
void lcd_filament_change_resume_message();
#endif
@ -948,7 +950,8 @@ void kill_screen(const char* lcd_msg) {
// Change filament
//
#if ENABLED(FILAMENT_CHANGE_FEATURE)
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
if (!thermalManager.tooColdToExtrude(active_extruder))
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
#endif
END_MENU();
@ -1384,11 +1387,13 @@ KeepDrawing:
MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_material1_hotend0);
MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_material2_hotend0);
#endif
//
// Change filament
//
#if ENABLED(FILAMENT_CHANGE_FEATURE)
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
if (!thermalManager.tooColdToExtrude(active_extruder))
MENU_ITEM(function, MSG_FILAMENTCHANGE, lcd_enqueue_filament_change);
#endif
#endif
@ -2441,11 +2446,21 @@ KeepDrawing:
}
#endif // LCD_INFO_MENU
/**
*
* Filament Change Feature Screens
*
*/
#if ENABLED(FILAMENT_CHANGE_FEATURE)
void lcd_filament_change_toocold_menu() {
START_MENU();
STATIC_ITEM(MSG_HEATING_FAILED_LCD, true, true);
MENU_BACK(MSG_FILAMENTCHANGE);
STATIC_ITEM (MSG_FILAMENT_CHANGE_MINTEMP STRINGIFY(EXTRUDE_MINTEMP) ".", false, false);
MENU_BACK(MSG_BACK);
STATIC_ITEM (" ");
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
lcd_implementation_hotend_status();
END_MENU();
}
@ -2478,6 +2493,8 @@ KeepDrawing:
#ifdef MSG_FILAMENT_CHANGE_INIT_3
STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_3);
#endif
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
lcd_implementation_hotend_status();
END_SCREEN();
}
@ -2491,6 +2508,35 @@ KeepDrawing:
#ifdef MSG_FILAMENT_CHANGE_UNLOAD_3
STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_3);
#endif
STATIC_ITEM (" ");
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
lcd_implementation_hotend_status();
END_SCREEN();
}
void lcd_filament_change_wait_for_nozzles_to_heat() {
START_SCREEN();
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_1);
#ifdef MSG_FILAMENT_CHANGE_HEATING_2
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEATING_2);
#endif
STATIC_ITEM(" ");
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
lcd_implementation_hotend_status();
END_SCREEN();
}
void lcd_filament_change_heat_nozzle() {
START_SCREEN();
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true);
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_1);
#ifdef MSG_FILAMENT_CHANGE_INSERT_2
STATIC_ITEM(MSG_FILAMENT_CHANGE_HEAT_2);
#endif
STATIC_ITEM(" ");
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
lcd_implementation_hotend_status();
END_SCREEN();
}
@ -2504,6 +2550,8 @@ KeepDrawing:
#ifdef MSG_FILAMENT_CHANGE_INSERT_3
STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_3);
#endif
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
lcd_implementation_hotend_status();
END_SCREEN();
}
@ -2517,6 +2565,9 @@ KeepDrawing:
#ifdef MSG_FILAMENT_CHANGE_LOAD_3
STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_3);
#endif
STATIC_ITEM(" ");
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
lcd_implementation_hotend_status();
END_SCREEN();
}
@ -2530,6 +2581,9 @@ KeepDrawing:
#ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3
STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3);
#endif
STATIC_ITEM(" ");
STATIC_ITEM(MSG_FILAMENT_CHANGE_NOZZLE, false, true);
lcd_implementation_hotend_status();
END_SCREEN();
}
@ -2550,20 +2604,33 @@ KeepDrawing:
switch (message) {
case FILAMENT_CHANGE_MESSAGE_INIT:
defer_return_to_status = true;
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
lcd_goto_screen(lcd_filament_change_init_message);
break;
case FILAMENT_CHANGE_MESSAGE_UNLOAD:
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
lcd_goto_screen(lcd_filament_change_unload_message);
break;
case FILAMENT_CHANGE_MESSAGE_INSERT:
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
lcd_goto_screen(lcd_filament_change_insert_message);
break;
case FILAMENT_CHANGE_MESSAGE_LOAD:
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
lcd_goto_screen(lcd_filament_change_load_message);
break;
case FILAMENT_CHANGE_MESSAGE_EXTRUDE:
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
lcd_goto_screen(lcd_filament_change_extrude_message);
break;
case FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE:
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
lcd_goto_screen(lcd_filament_change_heat_nozzle);
break;
case FILAMENT_CHANGE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT:
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
lcd_goto_screen(lcd_filament_change_wait_for_nozzles_to_heat);
break;
case FILAMENT_CHANGE_MESSAGE_OPTION:
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_WAIT_FOR;
lcd_goto_screen(lcd_filament_change_option_menu);