Bladeren bron

Fix Ender 3 V2 DWIN manual move (#20837)

Scott Lahteine 4 jaren geleden
bovenliggende
commit
e9425d711d
No account linked to committer's email address
1 gewijzigde bestanden met toevoegingen van 31 en 32 verwijderingen
  1. 31
    32
      Marlin/src/lcd/dwin/e3v2/dwin.cpp

+ 31
- 32
Marlin/src/lcd/dwin/e3v2/dwin.cpp Bestand weergeven

132
 
132
 
133
 #define FEEDRATE_E      (60)
133
 #define FEEDRATE_E      (60)
134
 
134
 
135
-// Mininum unit (0.1) : multiple (10)
136
-#define MINUNITMULT     10
135
+// Minimum unit (0.1) : multiple (10)
136
+#define UNITFDIGITS 1
137
+#define MINUNITMULT pow(10, UNITFDIGITS)
137
 
138
 
138
 #define ENCODER_WAIT    20
139
 #define ENCODER_WAIT    20
139
 #define DWIN_SCROLL_UPDATE_INTERVAL 2000
140
 #define DWIN_SCROLL_UPDATE_INTERVAL 2000
1171
     }
1172
     }
1172
     NOLESS(HMI_ValueStruct.Move_X_scale, (X_MIN_POS) * MINUNITMULT);
1173
     NOLESS(HMI_ValueStruct.Move_X_scale, (X_MIN_POS) * MINUNITMULT);
1173
     NOMORE(HMI_ValueStruct.Move_X_scale, (X_MAX_POS) * MINUNITMULT);
1174
     NOMORE(HMI_ValueStruct.Move_X_scale, (X_MAX_POS) * MINUNITMULT);
1174
-    current_position.x = HMI_ValueStruct.Move_X_scale / 10;
1175
-    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
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);
1176
     DWIN_UpdateLCD();
1177
     DWIN_UpdateLCD();
1177
   }
1178
   }
1178
 }
1179
 }
1194
     }
1195
     }
1195
     NOLESS(HMI_ValueStruct.Move_Y_scale, (Y_MIN_POS) * MINUNITMULT);
1196
     NOLESS(HMI_ValueStruct.Move_Y_scale, (Y_MIN_POS) * MINUNITMULT);
1196
     NOMORE(HMI_ValueStruct.Move_Y_scale, (Y_MAX_POS) * MINUNITMULT);
1197
     NOMORE(HMI_ValueStruct.Move_Y_scale, (Y_MAX_POS) * MINUNITMULT);
1197
-    current_position.y = HMI_ValueStruct.Move_Y_scale / 10;
1198
-    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
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);
1199
     DWIN_UpdateLCD();
1200
     DWIN_UpdateLCD();
1200
   }
1201
   }
1201
 }
1202
 }
1206
     if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Z_scale)) {
1207
     if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Z_scale)) {
1207
       checkkey = AxisMove;
1208
       checkkey = AxisMove;
1208
       EncoderRate.enabled = false;
1209
       EncoderRate.enabled = false;
1209
-      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
1210
+      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
1210
       if (!planner.is_full()) {
1211
       if (!planner.is_full()) {
1211
         // Wait for planner moves to finish!
1212
         // Wait for planner moves to finish!
1212
         planner.synchronize();
1213
         planner.synchronize();
1217
     }
1218
     }
1218
     NOLESS(HMI_ValueStruct.Move_Z_scale, Z_MIN_POS * MINUNITMULT);
1219
     NOLESS(HMI_ValueStruct.Move_Z_scale, Z_MIN_POS * MINUNITMULT);
1219
     NOMORE(HMI_ValueStruct.Move_Z_scale, Z_MAX_POS * MINUNITMULT);
1220
     NOMORE(HMI_ValueStruct.Move_Z_scale, Z_MAX_POS * MINUNITMULT);
1220
-    current_position.z = HMI_ValueStruct.Move_Z_scale / 10;
1221
-    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
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);
1222
     DWIN_UpdateLCD();
1223
     DWIN_UpdateLCD();
1223
   }
1224
   }
1224
 }
1225
 }
1233
         checkkey = AxisMove;
1234
         checkkey = AxisMove;
1234
         EncoderRate.enabled = false;
1235
         EncoderRate.enabled = false;
1235
         last_E_scale = HMI_ValueStruct.Move_E_scale;
