Merge branch 'add_cut' into bad_load_cut
This commit is contained in:
commit
a67645fda6
|
|
@ -132,7 +132,7 @@
|
||||||
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
|
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
|
||||||
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
|
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
|
||||||
#define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term
|
#define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term
|
||||||
#define K1 0.95 //smoothing factor within the PID
|
#define PID_K1 0.95 //smoothing factor within the PID
|
||||||
#define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
|
#define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
|
||||||
|
|
||||||
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
|
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
|
||||||
|
|
|
||||||
|
|
@ -297,6 +297,14 @@ void mmu_loop(void)
|
||||||
mmu_fil_loaded = false;
|
mmu_fil_loaded = false;
|
||||||
mmu_state = S::WaitCmd;
|
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)
|
else if (mmu_cmd == MmuCmd::R0)
|
||||||
{
|
{
|
||||||
DEBUG_PRINTF_P(PSTR("MMU <= 'R0'\n"));
|
DEBUG_PRINTF_P(PSTR("MMU <= 'R0'\n"));
|
||||||
|
|
@ -1183,76 +1191,6 @@ void extr_adj_4()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void mmu_load_to_nozzle_0()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
lcd_mmu_load_to_nozzle(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mmu_load_to_nozzle_1()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
lcd_mmu_load_to_nozzle(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mmu_load_to_nozzle_2()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
lcd_mmu_load_to_nozzle(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mmu_load_to_nozzle_3()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
lcd_mmu_load_to_nozzle(3);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mmu_load_to_nozzle_4()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
lcd_mmu_load_to_nozzle(4);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mmu_eject_fil_0()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
mmu_eject_filament(0, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mmu_eject_fil_1()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
mmu_eject_filament(1, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mmu_eject_fil_2()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
mmu_eject_filament(2, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mmu_eject_fil_3()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
mmu_eject_filament(3, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mmu_eject_fil_4()
|
|
||||||
{
|
|
||||||
//-//
|
|
||||||
menu_back();
|
|
||||||
mmu_eject_filament(4, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void load_all()
|
void load_all()
|
||||||
{
|
{
|
||||||
#ifndef SNMM
|
#ifndef SNMM
|
||||||
|
|
@ -1407,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)
|
void mmu_eject_filament(uint8_t filament, bool recover)
|
||||||
{
|
{
|
||||||
//-//
|
//-//
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,11 @@ enum class MmuCmd : uint_least8_t
|
||||||
E2,
|
E2,
|
||||||
E3,
|
E3,
|
||||||
E4,
|
E4,
|
||||||
|
K0,
|
||||||
|
K1,
|
||||||
|
K2,
|
||||||
|
K3,
|
||||||
|
K4,
|
||||||
R0,
|
R0,
|
||||||
S3,
|
S3,
|
||||||
W0,
|
W0,
|
||||||
|
|
@ -108,11 +113,6 @@ extern void extr_adj_1();
|
||||||
extern void extr_adj_2();
|
extern void extr_adj_2();
|
||||||
extern void extr_adj_3();
|
extern void extr_adj_3();
|
||||||
extern void extr_adj_4();
|
extern void extr_adj_4();
|
||||||
extern void mmu_load_to_nozzle_0();
|
|
||||||
extern void mmu_load_to_nozzle_1();
|
|
||||||
extern void mmu_load_to_nozzle_2();
|
|
||||||
extern void mmu_load_to_nozzle_3();
|
|
||||||
extern void mmu_load_to_nozzle_4();
|
|
||||||
extern void load_all();
|
extern void load_all();
|
||||||
extern void extr_change_0();
|
extern void extr_change_0();
|
||||||
extern void extr_change_1();
|
extern void extr_change_1();
|
||||||
|
|
@ -132,11 +132,7 @@ extern bool mmu_check_version();
|
||||||
extern void mmu_show_warning();
|
extern void mmu_show_warning();
|
||||||
extern void lcd_mmu_load_to_nozzle(uint8_t filament_nr);
|
extern void lcd_mmu_load_to_nozzle(uint8_t filament_nr);
|
||||||
extern void mmu_eject_filament(uint8_t filament, bool recover);
|
extern void mmu_eject_filament(uint8_t filament, bool recover);
|
||||||
extern void mmu_eject_fil_0();
|
extern void mmu_cut_filament(uint8_t filament_nr);
|
||||||
extern void mmu_eject_fil_1();
|
|
||||||
extern void mmu_eject_fil_2();
|
|
||||||
extern void mmu_eject_fil_3();
|
|
||||||
extern void mmu_eject_fil_4();
|
|
||||||
extern void mmu_continue_loading();
|
extern void mmu_continue_loading();
|
||||||
extern void mmu_filament_ramming();
|
extern void mmu_filament_ramming();
|
||||||
extern void mmu_wait_for_heater_blocking();
|
extern void mmu_wait_for_heater_blocking();
|
||||||
|
|
|
||||||
|
|
@ -662,9 +662,9 @@ void manage_heater()
|
||||||
iState_sum[e] += pid_error[e];
|
iState_sum[e] += pid_error[e];
|
||||||
iState_sum[e] = constrain(iState_sum[e], iState_sum_min[e], iState_sum_max[e]);
|
iState_sum[e] = constrain(iState_sum[e], iState_sum_min[e], iState_sum_max[e]);
|
||||||
iTerm[e] = cs.Ki * iState_sum[e];
|
iTerm[e] = cs.Ki * iState_sum[e];
|
||||||
// K1 defined in Configuration.h in the PID settings
|
// PID_K1 defined in Configuration.h in the PID settings
|
||||||
#define K2 (1.0-K1)
|
#define K2 (1.0-PID_K1)
|
||||||
dTerm[e] = (cs.Kd * (pid_input - dState_last[e]))*K2 + (K1 * dTerm[e]); // e.g. digital filtration of derivative term changes
|
dTerm[e] = (cs.Kd * (pid_input - dState_last[e]))*K2 + (PID_K1 * dTerm[e]); // e.g. digital filtration of derivative term changes
|
||||||
pid_output = pTerm[e] + iTerm[e] - dTerm[e]; // subtraction due to "Derivative on Measurement" method (i.e. derivative of input instead derivative of error is used)
|
pid_output = pTerm[e] + iTerm[e] - dTerm[e]; // subtraction due to "Derivative on Measurement" method (i.e. derivative of input instead derivative of error is used)
|
||||||
if (pid_output > PID_MAX) {
|
if (pid_output > PID_MAX) {
|
||||||
if (pid_error[e] > 0 ) iState_sum[e] -= pid_error[e]; // conditional un-integration
|
if (pid_error[e] > 0 ) iState_sum[e] -= pid_error[e]; // conditional un-integration
|
||||||
|
|
@ -811,9 +811,9 @@ void manage_heater()
|
||||||
temp_iState_bed = constrain(temp_iState_bed, temp_iState_min_bed, temp_iState_max_bed);
|
temp_iState_bed = constrain(temp_iState_bed, temp_iState_min_bed, temp_iState_max_bed);
|
||||||
iTerm_bed = cs.bedKi * temp_iState_bed;
|
iTerm_bed = cs.bedKi * temp_iState_bed;
|
||||||
|
|
||||||
//K1 defined in Configuration.h in the PID settings
|
//PID_K1 defined in Configuration.h in the PID settings
|
||||||
#define K2 (1.0-K1)
|
#define K2 (1.0-PID_K1)
|
||||||
dTerm_bed= (cs.bedKd * (pid_input - temp_dState_bed))*K2 + (K1 * dTerm_bed);
|
dTerm_bed= (cs.bedKd * (pid_input - temp_dState_bed))*K2 + (PID_K1 * dTerm_bed);
|
||||||
temp_dState_bed = pid_input;
|
temp_dState_bed = pid_input;
|
||||||
|
|
||||||
pid_output = pTerm_bed + iTerm_bed - dTerm_bed;
|
pid_output = pTerm_bed + iTerm_bed - dTerm_bed;
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,7 @@ static void lcd_menu_show_sensors_state();
|
||||||
|
|
||||||
static void mmu_fil_eject_menu();
|
static void mmu_fil_eject_menu();
|
||||||
static void mmu_load_to_nozzle_menu();
|
static void mmu_load_to_nozzle_menu();
|
||||||
|
static void mmu_cut_filament_menu();
|
||||||
|
|
||||||
#if defined(TMC2130) || defined(FILAMENT_SENSOR)
|
#if defined(TMC2130) || defined(FILAMENT_SENSOR)
|
||||||
static void lcd_menu_fails_stats();
|
static void lcd_menu_fails_stats();
|
||||||
|
|
@ -2407,6 +2408,9 @@ switch(eFilamentAction)
|
||||||
case e_FILAMENT_ACTION_mmuEject:
|
case e_FILAMENT_ACTION_mmuEject:
|
||||||
lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20 r=1
|
lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20 r=1
|
||||||
break;
|
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_set_cursor(0,3);
|
||||||
lcd_puts_P(_i(">Cancel")); ////MSG_ c=20 r=1
|
lcd_puts_P(_i(">Cancel")); ////MSG_ c=20 r=1
|
||||||
|
|
@ -2460,6 +2464,14 @@ else {
|
||||||
menu_back(nLevel);
|
menu_back(nLevel);
|
||||||
menu_submenu(mmu_fil_eject_menu);
|
menu_submenu(mmu_fil_eject_menu);
|
||||||
break;
|
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)
|
if(bBeep)
|
||||||
Sound_MakeSound(e_SOUND_TYPE_StandardPrompt);
|
Sound_MakeSound(e_SOUND_TYPE_StandardPrompt);
|
||||||
|
|
@ -4745,7 +4757,7 @@ static void lcd_wizard_unload()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mmu_eject_fil_0();
|
mmu_eject_filament(0, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -5685,18 +5697,24 @@ static void fil_load_menu()
|
||||||
MENU_END();
|
MENU_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <uint8_t filament>
|
||||||
|
static void mmu_load_to_nozzle()
|
||||||
|
{
|
||||||
|
menu_back();
|
||||||
|
lcd_mmu_load_to_nozzle(filament);
|
||||||
|
}
|
||||||
|
|
||||||
static void mmu_load_to_nozzle_menu()
|
static void mmu_load_to_nozzle_menu()
|
||||||
{
|
{
|
||||||
//-//if (degHotend0() > EXTRUDE_MINTEMP)
|
|
||||||
if(bFilamentAction)
|
if(bFilamentAction)
|
||||||
{
|
{
|
||||||
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>);
|
||||||
MENU_ITEM_FUNCTION_P(_i("Load filament 2"), mmu_load_to_nozzle_1);
|
MENU_ITEM_FUNCTION_P(_i("Load filament 2"), mmu_load_to_nozzle<1>);
|
||||||
MENU_ITEM_FUNCTION_P(_i("Load filament 3"), mmu_load_to_nozzle_2);
|
MENU_ITEM_FUNCTION_P(_i("Load filament 3"), mmu_load_to_nozzle<2>);
|
||||||
MENU_ITEM_FUNCTION_P(_i("Load filament 4"), mmu_load_to_nozzle_3);
|
MENU_ITEM_FUNCTION_P(_i("Load filament 4"), mmu_load_to_nozzle<3>);
|
||||||
MENU_ITEM_FUNCTION_P(_i("Load filament 5"), mmu_load_to_nozzle_4);
|
MENU_ITEM_FUNCTION_P(_i("Load filament 5"), mmu_load_to_nozzle<4>);
|
||||||
MENU_END();
|
MENU_END();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -5711,22 +5729,61 @@ else {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <uint8_t filament>
|
||||||
|
static void mmu_eject_filament()
|
||||||
|
{
|
||||||
|
menu_back();
|
||||||
|
mmu_eject_filament(filament, true);
|
||||||
|
}
|
||||||
|
|
||||||
static void mmu_fil_eject_menu()
|
static void mmu_fil_eject_menu()
|
||||||
{
|
{
|
||||||
//-//if (degHotend0() > EXTRUDE_MINTEMP)
|
if(bFilamentAction)
|
||||||
|
{
|
||||||
|
MENU_BEGIN();
|
||||||
|
MENU_ITEM_BACK_P(_T(MSG_MAIN));
|
||||||
|
MENU_ITEM_FUNCTION_P(_i("Eject filament 1"), mmu_eject_filament<0>);
|
||||||
|
MENU_ITEM_FUNCTION_P(_i("Eject filament 2"), mmu_eject_filament<1>);
|
||||||
|
MENU_ITEM_FUNCTION_P(_i("Eject filament 3"), mmu_eject_filament<2>);
|
||||||
|
MENU_ITEM_FUNCTION_P(_i("Eject filament 4"), mmu_eject_filament<3>);
|
||||||
|
MENU_ITEM_FUNCTION_P(_i("Eject filament 5"), mmu_eject_filament<4>);
|
||||||
|
MENU_END();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
eFilamentAction=e_FILAMENT_ACTION_mmuEject;
|
||||||
|
bFilamentFirstRun=false;
|
||||||
|
if(target_temperature[0]>=EXTRUDE_MINTEMP)
|
||||||
|
{
|
||||||
|
bFilamentPreheatState=true;
|
||||||
|
mFilamentItem(target_temperature[0],target_temperature_bed);
|
||||||
|
}
|
||||||
|
else mFilamentMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <uint8_t filament>
|
||||||
|
static void mmu_cut_filament()
|
||||||
|
{
|
||||||
|
menu_back();
|
||||||
|
mmu_cut_filament(filament);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mmu_cut_filament_menu()
|
||||||
|
{
|
||||||
if(bFilamentAction)
|
if(bFilamentAction)
|
||||||
{
|
{
|
||||||
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("Cut filament 1"), mmu_cut_filament<0>);
|
||||||
MENU_ITEM_FUNCTION_P(_i("Eject filament 2"), mmu_eject_fil_1);
|
MENU_ITEM_FUNCTION_P(_i("Cut filament 2"), mmu_cut_filament<1>);
|
||||||
MENU_ITEM_FUNCTION_P(_i("Eject filament 3"), mmu_eject_fil_2);
|
MENU_ITEM_FUNCTION_P(_i("Cut filament 3"), mmu_cut_filament<2>);
|
||||||
MENU_ITEM_FUNCTION_P(_i("Eject filament 4"), mmu_eject_fil_3);
|
MENU_ITEM_FUNCTION_P(_i("Cut filament 4"), mmu_cut_filament<3>);
|
||||||
MENU_ITEM_FUNCTION_P(_i("Eject filament 5"), mmu_eject_fil_4);
|
MENU_ITEM_FUNCTION_P(_i("Cut filament 5"), mmu_cut_filament<4>);
|
||||||
MENU_END();
|
MENU_END();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
eFilamentAction=e_FILAMENT_ACTION_mmuEject;
|
eFilamentAction=e_FILAMENT_ACTION_mmuCut;
|
||||||
bFilamentFirstRun=false;
|
bFilamentFirstRun=false;
|
||||||
if(target_temperature[0]>=EXTRUDE_MINTEMP)
|
if(target_temperature[0]>=EXTRUDE_MINTEMP)
|
||||||
{
|
{
|
||||||
|
|
@ -6209,6 +6266,7 @@ static void lcd_main_menu()
|
||||||
//bFilamentFirstRun=true;
|
//bFilamentFirstRun=true;
|
||||||
MENU_ITEM_SUBMENU_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);
|
||||||
|
MENU_ITEM_SUBMENU_P(_i("Cut filament"), mmu_cut_filament_menu);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,16 @@ void extr_unload_used();
|
||||||
void extr_unload();
|
void extr_unload();
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{e_FILAMENT_ACTION_none,e_FILAMENT_ACTION_Load,e_FILAMENT_ACTION_autoLoad,e_FILAMENT_ACTION_unLoad,e_FILAMENT_ACTION_mmuLoad,e_FILAMENT_ACTION_mmuUnLoad,e_FILAMENT_ACTION_mmuEject} eFILAMENT_ACTION; // 'none' state is used as flag for (filament) autoLoad (i.e. opposite for 'autoLoad' state)
|
{
|
||||||
|
e_FILAMENT_ACTION_none, //!< 'none' state is used as flag for (filament) autoLoad (i.e. opposite for 'autoLoad' state)
|
||||||
|
e_FILAMENT_ACTION_Load,
|
||||||
|
e_FILAMENT_ACTION_autoLoad,
|
||||||
|
e_FILAMENT_ACTION_unLoad,
|
||||||
|
e_FILAMENT_ACTION_mmuLoad,
|
||||||
|
e_FILAMENT_ACTION_mmuUnLoad,
|
||||||
|
e_FILAMENT_ACTION_mmuEject,
|
||||||
|
e_FILAMENT_ACTION_mmuCut,
|
||||||
|
} eFILAMENT_ACTION;
|
||||||
extern eFILAMENT_ACTION eFilamentAction;
|
extern eFILAMENT_ACTION eFilamentAction;
|
||||||
extern bool bFilamentFirstRun;
|
extern bool bFilamentFirstRun;
|
||||||
extern bool bFilamentPreheatState;
|
extern bool bFilamentPreheatState;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue