|
@@ -191,16 +191,12 @@ constexpr float default_max_acceleration[] = DEFAULT_MAX_ACCELERATION;
|
191
|
191
|
constexpr float default_max_jerk[] = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK };
|
192
|
192
|
#endif
|
193
|
193
|
|
194
|
|
-uint8_t Percentrecord = 0;
|
195
|
|
-uint16_t remain_time = 0;
|
|
194
|
+static uint8_t _card_percent = 0;
|
|
195
|
+static uint16_t _remain_time = 0;
|
196
|
196
|
|
197
|
197
|
#if ENABLED(PAUSE_HEAT)
|
198
|
|
- #if HAS_HOTEND
|
199
|
|
- uint16_t temphot = 0;
|
200
|
|
- #endif
|
201
|
|
- #if HAS_HEATED_BED
|
202
|
|
- uint16_t tempbed = 0;
|
203
|
|
- #endif
|
|
198
|
+ TERN_(HAS_HOTEND, uint16_t resume_hotend_temp = 0);
|
|
199
|
+ TERN_(HAS_HEATED_BED, uint16_t resume_bed_temp = 0);
|
204
|
200
|
#endif
|
205
|
201
|
|
206
|
202
|
#if HAS_ZOFFSET_ITEM
|
|
@@ -1081,8 +1077,8 @@ void Draw_Printing_Screen() {
|
1081
|
1077
|
|
1082
|
1078
|
void Draw_Print_ProgressBar() {
|
1083
|
1079
|
DWIN_ICON_Show(ICON, ICON_Bar, 15, 93);
|
1084
|
|
- DWIN_Draw_Rectangle(1, BarFill_Color, 16 + Percentrecord * 240 / 100, 93, 256, 113);
|
1085
|
|
- DWIN_Draw_IntValue(true, true, 0, font8x16, Percent_Color, Color_Bg_Black, 2, 117, 133, Percentrecord);
|
|
1080
|
+ DWIN_Draw_Rectangle(1, BarFill_Color, 16 + _card_percent * 240 / 100, 93, 256, 113);
|
|
1081
|
+ DWIN_Draw_IntValue(true, true, 0, font8x16, Percent_Color, Color_Bg_Black, 2, 117, 133, _card_percent);
|
1086
|
1082
|
DWIN_Draw_String(false, false, font8x16, Percent_Color, Color_Bg_Black, 133, 133, F("%"));
|
1087
|
1083
|
}
|
1088
|
1084
|
|
|
@@ -1094,9 +1090,9 @@ void Draw_Print_ProgressElapsed() {
|
1094
|
1090
|
}
|
1095
|
1091
|
|
1096
|
1092
|
void Draw_Print_ProgressRemain() {
|
1097
|
|
- DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, 176, 212, remain_time / 3600);
|
|
1093
|
+ DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, 176, 212, _remain_time / 3600);
|
1098
|
1094
|
DWIN_Draw_String(false, false, font8x16, Color_White, Color_Bg_Black, 192, 212, F(":"));
|
1099
|
|
- DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, 200, 212, (remain_time % 3600) / 60);
|
|
1095
|
+ DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, 200, 212, (_remain_time % 3600) / 60);
|
1100
|
1096
|
}
|
1101
|
1097
|
|
1102
|
1098
|
void Goto_PrintProcess() {
|
|
@@ -1158,10 +1154,10 @@ inline ENCODER_DiffState get_encoder_state() {
|
1158
|
1154
|
void HMI_Move_X() {
|
1159
|
1155
|
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
|
1160
|
1156
|
if (encoder_diffState != ENCODER_DIFF_NO) {
|
1161
|
|
- if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_X_scale)) {
|
|
1157
|
+ if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_X_scaled)) {
|
1162
|
1158
|
checkkey = AxisMove;
|
1163
|
1159
|
EncoderRate.enabled = false;
|
1164
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
|
|
1160
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scaled);
|
1165
|
1161
|
if (!planner.is_full()) {
|
1166
|
1162
|
// Wait for planner moves to finish!
|
1167
|
1163
|
planner.synchronize();
|
|
@@ -1170,10 +1166,9 @@ void HMI_Move_X() {
|
1170
|
1166
|
DWIN_UpdateLCD();
|
1171
|
1167
|
return;
|
1172
|
1168
|
}
|
1173
|
|
- NOLESS(HMI_ValueStruct.Move_X_scale, (X_MIN_POS) * MINUNITMULT);
|
1174
|
|
- NOMORE(HMI_ValueStruct.Move_X_scale, (X_MAX_POS) * MINUNITMULT);
|
1175
|
|
- current_position.x = HMI_ValueStruct.Move_X_scale / MINUNITMULT;
|
1176
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
|
|
1169
|
+ LIMIT(HMI_ValueStruct.Move_X_scaled, (X_MIN_POS) * MINUNITMULT, (X_MAX_POS) * MINUNITMULT);
|
|
1170
|
+ current_position.x = HMI_ValueStruct.Move_X_scaled / MINUNITMULT;
|
|
1171
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(1), HMI_ValueStruct.Move_X_scaled);
|
1177
|
1172
|
DWIN_UpdateLCD();
|
1178
|
1173
|
}
|
1179
|
1174
|
}
|
|
@@ -1181,10 +1176,10 @@ void HMI_Move_X() {
|
1181
|
1176
|
void HMI_Move_Y() {
|
1182
|
1177
|
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
|
1183
|
1178
|
if (encoder_diffState != ENCODER_DIFF_NO) {
|
1184
|
|
- if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Y_scale)) {
|
|
1179
|
+ if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Y_scaled)) {
|
1185
|
1180
|
checkkey = AxisMove;
|
1186
|
1181
|
EncoderRate.enabled = false;
|
1187
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
|
|
1182
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scaled);
|
1188
|
1183
|
if (!planner.is_full()) {
|
1189
|
1184
|
// Wait for planner moves to finish!
|
1190
|
1185
|
planner.synchronize();
|
|
@@ -1193,10 +1188,9 @@ void HMI_Move_Y() {
|
1193
|
1188
|
DWIN_UpdateLCD();
|
1194
|
1189
|
return;
|
1195
|
1190
|
}
|
1196
|
|
- NOLESS(HMI_ValueStruct.Move_Y_scale, (Y_MIN_POS) * MINUNITMULT);
|
1197
|
|
- NOMORE(HMI_ValueStruct.Move_Y_scale, (Y_MAX_POS) * MINUNITMULT);
|
1198
|
|
- current_position.y = HMI_ValueStruct.Move_Y_scale / MINUNITMULT;
|
1199
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
|
|
1191
|
+ LIMIT(HMI_ValueStruct.Move_Y_scaled, (Y_MIN_POS) * MINUNITMULT, (Y_MAX_POS) * MINUNITMULT);
|
|
1192
|
+ current_position.y = HMI_ValueStruct.Move_Y_scaled / MINUNITMULT;
|
|
1193
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(2), HMI_ValueStruct.Move_Y_scaled);
|
1200
|
1194
|
DWIN_UpdateLCD();
|
1201
|
1195
|
}
|
1202
|
1196
|
}
|
|
@@ -1204,10 +1198,10 @@ void HMI_Move_Y() {
|
1204
|
1198
|
void HMI_Move_Z() {
|
1205
|
1199
|
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
|
1206
|
1200
|
if (encoder_diffState != ENCODER_DIFF_NO) {
|
1207
|
|
- if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Z_scale)) {
|
|
1201
|
+ if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Z_scaled)) {
|
1208
|
1202
|
checkkey = AxisMove;
|
1209
|
1203
|
EncoderRate.enabled = false;
|
1210
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
|
|
1204
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(3), HMI_ValueStruct.Move_Z_scaled);
|
1211
|
1205
|
if (!planner.is_full()) {
|
1212
|
1206
|
// Wait for planner moves to finish!
|
1213
|
1207
|
planner.synchronize();
|
|
@@ -1216,10 +1210,9 @@ void HMI_Move_Z() {
|
1216
|
1210
|
DWIN_UpdateLCD();
|
1217
|
1211
|
return;
|
1218
|
1212
|
}
|
1219
|
|
- NOLESS(HMI_ValueStruct.Move_Z_scale, Z_MIN_POS * MINUNITMULT);
|
1220
|
|
- NOMORE(HMI_ValueStruct.Move_Z_scale, Z_MAX_POS * MINUNITMULT);
|
1221
|
|
- current_position.z = HMI_ValueStruct.Move_Z_scale / MINUNITMULT;
|
1222
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
|
|
1213
|
+ LIMIT(HMI_ValueStruct.Move_Z_scaled, Z_MIN_POS * MINUNITMULT, Z_MAX_POS * MINUNITMULT);
|
|
1214
|
+ current_position.z = HMI_ValueStruct.Move_Z_scaled / MINUNITMULT;
|
|
1215
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(3), HMI_ValueStruct.Move_Z_scaled);
|
1223
|
1216
|
DWIN_UpdateLCD();
|
1224
|
1217
|
}
|
1225
|
1218
|
}
|
|
@@ -1227,14 +1220,14 @@ void HMI_Move_Z() {
|
1227
|
1220
|
#if HAS_HOTEND
|
1228
|
1221
|
|
1229
|
1222
|
void HMI_Move_E() {
|
1230
|
|
- static float last_E_scale = 0;
|
|
1223
|
+ static float last_E_scaled = 0;
|
1231
|
1224
|
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
|
1232
|
1225
|
if (encoder_diffState != ENCODER_DIFF_NO) {
|
1233
|
|
- if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_E_scale)) {
|
|
1226
|
+ if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_E_scaled)) {
|
1234
|
1227
|
checkkey = AxisMove;
|
1235
|
1228
|
EncoderRate.enabled = false;
|
1236
|
|
- last_E_scale = HMI_ValueStruct.Move_E_scale;
|
1237
|
|
- DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
|
|
1229
|
+ last_E_scaled = HMI_ValueStruct.Move_E_scaled;
|
|
1230
|
+ DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(4), HMI_ValueStruct.Move_E_scaled);
|
1238
|
1231
|
if (!planner.is_full()) {
|
1239
|
1232
|
planner.synchronize(); // Wait for planner moves to finish!
|
1240
|
1233
|
planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder);
|
|
@@ -1242,12 +1235,12 @@ void HMI_Move_Z() {
|
1242
|
1235
|
DWIN_UpdateLCD();
|
1243
|
1236
|
return;
|
1244
|
1237
|
}
|
1245
|
|
- if ((HMI_ValueStruct.Move_E_scale - last_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
|
1246
|
|
- HMI_ValueStruct.Move_E_scale = last_E_scale + (EXTRUDE_MAXLENGTH) * MINUNITMULT;
|
1247
|
|
- else if ((last_E_scale - HMI_ValueStruct.Move_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
|
1248
|
|
- HMI_ValueStruct.Move_E_scale = last_E_scale - (EXTRUDE_MAXLENGTH) * MINUNITMULT;
|
1249
|
|
- current_position.e = HMI_ValueStruct.Move_E_scale / MINUNITMULT;
|
1250
|
|
- DWIN_Draw_Signed_Float(font8x16, Select_Color, 3, UNITFDIGITS, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
|
|
1238
|
+ if ((HMI_ValueStruct.Move_E_scaled - last_E_scaled) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
|
|
1239
|
+ HMI_ValueStruct.Move_E_scaled = last_E_scaled + (EXTRUDE_MAXLENGTH) * MINUNITMULT;
|
|
1240
|
+ else if ((last_E_scaled - HMI_ValueStruct.Move_E_scaled) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
|
|
1241
|
+ HMI_ValueStruct.Move_E_scaled = last_E_scaled - (EXTRUDE_MAXLENGTH) * MINUNITMULT;
|
|
1242
|
+ current_position.e = HMI_ValueStruct.Move_E_scaled / MINUNITMULT;
|
|
1243
|
+ DWIN_Draw_Signed_Float(font8x16, Select_Color, 3, UNITFDIGITS, 216, MBASE(4), HMI_ValueStruct.Move_E_scaled);
|
1251
|
1244
|
DWIN_UpdateLCD();
|
1252
|
1245
|
}
|
1253
|
1246
|
}
|
|
@@ -1277,8 +1270,7 @@ void HMI_Move_Z() {
|
1277
|
1270
|
DWIN_UpdateLCD();
|
1278
|
1271
|
return;
|
1279
|
1272
|
}
|
1280
|
|
- NOLESS(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MIN) * 100);
|
1281
|
|
- NOMORE(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MAX) * 100);
|
|
1273
|
+ LIMIT(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MIN) * 100, (Z_PROBE_OFFSET_RANGE_MAX) * 100);
|
1282
|
1274
|
last_zoffset = dwin_zoffset;
|
1283
|
1275
|
dwin_zoffset = HMI_ValueStruct.offset_value / 100.0f;
|
1284
|
1276
|
#if EITHER(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP)
|
|
@@ -1326,8 +1318,7 @@ void HMI_Move_Z() {
|
1326
|
1318
|
return;
|
1327
|
1319
|
}
|
1328
|
1320
|
// E_Temp limit
|
1329
|
|
- NOMORE(HMI_ValueStruct.E_Temp, MAX_E_TEMP);
|
1330
|
|
- NOLESS(HMI_ValueStruct.E_Temp, MIN_E_TEMP);
|
|
1321
|
+ LIMIT(HMI_ValueStruct.E_Temp, MIN_E_TEMP, MAX_E_TEMP);
|
1331
|
1322
|
// E_Temp value
|
1332
|
1323
|
DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(temp_line), HMI_ValueStruct.E_Temp);
|
1333
|
1324
|
}
|
|
@@ -1370,8 +1361,7 @@ void HMI_Move_Z() {
|
1370
|
1361
|
return;
|
1371
|
1362
|
}
|
1372
|
1363
|
// Bed_Temp limit
|
1373
|
|
- NOMORE(HMI_ValueStruct.Bed_Temp, BED_MAX_TARGET);
|
1374
|
|
- NOLESS(HMI_ValueStruct.Bed_Temp, MIN_BED_TEMP);
|
|
1364
|
+ LIMIT(HMI_ValueStruct.Bed_Temp, MIN_BED_TEMP, BED_MAX_TARGET);
|
1375
|
1365
|
// Bed_Temp value
|
1376
|
1366
|
DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(bed_line), HMI_ValueStruct.Bed_Temp);
|
1377
|
1367
|
}
|
|
@@ -1415,8 +1405,7 @@ void HMI_Move_Z() {
|
1415
|
1405
|
return;
|
1416
|
1406
|
}
|
1417
|
1407
|
// Fan_speed limit
|
1418
|
|
- NOMORE(HMI_ValueStruct.Fan_speed, FANON);
|
1419
|
|
- NOLESS(HMI_ValueStruct.Fan_speed, FANOFF);
|
|
1408
|
+ LIMIT(HMI_ValueStruct.Fan_speed, FANOFF, FANON);
|
1420
|
1409
|
// Fan_speed value
|
1421
|
1410
|
DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(fan_line), HMI_ValueStruct.Fan_speed);
|
1422
|
1411
|
}
|
|
@@ -1435,8 +1424,7 @@ void HMI_PrintSpeed() {
|
1435
|
1424
|
return;
|
1436
|
1425
|
}
|
1437
|
1426
|
// print_speed limit
|
1438
|
|
- NOMORE(HMI_ValueStruct.print_speed, MAX_PRINT_SPEED);
|
1439
|
|
- NOLESS(HMI_ValueStruct.print_speed, MIN_PRINT_SPEED);
|
|
1427
|
+ LIMIT(HMI_ValueStruct.print_speed, MIN_PRINT_SPEED, MAX_PRINT_SPEED);
|
1440
|
1428
|
// print_speed value
|
1441
|
1429
|
DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(select_tune.now + MROWS - index_tune), HMI_ValueStruct.print_speed);
|
1442
|
1430
|
}
|
|
@@ -1491,20 +1479,20 @@ void HMI_MaxAccelerationXYZE() {
|
1491
|
1479
|
void HMI_MaxJerkXYZE() {
|
1492
|
1480
|
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
|
1493
|
1481
|
if (encoder_diffState != ENCODER_DIFF_NO) {
|
1494
|
|
- if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Jerk)) {
|
|
1482
|
+ if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Jerk_scaled)) {
|
1495
|
1483
|
checkkey = MaxJerk;
|
1496
|
1484
|
EncoderRate.enabled = false;
|
1497
|
1485
|
if (WITHIN(HMI_flag.jerk_axis, X_AXIS, E_AXIS))
|
1498
|
|
- planner.set_max_jerk(HMI_flag.jerk_axis, HMI_ValueStruct.Max_Jerk / 10);
|
1499
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
|
|
1486
|
+ planner.set_max_jerk(HMI_flag.jerk_axis, HMI_ValueStruct.Max_Jerk_scaled / 10);
|
|
1487
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk_scaled);
|
1500
|
1488
|
return;
|
1501
|
1489
|
}
|
1502
|
1490
|
// MaxJerk limit
|
1503
|
1491
|
if (WITHIN(HMI_flag.jerk_axis, X_AXIS, E_AXIS))
|
1504
|
|
- NOMORE(HMI_ValueStruct.Max_Jerk, default_max_jerk[HMI_flag.jerk_axis] * 2 * MINUNITMULT);
|
1505
|
|
- NOLESS(HMI_ValueStruct.Max_Jerk, (MIN_MAXJERK) * MINUNITMULT);
|
|
1492
|
+ NOMORE(HMI_ValueStruct.Max_Jerk_scaled, default_max_jerk[HMI_flag.jerk_axis] * 2 * MINUNITMULT);
|
|
1493
|
+ NOLESS(HMI_ValueStruct.Max_Jerk_scaled, (MIN_MAXJERK) * MINUNITMULT);
|
1506
|
1494
|
// MaxJerk value
|
1507
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
|
|
1495
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk_scaled);
|
1508
|
1496
|
}
|
1509
|
1497
|
}
|
1510
|
1498
|
|
|
@@ -1513,43 +1501,41 @@ void HMI_MaxAccelerationXYZE() {
|
1513
|
1501
|
void HMI_StepXYZE() {
|
1514
|
1502
|
ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
|
1515
|
1503
|
if (encoder_diffState != ENCODER_DIFF_NO) {
|
1516
|
|
- if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Step)) {
|
|
1504
|
+ if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Step_scaled)) {
|
1517
|
1505
|
checkkey = Step;
|
1518
|
1506
|
EncoderRate.enabled = false;
|
1519
|
1507
|
if (WITHIN(HMI_flag.step_axis, X_AXIS, E_AXIS))
|
1520
|
|
- planner.settings.axis_steps_per_mm[HMI_flag.step_axis] = HMI_ValueStruct.Max_Step / 10;
|
1521
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
|
|
1508
|
+ planner.settings.axis_steps_per_mm[HMI_flag.step_axis] = HMI_ValueStruct.Max_Step_scaled / 10;
|
|
1509
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step_scaled);
|
1522
|
1510
|
return;
|
1523
|
1511
|
}
|
1524
|
1512
|
// Step limit
|
1525
|
1513
|
if (WITHIN(HMI_flag.step_axis, X_AXIS, E_AXIS))
|
1526
|
|
- NOMORE(HMI_ValueStruct.Max_Step, 999.9 * MINUNITMULT);
|
1527
|
|
- NOLESS(HMI_ValueStruct.Max_Step, MIN_STEP);
|
|
1514
|
+ NOMORE(HMI_ValueStruct.Max_Step_scaled, 999.9 * MINUNITMULT);
|
|
1515
|
+ NOLESS(HMI_ValueStruct.Max_Step_scaled, MIN_STEP);
|
1528
|
1516
|
// Step value
|
1529
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
|
|
1517
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step_scaled);
|
1530
|
1518
|
}
|
1531
|
1519
|
}
|
1532
|
1520
|
|
1533
|
1521
|
void update_variable() {
|
1534
|
|
- #if HAS_HOTEND
|
1535
|
|
- static float last_temp_hotend_target = 0, last_temp_hotend_current = 0;
|
1536
|
|
- #endif
|
1537
|
|
- #if HAS_HEATED_BED
|
1538
|
|
- static float last_temp_bed_target = 0, last_temp_bed_current = 0;
|
1539
|
|
- #endif
|
1540
|
|
- #if HAS_FAN
|
1541
|
|
- static uint8_t last_fan_speed = 0;
|
1542
|
|
- #endif
|
|
1522
|
+ TERN_(HAS_HOTEND, static float last_temp_hotend_target = 0);
|
|
1523
|
+ TERN_(HAS_HEATED_BED, static float last_temp_bed_target = 0);
|
|
1524
|
+ TERN_(HAS_FAN, static uint8_t last_fan_speed = 0);
|
1543
|
1525
|
|
1544
|
1526
|
/* Tune page temperature update */
|
1545
|
1527
|
if (checkkey == Tune) {
|
1546
|
1528
|
#if HAS_HOTEND
|
1547
|
|
- if (last_temp_hotend_target != thermalManager.temp_hotend[0].target)
|
|
1529
|
+ if (last_temp_hotend_target != thermalManager.temp_hotend[0].target) {
|
1548
|
1530
|
DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 216, MBASE(TUNE_CASE_TEMP + MROWS - index_tune), thermalManager.temp_hotend[0].target);
|
|
1531
|
+ last_temp_hotend_target = thermalManager.temp_hotend[0].target;
|
|
1532
|
+ }
|
1549
|
1533
|
#endif
|
1550
|
1534
|
#if HAS_HEATED_BED
|
1551
|
|
- if (last_temp_bed_target != thermalManager.temp_bed.target)
|
|
1535
|
+ if (last_temp_bed_target != thermalManager.temp_bed.target) {
|
1552
|
1536
|
DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 216, MBASE(TUNE_CASE_BED + MROWS - index_tune), thermalManager.temp_bed.target);
|
|
1537
|
+ last_temp_bed_target = thermalManager.temp_bed.target;
|
|
1538
|
+ }
|
1553
|
1539
|
#endif
|
1554
|
1540
|
#if HAS_FAN
|
1555
|
1541
|
if (last_fan_speed != thermalManager.fan_speed[0]) {
|
|
@@ -1562,12 +1548,16 @@ void update_variable() {
|
1562
|
1548
|
/* Temperature page temperature update */
|
1563
|
1549
|
if (checkkey == TemperatureID) {
|
1564
|
1550
|
#if HAS_HOTEND
|
1565
|
|
- if (last_temp_hotend_target != thermalManager.temp_hotend[0].target)
|
|
1551
|
+ if (last_temp_hotend_target != thermalManager.temp_hotend[0].target) {
|
1566
|
1552
|
DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 216, MBASE(TEMP_CASE_TEMP), thermalManager.temp_hotend[0].target);
|
|
1553
|
+ last_temp_hotend_target = thermalManager.temp_hotend[0].target;
|
|
1554
|
+ }
|
1567
|
1555
|
#endif
|
1568
|
1556
|
#if HAS_HEATED_BED
|
1569
|
|
- if (last_temp_bed_target != thermalManager.temp_bed.target)
|
|
1557
|
+ if (last_temp_bed_target != thermalManager.temp_bed.target) {
|
1570
|
1558
|
DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 216, MBASE(TEMP_CASE_BED), thermalManager.temp_bed.target);
|
|
1559
|
+ last_temp_bed_target = thermalManager.temp_bed.target;
|
|
1560
|
+ }
|
1571
|
1561
|
#endif
|
1572
|
1562
|
#if HAS_FAN
|
1573
|
1563
|
if (last_fan_speed != thermalManager.fan_speed[0]) {
|
|
@@ -1579,9 +1569,10 @@ void update_variable() {
|
1579
|
1569
|
|
1580
|
1570
|
/* Bottom temperature update */
|
1581
|
1571
|
#if HAS_HOTEND
|
1582
|
|
- if (last_temp_hotend_current != thermalManager.temp_hotend[0].celsius) {
|
|
1572
|
+ static float _hotendtemp = 0;
|
|
1573
|
+ if (_hotendtemp != thermalManager.temp_hotend[0].celsius) {
|
1583
|
1574
|
DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, 33, 382, thermalManager.temp_hotend[0].celsius);
|
1584
|
|
- last_temp_hotend_current = thermalManager.temp_hotend[0].celsius;
|
|
1575
|
+ _hotendtemp = thermalManager.temp_hotend[0].celsius;
|
1585
|
1576
|
}
|
1586
|
1577
|
if (last_temp_hotend_target != thermalManager.temp_hotend[0].target) {
|
1587
|
1578
|
DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, 33 + 4 * STAT_CHR_W + 6, 382, thermalManager.temp_hotend[0].target);
|
|
@@ -1589,9 +1580,10 @@ void update_variable() {
|
1589
|
1580
|
}
|
1590
|
1581
|
#endif
|
1591
|
1582
|
#if HAS_HEATED_BED
|
1592
|
|
- if (last_temp_bed_current != thermalManager.temp_bed.celsius) {
|
|
1583
|
+ static float _bedtemp = 0;
|
|
1584
|
+ if (_bedtemp != thermalManager.temp_bed.celsius) {
|
1593
|
1585
|
DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, 178, 382, thermalManager.temp_bed.celsius);
|
1594
|
|
- last_temp_bed_current = thermalManager.temp_bed.celsius;
|
|
1586
|
+ _bedtemp = thermalManager.temp_bed.celsius;
|
1595
|
1587
|
}
|
1596
|
1588
|
if (last_temp_bed_target != thermalManager.temp_bed.target) {
|
1597
|
1589
|
DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, 178 + 4 * STAT_CHR_W + 6, 382, thermalManager.temp_bed.target);
|
|
@@ -2135,13 +2127,11 @@ void HMI_Printing() {
|
2135
|
2127
|
char cmd[40];
|
2136
|
2128
|
cmd[0] = '\0';
|
2137
|
2129
|
|
2138
|
|
- #if ENABLED(PAUSE_HEAT)
|
2139
|
|
- #if HAS_HEATED_BED
|
2140
|
|
- if (tempbed) sprintf_P(cmd, PSTR("M190 S%i\n"), tempbed);
|
2141
|
|
- #endif
|
2142
|
|
- #if HAS_HOTEND
|
2143
|
|
- if (temphot) sprintf_P(&cmd[strlen(cmd)], PSTR("M109 S%i\n"), temphot);
|
2144
|
|
- #endif
|
|
2130
|
+ #if BOTH(HAS_HOTEND, PAUSE_HEAT)
|
|
2131
|
+ if (resume_hotend_temp) sprintf_P(&cmd[strlen(cmd)], PSTR("M109 S%i\n"), resume_hotend_temp);
|
|
2132
|
+ #endif
|
|
2133
|
+ #if BOTH(HAS_HEATED_BED, PAUSE_HEAT)
|
|
2134
|
+ if (resume_bed_temp) sprintf_P(cmd, PSTR("M190 S%i\n"), resume_bed_temp);
|
2145
|
2135
|
#endif
|
2146
|
2136
|
|
2147
|
2137
|
strcat_P(cmd, M24_STR);
|
|
@@ -2322,8 +2312,8 @@ void HMI_Prepare() {
|
2322
|
2312
|
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(2), current_position.y * MINUNITMULT);
|
2323
|
2313
|
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(3), current_position.z * MINUNITMULT);
|
2324
|
2314
|
#if HAS_HOTEND
|
2325
|
|
- HMI_ValueStruct.Move_E_scale = current_position.e * MINUNITMULT;
|
2326
|
|
- DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
|
|
2315
|
+ HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT;
|
|
2316
|
+ DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scaled);
|
2327
|
2317
|
#endif
|
2328
|
2318
|
break;
|
2329
|
2319
|
case PREPARE_CASE_DISA: // Disable steppers
|
|
@@ -2573,11 +2563,11 @@ void HMI_AxisMove() {
|
2573
|
2563
|
if (HMI_flag.ETempTooLow_flag) {
|
2574
|
2564
|
if (encoder_diffState == ENCODER_DIFF_ENTER) {
|
2575
|
2565
|
HMI_flag.ETempTooLow_flag = false;
|
2576
|
|
- HMI_ValueStruct.Move_E_scale = current_position.e * MINUNITMULT;
|
|
2566
|
+ HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT;
|
2577
|
2567
|
Draw_Move_Menu();
|
2578
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
|
2579
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
|
2580
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
|
|
2568
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scaled);
|
|
2569
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scaled);
|
|
2570
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scaled);
|
2581
|
2571
|
DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, 1, 216, MBASE(4), 0);
|
2582
|
2572
|
DWIN_UpdateLCD();
|
2583
|
2573
|
}
|
|
@@ -2602,20 +2592,20 @@ void HMI_AxisMove() {
|
2602
|
2592
|
break;
|
2603
|
2593
|
case 1: // X axis move
|
2604
|
2594
|
checkkey = Move_X;
|
2605
|
|
- HMI_ValueStruct.Move_X_scale = current_position.x * MINUNITMULT;
|
2606
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
|
|
2595
|
+ HMI_ValueStruct.Move_X_scaled = current_position.x * MINUNITMULT;
|
|
2596
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scaled);
|
2607
|
2597
|
EncoderRate.enabled = true;
|
2608
|
2598
|
break;
|
2609
|
2599
|
case 2: // Y axis move
|
2610
|
2600
|
checkkey = Move_Y;
|
2611
|
|
- HMI_ValueStruct.Move_Y_scale = current_position.y * MINUNITMULT;
|
2612
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
|
|
2601
|
+ HMI_ValueStruct.Move_Y_scaled = current_position.y * MINUNITMULT;
|
|
2602
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scaled);
|
2613
|
2603
|
EncoderRate.enabled = true;
|
2614
|
2604
|
break;
|
2615
|
2605
|
case 3: // Z axis move
|
2616
|
2606
|
checkkey = Move_Z;
|
2617
|
|
- HMI_ValueStruct.Move_Z_scale = current_position.z * MINUNITMULT;
|
2618
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
|
|
2607
|
+ HMI_ValueStruct.Move_Z_scaled = current_position.z * MINUNITMULT;
|
|
2608
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scaled);
|
2619
|
2609
|
EncoderRate.enabled = true;
|
2620
|
2610
|
break;
|
2621
|
2611
|
#if HAS_HOTEND
|
|
@@ -2630,8 +2620,8 @@ void HMI_AxisMove() {
|
2630
|
2620
|
}
|
2631
|
2621
|
#endif
|
2632
|
2622
|
checkkey = Extruder;
|
2633
|
|
- HMI_ValueStruct.Move_E_scale = current_position.e * MINUNITMULT;
|
2634
|
|
- DWIN_Draw_Signed_Float(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
|
|
2623
|
+ HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT;
|
|
2624
|
+ DWIN_Draw_Signed_Float(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scaled);
|
2635
|
2625
|
EncoderRate.enabled = true;
|
2636
|
2626
|
break;
|
2637
|
2627
|
#endif
|
|
@@ -3417,8 +3407,8 @@ void HMI_MaxAcceleration() {
|
3417
|
3407
|
if (WITHIN(select_jerk.now, 1, 4)) {
|
3418
|
3408
|
checkkey = MaxJerk_value;
|
3419
|
3409
|
HMI_flag.jerk_axis = AxisEnum(select_jerk.now - 1);
|
3420
|
|
- HMI_ValueStruct.Max_Jerk = planner.max_jerk[HMI_flag.jerk_axis] * MINUNITMULT;
|
3421
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
|
|
3410
|
+ HMI_ValueStruct.Max_Jerk_scaled = planner.max_jerk[HMI_flag.jerk_axis] * MINUNITMULT;
|
|
3411
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk_scaled);
|
3422
|
3412
|
EncoderRate.enabled = true;
|
3423
|
3413
|
}
|
3424
|
3414
|
else { // Back
|
|
@@ -3447,8 +3437,8 @@ void HMI_Step() {
|
3447
|
3437
|
if (WITHIN(select_step.now, 1, 4)) {
|
3448
|
3438
|
checkkey = Step_value;
|
3449
|
3439
|
HMI_flag.step_axis = AxisEnum(select_step.now - 1);
|
3450
|
|
- HMI_ValueStruct.Max_Step = planner.settings.axis_steps_per_mm[HMI_flag.step_axis] * MINUNITMULT;
|
3451
|
|
- DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
|
|
3440
|
+ HMI_ValueStruct.Max_Step_scaled = planner.settings.axis_steps_per_mm[HMI_flag.step_axis] * MINUNITMULT;
|
|
3441
|
+ DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step_scaled);
|
3452
|
3442
|
EncoderRate.enabled = true;
|
3453
|
3443
|
}
|
3454
|
3444
|
else { // Back
|
|
@@ -3499,7 +3489,7 @@ void EachMomentUpdate() {
|
3499
|
3489
|
planner.finish_and_disable();
|
3500
|
3490
|
|
3501
|
3491
|
// show percent bar and value
|
3502
|
|
- Percentrecord = 0;
|
|
3492
|
+ _card_percent = 0;
|
3503
|
3493
|
Draw_Print_ProgressBar();
|
3504
|
3494
|
|
3505
|
3495
|
// show print done confirm
|
|
@@ -3517,12 +3507,8 @@ void EachMomentUpdate() {
|
3517
|
3507
|
if (HMI_flag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) {
|
3518
|
3508
|
HMI_flag.pause_action = false;
|
3519
|
3509
|
#if ENABLED(PAUSE_HEAT)
|
3520
|
|
- #if HAS_HEATED_BED
|
3521
|
|
- tempbed = thermalManager.temp_bed.target;
|
3522
|
|
- #endif
|
3523
|
|
- #if HAS_HOTEND
|
3524
|
|
- temphot = thermalManager.temp_hotend[0].target;
|
3525
|
|
- #endif
|
|
3510
|
+ TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.temp_hotend[0].target);
|
|
3511
|
+ TERN_(HAS_HEATED_BED, resume_bed_temp = thermalManager.temp_bed.target);
|
3526
|
3512
|
thermalManager.disable_all_heaters();
|
3527
|
3513
|
#endif
|
3528
|
3514
|
queue.inject_P(PSTR("G1 F1200 X0 Y0"));
|
|
@@ -3534,7 +3520,7 @@ void EachMomentUpdate() {
|
3534
|
3520
|
if (last_cardpercentValue != card_pct) { // print percent
|
3535
|
3521
|
last_cardpercentValue = card_pct;
|
3536
|
3522
|
if (card_pct) {
|
3537
|
|
- Percentrecord = card_pct;
|
|
3523
|
+ _card_percent = card_pct;
|
3538
|
3524
|
Draw_Print_ProgressBar();
|
3539
|
3525
|
}
|
3540
|
3526
|
}
|
|
@@ -3551,8 +3537,8 @@ void EachMomentUpdate() {
|
3551
|
3537
|
|
3552
|
3538
|
// Estimate remaining time every 20 seconds
|
3553
|
3539
|
static millis_t next_remain_time_update = 0;
|
3554
|
|
- if (Percentrecord > 1 && ELAPSED(ms, next_remain_time_update) && !HMI_flag.heat_flag) {
|
3555
|
|
- remain_time = (elapsed.value - dwin_heat_time) / (Percentrecord * 0.01f) - (elapsed.value - dwin_heat_time);
|
|
3540
|
+ if (_card_percent > 1 && ELAPSED(ms, next_remain_time_update) && !HMI_flag.heat_flag) {
|
|
3541
|
+ _remain_time = (elapsed.value - dwin_heat_time) / (_card_percent * 0.01f) - (elapsed.value - dwin_heat_time);
|
3556
|
3542
|
next_remain_time_update += SEC_TO_MS(20);
|
3557
|
3543
|
Draw_Print_ProgressRemain();
|
3558
|
3544
|
}
|