1236
         last_E_scale = HMI_ValueStruct.Move_E_scale;
1236
-        DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
1237
+        DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
1237
         if (!planner.is_full()) {
1238
         if (!planner.is_full()) {
1238
           planner.synchronize(); // Wait for planner moves to finish!
1239
           planner.synchronize(); // Wait for planner moves to finish!
1239
           planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder);
1240
           planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder);
1245
         HMI_ValueStruct.Move_E_scale = last_E_scale + (EXTRUDE_MAXLENGTH) * MINUNITMULT;
1246
         HMI_ValueStruct.Move_E_scale = last_E_scale + (EXTRUDE_MAXLENGTH) * MINUNITMULT;
1246
       else if ((last_E_scale - HMI_ValueStruct.Move_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
1247
       else if ((last_E_scale - HMI_ValueStruct.Move_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
1247
         HMI_ValueStruct.Move_E_scale = last_E_scale - (EXTRUDE_MAXLENGTH) * MINUNITMULT;
1248
         HMI_ValueStruct.Move_E_scale = last_E_scale - (EXTRUDE_MAXLENGTH) * MINUNITMULT;
1248
-      current_position.e = HMI_ValueStruct.Move_E_scale / 10;
1249
-      DWIN_Draw_Signed_Float(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
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);
1250
       DWIN_UpdateLCD();
1251
       DWIN_UpdateLCD();
1251
     }
1252
     }
1252
   }
1253
   }
1503
         NOMORE(HMI_ValueStruct.Max_Jerk, default_max_jerk[HMI_flag.jerk_axis] * 2 * MINUNITMULT);
1504
         NOMORE(HMI_ValueStruct.Max_Jerk, default_max_jerk[HMI_flag.jerk_axis] * 2 * MINUNITMULT);
1504
       NOLESS(HMI_ValueStruct.Max_Jerk, (MIN_MAXJERK) * MINUNITMULT);
1505
       NOLESS(HMI_ValueStruct.Max_Jerk, (MIN_MAXJERK) * MINUNITMULT);
1505
       // MaxJerk value
1506
       // MaxJerk value
1506
-      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
1507
+      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
1507
     }
1508
     }
1508
   }
1509
   }
1509
 
1510
 
1525
       NOMORE(HMI_ValueStruct.Max_Step, 999.9 * MINUNITMULT);
1526
       NOMORE(HMI_ValueStruct.Max_Step, 999.9 * MINUNITMULT);
1526
     NOLESS(HMI_ValueStruct.Max_Step, MIN_STEP);
1527
     NOLESS(HMI_ValueStruct.Max_Step, MIN_STEP);
1527
     // Step value
1528
     // Step value
1528
-    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
1529
+    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
1529
   }
1530
   }
1530
 }
1531
 }
1531
 
1532
 
2317
         select_axis.reset();
2318
         select_axis.reset();
2318
         Draw_Move_Menu();
2319
         Draw_Move_Menu();
2319
 
2320
 
2320
-        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), current_position.x * MINUNITMULT);
2321
-        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), current_position.y * MINUNITMULT);
2322
-        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(3), current_position.z * MINUNITMULT);
2321
+        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(1), current_position.x * MINUNITMULT);
2322
+        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(2), current_position.y * MINUNITMULT);
2323
+        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(3), current_position.z * MINUNITMULT);
2323
         #if HAS_HOTEND
2324
         #if HAS_HOTEND
2324
-          current_position.e = HMI_ValueStruct.Move_E_scale = 0.0;
2325
-          sync_plan_position_e();
2326
-          DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, 1, 216, MBASE(4), 0.0);
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);
2327
         #endif
2327
         #endif
2328
         break;
2328
         break;
2329
       case PREPARE_CASE_DISA: // Disable steppers
2329
       case PREPARE_CASE_DISA: // Disable steppers
