@@ -2122,12 +2122,42 @@ bool bFilamentPreheatState;
2122
2122
bool bFilamentAction=false ;
2123
2123
static bool bFilamentWaitingFlag=false ;
2124
2124
2125
+ bool shouldPreheatOnlyNozzle () {
2126
+ uint8_t eeprom_setting = eeprom_read_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT);
2127
+ if (eeprom_setting != 0 )
2128
+ return false ;
2129
+
2130
+ switch (eFilamentAction) {
2131
+ case FilamentAction::Load:
2132
+ case FilamentAction::AutoLoad:
2133
+ case FilamentAction::UnLoad:
2134
+ case FilamentAction::MmuLoad:
2135
+ case FilamentAction::MmuUnLoad:
2136
+ case FilamentAction::MmuEject:
2137
+ case FilamentAction::MmuCut:
2138
+ return true ;
2139
+ default :
2140
+ return false ;
2141
+ }
2142
+ }
2143
+
2144
+ void lcd_print_target_temps_first_line (){
2145
+ lcd_set_cursor (0 , 0 );
2146
+ lcdui_print_temp (LCD_STR_THERMOMETER[0 ], (int ) degHotend (0 ), (int ) degTargetHotend (0 ));
2147
+ lcd_set_cursor (10 , 0 );
2148
+ int targetBedTemp = (int ) degTargetBed ();
2149
+ if (targetBedTemp) {
2150
+ lcdui_print_temp (LCD_STR_BEDTEMP[0 ], (int ) degBed (), targetBedTemp);
2151
+ } else {
2152
+ lcd_space (10 );
2153
+ }
2154
+ }
2155
+
2125
2156
static void mFilamentPrompt ()
2126
2157
{
2127
2158
uint8_t nLevel;
2128
2159
2129
- lcd_set_cursor (0 ,0 );
2130
- lcdui_print_temp (LCD_STR_THERMOMETER[0 ],(int )degHotend (0 ),(int )degTargetHotend (0 ));
2160
+ lcd_print_target_temps_first_line ();
2131
2161
lcd_puts_at_P (0 ,1 , _i (" Press the knob" )); // //MSG_PRESS_KNOB c=20
2132
2162
lcd_set_cursor (0 ,2 );
2133
2163
switch (eFilamentAction)
@@ -2183,14 +2213,10 @@ if(lcd_clicked())
2183
2213
2184
2214
void mFilamentItem (uint16_t nTemp, uint16_t nTempBed)
2185
2215
{
2186
- static int nTargetOld;
2187
- static int nTargetBedOld;
2188
2216
uint8_t nLevel;
2189
2217
2190
- nTargetOld = target_temperature[0 ];
2191
- nTargetBedOld = target_temperature_bed;
2192
- setTargetHotend0 ((float )nTemp);
2193
- setTargetBed ((float ) nTempBed);
2218
+ setTargetHotend0 ((float )nTemp);
2219
+ if (!shouldPreheatOnlyNozzle ()) setTargetBed ((float )nTempBed);
2194
2220
2195
2221
{
2196
2222
const FilamentAction action = eFilamentAction;
@@ -2317,23 +2343,17 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
2317
2343
}
2318
2344
}
2319
2345
2320
- lcd_set_cursor (0 , 0 );
2321
- lcdui_print_temp (LCD_STR_THERMOMETER[0 ], (int ) degHotend (0 ), (int ) degTargetHotend (0 ));
2346
+ lcd_print_target_temps_first_line ();
2322
2347
2323
2348
if (lcd_clicked ())
2324
2349
{
2325
2350
bFilamentWaitingFlag = false ;
2326
2351
if (!bFilamentPreheatState)
2327
2352
{
2328
2353
setTargetHotend0 (0.0 );
2329
- setTargetBed (0.0 );
2354
+ if (!isPrintPaused) setTargetBed (0.0 );
2330
2355
menu_back ();
2331
2356
}
2332
- else
2333
- {
2334
- setTargetHotend0 ((float )nTargetOld);
2335
- setTargetBed ((float ) nTargetBedOld);
2336
- }
2337
2357
menu_back ();
2338
2358
if (eFilamentAction == FilamentAction::AutoLoad) eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
2339
2359
}
@@ -2437,15 +2457,16 @@ void lcd_generic_preheat_menu()
2437
2457
}
2438
2458
else
2439
2459
{
2440
- MENU_ITEM_SUBMENU_P (PSTR (" PLA - " STRINGIFY (PLA_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PLA_PREHEAT_HPB_TEMP)),mFilamentItem_PLA );
2441
- MENU_ITEM_SUBMENU_P (PSTR (" PET - " STRINGIFY (PET_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PET_PREHEAT_HPB_TEMP)),mFilamentItem_PET );
2442
- MENU_ITEM_SUBMENU_P (PSTR (" ASA - " STRINGIFY (ASA_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (ASA_PREHEAT_HPB_TEMP)),mFilamentItem_ASA );
2443
- MENU_ITEM_SUBMENU_P (PSTR (" PC - " STRINGIFY (PC_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PC_PREHEAT_HPB_TEMP)),mFilamentItem_PC );
2444
- MENU_ITEM_SUBMENU_P (PSTR (" PVB - " STRINGIFY (PVB_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PVB_PREHEAT_HPB_TEMP)),mFilamentItem_PVB );
2445
- MENU_ITEM_SUBMENU_P (PSTR (" ABS - " STRINGIFY (ABS_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (ABS_PREHEAT_HPB_TEMP)),mFilamentItem_ABS );
2446
- MENU_ITEM_SUBMENU_P (PSTR (" HIPS - " STRINGIFY (HIPS_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (HIPS_PREHEAT_HPB_TEMP)),mFilamentItem_HIPS );
2447
- MENU_ITEM_SUBMENU_P (PSTR (" PP - " STRINGIFY (PP_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (PP_PREHEAT_HPB_TEMP)),mFilamentItem_PP );
2448
- MENU_ITEM_SUBMENU_P (PSTR (" FLEX - " STRINGIFY (FLEX_PREHEAT_HOTEND_TEMP) " /" STRINGIFY (FLEX_PREHEAT_HPB_TEMP)),mFilamentItem_FLEX );
2460
+ bool bPreheatOnlyNozzle = shouldPreheatOnlyNozzle ();
2461
+ 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 );
2462
+ 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 );
2463
+ 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 );
2464
+ 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 );
2465
+ 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 );
2466
+ 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 );
2467
+ 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 );
2468
+ 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 );
2469
+ 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 );
2449
2470
}
2450
2471
if (!eeprom_read_byte ((uint8_t *)EEPROM_WIZARD_ACTIVE) && eFilamentAction == FilamentAction::Preheat) MENU_ITEM_FUNCTION_P (_T (MSG_COOLDOWN), lcd_cooldown);
2451
2472
MENU_END ();
@@ -5726,6 +5747,9 @@ static void lcd_settings_menu()
5726
5747
}
5727
5748
#endif // LCD_BL_PIN
5728
5749
5750
+ // ! Enables/disables the bed heating while heating the nozzle for loading/unloading filament
5751
+ 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);
5752
+
5729
5753
if (farm_mode)
5730
5754
{
5731
5755
MENU_ITEM_FUNCTION_P (PSTR (" Disable farm mode" ), lcd_disable_farm_mode);
@@ -9007,3 +9031,13 @@ void lcd_pinda_temp_compensation_toggle()
9007
9031
SERIAL_ECHOLN (pinda_temp_compensation);
9008
9032
}
9009
9033
#endif // PINDA_TEMP_COMP
9034
+
9035
+ void lcd_heat_bed_on_load_toggle ()
9036
+ {
9037
+ uint8_t value = eeprom_read_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT);
9038
+ if (value > 1 )
9039
+ value = 1 ;
9040
+ else
9041
+ value = !value;
9042
+ eeprom_update_byte ((uint8_t *)EEPROM_HEAT_BED_ON_LOAD_FILAMENT, value);
9043
+ }
0 commit comments