Ender 3 V2 DWIN cleanup (#21026)
This commit is contained in:
		@@ -130,20 +130,20 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  #define NOLESS(v, n) \
 | 
					  #define NOLESS(v, n) \
 | 
				
			||||||
    do{ \
 | 
					    do{ \
 | 
				
			||||||
      __typeof__(n) _n = (n); \
 | 
					      __typeof__(v) _n = (n); \
 | 
				
			||||||
      if (_n > v) v = _n; \
 | 
					      if (_n > v) v = _n; \
 | 
				
			||||||
    }while(0)
 | 
					    }while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #define NOMORE(v, n) \
 | 
					  #define NOMORE(v, n) \
 | 
				
			||||||
    do{ \
 | 
					    do{ \
 | 
				
			||||||
      __typeof__(n) _n = (n); \
 | 
					      __typeof__(v) _n = (n); \
 | 
				
			||||||
      if (_n < v) v = _n; \
 | 
					      if (_n < v) v = _n; \
 | 
				
			||||||
    }while(0)
 | 
					    }while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #define LIMIT(v, n1, n2) \
 | 
					  #define LIMIT(v, n1, n2) \
 | 
				
			||||||
    do{ \
 | 
					    do{ \
 | 
				
			||||||
      __typeof__(n1) _n1 = (n1); \
 | 
					      __typeof__(v) _n1 = (n1); \
 | 
				
			||||||
      __typeof__(n2) _n2 = (n2); \
 | 
					      __typeof__(v) _n2 = (n2); \
 | 
				
			||||||
      if (_n1 > v) v = _n1; \
 | 
					      if (_n1 > v) v = _n1; \
 | 
				
			||||||
      else if (_n2 < v) v = _n2; \
 | 
					      else if (_n2 < v) v = _n2; \
 | 
				
			||||||
    }while(0)
 | 
					    }while(0)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -191,16 +191,12 @@ constexpr float default_max_acceleration[]    = DEFAULT_MAX_ACCELERATION;
 | 
				
			|||||||
  constexpr float default_max_jerk[]          = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK };
 | 
					  constexpr float default_max_jerk[]          = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK };
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t Percentrecord = 0;
 | 
					static uint8_t _card_percent = 0;
 | 
				
			||||||
uint16_t remain_time = 0;
 | 
					static uint16_t _remain_time = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ENABLED(PAUSE_HEAT)
 | 
					#if ENABLED(PAUSE_HEAT)
 | 
				
			||||||
  #if HAS_HOTEND
 | 
					  TERN_(HAS_HOTEND, uint16_t resume_hotend_temp = 0);
 | 
				
			||||||
    uint16_t temphot = 0;
 | 
					  TERN_(HAS_HEATED_BED, uint16_t resume_bed_temp = 0);
 | 
				
			||||||
  #endif
 | 
					 | 
				
			||||||
  #if HAS_HEATED_BED
 | 
					 | 
				
			||||||
    uint16_t tempbed = 0;
 | 
					 | 
				
			||||||
  #endif
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if HAS_ZOFFSET_ITEM
 | 
					#if HAS_ZOFFSET_ITEM
 | 
				
			||||||
