@@ -1769,12 +1769,42 @@ bool bFilamentPreheatState;
1769
1769
bool bFilamentAction=false ;
1770
1770
static bool bFilamentWaitingFlag=false ;
1771
1771
1772
+ bool shouldPreheatOnlyNozzle () {
1773
+ uint8_t eeprom_setting = eeprom_read_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT);
1774
+ if (eeprom_setting != 0 )
1775
+ return false ;
1776
+
1777
+ switch (eFilamentAction) {
1778
+ case FilamentAction::Load:
1779
+ case FilamentAction::AutoLoad:
1780
+ case FilamentAction::UnLoad:
1781
+ case FilamentAction::MmuLoad:
1782
+ case FilamentAction::MmuUnLoad:
1783
+ case FilamentAction::MmuEject:
1784
+ case FilamentAction::MmuCut:
1785
+ return true ;
1786
+ default :
1787
+ return false ;
1788
+ }
1789
+ }
1790
+
1791
+ void lcd_print_target_temps_first_line (){
1792
+ lcd_set_cursor (0 , 0 );
1793
+ lcdui_print_temp (LCD_STR_THERMOMETER[0 ], (int ) degHotend (0 ), (int ) degTargetHotend (0 ));
1794
+ lcd_set_cursor (10 , 0 );
1795
+ int targetBedTemp = (int ) degTargetBed ();
1796
+ if (targetBedTemp) {
1797
+ lcdui_print_temp (LCD_STR_BEDTEMP[0 ], (int ) degBed (), targetBedTemp);
1798
+ } else {
1799
+ lcd_space (10 );
1800
+ }
1801
+ }
1802
+
1772
1803
static void mFilamentPrompt ()
1773
1804
{
1774
1805
uint8_t nLevel;
1775
1806
1776
- lcd_set_cursor (0 ,0 );
1777
- lcdui_print_temp (LCD_STR_THERMOMETER[0 ],(int )degHotend (0 ),(int )degTargetHotend (0 ));
1807
+ lcd_print_target_temps_first_line ();
1778
1808
lcd_puts_at_P (0 ,1 , _i (" Press the knob" )); // //MSG_PRESS_KNOB c=20
1779
1809
lcd_set_cursor (0 ,2 );
1780
1810
switch (eFilamentAction)
@@ -1836,14 +1866,10 @@ switch(eFilamentAction)
1836
1866
1837
1867
void mFilamentItem (uint16_t nTemp, uint16_t nTempBed)
1838
1868
{
1839
- static int nTargetOld;
1840
- static int nTargetBedOld;
1841
1869
uint8_t nLevel;
1842
1870
1843
- nTargetOld = target_temperature[0 ];
1844
- nTargetBedOld = target_temperature_bed;
1845
- setTargetHotend0 ((float )nTemp);
1846
- setTargetBed ((float ) nTempBed);
1871
+ setTargetHotend0 ((float )nTemp);
1872
+ if (!shouldPreheatOnlyNozzle ()) setTargetBed ((float )nTempBed);
1847
1873
1848
1874
{
1849
1875
const FilamentAction action = eFilamentAction;
@@ -1978,8 +2004,7 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
1978
2004
}
1979
2005
1980
2006
if (bFilamentWaitingFlag) {
1981
- lcd_set_cursor (0 , 0 );
1982
- lcdui_print_temp (LCD_STR_THERMOMETER[0 ], (int ) degHotend (0 ), (int ) degTargetHotend (0 ));
2007
+ lcd_print_target_temps_first_line ();
1983
2008
}
1984
2009
1985
2010
if (lcd_clicked ())
@@ -1988,14 +2013,9 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
1988
2013
if (!bFilamentPreheatState)
1989
2014
{
1990
2015
setTargetHotend0 (0.0 );
1991
- setTargetBed (0.0 );
2016
+ if (!isPrintPaused) setTargetBed (0.0 );
1992
2017
menu_back ();
1993
2018
}
1994
- else
1995
- {
1996
- setTargetHotend0 ((float )nTargetOld);
1997
- setTargetBed ((float ) nTargetBedOld);
1998
- }
1999
2019
menu_back ();
2000
2020
if (eFilamentAction == FilamentAction::AutoLoad) eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
2001
2021
}
@@ -2094,15 +2114,16 @@ void lcd_generic_preheat_menu()
2094
2114
}
2095
2115
else
2096
2116
{
2097
- MENU_ITEM_SUBMENU_P (PSTR (" PLA - " STRINGIFY (PLA_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PLA_PREHEAT_HPB_TEMP)),mFilamentItem_PLA );
2098
- MENU_ITEM_SUBMENU_P (PSTR (" PET - " STRINGIFY (PET_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PET_PREHEAT_HPB_TEMP)),mFilamentItem_PET );
2099
- MENU_ITEM_SUBMENU_P (PSTR (" ASA - " STRINGIFY (ASA_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (ASA_PREHEAT_HPB_TEMP)),mFilamentItem_ASA );
2100
- MENU_ITEM_SUBMENU_P (PSTR (" PC - " STRINGIFY (PC_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PC_PREHEAT_HPB_TEMP)),mFilamentItem_PC );
2101
- MENU_ITEM_SUBMENU_P (PSTR (" PVB - " STRINGIFY (PVB_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PVB_PREHEAT_HPB_TEMP)),mFilamentItem_PVB );
2102
- MENU_ITEM_SUBMENU_P (PSTR (" ABS - " STRINGIFY (ABS_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (ABS_PREHEAT_HPB_TEMP)),mFilamentItem_ABS );
2103
- MENU_ITEM_SUBMENU_P (PSTR (" HIPS - " STRINGIFY (HIPS_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (HIPS_PREHEAT_HPB_TEMP)),mFilamentItem_HIPS );
2104
- MENU_ITEM_SUBMENU_P (PSTR (" PP - " STRINGIFY (PP_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PP_PREHEAT_HPB_TEMP)),mFilamentItem_PP );
2105
- MENU_ITEM_SUBMENU_P (PSTR (" FLEX - " STRINGIFY (FLEX_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (FLEX_PREHEAT_HPB_TEMP)),mFilamentItem_FLEX );
2117
+ bool bPreheatOnlyNozzle = shouldPreheatOnlyNozzle ();
2118
+ MENU_ITEM_SUBMENU_P (bPreheatOnlyNozzle ? PSTR (" PLA - " STRINGIFY (PLA_PREHEAT_HOTEND_TEMP)) : PSTR (" PLA - " STRINGIFY (PLA_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PLA_PREHEAT_HPB_TEMP)) , mFilamentItem_PLA );
2119
+ MENU_ITEM_SUBMENU_P (bPreheatOnlyNozzle ? PSTR (" PET - " STRINGIFY (PET_PREHEAT_HOTEND_TEMP)) : PSTR (" PET - " STRINGIFY (PET_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PET_PREHEAT_HPB_TEMP)) , mFilamentItem_PET );
2120
+ MENU_ITEM_SUBMENU_P (bPreheatOnlyNozzle ? PSTR (" ASA - " STRINGIFY (ASA_PREHEAT_HOTEND_TEMP)) : PSTR (" ASA - " STRINGIFY (ASA_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (ASA_PREHEAT_HPB_TEMP)) , mFilamentItem_ASA );
2121
+ MENU_ITEM_SUBMENU_P (bPreheatOnlyNozzle ? PSTR (" PC - " STRINGIFY (PC_PREHEAT_HOTEND_TEMP)) : PSTR (" PC - " STRINGIFY (PC_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PC_PREHEAT_HPB_TEMP)) , mFilamentItem_PC );
2122
+ MENU_ITEM_SUBMENU_P (bPreheatOnlyNozzle ? PSTR (" PVB - " STRINGIFY (PVB_PREHEAT_HOTEND_TEMP)) : PSTR (" PVB - " STRINGIFY (PVB_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PVB_PREHEAT_HPB_TEMP)) , mFilamentItem_PVB );
2123
+ MENU_ITEM_SUBMENU_P (bPreheatOnlyNozzle ? PSTR (" ABS - " STRINGIFY (ABS_PREHEAT_HOTEND_TEMP)) : PSTR (" ABS - " STRINGIFY (ABS_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (ABS_PREHEAT_HPB_TEMP)) , mFilamentItem_ABS );
2124
+ MENU_ITEM_SUBMENU_P (bPreheatOnlyNozzle ? PSTR (" HIPS - " STRINGIFY (HIPS_PREHEAT_HOTEND_TEMP)): PSTR (" HIPS - " STRINGIFY (HIPS_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (HIPS_PREHEAT_HPB_TEMP)), mFilamentItem_HIPS );
2125
+ MENU_ITEM_SUBMENU_P (bPreheatOnlyNozzle ? PSTR (" PP - " STRINGIFY (PP_PREHEAT_HOTEND_TEMP)) : PSTR (" PP - " STRINGIFY (PP_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PP_PREHEAT_HPB_TEMP)) , mFilamentItem_PP );
2126
+ MENU_ITEM_SUBMENU_P (bPreheatOnlyNozzle ? PSTR (" FLEX - " STRINGIFY (FLEX_PREHEAT_HOTEND_TEMP)): PSTR (" FLEX - " STRINGIFY (FLEX_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (FLEX_PREHEAT_HPB_TEMP)), mFilamentItem_FLEX );
2106
2127
}
2107
2128
if (!eeprom_read_byte ((uint8_t *)EEPROM_WIZARD_ACTIVE) && eFilamentAction == FilamentAction::Preheat) MENU_ITEM_FUNCTION_P (_T (MSG_COOLDOWN), lcd_cooldown);
2108
2129
MENU_END ();
@@ -4637,6 +4658,9 @@ static void lcd_settings_menu()
4637
4658
}
4638
4659
#endif // LCD_BL_PIN
4639
4660
4661
+ // ! Enables/disables the bed heating while heating the nozzle for loading/unloading filament
4662
+ MENU_ITEM_TOGGLE_P (_N (" HeatBedOnLoad" ), eeprom_read_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT) ? _T (MSG_YES) : _T (MSG_NO), lcd_heat_bed_on_load_toggle);
4663
+
4640
4664
if (farm_mode)
4641
4665
{
4642
4666
MENU_ITEM_FUNCTION_P (PSTR (" Disable farm mode" ), lcd_disable_farm_mode);
@@ -7672,3 +7696,13 @@ void lcd_pinda_temp_compensation_toggle()
7672
7696
SERIAL_ECHOLN (pinda_temp_compensation);
7673
7697
}
7674
7698
#endif // PINDA_TEMP_COMP
7699
+
7700
+ void lcd_heat_bed_on_load_toggle ()
7701
+ {
7702
+ uint8_t value = eeprom_read_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT);
7703
+ if (value > 1 )
7704
+ value = 1 ;
7705
+ else
7706
+ value = !value;
7707
+ eeprom_update_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT, value);
7708
+ }
0 commit comments