preHeat @ filament management

another funcionality
This commit is contained in:
MRprusa3d 2019-02-20 03:01:33 +01:00
parent 902f85e8ba
commit da0867cfc5
6 changed files with 78 additions and 31 deletions

View File

@ -7507,7 +7507,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s
if(target_temperature[0]>=EXTRUDE_MINTEMP) if(target_temperature[0]>=EXTRUDE_MINTEMP)
{ {
bFilamentPreheatState=true; bFilamentPreheatState=true;
mFilamentItem(target_temperature[0]); mFilamentItem(target_temperature[0],target_temperature_bed);
} }
else else
{ {

View File

@ -85,6 +85,19 @@ void menu_end(void)
} }
} }
//-//
void menu_back(uint8_t nLevel)
{
menu_depth = ((menu_depth > nLevel) ? (menu_depth - nLevel) : 0);
menu_goto(menu_stack[menu_depth].menu, menu_stack[menu_depth].position, true, true);
}
void menu_back(void)
{
menu_back(1);
}
/*
void menu_back(void) void menu_back(void)
{ {
if (menu_depth > 0) if (menu_depth > 0)
@ -93,6 +106,7 @@ void menu_back(void)
menu_goto(menu_stack[menu_depth].menu, menu_stack[menu_depth].position, true, true); menu_goto(menu_stack[menu_depth].menu, menu_stack[menu_depth].position, true, true);
} }
} }
*/
static void menu_back_no_reset(void) static void menu_back_no_reset(void)
{ {

View File

@ -54,6 +54,7 @@ void menu_start(void);
extern void menu_end(void); extern void menu_end(void);
extern void menu_back(void); extern void menu_back(void);
extern void menu_back(uint8_t nLevel);
extern void menu_back_if_clicked(void); extern void menu_back_if_clicked(void);

View File

@ -1030,8 +1030,11 @@ void extr_unload()
uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT); uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
#endif #endif
if (degHotend0() > EXTRUDE_MINTEMP) //-// if (degHotend0() > EXTRUDE_MINTEMP)
//if(current_temperature[0]>(target_temperature[0]*0.95))
if(bFilamentAction)
{ {
bFilamentAction=false;
#ifndef SNMM #ifndef SNMM
st_synchronize(); st_synchronize();
@ -1109,7 +1112,7 @@ void extr_unload()
bFilamentFirstRun=false; bFilamentFirstRun=false;
if(target_temperature[0]>=EXTRUDE_MINTEMP) { if(target_temperature[0]>=EXTRUDE_MINTEMP) {
bFilamentPreheatState=true; bFilamentPreheatState=true;
mFilamentItem(target_temperature[0]); mFilamentItem(target_temperature[0],target_temperature_bed);
} }
else menu_submenu(mFilamentMenu); else menu_submenu(mFilamentMenu);
} }
@ -1340,6 +1343,8 @@ void mmu_show_warning()
void lcd_mmu_load_to_nozzle(uint8_t filament_nr) void lcd_mmu_load_to_nozzle(uint8_t filament_nr)
{ {
//-//
bFilamentAction=false;
if (degHotend0() > EXTRUDE_MINTEMP) if (degHotend0() > EXTRUDE_MINTEMP)
{ {
tmp_extruder = filament_nr; tmp_extruder = filament_nr;
@ -1371,6 +1376,8 @@ void lcd_mmu_load_to_nozzle(uint8_t filament_nr)
void mmu_eject_filament(uint8_t filament, bool recover) void mmu_eject_filament(uint8_t filament, bool recover)
{ {
//-//
bFilamentAction=false;
if (filament < 5) if (filament < 5)
{ {

View File

@ -2306,6 +2306,7 @@ void lcd_set_filament_oq_meass()
eFILAMENT_ACTION eFilamentAction=e_FILAMENT_ACTION_none; // must be initialized as 'non-autoLoad' eFILAMENT_ACTION eFilamentAction=e_FILAMENT_ACTION_none; // must be initialized as 'non-autoLoad'
bool bFilamentFirstRun; bool bFilamentFirstRun;
bool bFilamentPreheatState; bool bFilamentPreheatState;
bool bFilamentAction=false;
static void mFilamentPrompt() static void mFilamentPrompt()
{ {
@ -2331,8 +2332,9 @@ switch(eFilamentAction)
} }
if(lcd_clicked()) if(lcd_clicked())
{ {
menu_back(); //./ menu_back();
menu_back(); //./ menu_back();
menu_back(2);
if(!bFilamentPreheatState) if(!bFilamentPreheatState)
{ {
menu_back(); menu_back();
@ -2349,12 +2351,17 @@ if(lcd_clicked())
enquecommand_P(PSTR("M702")); // unload filament enquecommand_P(PSTR("M702")); // unload filament
break; break;
case e_FILAMENT_ACTION_mmuLoad: case e_FILAMENT_ACTION_mmuLoad:
MYSERIAL.println("mFilamentPrompt - mmuLoad");
bFilamentAction=true;
menu_submenu(mmu_load_to_nozzle_menu); menu_submenu(mmu_load_to_nozzle_menu);
break; break;
case e_FILAMENT_ACTION_mmuUnLoad: case e_FILAMENT_ACTION_mmuUnLoad:
bFilamentAction=true;
extr_unload(); extr_unload();
break; break;
case e_FILAMENT_ACTION_mmuEject: case e_FILAMENT_ACTION_mmuEject:
MYSERIAL.println("mFilamentPrompt - mmuEject");
bFilamentAction=true;
menu_submenu(mmu_fil_eject_menu); menu_submenu(mmu_fil_eject_menu);
break; break;
} }
@ -2363,13 +2370,15 @@ if(lcd_clicked())
} }
} }
void mFilamentItem(uint16_t nTemp) void mFilamentItem(uint16_t nTemp,uint16_t nTempBed)
{ {
static int nTargetOld; static int nTargetOld,nTargetBedOld;
//if(bPreheatState) // not necessary //if(bPreheatState) // not necessary
nTargetOld=target_temperature[0]; nTargetOld=target_temperature[0];
nTargetBedOld=target_temperature_bed;
setTargetHotend0((float)nTemp); setTargetHotend0((float)nTemp);
setTargetBed((float)nTempBed);
lcd_timeoutToStatus.stop(); lcd_timeoutToStatus.stop();
lcd_set_cursor(0,0); lcd_set_cursor(0,0);
lcdui_print_temp(LCD_STR_THERMOMETER[0],(int)degHotend(0),(int)degTargetHotend(0)); lcdui_print_temp(LCD_STR_THERMOMETER[0],(int)degHotend(0),(int)degTargetHotend(0));
@ -2396,14 +2405,19 @@ if(lcd_clicked())
if(!bFilamentPreheatState) if(!bFilamentPreheatState)
{ {
setTargetHotend0(0.0); setTargetHotend0(0.0);
setTargetBed(0.0);
menu_back(); menu_back();
} }
else setTargetHotend0((float)nTargetOld); else {
setTargetHotend0((float)nTargetOld);
setTargetBed((float)nTargetBedOld);
}
menu_back(); menu_back();
if(eFilamentAction==e_FILAMENT_ACTION_autoLoad) if(eFilamentAction==e_FILAMENT_ACTION_autoLoad)
eFilamentAction=e_FILAMENT_ACTION_none; // i.e. non-autoLoad eFilamentAction=e_FILAMENT_ACTION_none; // i.e. non-autoLoad
} }
else if(!isHeatingHotend0()) //./else if(!isHeatingHotend0())
else if(current_temperature[0]>(target_temperature[0]*0.95))
{ {
menu_submenu(mFilamentPrompt); menu_submenu(mFilamentPrompt);
Sound_MakeSound(e_SOUND_TYPE_StandardPrompt); Sound_MakeSound(e_SOUND_TYPE_StandardPrompt);
@ -2413,37 +2427,37 @@ else if(!isHeatingHotend0())
static void mFilamentItem_PLA() static void mFilamentItem_PLA()
{ {
bFilamentPreheatState=false; bFilamentPreheatState=false;
mFilamentItem(PLA_PREHEAT_HOTEND_TEMP); mFilamentItem(PLA_PREHEAT_HOTEND_TEMP,PLA_PREHEAT_HPB_TEMP);
} }
static void mFilamentItem_PET() static void mFilamentItem_PET()
{ {
bFilamentPreheatState=false; bFilamentPreheatState=false;
mFilamentItem(PET_PREHEAT_HOTEND_TEMP); mFilamentItem(PET_PREHEAT_HOTEND_TEMP,PET_PREHEAT_HPB_TEMP);
} }
static void mFilamentItem_ABS() static void mFilamentItem_ABS()
{ {
bFilamentPreheatState=false; bFilamentPreheatState=false;
mFilamentItem(ABS_PREHEAT_HOTEND_TEMP); mFilamentItem(ABS_PREHEAT_HOTEND_TEMP,ABS_PREHEAT_HPB_TEMP);
} }
static void mFilamentItem_HIPS() static void mFilamentItem_HIPS()
{ {
bFilamentPreheatState=false; bFilamentPreheatState=false;
mFilamentItem(HIPS_PREHEAT_HOTEND_TEMP); mFilamentItem(HIPS_PREHEAT_HOTEND_TEMP,HIPS_PREHEAT_HPB_TEMP);
} }
static void mFilamentItem_PP() static void mFilamentItem_PP()
{ {
bFilamentPreheatState=false; bFilamentPreheatState=false;
mFilamentItem(PP_PREHEAT_HOTEND_TEMP); mFilamentItem(PP_PREHEAT_HOTEND_TEMP,PP_PREHEAT_HPB_TEMP);
} }
static void mFilamentItem_FLEX() static void mFilamentItem_FLEX()
{ {
bFilamentPreheatState=false; bFilamentPreheatState=false;
mFilamentItem(FLEX_PREHEAT_HOTEND_TEMP); mFilamentItem(FLEX_PREHEAT_HOTEND_TEMP,FLEX_PREHEAT_HPB_TEMP);
} }
@ -2458,19 +2472,20 @@ void mFilamentMenu()
{ {
MENU_BEGIN(); MENU_BEGIN();
MENU_ITEM_FUNCTION_P(_T(MSG_MAIN),mFilamentBack); MENU_ITEM_FUNCTION_P(_T(MSG_MAIN),mFilamentBack);
MENU_ITEM_SUBMENU_P(PSTR("PLA - " STRINGIFY(PLA_PREHEAT_HOTEND_TEMP)),mFilamentItem_PLA); MENU_ITEM_SUBMENU_P(PSTR("PLA - " STRINGIFY(PLA_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PLA_PREHEAT_HPB_TEMP)),mFilamentItem_PLA);
MENU_ITEM_SUBMENU_P(PSTR("PET - " STRINGIFY(PET_PREHEAT_HOTEND_TEMP)),mFilamentItem_PET); MENU_ITEM_SUBMENU_P(PSTR("PET - " STRINGIFY(PET_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PET_PREHEAT_HPB_TEMP)),mFilamentItem_PET);
MENU_ITEM_SUBMENU_P(PSTR("ABS - " STRINGIFY(ABS_PREHEAT_HOTEND_TEMP)),mFilamentItem_ABS); MENU_ITEM_SUBMENU_P(PSTR("ABS - " STRINGIFY(ABS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(ABS_PREHEAT_HPB_TEMP)),mFilamentItem_ABS);
MENU_ITEM_SUBMENU_P(PSTR("HIPS - " STRINGIFY(HIPS_PREHEAT_HOTEND_TEMP)),mFilamentItem_HIPS); MENU_ITEM_SUBMENU_P(PSTR("HIPS - " STRINGIFY(HIPS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(HIPS_PREHEAT_HPB_TEMP)),mFilamentItem_HIPS);
MENU_ITEM_SUBMENU_P(PSTR("PP - " STRINGIFY(PP_PREHEAT_HOTEND_TEMP)),mFilamentItem_PP); MENU_ITEM_SUBMENU_P(PSTR("PP - " STRINGIFY(PP_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PP_PREHEAT_HPB_TEMP)),mFilamentItem_PP);
MENU_ITEM_SUBMENU_P(PSTR("FLEX - " STRINGIFY(FLEX_PREHEAT_HOTEND_TEMP)),mFilamentItem_FLEX); MENU_ITEM_SUBMENU_P(PSTR("FLEX - " STRINGIFY(FLEX_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FLEX_PREHEAT_HPB_TEMP)),mFilamentItem_FLEX);
MENU_END(); MENU_END();
} }
void lcd_unLoadFilament() void lcd_unLoadFilament()
{ {
if((degHotend0()>EXTRUDE_MINTEMP)&&bFilamentFirstRun) //./if((degHotend0()>EXTRUDE_MINTEMP)&&bFilamentFirstRun)
if(0)
{ {
menu_back(); menu_back();
enquecommand_P(PSTR("M702")); // unload filament enquecommand_P(PSTR("M702")); // unload filament
@ -2481,7 +2496,7 @@ else {
if(target_temperature[0]>=EXTRUDE_MINTEMP) if(target_temperature[0]>=EXTRUDE_MINTEMP)
{ {
bFilamentPreheatState=true; bFilamentPreheatState=true;
mFilamentItem(target_temperature[0]); mFilamentItem(target_temperature[0],target_temperature_bed);
} }
else mFilamentMenu(); else mFilamentMenu();
} }
@ -2699,7 +2714,8 @@ static void lcd_menu_AutoLoadFilament()
static void lcd_LoadFilament() static void lcd_LoadFilament()
{ {
if (degHotend0() > EXTRUDE_MINTEMP) //-// if (degHotend0() > EXTRUDE_MINTEMP)
if(0)
{ {
// menu_back(); // not necessary (see "lcd_return_to_status()" below) // menu_back(); // not necessary (see "lcd_return_to_status()" below)
custom_message_type = CUSTOM_MSG_TYPE_F_LOAD; custom_message_type = CUSTOM_MSG_TYPE_F_LOAD;
@ -2715,7 +2731,7 @@ static void lcd_LoadFilament()
if(target_temperature[0]>=EXTRUDE_MINTEMP) if(target_temperature[0]>=EXTRUDE_MINTEMP)
{ {
bFilamentPreheatState=true; bFilamentPreheatState=true;
mFilamentItem(target_temperature[0]); mFilamentItem(target_temperature[0],target_temperature_bed);
} }
else mFilamentMenu(); else mFilamentMenu();
} }
@ -5626,8 +5642,11 @@ static void fil_load_menu()
static void mmu_load_to_nozzle_menu() static void mmu_load_to_nozzle_menu()
{ {
if (degHotend0() > EXTRUDE_MINTEMP) //-//if (degHotend0() > EXTRUDE_MINTEMP)
//if(current_temperature[0]>(target_temperature[0]*0.95))
if(bFilamentAction)
{ {
//../bFilamentAction=false;
MENU_BEGIN(); MENU_BEGIN();
MENU_ITEM_BACK_P(_T(MSG_MAIN)); MENU_ITEM_BACK_P(_T(MSG_MAIN));
MENU_ITEM_FUNCTION_P(_i("Load filament 1"), mmu_load_to_nozzle_0); MENU_ITEM_FUNCTION_P(_i("Load filament 1"), mmu_load_to_nozzle_0);
@ -5643,7 +5662,7 @@ else {
if(target_temperature[0]>=EXTRUDE_MINTEMP) if(target_temperature[0]>=EXTRUDE_MINTEMP)
{ {
bFilamentPreheatState=true; bFilamentPreheatState=true;
mFilamentItem(target_temperature[0]); mFilamentItem(target_temperature[0],target_temperature_bed);
} }
else mFilamentMenu(); else mFilamentMenu();
} }
@ -5651,8 +5670,11 @@ else {
static void mmu_fil_eject_menu() static void mmu_fil_eject_menu()
{ {
if (degHotend0() > EXTRUDE_MINTEMP) //-//if (degHotend0() > EXTRUDE_MINTEMP)
//if(current_temperature[0]>(target_temperature[0]*0.95))
if(bFilamentAction)
{ {
//../bFilamentAction=false;
MENU_BEGIN(); MENU_BEGIN();
MENU_ITEM_BACK_P(_T(MSG_MAIN)); MENU_ITEM_BACK_P(_T(MSG_MAIN));
MENU_ITEM_FUNCTION_P(_i("Eject filament 1"), mmu_eject_fil_0); MENU_ITEM_FUNCTION_P(_i("Eject filament 1"), mmu_eject_fil_0);
@ -5663,12 +5685,13 @@ if (degHotend0() > EXTRUDE_MINTEMP)
MENU_END(); MENU_END();
} }
else { else {
MYSERIAL.println(" eject - else");
eFilamentAction=e_FILAMENT_ACTION_mmuEject; eFilamentAction=e_FILAMENT_ACTION_mmuEject;
bFilamentFirstRun=false; bFilamentFirstRun=false;
if(target_temperature[0]>=EXTRUDE_MINTEMP) if(target_temperature[0]>=EXTRUDE_MINTEMP)
{ {
bFilamentPreheatState=true; bFilamentPreheatState=true;
mFilamentItem(target_temperature[0]); mFilamentItem(target_temperature[0],target_temperature_bed);
} }
else mFilamentMenu(); else mFilamentMenu();
} }
@ -6142,7 +6165,8 @@ static void lcd_main_menu()
{ {
MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), fil_load_menu); MENU_ITEM_SUBMENU_P(_T(MSG_LOAD_FILAMENT), fil_load_menu);
MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu); MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);
MENU_ITEM_FUNCTION_P(_T(MSG_UNLOAD_FILAMENT), extr_unload); //-// MENU_ITEM_FUNCTION_P(_T(MSG_UNLOAD_FILAMENT), extr_unload);
MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), extr_unload);
MENU_ITEM_SUBMENU_P(_i("Eject filament"), mmu_fil_eject_menu); MENU_ITEM_SUBMENU_P(_i("Eject filament"), mmu_fil_eject_menu);
} }
else else

View File

@ -138,7 +138,8 @@ typedef enum
extern eFILAMENT_ACTION eFilamentAction; extern eFILAMENT_ACTION eFilamentAction;
extern bool bFilamentFirstRun; extern bool bFilamentFirstRun;
extern bool bFilamentPreheatState; extern bool bFilamentPreheatState;
void mFilamentItem(uint16_t nTemp); extern bool bFilamentAction;
void mFilamentItem(uint16_t nTemp,uint16_t nTempBed);
void mFilamentMenu(); void mFilamentMenu();
void unload_filament(); void unload_filament();