@@ -1081,8 +1077,8 @@ void Draw_Printing_Screen() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void Draw_Print_ProgressBar() {
 | 
					void Draw_Print_ProgressBar() {
 | 
				
			||||||
  DWIN_ICON_Show(ICON, ICON_Bar, 15, 93);
 | 
					  DWIN_ICON_Show(ICON, ICON_Bar, 15, 93);
 | 
				
			||||||
  DWIN_Draw_Rectangle(1, BarFill_Color, 16 + Percentrecord * 240 / 100, 93, 256, 113);
 | 
					  DWIN_Draw_Rectangle(1, BarFill_Color, 16 + _card_percent * 240 / 100, 93, 256, 113);
 | 
				
			||||||
  DWIN_Draw_IntValue(true, true, 0, font8x16, Percent_Color, Color_Bg_Black, 2, 117, 133, Percentrecord);
 | 
					  DWIN_Draw_IntValue(true, true, 0, font8x16, Percent_Color, Color_Bg_Black, 2, 117, 133, _card_percent);
 | 
				
			||||||
  DWIN_Draw_String(false, false, font8x16, Percent_Color, Color_Bg_Black, 133, 133, F("%"));
 | 
					  DWIN_Draw_String(false, false, font8x16, Percent_Color, Color_Bg_Black, 133, 133, F("%"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1094,9 +1090,9 @@ void Draw_Print_ProgressElapsed() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Draw_Print_ProgressRemain() {
 | 
					void Draw_Print_ProgressRemain() {
 | 
				
			||||||
  DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, 176, 212, remain_time / 3600);
 | 
					  DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, 176, 212, _remain_time / 3600);
 | 
				
			||||||
  DWIN_Draw_String(false, false, font8x16, Color_White, Color_Bg_Black, 192, 212, F(":"));
 | 
					  DWIN_Draw_String(false, false, font8x16, Color_White, Color_Bg_Black, 192, 212, F(":"));
 | 
				
			||||||
  DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, 200, 212, (remain_time % 3600) / 60);
 | 
					  DWIN_Draw_IntValue(true, true, 1, font8x16, Color_White, Color_Bg_Black, 2, 200, 212, (_remain_time % 3600) / 60);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Goto_PrintProcess() {
 | 
					void Goto_PrintProcess() {
 | 
				
			||||||
@@ -1158,10 +1154,10 @@ inline ENCODER_DiffState get_encoder_state() {
 | 
				
			|||||||
void HMI_Move_X() {
 | 
					void HMI_Move_X() {
 | 
				
			||||||
  ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
					  ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
				
			||||||
  if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
					  if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
				
			||||||
    if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_X_scale)) {
 | 
					    if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_X_scaled)) {
 | 
				
			||||||
      checkkey = AxisMove;
 | 
					      checkkey = AxisMove;
 | 
				
			||||||
      EncoderRate.enabled = false;
 | 
					      EncoderRate.enabled = false;
 | 
				
			||||||
      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
 | 
					      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scaled);
 | 
				
			||||||
      if (!planner.is_full()) {
 | 
					      if (!planner.is_full()) {
 | 
				
			||||||
        // Wait for planner moves to finish!
 | 
					        // Wait for planner moves to finish!
 | 
				
			||||||
        planner.synchronize();
 | 
					        planner.synchronize();
 | 
				
			||||||
@@ -1170,10 +1166,9 @@ void HMI_Move_X() {
 | 
				
			|||||||
      DWIN_UpdateLCD();
 | 
					      DWIN_UpdateLCD();
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    NOLESS(HMI_ValueStruct.Move_X_scale, (X_MIN_POS) * MINUNITMULT);
 | 
					    LIMIT(HMI_ValueStruct.Move_X_scaled, (X_MIN_POS) * MINUNITMULT, (X_MAX_POS) * MINUNITMULT);
 | 
				
			||||||
    NOMORE(HMI_ValueStruct.Move_X_scale, (X_MAX_POS) * MINUNITMULT);
 | 
					    current_position.x = HMI_ValueStruct.Move_X_scaled / MINUNITMULT;
 | 
				
			||||||
    current_position.x = HMI_ValueStruct.Move_X_scale / MINUNITMULT;
 | 
					    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(1), HMI_ValueStruct.Move_X_scaled);
 | 
				
			||||||
    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
 | 
					 | 
				
			||||||
    DWIN_UpdateLCD();
 | 
					    DWIN_UpdateLCD();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1181,10 +1176,10 @@ void HMI_Move_X() {
 | 
				
			|||||||
void HMI_Move_Y() {
 | 
					void HMI_Move_Y() {
 | 
				
			||||||
  ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
					  ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
				
			||||||
  if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
					  if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
				
			||||||
    if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Y_scale)) {
 | 
					    if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Y_scaled)) {
 | 
				
			||||||
      checkkey = AxisMove;
 | 
					      checkkey = AxisMove;
 | 
				
			||||||
      EncoderRate.enabled = false;
 | 
					      EncoderRate.enabled = false;
 | 
				
			||||||
      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
 | 
					      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scaled);
 | 
				
			||||||
      if (!planner.is_full()) {
 | 
					      if (!planner.is_full()) {
 | 
				
			||||||
        // Wait for planner moves to finish!
 | 
					        // Wait for planner moves to finish!
 | 
				
			||||||
        planner.synchronize();
 | 
					        planner.synchronize();
 | 
				
			||||||
@@ -1193,10 +1188,9 @@ void HMI_Move_Y() {
 | 
				
			|||||||
      DWIN_UpdateLCD();
 | 
					      DWIN_UpdateLCD();
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    NOLESS(HMI_ValueStruct.Move_Y_scale, (Y_MIN_POS) * MINUNITMULT);
 | 
					    LIMIT(HMI_ValueStruct.Move_Y_scaled, (Y_MIN_POS) * MINUNITMULT, (Y_MAX_POS) * MINUNITMULT);
 | 
				
			||||||
    NOMORE(HMI_ValueStruct.Move_Y_scale, (Y_MAX_POS) * MINUNITMULT);
 | 
					    current_position.y = HMI_ValueStruct.Move_Y_scaled / MINUNITMULT;
 | 
				
			||||||
    current_position.y = HMI_ValueStruct.Move_Y_scale / MINUNITMULT;
 | 
					    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(2), HMI_ValueStruct.Move_Y_scaled);
 | 
				
			||||||
    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
 | 
					 | 
				
			||||||
    DWIN_UpdateLCD();
 | 
					    DWIN_UpdateLCD();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1204,10 +1198,10 @@ void HMI_Move_Y() {
 | 
				
			|||||||
void HMI_Move_Z() {
 | 
					void HMI_Move_Z() {
 | 
				
			||||||
  ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
					  ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
				
			||||||
  if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
					  if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
				
			||||||
    if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Z_scale)) {
 | 
					    if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_Z_scaled)) {
 | 
				
			||||||
      checkkey = AxisMove;
 | 
					      checkkey = AxisMove;
 | 
				
			||||||
      EncoderRate.enabled = false;
 | 
					      EncoderRate.enabled = false;
 | 
				
			||||||
      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
 | 
					      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(3), HMI_ValueStruct.Move_Z_scaled);
 | 
				
			||||||
      if (!planner.is_full()) {
 | 
					      if (!planner.is_full()) {
 | 
				
			||||||
        // Wait for planner moves to finish!
 | 
					        // Wait for planner moves to finish!
 | 
				
			||||||
        planner.synchronize();
 | 
					        planner.synchronize();
 | 
				
			||||||
@@ -1216,10 +1210,9 @@ void HMI_Move_Z() {
 | 
				
			|||||||
      DWIN_UpdateLCD();
 | 
					      DWIN_UpdateLCD();
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    NOLESS(HMI_ValueStruct.Move_Z_scale, Z_MIN_POS * MINUNITMULT);
 | 
					    LIMIT(HMI_ValueStruct.Move_Z_scaled, Z_MIN_POS * MINUNITMULT, Z_MAX_POS * MINUNITMULT);
 | 
				
			||||||
    NOMORE(HMI_ValueStruct.Move_Z_scale, Z_MAX_POS * MINUNITMULT);
 | 
					    current_position.z = HMI_ValueStruct.Move_Z_scaled / MINUNITMULT;
 | 
				
			||||||
    current_position.z = HMI_ValueStruct.Move_Z_scale / MINUNITMULT;
 | 
					    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(3), HMI_ValueStruct.Move_Z_scaled);
 | 
				
			||||||
    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
 | 
					 | 
				
			||||||
    DWIN_UpdateLCD();
 | 
					    DWIN_UpdateLCD();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1227,14 +1220,14 @@ void HMI_Move_Z() {
 | 
				
			|||||||
#if HAS_HOTEND
 | 
					#if HAS_HOTEND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void HMI_Move_E() {
 | 
					  void HMI_Move_E() {
 | 
				
			||||||
    static float last_E_scale = 0;
 | 
					    static float last_E_scaled = 0;
 | 
				
			||||||
    ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
					    ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
				
			||||||
    if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
					    if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
				
			||||||
      if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_E_scale)) {
 | 
					      if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Move_E_scaled)) {
 | 
				
			||||||
        checkkey = AxisMove;
 | 
					        checkkey = AxisMove;
 | 
				
			||||||
        EncoderRate.enabled = false;
 | 
					        EncoderRate.enabled = false;
 | 
				
			||||||
        last_E_scale = HMI_ValueStruct.Move_E_scale;
 | 
					        last_E_scaled = HMI_ValueStruct.Move_E_scaled;
 | 
				
			||||||
        DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
 | 
					        DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(4), HMI_ValueStruct.Move_E_scaled);
 | 
				
			||||||
        if (!planner.is_full()) {
 | 
					        if (!planner.is_full()) {
 | 
				
			||||||
          planner.synchronize(); // Wait for planner moves to finish!
 | 
					          planner.synchronize(); // Wait for planner moves to finish!
 | 
				
			||||||
          planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder);
 | 
					          planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder);
 | 
				
			||||||
@@ -1242,12 +1235,12 @@ void HMI_Move_Z() {
 | 
				
			|||||||
        DWIN_UpdateLCD();
 | 
					        DWIN_UpdateLCD();
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      if ((HMI_ValueStruct.Move_E_scale - last_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
 | 
					      if ((HMI_ValueStruct.Move_E_scaled - last_E_scaled) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
 | 
				
			||||||
        HMI_ValueStruct.Move_E_scale = last_E_scale + (EXTRUDE_MAXLENGTH) * MINUNITMULT;
 | 
					        HMI_ValueStruct.Move_E_scaled = last_E_scaled + (EXTRUDE_MAXLENGTH) * MINUNITMULT;
 | 
				
			||||||
      else if ((last_E_scale - HMI_ValueStruct.Move_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
 | 
					      else if ((last_E_scaled - HMI_ValueStruct.Move_E_scaled) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
 | 
				
			||||||
        HMI_ValueStruct.Move_E_scale = last_E_scale - (EXTRUDE_MAXLENGTH) * MINUNITMULT;
 | 
					        HMI_ValueStruct.Move_E_scaled = last_E_scaled - (EXTRUDE_MAXLENGTH) * MINUNITMULT;
 | 
				
			||||||
      current_position.e = HMI_ValueStruct.Move_E_scale / MINUNITMULT;
 | 
					      current_position.e = HMI_ValueStruct.Move_E_scaled / MINUNITMULT;
 | 
				
			||||||
      DWIN_Draw_Signed_Float(font8x16, Select_Color, 3, UNITFDIGITS, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
 | 
					      DWIN_Draw_Signed_Float(font8x16, Select_Color, 3, UNITFDIGITS, 216, MBASE(4), HMI_ValueStruct.Move_E_scaled);
 | 
				
			||||||
      DWIN_UpdateLCD();
 | 
					      DWIN_UpdateLCD();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -1277,8 +1270,7 @@ void HMI_Move_Z() {
 | 
				
			|||||||
        DWIN_UpdateLCD();
 | 
					        DWIN_UpdateLCD();
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      NOLESS(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MIN) * 100);
 | 
					      LIMIT(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MIN) * 100, (Z_PROBE_OFFSET_RANGE_MAX) * 100);
 | 
				
			||||||
      NOMORE(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MAX) * 100);
 | 
					 | 
				
			||||||
      last_zoffset = dwin_zoffset;
 | 
					      last_zoffset = dwin_zoffset;
 | 
				
			||||||
      dwin_zoffset = HMI_ValueStruct.offset_value / 100.0f;
 | 
					      dwin_zoffset = HMI_ValueStruct.offset_value / 100.0f;
 | 
				
			||||||
      #if EITHER(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP)
 | 
					      #if EITHER(BABYSTEP_ZPROBE_OFFSET, JUST_BABYSTEP)
 | 
				
			||||||
@@ -1326,8 +1318,7 @@ void HMI_Move_Z() {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      // E_Temp limit
 | 
					      // E_Temp limit
 | 
				
			||||||
      NOMORE(HMI_ValueStruct.E_Temp, MAX_E_TEMP);
 | 
					      LIMIT(HMI_ValueStruct.E_Temp, MIN_E_TEMP, MAX_E_TEMP);
 | 
				
			||||||
      NOLESS(HMI_ValueStruct.E_Temp, MIN_E_TEMP);
 | 
					 | 
				
			||||||
      // E_Temp value
 | 
					      // E_Temp value
 | 
				
			||||||
      DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(temp_line), HMI_ValueStruct.E_Temp);
 | 
					      DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(temp_line), HMI_ValueStruct.E_Temp);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1370,8 +1361,7 @@ void HMI_Move_Z() {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      // Bed_Temp limit
 | 
					      // Bed_Temp limit
 | 
				
			||||||
      NOMORE(HMI_ValueStruct.Bed_Temp, BED_MAX_TARGET);
 | 
					      LIMIT(HMI_ValueStruct.Bed_Temp, MIN_BED_TEMP, BED_MAX_TARGET);
 | 
				
			||||||
      NOLESS(HMI_ValueStruct.Bed_Temp, MIN_BED_TEMP);
 | 
					 | 
				
			||||||
      // Bed_Temp value
 | 
					      // Bed_Temp value
 | 
				
			||||||
      DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(bed_line), HMI_ValueStruct.Bed_Temp);
 | 
					      DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(bed_line), HMI_ValueStruct.Bed_Temp);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1415,8 +1405,7 @@ void HMI_Move_Z() {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      // Fan_speed limit
 | 
					      // Fan_speed limit
 | 
				
			||||||
      NOMORE(HMI_ValueStruct.Fan_speed, FANON);
 | 
					      LIMIT(HMI_ValueStruct.Fan_speed, FANOFF, FANON);
 | 
				
			||||||
      NOLESS(HMI_ValueStruct.Fan_speed, FANOFF);
 | 
					 | 
				
			||||||
      // Fan_speed value
 | 
					      // Fan_speed value
 | 
				
			||||||
      DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(fan_line), HMI_ValueStruct.Fan_speed);
 | 
					      DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(fan_line), HMI_ValueStruct.Fan_speed);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1435,8 +1424,7 @@ void HMI_PrintSpeed() {
 | 
				
			|||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // print_speed limit
 | 
					    // print_speed limit
 | 
				
			||||||
    NOMORE(HMI_ValueStruct.print_speed, MAX_PRINT_SPEED);
 | 
					    LIMIT(HMI_ValueStruct.print_speed, MIN_PRINT_SPEED, MAX_PRINT_SPEED);
 | 
				
			||||||
    NOLESS(HMI_ValueStruct.print_speed, MIN_PRINT_SPEED);
 | 
					 | 
				
			||||||
    // print_speed value
 | 
					    // print_speed value
 | 
				
			||||||
    DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(select_tune.now + MROWS - index_tune), HMI_ValueStruct.print_speed);
 | 
					    DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 216, MBASE(select_tune.now + MROWS - index_tune), HMI_ValueStruct.print_speed);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -1491,20 +1479,20 @@ void HMI_MaxAccelerationXYZE() {
 | 
				
			|||||||
  void HMI_MaxJerkXYZE() {
 | 
					  void HMI_MaxJerkXYZE() {
 | 
				
			||||||
    ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
					    ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
				
			||||||
    if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
					    if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
				
			||||||
      if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Jerk)) {
 | 
					      if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Jerk_scaled)) {
 | 
				
			||||||
        checkkey = MaxJerk;
 | 
					        checkkey = MaxJerk;
 | 
				
			||||||
        EncoderRate.enabled = false;
 | 
					        EncoderRate.enabled = false;
 | 
				
			||||||
        if (WITHIN(HMI_flag.jerk_axis, X_AXIS, E_AXIS))
 | 
					        if (WITHIN(HMI_flag.jerk_axis, X_AXIS, E_AXIS))
 | 
				
			||||||
          planner.set_max_jerk(HMI_flag.jerk_axis, HMI_ValueStruct.Max_Jerk / 10);
 | 
					          planner.set_max_jerk(HMI_flag.jerk_axis, HMI_ValueStruct.Max_Jerk_scaled / 10);
 | 
				
			||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk_scaled);
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      // MaxJerk limit
 | 
					      // MaxJerk limit
 | 
				
			||||||
      if (WITHIN(HMI_flag.jerk_axis, X_AXIS, E_AXIS))
 | 
					      if (WITHIN(HMI_flag.jerk_axis, X_AXIS, E_AXIS))
 | 
				
			||||||
        NOMORE(HMI_ValueStruct.Max_Jerk, default_max_jerk[HMI_flag.jerk_axis] * 2 * MINUNITMULT);
 | 
					        NOMORE(HMI_ValueStruct.Max_Jerk_scaled, default_max_jerk[HMI_flag.jerk_axis] * 2 * MINUNITMULT);
 | 
				
			||||||
      NOLESS(HMI_ValueStruct.Max_Jerk, (MIN_MAXJERK) * MINUNITMULT);
 | 
					      NOLESS(HMI_ValueStruct.Max_Jerk_scaled, (MIN_MAXJERK) * MINUNITMULT);
 | 
				
			||||||
      // MaxJerk value
 | 
					      // MaxJerk value
 | 
				
			||||||
      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
 | 
					      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk_scaled);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1513,43 +1501,41 @@ void HMI_MaxAccelerationXYZE() {
 | 
				
			|||||||
void HMI_StepXYZE() {
 | 
					void HMI_StepXYZE() {
 | 
				
			||||||
  ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
					  ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
 | 
				
			||||||
  if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
					  if (encoder_diffState != ENCODER_DIFF_NO) {
 | 
				
			||||||
    if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Step)) {
 | 
					    if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Step_scaled)) {
 | 
				
			||||||
      checkkey = Step;
 | 
					      checkkey = Step;
 | 
				
			||||||
      EncoderRate.enabled = false;
 | 
					      EncoderRate.enabled = false;
 | 
				
			||||||
      if (WITHIN(HMI_flag.step_axis, X_AXIS, E_AXIS))
 | 
					      if (WITHIN(HMI_flag.step_axis, X_AXIS, E_AXIS))
 | 
				
			||||||
        planner.settings.axis_steps_per_mm[HMI_flag.step_axis] = HMI_ValueStruct.Max_Step / 10;
 | 
					        planner.settings.axis_steps_per_mm[HMI_flag.step_axis] = HMI_ValueStruct.Max_Step_scaled / 10;
 | 
				
			||||||
      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
 | 
					      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step_scaled);
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // Step limit
 | 
					    // Step limit
 | 
				
			||||||
    if (WITHIN(HMI_flag.step_axis, X_AXIS, E_AXIS))
 | 
					    if (WITHIN(HMI_flag.step_axis, X_AXIS, E_AXIS))
 | 
				
			||||||
      NOMORE(HMI_ValueStruct.Max_Step, 999.9 * MINUNITMULT);
 | 
					      NOMORE(HMI_ValueStruct.Max_Step_scaled, 999.9 * MINUNITMULT);
 | 
				
			||||||
    NOLESS(HMI_ValueStruct.Max_Step, MIN_STEP);
 | 
					    NOLESS(HMI_ValueStruct.Max_Step_scaled, MIN_STEP);
 | 
				
			||||||
    // Step value
 | 
					    // Step value
 | 
				
			||||||
    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
 | 
					    DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step_scaled);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void update_variable() {
 | 
					void update_variable() {
 | 
				
			||||||
  #if HAS_HOTEND
 | 
					  TERN_(HAS_HOTEND, static float last_temp_hotend_target = 0);
 | 
				
			||||||
    static float last_temp_hotend_target = 0, last_temp_hotend_current = 0;
 | 
					  TERN_(HAS_HEATED_BED, static float last_temp_bed_target = 0);
 | 
				
			||||||
  #endif
 | 
					  TERN_(HAS_FAN, static uint8_t last_fan_speed = 0);
 | 
				
			||||||
  #if HAS_HEATED_BED
 | 
					 | 
				
			||||||
    static float last_temp_bed_target = 0, last_temp_bed_current = 0;
 | 
					 | 
				
			||||||
  #endif
 | 
					 | 
				
			||||||
  #if HAS_FAN
 | 
					 | 
				
			||||||
    static uint8_t last_fan_speed = 0;
 | 
					 | 
				
			||||||
  #endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* Tune page temperature update */
 | 
					  /* Tune page temperature update */
 | 
				
			||||||
  if (checkkey == Tune) {
 | 
					  if (checkkey == Tune) {
 | 
				
			||||||
    #if HAS_HOTEND
 | 
					    #if HAS_HOTEND
 | 
				
			||||||
      if (last_temp_hotend_target != thermalManager.temp_hotend[0].target)
 | 
					      if (last_temp_hotend_target != thermalManager.temp_hotend[0].target) {
 | 
				
			||||||
        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);
 | 
					        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);
 | 
				
			||||||
 | 
					        last_temp_hotend_target = thermalManager.temp_hotend[0].target;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
    #if HAS_HEATED_BED
 | 
					    #if HAS_HEATED_BED
 | 
				
			||||||
      if (last_temp_bed_target != thermalManager.temp_bed.target)
 | 
					      if (last_temp_bed_target != thermalManager.temp_bed.target) {
 | 
				
			||||||
        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);
 | 
					        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);
 | 
				
			||||||
 | 
					        last_temp_bed_target = thermalManager.temp_bed.target;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
    #if HAS_FAN
 | 
					    #if HAS_FAN
 | 
				
			||||||
      if (last_fan_speed != thermalManager.fan_speed[0]) {
 | 
					      if (last_fan_speed != thermalManager.fan_speed[0]) {
 | 
				
			||||||
@@ -1562,12 +1548,16 @@ void update_variable() {
 | 
				
			|||||||
  /* Temperature page temperature update */
 | 
					  /* Temperature page temperature update */
 | 
				
			||||||
  if (checkkey == TemperatureID) {
 | 
					  if (checkkey == TemperatureID) {
 | 
				
			||||||
    #if HAS_HOTEND
 | 
					    #if HAS_HOTEND
 | 
				
			||||||
      if (last_temp_hotend_target != thermalManager.temp_hotend[0].target)
 | 
					      if (last_temp_hotend_target != thermalManager.temp_hotend[0].target) {
 | 
				
			||||||
        DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 216, MBASE(TEMP_CASE_TEMP), thermalManager.temp_hotend[0].target);
 | 
					        DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 216, MBASE(TEMP_CASE_TEMP), thermalManager.temp_hotend[0].target);
 | 
				
			||||||
 | 
					        last_temp_hotend_target = thermalManager.temp_hotend[0].target;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
    #if HAS_HEATED_BED
 | 
					    #if HAS_HEATED_BED
 | 
				
			||||||
      if (last_temp_bed_target != thermalManager.temp_bed.target)
 | 
					      if (last_temp_bed_target != thermalManager.temp_bed.target) {
 | 
				
			||||||
        DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 216, MBASE(TEMP_CASE_BED), thermalManager.temp_bed.target);
 | 
					        DWIN_Draw_IntValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 216, MBASE(TEMP_CASE_BED), thermalManager.temp_bed.target);
 | 
				
			||||||
 | 
					        last_temp_bed_target = thermalManager.temp_bed.target;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
    #if HAS_FAN
 | 
					    #if HAS_FAN
 | 
				
			||||||
      if (last_fan_speed != thermalManager.fan_speed[0]) {
 | 
					      if (last_fan_speed != thermalManager.fan_speed[0]) {
 | 
				
			||||||
@@ -1579,9 +1569,10 @@ void update_variable() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /* Bottom temperature update */
 | 
					  /* Bottom temperature update */
 | 
				
			||||||
  #if HAS_HOTEND
 | 
					  #if HAS_HOTEND
 | 
				
			||||||
    if (last_temp_hotend_current != thermalManager.temp_hotend[0].celsius) {
 | 
					    static float _hotendtemp = 0;
 | 
				
			||||||
 | 
					    if (_hotendtemp != thermalManager.temp_hotend[0].celsius) {
 | 
				
			||||||
      DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, 33, 382, thermalManager.temp_hotend[0].celsius);
 | 
					      DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, 33, 382, thermalManager.temp_hotend[0].celsius);
 | 
				
			||||||
      last_temp_hotend_current = thermalManager.temp_hotend[0].celsius;
 | 
					      _hotendtemp = thermalManager.temp_hotend[0].celsius;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (last_temp_hotend_target != thermalManager.temp_hotend[0].target) {
 | 
					    if (last_temp_hotend_target != thermalManager.temp_hotend[0].target) {
 | 
				
			||||||
      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);
 | 
					      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() {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
  #if HAS_HEATED_BED
 | 
					  #if HAS_HEATED_BED
 | 
				
			||||||
    if (last_temp_bed_current != thermalManager.temp_bed.celsius) {
 | 
					    static float _bedtemp = 0;
 | 
				
			||||||
 | 
					    if (_bedtemp != thermalManager.temp_bed.celsius) {
 | 
				
			||||||
      DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, 178, 382, thermalManager.temp_bed.celsius);
 | 
					      DWIN_Draw_IntValue(true, true, 0, DWIN_FONT_STAT, Color_White, Color_Bg_Black, 3, 178, 382, thermalManager.temp_bed.celsius);
 | 
				
			||||||
      last_temp_bed_current = thermalManager.temp_bed.celsius;
 | 
					      _bedtemp = thermalManager.temp_bed.celsius;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (last_temp_bed_target != thermalManager.temp_bed.target) {
 | 
					    if (last_temp_bed_target != thermalManager.temp_bed.target) {
 | 
				
			||||||
      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);
 | 
					      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() {
 | 
				
			|||||||
          char cmd[40];
 | 
					          char cmd[40];
 | 
				
			||||||
          cmd[0] = '\0';
 | 
					          cmd[0] = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          #if ENABLED(PAUSE_HEAT)
 | 
					          #if BOTH(HAS_HOTEND, PAUSE_HEAT)
 | 
				
			||||||
            #if HAS_HEATED_BED
 | 
					            if (resume_hotend_temp) sprintf_P(&cmd[strlen(cmd)], PSTR("M109 S%i\n"), resume_hotend_temp);
 | 
				
			||||||
              if (tempbed) sprintf_P(cmd, PSTR("M190 S%i\n"), tempbed);
 | 
					 | 
				
			||||||
            #endif
 | 
					 | 
				
			||||||
            #if HAS_HOTEND
 | 
					 | 
				
			||||||
              if (temphot) sprintf_P(&cmd[strlen(cmd)], PSTR("M109 S%i\n"), temphot);
 | 
					 | 
				
			||||||
          #endif
 | 
					          #endif
 | 
				
			||||||
 | 
					          #if BOTH(HAS_HEATED_BED, PAUSE_HEAT)
 | 
				
			||||||
 | 
					            if (resume_bed_temp) sprintf_P(cmd, PSTR("M190 S%i\n"), resume_bed_temp);
 | 
				
			||||||
          #endif
 | 
					          #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          strcat_P(cmd, M24_STR);
 | 
					          strcat_P(cmd, M24_STR);
 | 
				
			||||||
@@ -2322,8 +2312,8 @@ void HMI_Prepare() {
 | 
				
			|||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(2), current_position.y * MINUNITMULT);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(2), current_position.y * MINUNITMULT);
 | 
				
			||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(3), current_position.z * MINUNITMULT);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, UNITFDIGITS, 216, MBASE(3), current_position.z * MINUNITMULT);
 | 
				
			||||||
        #if HAS_HOTEND
 | 
					        #if HAS_HOTEND
 | 
				
			||||||
          HMI_ValueStruct.Move_E_scale = current_position.e * MINUNITMULT;
 | 
					          HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT;
 | 
				
			||||||
          DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
 | 
					          DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scaled);
 | 
				
			||||||
        #endif
 | 
					        #endif
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      case PREPARE_CASE_DISA: // Disable steppers
 | 
					      case PREPARE_CASE_DISA: // Disable steppers
 | 
				
			||||||
@@ -2573,11 +2563,11 @@ void HMI_AxisMove() {
 | 
				
			|||||||
    if (HMI_flag.ETempTooLow_flag) {
 | 
					    if (HMI_flag.ETempTooLow_flag) {
 | 
				
			||||||
      if (encoder_diffState == ENCODER_DIFF_ENTER) {
 | 
					      if (encoder_diffState == ENCODER_DIFF_ENTER) {
 | 
				
			||||||
        HMI_flag.ETempTooLow_flag = false;
 | 
					        HMI_flag.ETempTooLow_flag = false;
 | 
				
			||||||
        HMI_ValueStruct.Move_E_scale = current_position.e * MINUNITMULT;
 | 
					        HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT;
 | 
				
			||||||
        Draw_Move_Menu();
 | 
					        Draw_Move_Menu();
 | 
				
			||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scaled);
 | 
				
			||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scaled);
 | 
				
			||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scaled);
 | 
				
			||||||
        DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, 1, 216, MBASE(4), 0);
 | 
					        DWIN_Draw_Signed_Float(font8x16, Color_Bg_Black, 3, 1, 216, MBASE(4), 0);
 | 
				
			||||||
        DWIN_UpdateLCD();
 | 
					        DWIN_UpdateLCD();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -2602,20 +2592,20 @@ void HMI_AxisMove() {
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      case 1: // X axis move
 | 
					      case 1: // X axis move
 | 
				
			||||||
        checkkey = Move_X;
 | 
					        checkkey = Move_X;
 | 
				
			||||||
        HMI_ValueStruct.Move_X_scale = current_position.x * MINUNITMULT;
 | 
					        HMI_ValueStruct.Move_X_scaled = current_position.x * MINUNITMULT;
 | 
				
			||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scaled);
 | 
				
			||||||
        EncoderRate.enabled = true;
 | 
					        EncoderRate.enabled = true;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      case 2: // Y axis move
 | 
					      case 2: // Y axis move
 | 
				
			||||||
        checkkey = Move_Y;
 | 
					        checkkey = Move_Y;
 | 
				
			||||||
        HMI_ValueStruct.Move_Y_scale = current_position.y * MINUNITMULT;
 | 
					        HMI_ValueStruct.Move_Y_scaled = current_position.y * MINUNITMULT;
 | 
				
			||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scaled);
 | 
				
			||||||
        EncoderRate.enabled = true;
 | 
					        EncoderRate.enabled = true;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      case 3: // Z axis move
 | 
					      case 3: // Z axis move
 | 
				
			||||||
        checkkey = Move_Z;
 | 
					        checkkey = Move_Z;
 | 
				
			||||||
        HMI_ValueStruct.Move_Z_scale = current_position.z * MINUNITMULT;
 | 
					        HMI_ValueStruct.Move_Z_scaled = current_position.z * MINUNITMULT;
 | 
				
			||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scaled);
 | 
				
			||||||
        EncoderRate.enabled = true;
 | 
					        EncoderRate.enabled = true;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
        #if HAS_HOTEND
 | 
					        #if HAS_HOTEND
 | 
				
			||||||
@@ -2630,8 +2620,8 @@ void HMI_AxisMove() {
 | 
				
			|||||||
              }
 | 
					              }
 | 
				
			||||||
            #endif
 | 
					            #endif
 | 
				
			||||||
            checkkey = Extruder;
 | 
					            checkkey = Extruder;
 | 
				
			||||||
            HMI_ValueStruct.Move_E_scale = current_position.e * MINUNITMULT;
 | 
					            HMI_ValueStruct.Move_E_scaled = current_position.e * MINUNITMULT;
 | 
				
			||||||
            DWIN_Draw_Signed_Float(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
 | 
					            DWIN_Draw_Signed_Float(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scaled);
 | 
				
			||||||
            EncoderRate.enabled = true;
 | 
					            EncoderRate.enabled = true;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        #endif
 | 
					        #endif
 | 
				
			||||||
@@ -3417,8 +3407,8 @@ void HMI_MaxAcceleration() {
 | 
				
			|||||||
      if (WITHIN(select_jerk.now, 1, 4)) {
 | 
					      if (WITHIN(select_jerk.now, 1, 4)) {
 | 
				
			||||||
        checkkey = MaxJerk_value;
 | 
					        checkkey = MaxJerk_value;
 | 
				
			||||||
        HMI_flag.jerk_axis = AxisEnum(select_jerk.now - 1);
 | 
					        HMI_flag.jerk_axis = AxisEnum(select_jerk.now - 1);
 | 
				
			||||||
        HMI_ValueStruct.Max_Jerk = planner.max_jerk[HMI_flag.jerk_axis] * MINUNITMULT;
 | 
					        HMI_ValueStruct.Max_Jerk_scaled = planner.max_jerk[HMI_flag.jerk_axis] * MINUNITMULT;
 | 
				
			||||||
        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
 | 
					        DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk_scaled);
 | 
				
			||||||
        EncoderRate.enabled = true;
 | 
					        EncoderRate.enabled = true;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else { // Back
 | 
					      else { // Back
 | 
				
			||||||
@@ -3447,8 +3437,8 @@ void HMI_Step() {
 | 
				
			|||||||
    if (WITHIN(select_step.now, 1, 4)) {
 | 
					    if (WITHIN(select_step.now, 1, 4)) {
 | 
				
			||||||
      checkkey = Step_value;
 | 
					      checkkey = Step_value;
 | 
				
			||||||
      HMI_flag.step_axis = AxisEnum(select_step.now - 1);
 | 
					      HMI_flag.step_axis = AxisEnum(select_step.now - 1);
 | 
				
			||||||
      HMI_ValueStruct.Max_Step = planner.settings.axis_steps_per_mm[HMI_flag.step_axis] * MINUNITMULT;
 | 
					      HMI_ValueStruct.Max_Step_scaled = planner.settings.axis_steps_per_mm[HMI_flag.step_axis] * MINUNITMULT;
 | 
				
			||||||
      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step);
 | 
					      DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Select_Color, 3, UNITFDIGITS, 210, MBASE(select_step.now), HMI_ValueStruct.Max_Step_scaled);
 | 
				
			||||||
      EncoderRate.enabled = true;
 | 
					      EncoderRate.enabled = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else { // Back
 | 
					    else { // Back
 | 
				
			||||||
@@ -3499,7 +3489,7 @@ void EachMomentUpdate() {
 | 
				
			|||||||
      planner.finish_and_disable();
 | 
					      planner.finish_and_disable();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // show percent bar and value
 | 
					      // show percent bar and value
 | 
				
			||||||
      Percentrecord = 0;
 | 
					      _card_percent = 0;
 | 
				
			||||||
      Draw_Print_ProgressBar();
 | 
					      Draw_Print_ProgressBar();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // show print done confirm
 | 
					      // show print done confirm
 | 
				
			||||||
@@ -3517,12 +3507,8 @@ void EachMomentUpdate() {
 | 
				
			|||||||
  if (HMI_flag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) {
 | 
					  if (HMI_flag.pause_action && printingIsPaused() && !planner.has_blocks_queued()) {
 | 
				
			||||||
    HMI_flag.pause_action = false;
 | 
					    HMI_flag.pause_action = false;
 | 
				
			||||||
    #if ENABLED(PAUSE_HEAT)
 | 
					    #if ENABLED(PAUSE_HEAT)
 | 
				
			||||||
      #if HAS_HEATED_BED
 | 
					      TERN_(HAS_HOTEND, resume_hotend_temp = thermalManager.temp_hotend[0].target);
 | 
				
			||||||
        tempbed = thermalManager.temp_bed.target;
 | 
					      TERN_(HAS_HEATED_BED, resume_bed_temp = thermalManager.temp_bed.target);
 | 
				
			||||||
      #endif
 | 
					 | 
				
			||||||
      #if HAS_HOTEND
 | 
					 | 
				
			||||||
        temphot = thermalManager.temp_hotend[0].target;
 | 
					 | 
				
			||||||
      #endif
 | 
					 | 
				
			||||||
      thermalManager.disable_all_heaters();
 | 
					      thermalManager.disable_all_heaters();
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
    queue.inject_P(PSTR("G1 F1200 X0 Y0"));
 | 
					    queue.inject_P(PSTR("G1 F1200 X0 Y0"));
 | 
				
			||||||
@@ -3534,7 +3520,7 @@ void EachMomentUpdate() {
 | 
				
			|||||||
    if (last_cardpercentValue != card_pct) { // print percent
 | 
					    if (last_cardpercentValue != card_pct) { // print percent
 | 
				
			||||||
      last_cardpercentValue = card_pct;
 | 
					      last_cardpercentValue = card_pct;
 | 
				
			||||||
      if (card_pct) {
 | 
					      if (card_pct) {
 | 
				
			||||||
        Percentrecord = card_pct;
 | 
					        _card_percent = card_pct;
 | 
				
			||||||
        Draw_Print_ProgressBar();
 | 
					        Draw_Print_ProgressBar();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -3551,8 +3537,8 @@ void EachMomentUpdate() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Estimate remaining time every 20 seconds
 | 
					    // Estimate remaining time every 20 seconds
 | 
				
			||||||
    static millis_t next_remain_time_update = 0;
 | 
					    static millis_t next_remain_time_update = 0;
 | 
				
			||||||
    if (Percentrecord > 1 && ELAPSED(ms, next_remain_time_update) && !HMI_flag.heat_flag) {
 | 
					    if (_card_percent > 1 && ELAPSED(ms, next_remain_time_update) && !HMI_flag.heat_flag) {
 | 
				
			||||||
      remain_time = (elapsed.value - dwin_heat_time) / (Percentrecord * 0.01f) - (elapsed.value - dwin_heat_time);
 | 
					      _remain_time = (elapsed.value - dwin_heat_time) / (_card_percent * 0.01f) - (elapsed.value - dwin_heat_time);
 | 
				
			||||||
      next_remain_time_update += SEC_TO_MS(20);
 | 
					      next_remain_time_update += SEC_TO_MS(20);
 | 
				
			||||||
      Draw_Print_ProgressRemain();
 | 
					      Draw_Print_ProgressRemain();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -240,13 +240,13 @@ typedef struct {
 | 
				
			|||||||
  int16_t print_speed     = 100;
 | 
					  int16_t print_speed     = 100;
 | 
				
			||||||
  float Max_Feedspeed     = 0;
 | 
					  float Max_Feedspeed     = 0;
 | 
				
			||||||
  float Max_Acceleration  = 0;
 | 
					  float Max_Acceleration  = 0;
 | 
				
			||||||
  float Max_Jerk          = 0;
 | 
					  float Max_Jerk_scaled   = 0;
 | 
				
			||||||
  float Max_Step          = 0;
 | 
					  float Max_Step_scaled   = 0;
 | 
				
			||||||
  float Move_X_scale      = 0;
 | 
					  float Move_X_scaled     = 0;
 | 
				
			||||||
  float Move_Y_scale      = 0;
 | 
					  float Move_Y_scaled     = 0;
 | 
				
			||||||
  float Move_Z_scale      = 0;
 | 
					  float Move_Z_scaled     = 0;
 | 
				
			||||||
  #if HAS_HOTEND
 | 
					  #if HAS_HOTEND
 | 
				
			||||||
    float Move_E_scale    = 0;
 | 
					    float Move_E_scaled   = 0;
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
  float offset_value      = 0;
 | 
					  float offset_value      = 0;
 | 
				
			||||||
  int8_t show_mode        = 0; // -1: Temperature control    0: Printing temperature
 | 
					  int8_t show_mode        = 0; // -1: Temperature control    0: Printing temperature
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user