@@ -1814,12 +1814,42 @@ bool bFilamentPreheatState;
1814
1814
bool bFilamentAction=false ;
1815
1815
static bool bFilamentWaitingFlag=false ;
1816
1816
1817
+ bool shouldPreheatOnlyNozzle () {
1818
+ uint8_t eeprom_setting = eeprom_read_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT);
1819
+ if (eeprom_setting != 0 )
1820
+ return false ;
1821
+
1822
+ switch (eFilamentAction) {
1823
+ case FilamentAction::Load:
1824
+ case FilamentAction::AutoLoad:
1825
+ case FilamentAction::UnLoad:
1826
+ case FilamentAction::MmuLoad:
1827
+ case FilamentAction::MmuUnLoad:
1828
+ case FilamentAction::MmuEject:
1829
+ case FilamentAction::MmuCut:
1830
+ return true ;
1831
+ default :
1832
+ return false ;
1833
+ }
1834
+ }
1835
+
1836
+ void lcd_print_target_temps_first_line (){
1837
+ lcd_set_cursor (0 , 0 );
1838
+ lcdui_print_temp (LCD_STR_THERMOMETER[0 ], (int ) degHotend (0 ), (int ) degTargetHotend (0 ));
1839
+ lcd_set_cursor (10 , 0 );
1840
+ int targetBedTemp = (int ) degTargetBed ();
1841
+ if (targetBedTemp) {
1842
+ lcdui_print_temp (LCD_STR_BEDTEMP[0 ], (int ) degBed (), targetBedTemp);
1843
+ } else {
1844
+ lcd_space (10 );
1845
+ }
1846
+ }
1847
+
1817
1848
static void mFilamentPrompt ()
1818
1849
{
1819
1850
uint8_t nLevel;
1820
1851
1821
- lcd_set_cursor (0 ,0 );
1822
- lcdui_print_temp (LCD_STR_THERMOMETER[0 ],(int )degHotend (0 ),(int )degTargetHotend (0 ));
1852
+ lcd_print_target_temps_first_line ();
1823
1853
lcd_puts_at_P (0 ,1 , _i (" Press the knob" )); // //MSG_PRESS_KNOB c=20
1824
1854
lcd_set_cursor (0 ,2 );
1825
1855
switch (eFilamentAction)
@@ -1875,14 +1905,10 @@ if(lcd_clicked())
1875
1905
1876
1906
void mFilamentItem (uint16_t nTemp, uint16_t nTempBed)
1877
1907
{
1878
- static int nTargetOld;
1879
- static int nTargetBedOld;
1880
1908
uint8_t nLevel;
1881
1909
1882
- nTargetOld = target_temperature[0 ];
1883
- nTargetBedOld = target_temperature_bed;
1884
- setTargetHotend0 ((float )nTemp);
1885
- setTargetBed ((float ) nTempBed);
1910
+ setTargetHotend0 ((float )nTemp);
1911
+ if (!shouldPreheatOnlyNozzle ()) setTargetBed ((float )nTempBed);
1886
1912
1887
1913
{
1888
1914
const FilamentAction action = eFilamentAction;
@@ -2010,8 +2036,7 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
2010
2036
}
2011
2037
2012
2038
if (bFilamentWaitingFlag) {
2013
- lcd_set_cursor (0 , 0 );
2014
- lcdui_print_temp (LCD_STR_THERMOMETER[0 ], (int ) degHotend (0 ), (int ) degTargetHotend (0 ));
2039
+ lcd_print_target_temps_first_line ();
2015
2040
}
2016
2041
2017
2042
if (lcd_clicked ())
@@ -2020,14 +2045,9 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
2020
2045
if (!bFilamentPreheatState)
2021
2046
{
2022
2047
setTargetHotend0 (0.0 );
2023
- setTargetBed (0.0 );
2048
+ if (!isPrintPaused) setTargetBed (0.0 );
2024
2049
menu_back ();
2025
2050
}
2026
- else
2027
- {
2028
- setTargetHotend0 ((float )nTargetOld);
2029
- setTargetBed ((float ) nTargetBedOld);
2030
- }
2031
2051
menu_back ();
2032
2052
if (eFilamentAction == FilamentAction::AutoLoad) eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
2033
2053
}
@@ -2126,15 +2146,16 @@ void lcd_generic_preheat_menu()
2126
2146
}
2127
2147
else
2128
2148
{
2129
- MENU_ITEM_SUBMENU_P (PSTR (" PLA - " STRINGIFY (PLA_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PLA_PREHEAT_HPB_TEMP)),mFilamentItem_PLA );
2130
- MENU_ITEM_SUBMENU_P (PSTR (" PET - " STRINGIFY (PET_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PET_PREHEAT_HPB_TEMP)),mFilamentItem_PET );
2131
- MENU_ITEM_SUBMENU_P (PSTR (" ASA - " STRINGIFY (ASA_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (ASA_PREHEAT_HPB_TEMP)),mFilamentItem_ASA );
2132
- MENU_ITEM_SUBMENU_P (PSTR (" PC - " STRINGIFY (PC_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PC_PREHEAT_HPB_TEMP)),mFilamentItem_PC );
2133
- MENU_ITEM_SUBMENU_P (PSTR (" PVB - " STRINGIFY (PVB_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PVB_PREHEAT_HPB_TEMP)),mFilamentItem_PVB );
2134
- MENU_ITEM_SUBMENU_P (PSTR (" ABS - " STRINGIFY (ABS_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (ABS_PREHEAT_HPB_TEMP)),mFilamentItem_ABS );
2135
- MENU_ITEM_SUBMENU_P (PSTR (" HIPS - " STRINGIFY (HIPS_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (HIPS_PREHEAT_HPB_TEMP)),mFilamentItem_HIPS );
2136
- MENU_ITEM_SUBMENU_P (PSTR (" PP - " STRINGIFY (PP_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PP_PREHEAT_HPB_TEMP)),mFilamentItem_PP );
2137
- MENU_ITEM_SUBMENU_P (PSTR (" FLEX - " STRINGIFY (FLEX_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (FLEX_PREHEAT_HPB_TEMP)),mFilamentItem_FLEX );
2149
+ bool bPreheatOnlyNozzle = shouldPreheatOnlyNozzle ();
2150
+ 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 );
2151
+ 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 );
2152
+ 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 );
2153
+ 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 );
2154
+ 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 );
2155
+ 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 );
2156
+ 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 );
2157
+ 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 );
2158
+ 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 );
2138
2159
}
2139
2160
if (!eeprom_read_byte ((uint8_t *)EEPROM_WIZARD_ACTIVE) && eFilamentAction == FilamentAction::Preheat) MENU_ITEM_FUNCTION_P (_T (MSG_COOLDOWN), lcd_cooldown);
2140
2161
MENU_END ();
@@ -5245,6 +5266,9 @@ static void lcd_settings_menu()
5245
5266
}
5246
5267
#endif // LCD_BL_PIN
5247
5268
5269
+ // ! Enables/disables the bed heating while heating the nozzle for loading/unloading filament
5270
+ 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);
5271
+
5248
5272
if (farm_mode)
5249
5273
{
5250
5274
MENU_ITEM_FUNCTION_P (PSTR (" Disable farm mode" ), lcd_disable_farm_mode);
@@ -8297,3 +8321,13 @@ void lcd_pinda_temp_compensation_toggle()
8297
8321
SERIAL_ECHOLN (pinda_temp_compensation);
8298
8322
}
8299
8323
#endif // PINDA_TEMP_COMP
8324
+
8325
+ void lcd_heat_bed_on_load_toggle ()
8326
+ {
8327
+ uint8_t value = eeprom_read_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT);
8328
+ if (value > 1 )
8329
+ value = 1 ;
8330
+ else
8331
+ value = !value;
8332
+ eeprom_update_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT, value);
8333
+ }
0 commit comments