2573
     if (HMI_flag.ETempTooLow_flag) {
2573
     if (HMI_flag.ETempTooLow_flag) {
2574
       if (encoder_diffState == ENCODER_DIFF_ENTER) {
2574
       if (encoder_diffState == ENCODER_DIFF_ENTER) {
2575
         HMI_flag.ETempTooLow_flag = false;
2575
         HMI_flag.ETempTooLow_flag = false;
2576
-        current_position.e = HMI_ValueStruct.Move_E_scale = 0;
2577
-        sync_plan_position_e();
2576
+        HMI_ValueStruct.Move_E_scale = current_position.e * MINUNITMULT;
2578
         Draw_Move_Menu();
2577
         Draw_Move_Menu();
2579
         DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
2578
         DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
2580
         DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
2579
         DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
3020
 
3019
 
3021
     Draw_Back_First();
3020
     Draw_Back_First();
3022
     LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MaxSpeedJerkX + i);
3021
     LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MaxSpeedJerkX + i);
3023
-    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(1), planner.max_jerk[X_AXIS] * MINUNITMULT);
3024
-    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(2), planner.max_jerk[Y_AXIS] * MINUNITMULT);
3025
-    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(3), planner.max_jerk[Z_AXIS] * MINUNITMULT);
3022
+    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 210, MBASE(1), planner.max_jerk[X_AXIS] * MINUNITMULT);
3023
+    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 210, MBASE(2), planner.max_jerk[Y_AXIS] * MINUNITMULT);
3024
+    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 210, MBASE(3), planner.max_jerk[Z_AXIS] * MINUNITMULT);
3026
     #if HAS_HOTEND
3025
     #if HAS_HOTEND
3027
-      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(4), planner.max_jerk[E_AXIS] * MINUNITMULT);
3026
+      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 210, MBASE(4), planner.max_jerk[E_AXIS] * MINUNITMULT);
3028
     #endif
3027
     #endif
3029
   }
3028
   }
3030
 #endif
3029
 #endif
3068
 
3067
 
3069
   Draw_Back_First();
3068
   Draw_Back_First();
3070
   LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_StepX + i);
3069
   LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_StepX + i);
3071
-  DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(1), planner.settings.axis_steps_per_mm[X_AXIS] * MINUNITMULT);
3072
-  DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(2), planner.settings.axis_steps_per_mm[Y_AXIS] * MINUNITMULT);
3073
-  DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(3), planner.settings.axis_steps_per_mm[Z_AXIS] * MINUNITMULT);
3070
+  DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 210, MBASE(1), planner.settings.axis_steps_per_mm[X_AXIS] * MINUNITMULT);
3071
+  DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 210, MBASE(2), planner.settings.axis_steps_per_mm[Y_AXIS] * MINUNITMULT);
3072
+  DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 210, MBASE(3), planner.settings.axis_steps_per_mm[Z_AXIS] * MINUNITMULT);
3074
   #if HAS_HOTEND
3073
   #if HAS_HOTEND
3075
-    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(4), planner.settings.axis_steps_per_mm[E_AXIS] * MINUNITMULT);
3074
+    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 210, MBASE(4), planner.settings.axis_steps_per_mm[E_AXIS] * MINUNITMULT);
3076
   #endif
3075
   #endif
3077
 }
3076
 }
3078
 
3077
 
3419
         checkkey = MaxJerk_value;
3418
         checkkey = MaxJerk_value;
3420
         HMI_flag.jerk_axis = AxisEnum(select_jerk.now - 1);
3419
         HMI_flag.jerk_axis = AxisEnum(select_jerk.now - 1);
3421
         HMI_ValueStruct.Max_Jerk = planner.max_jerk[HMI_flag.jerk_axis] * MINUNITMULT;
3420
         HMI_ValueStruct.Max_Jerk = planner.max_jerk[HMI_flag.jerk_axis] * MINUNITMULT;
3422
-        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
3421
+        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
3423
         EncoderRate.enabled = true;
3422
         EncoderRate.enabled = true;
3424
       }
3423
       }
3425
       else { // Back
3424
       else { // Back
3449
       checkkey = Step_value;
3448
       checkkey = Step_value;
3450
       HMI_flag.step_axis = AxisEnum(select_step.now - 1);
3449
       HMI_flag.step_axis = AxisEnum(select_step.now - 1);
3451
       HMI_ValueStruct.Max_Step = planner.settings.axis_steps_per_mm[HMI_flag.step_axis] * MINUNITMULT;
3450
       HMI_ValueStruct.Max_Step = planner.settings.axis_steps_per_mm[HMI_flag.step_axis] * MINUNITMULT;
3452
-      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
3451
+      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
3453
       EncoderRate.enabled = true;
3452
       EncoderRate.enabled = true;
3454
     }
3453
     }
3455
     else { // Back
3454
     else { // Back

Laden…
Annuleren
Opslaan