Skip to content

Commit 571c5d0

Browse files
committed
Implement fade height #197
1 parent e45ca20 commit 571c5d0

File tree

4 files changed

+14
-116
lines changed

4 files changed

+14
-116
lines changed

Marlin/src/lcd/extui/lib/dgus_creality/DGUSScreenHandler.cpp

+8-116
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,14 @@ void DGUSScreenHandler::HandleFeedAmountChanged(DGUS_VP_Variable &var, void *val
11821182

11831183
ScreenHandler.skipVP = var.VP; // don't overwrite value the next update time as the display might autoincrement in parallel
11841184
return;
1185-
}
1185+
}
1186+
1187+
void DGUSScreenHandler::HandleFadeHeight(DGUS_VP_Variable &var, void *val_ptr) {
1188+
DGUSLCD_SetFloatAsIntFromDisplay<1>(var, val_ptr);
1189+
1190+
RequestSaveSettings();
1191+
return;
1192+
}
11861193

11871194
void DGUSScreenHandler::HandlePositionChange(DGUS_VP_Variable &var, void *val_ptr) {
11881195
DEBUG_ECHOLNPGM("HandlePositionChange");
@@ -1259,121 +1266,6 @@ void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr
12591266
*(int16_t*)var.memadr = *(int16_t*)var.memadr > 0 ? 0 : preheat_temp;
12601267
}
12611268

