Add MMU cut filament menu.
This commit is contained in:
parent
5a5a482a59
commit
815231bc26
4 changed files with 80 additions and 0 deletions
|
@ -297,6 +297,14 @@ void mmu_loop(void)
|
|||
mmu_fil_loaded = false;
|
||||
mmu_state = S::WaitCmd;
|
||||
}
|
||||
else if ((mmu_cmd >= MmuCmd::K0) && (mmu_cmd <= MmuCmd::K4))
|
||||
{
|
||||
const uint8_t filament = mmu_cmd - MmuCmd::K0;
|
||||
DEBUG_PRINTF_P(PSTR("MMU <= 'K%d'\n"), filament);
|
||||
mmu_printf_P(PSTR("K%d\n"), filament); //send eject filament
|
||||
mmu_fil_loaded = false;
|
||||
mmu_state = S::WaitCmd;
|
||||
}
|
||||
else if (mmu_cmd == MmuCmd::R0)
|
||||
{
|
||||
DEBUG_PRINTF_P(PSTR("MMU <= 'R0'\n"));
|
||||
|
@ -1337,6 +1345,26 @@ bFilamentAction=false; // NOT in "mmu_load_to_nozzle_
|
|||
}
|
||||
}
|
||||
|
||||
void mmu_cut_filament(uint8_t filament_nr)
|
||||
{
|
||||
bFilamentAction=false; // NOT in "mmu_load_to_nozzle_menu()"
|
||||
if (degHotend0() > EXTRUDE_MINTEMP)
|
||||
{
|
||||
LcdUpdateDisabler disableLcdUpdate;
|
||||
lcd_clear();
|
||||
lcd_set_cursor(0, 1); lcd_puts_P(_i("Cutting filament")); //// c=18 r=1
|
||||
lcd_print(" ");
|
||||
lcd_print(filament_nr + 1);
|
||||
mmu_filament_ramming();
|
||||
mmu_command(MmuCmd::K0 + filament_nr);
|
||||
manage_response(false, false, MMU_UNLOAD_MOVE);
|
||||
}
|
||||
else
|
||||
{
|
||||
show_preheat_nozzle_warning();
|
||||
}
|
||||
}
|
||||
|
||||
void mmu_eject_filament(uint8_t filament, bool recover)
|
||||
{
|
||||
//-//
|
||||
|
|
|
@ -52,6 +52,11 @@ enum class MmuCmd : uint_least8_t
|
|||
E2,
|
||||
E3,
|
||||
E4,
|
||||
K0,
|
||||
K1,
|
||||
K2,
|
||||
K3,
|
||||
K4,
|
||||
R0,
|
||||
S3,
|
||||
W0,
|
||||
|
@ -127,6 +132,7 @@ extern bool mmu_check_version();
|
|||
extern void mmu_show_warning();
|
||||
extern void lcd_mmu_load_to_nozzle(uint8_t filament_nr);
|
||||
extern void mmu_eject_filament(uint8_t filament, bool recover);
|
||||
extern void mmu_cut_filament(uint8_t filament_nr);
|
||||
extern void mmu_continue_loading();
|
||||
extern void mmu_filament_ramming();
|
||||
extern void mmu_wait_for_heater_blocking();
|
||||
|
|
|
@ -144,6 +144,7 @@ static void lcd_menu_show_sensors_state();
|
|||
|
||||
static void mmu_fil_eject_menu();
|
||||
static void mmu_load_to_nozzle_menu();
|
||||
static void mmu_cut_filament_menu();
|
||||
|
||||
#if defined(TMC2130) || defined(FILAMENT_SENSOR)
|
||||
static void lcd_menu_fails_stats();
|
||||
|
@ -2407,6 +2408,9 @@ switch(eFilamentAction)
|
|||
case e_FILAMENT_ACTION_mmuEject:
|
||||
lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20 r=1
|
||||
break;
|
||||
case e_FILAMENT_ACTION_mmuCut:
|
||||
lcd_puts_P(_i("Preheating to cut")); ////MSG_ c=20 r=1
|
||||
break;
|
||||
}
|
||||
lcd_set_cursor(0,3);
|
||||
lcd_puts_P(_i(">Cancel")); ////MSG_ c=20 r=1
|
||||
|
@ -2460,6 +2464,14 @@ else {
|
|||
menu_back(nLevel);
|
||||
menu_submenu(mmu_fil_eject_menu);
|
||||
break;
|
||||
case e_FILAMENT_ACTION_mmuCut:
|
||||
nLevel=1;
|
||||
if(!bFilamentPreheatState)
|
||||
nLevel++;
|
||||
bFilamentAction=true;
|
||||
menu_back(nLevel);
|
||||
menu_submenu(mmu_cut_filament_menu);
|
||||
break;
|
||||
}
|
||||
if(bBeep)
|
||||
Sound_MakeSound(e_SOUND_TYPE_StandardPrompt);
|
||||
|
@ -5750,6 +5762,38 @@ static void mmu_fil_eject_menu()
|
|||
}
|
||||
}
|
||||
|
||||
template <uint8_t filament>
|
||||
static void mmu_cut_filament()
|
||||
{
|
||||
menu_back();
|
||||
mmu_cut_filament(filament);
|
||||
}
|
||||
|
||||
static void mmu_cut_filament_menu()
|
||||
{
|
||||
if(bFilamentAction)
|
||||
{
|
||||
MENU_BEGIN();
|
||||
MENU_ITEM_BACK_P(_T(MSG_MAIN));
|
||||
MENU_ITEM_FUNCTION_P(_i("Cut filament 1"), mmu_cut_filament<0>);
|
||||
MENU_ITEM_FUNCTION_P(_i("Cut filament 2"), mmu_cut_filament<1>);
|
||||
MENU_ITEM_FUNCTION_P(_i("Cut filament 3"), mmu_cut_filament<2>);
|
||||
MENU_ITEM_FUNCTION_P(_i("Cut filament 4"), mmu_cut_filament<3>);
|
||||
MENU_ITEM_FUNCTION_P(_i("Cut filament 5"), mmu_cut_filament<4>);
|
||||
MENU_END();
|
||||
}
|
||||
else {
|
||||
eFilamentAction=e_FILAMENT_ACTION_mmuCut;
|
||||
bFilamentFirstRun=false;
|
||||
if(target_temperature[0]>=EXTRUDE_MINTEMP)
|
||||
{
|
||||
bFilamentPreheatState=true;
|
||||
mFilamentItem(target_temperature[0],target_temperature_bed);
|
||||
}
|
||||
else mFilamentMenu();
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef SNMM
|
||||
static void fil_unload_menu()
|
||||
{
|
||||
|
@ -6222,6 +6266,7 @@ static void lcd_main_menu()
|
|||
//bFilamentFirstRun=true;
|
||||
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("Cut filament"), mmu_cut_filament_menu);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -142,6 +142,7 @@ typedef enum
|
|||
e_FILAMENT_ACTION_mmuLoad,
|
||||
e_FILAMENT_ACTION_mmuUnLoad,
|
||||
e_FILAMENT_ACTION_mmuEject,
|
||||
e_FILAMENT_ACTION_mmuCut,
|
||||
} eFILAMENT_ACTION;
|
||||
extern eFILAMENT_ACTION eFilamentAction;
|
||||
extern bool bFilamentFirstRun;
|
||||
|
|
Loading…
Reference in a new issue