1262-
#if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
1263-
1264-
typedef struct {
1265-
ExtUI::extruder_t extruder; // which extruder to operate
1266-
uint8_t action; // load or unload
1267-
bool heated; // heating done ?
1268-
float purge_length; // the length to extrude before unload, prevent filament jam
1269-
} filament_data_t;
1270-
1271-
static filament_data_t filament_data;
1272-
1273-
void DGUSScreenHandler::HandleFilamentOption(DGUS_VP_Variable &var, void *val_ptr) {
1274-
DEBUG_ECHOLNPGM("HandleFilamentOption");
1275-
1276-
uint8_t e_temp = 0;
1277-
filament_data.heated = false;
1278-
uint16_t preheat_option = swap16(*(uint16_t*)val_ptr);
1279-
if (preheat_option <= 8) // Load filament type
1280-
filament_data.action = 1;
1281-
else if (preheat_option >= 10) { // Unload filament type
1282-
preheat_option -= 10;
1283-
filament_data.action = 2;
1284-
filament_data.purge_length = DGUS_FILAMENT_PURGE_LENGTH;
1285-
}
1286-
else // Cancel filament operation
1287-
filament_data.action = 0;
1288-
1289-
switch (preheat_option) {
1290-
case 0: // Load PLA
1291-
#ifdef PREHEAT_1_TEMP_HOTEND
1292-
e_temp = PREHEAT_1_TEMP_HOTEND;
1293-
#endif
1294-
break;
1295-
case 1: // Load ABS
1296-
TERN_(PREHEAT_2_TEMP_HOTEND, e_temp = PREHEAT_2_TEMP_HOTEND);
1297-
break;
1298-
case 2: // Load PET
1299-
#ifdef PREHEAT_3_TEMP_HOTEND
1300-
e_temp = PREHEAT_3_TEMP_HOTEND;
1301-
#endif
1302-
break;
1303-
case 3: // Load FLEX
1304-
#ifdef PREHEAT_4_TEMP_HOTEND
1305-
e_temp = PREHEAT_4_TEMP_HOTEND;
1306-
#endif
1307-
break;
1308-
case 9: // Cool down
1309-
default:
1310-
e_temp = 0;
1311-
break;
1312-
}
1313-
1314-
if (filament_data.action == 0) { // Go back to utility screen
1315-
#if HOTENDS >= 1
1316-
thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E0);
1317-
#endif
1318-
#if HOTENDS >= 2
1319-
thermalManager.setTargetHotend(e_temp, ExtUI::extruder_t::E1);
1320-
#endif
1321-
GotoScreen(DGUSLCD_SCREEN_UTILITY);
1322-
}
1323-
else { // Go to the preheat screen to show the heating progress
1324-
switch (var.VP) {
1325-
default: return;
1326-
#if HOTENDS >= 1
1327-
case VP_E0_FILAMENT_LOAD_UNLOAD:
1328-
filament_data.extruder = ExtUI::extruder_t::E0;
1329-
thermalManager.setTargetHotend(e_temp, filament_data.extruder);
1330-
break;
1331-
#endif
1332-
#if HOTENDS >= 2
1333-
case VP_E1_FILAMENT_LOAD_UNLOAD:
1334-
filament_data.extruder = ExtUI::extruder_t::E1;
1335-
thermalManager.setTargetHotend(e_temp, filament_data.extruder);
1336-
break;
1337-
#endif
1338-
}
1339-
GotoScreen(DGUSLCD_SCREEN_FILAMENT_HEATING);
1340-
}
1341-
}
1342-
1343-
void DGUSScreenHandler::HandleFilamentLoadUnload(DGUS_VP_Variable &var) {
1344-
DEBUG_ECHOLNPGM("HandleFilamentLoadUnload");
1345-
if (filament_data.action <= 0) return;
1346-
1347-
// If we close to the target temperature, we can start load or unload the filament
1348-
if (thermalManager.hotEnoughToExtrude(filament_data.extruder) && \
1349-
thermalManager.targetHotEnoughToExtrude(filament_data.extruder)) {
1350-
float movevalue = DGUS_FILAMENT_LOAD_LENGTH_PER_TIME;
1351-
1352-
if (filament_data.action == 1) { // load filament
1353-
if (!filament_data.heated) {
1354-
GotoScreen(DGUSLCD_SCREEN_FILAMENT_LOADING);
1355-
filament_data.heated = true;
1356-
}
1357-
movevalue = ExtUI::getAxisPosition_mm(filament_data.extruder)+movevalue;
1358-
}
1359-
else { // unload filament
1360-
if (!filament_data.heated) {
1361-
GotoScreen(DGUSLCD_SCREEN_FILAMENT_UNLOADING);
1362-
filament_data.heated = true;
1363-
}
1364-
// Before unloading extrude to prevent jamming
1365-
if (filament_data.purge_length >= 0) {
1366-
movevalue = ExtUI::getAxisPosition_mm(filament_data.extruder) + movevalue;
1367-
filament_data.purge_length -= movevalue;
1368-
}
1369-
else
1370-
movevalue = ExtUI::getAxisPosition_mm(filament_data.extruder) - movevalue;
1371-
}
1372-
ExtUI::setAxisPosition_mm(movevalue, filament_data.extruder);
1373-
}
1374-
}
1375-
#endif
1376-
13771269
void DGUSScreenHandler::HandleLEDToggle() {
13781270
bool newState = !caselight.on;
13791271

Marlin/src/lcd/extui/lib/dgus_creality/DGUSScreenHandler.h

+1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ class DGUSScreenHandler {
9595
static void HandleStepPerMMChanged(DGUS_VP_Variable &var, void *val_ptr);
9696
static void HandleStepPerMMExtruderChanged(DGUS_VP_Variable &var, void *val_ptr);
9797
static void HandleFeedAmountChanged(DGUS_VP_Variable &var, void *val_ptr);
98+
static void HandleFadeHeight(DGUS_VP_Variable &var, void *val_ptr);
9899

99100
// Hook for move to position
100101
static void HandlePositionChange(DGUS_VP_Variable &var, void *val_ptr);

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/DGUSDisplayDef.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ const uint16_t VPList_LevelingSettings[] PROGMEM = {
289289
VP_TOGGLE_PROBE_PREHEAT_HOTEND_TEMP,
290290
VP_TOGGLE_PROBE_PREHEAT_BED_TEMP,
291291
VP_TOGGLE_POST_PROBING_TEMPERATURE_STABILIZATION_ICON,
292+
VP_LEVELING_FADE_HEIGHT,
292293

293294
0x0000
294295
};
@@ -588,6 +589,8 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
588589
VPHELPER(VP_TOGGLE_PROBE_PREHEAT_HOTEND_TEMP, &probe.settings.preheat_hotend_temp, ScreenHandler.HandleToggleProbePreheatTemp, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
589590
VPHELPER(VP_TOGGLE_PROBE_PREHEAT_BED_TEMP, &probe.settings.preheat_bed_temp, ScreenHandler.HandleToggleProbePreheatTemp, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
590591

592+
VPHELPER(VP_LEVELING_FADE_HEIGHT, &planner.z_fade_height, ScreenHandler.HandleFadeHeight, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
593+
591594
VPHELPER(VP_TOGGLE_PROBE_SETTINGS_NAV_BUTTON, nullptr, (ScreenHandler.DGUSLCD_NavigateToPage<DGUSLCD_SCREEN_LEVELING_SETTINGS>), nullptr),
592595
#endif
593596

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/DGUSDisplayDef.h

+2
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,8 @@ constexpr uint16_t VP_TOGGLE_PROBE_SETTINGS_NAV_BUTTON = 0x22C9;
460460
constexpr uint16_t VP_TOGGLE_POST_PROBING_TEMPERATURE_STABILIZATION_ICON = 0x22CD;
461461
constexpr uint16_t VP_TOGGLE_POST_PROBING_TEMPERATURE_STABILIZATION_BUTTON = 0x22CF;
462462

463+
constexpr uint16_t VP_LEVELING_FADE_HEIGHT = 0x231D;
464+
463465
// E-steps calibration
464466
constexpr uint16_t VP_ESTEPS_CURRENT = 0x229d;
465467
constexpr uint16_t VP_ESTEPS_CALIBRATION_TEMP = 0x229f;

0 commit comments

Comments
 (0)