diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 90d590bd21..e320b1dcd0 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -33,7 +33,7 @@ //STM32F103RE Machines //#define MachineEnder3V2 -#define MachineEnder3Pro422 +//#define MachineEnder3Pro422 //#define MachineEnder3Pro427 //#define PLUS // Adds bltouch, allmetal, bilinear (standard), lerdge, 93 e steps/mm diff --git a/Marlin/src/lcd/dwin/dwin.cpp b/Marlin/src/lcd/dwin/dwin.cpp index 303c6568ec..43c10f9123 100644 --- a/Marlin/src/lcd/dwin/dwin.cpp +++ b/Marlin/src/lcd/dwin/dwin.cpp @@ -221,6 +221,12 @@ void show_plus_or_minus(uint8_t size, uint16_t bColor, uint8_t iNum, uint8_t fNu } void ICON_Print() { + // Draw This Icons rectangle + //DWIN_Draw_Rectangle(0, White, 17, 130, 80, 165); + + // Remove rectangle from Others + //DWIN_Draw_Rectangle(0, Background_black, 145, 130, 180, 165); + if (select_page.now == 0) { DWIN_ICON_Show(ICON, ICON_Print_1, 17, 130); if (HMI_flag.language_chinese) @@ -238,6 +244,12 @@ void ICON_Print() { } void ICON_Prepare() { + // Draw This Icons rectangle + //DWIN_Draw_Rectangle(0, White, 145, 130, 180, 165); + + // Remove rectangle from Others + //DWIN_Draw_Rectangle(0, Background_black, 17, 130, 80, 165); + if (select_page.now == 1) { DWIN_ICON_Show(ICON, ICON_Prepare_1, 145, 130); if (HMI_flag.language_chinese) @@ -996,23 +1008,29 @@ void HMI_Move_X(void) { else if (encoder_diffState == ENCODER_DIFF_CCW) { HMI_ValueStruct.Move_X_scale -= EncoderRate.encoderMoveValue; } - else if (encoder_diffState == ENCODER_DIFF_ENTER) { - checkkey = AxisMove; - EncoderRate.encoderRateEnabled = 0; - DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Background_black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale); - if (!planner.is_full()) { - // Wait for planner moves to finish! - planner.synchronize(); - planner.buffer_line(current_position, MMM_TO_MMS(HOMING_FEEDRATE_XY), active_extruder); - } - DWIN_UpdateLCD(); - return; - } + NOLESS(HMI_ValueStruct.Move_X_scale, (X_MIN_POS) * MINUNITMULT); NOMORE(HMI_ValueStruct.Move_X_scale, (X_MAX_POS) * MINUNITMULT); current_position[X_AXIS] = HMI_ValueStruct.Move_X_scale / 10; DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Select_Color, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale); DWIN_UpdateLCD(); + + DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Background_black, 3, 1, 216, MBASE(1), HMI_ValueStruct.Move_X_scale); + if (!planner.is_full()) { + // Wait for planner moves to finish! + planner.synchronize(); + planner.buffer_line(current_position, MMM_TO_MMS(HOMING_FEEDRATE_XY), active_extruder); + } + DWIN_UpdateLCD(); + + } + + if (encoder_diffState == ENCODER_DIFF_ENTER) { + EncoderRate.encoderRateEnabled = 0; + planner.synchronize(); + checkkey = AxisMove; + DWIN_UpdateLCD(); + return; } } @@ -1025,23 +1043,29 @@ void HMI_Move_Y(void) { else if (encoder_diffState == ENCODER_DIFF_CCW) { HMI_ValueStruct.Move_Y_scale -= EncoderRate.encoderMoveValue; } - else if (encoder_diffState == ENCODER_DIFF_ENTER) { - checkkey = AxisMove; - EncoderRate.encoderRateEnabled = 0; - DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Background_black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale); - if (!planner.is_full()) { - // Wait for planner moves to finish! - planner.synchronize(); - planner.buffer_line(current_position, MMM_TO_MMS(HOMING_FEEDRATE_XY), active_extruder); - } - DWIN_UpdateLCD(); - return; - } + NOLESS(HMI_ValueStruct.Move_Y_scale, (Y_MIN_POS) * MINUNITMULT); NOMORE(HMI_ValueStruct.Move_Y_scale, (Y_MAX_POS) * MINUNITMULT); current_position[Y_AXIS] = HMI_ValueStruct.Move_Y_scale / 10; DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Select_Color, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale); DWIN_UpdateLCD(); + + DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Background_black, 3, 1, 216, MBASE(2), HMI_ValueStruct.Move_Y_scale); + if (!planner.is_full()) { + // Wait for planner moves to finish! + planner.synchronize(); + planner.buffer_line(current_position, MMM_TO_MMS(HOMING_FEEDRATE_XY), active_extruder); + } + DWIN_UpdateLCD(); + + } + + if (encoder_diffState == ENCODER_DIFF_ENTER) { + EncoderRate.encoderRateEnabled = 0; + planner.synchronize(); + checkkey = AxisMove; + DWIN_UpdateLCD(); + return; } } @@ -1054,23 +1078,28 @@ void HMI_Move_Z(void) { else if (encoder_diffState == ENCODER_DIFF_CCW) { HMI_ValueStruct.Move_Z_scale -= EncoderRate.encoderMoveValue; } - else if (encoder_diffState == ENCODER_DIFF_ENTER) { - checkkey = AxisMove; - EncoderRate.encoderRateEnabled = 0; - DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Background_black, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale); - if (!planner.is_full()) { - // Wait for planner moves to finish! - planner.synchronize(); - planner.buffer_line(current_position, MMM_TO_MMS(HOMING_FEEDRATE_Z), active_extruder); - } - DWIN_UpdateLCD(); - return; - } + NOLESS(HMI_ValueStruct.Move_Z_scale, Z_MIN_POS * MINUNITMULT); NOMORE(HMI_ValueStruct.Move_Z_scale, Z_MAX_POS * MINUNITMULT); current_position[Z_AXIS] = HMI_ValueStruct.Move_Z_scale / 10; DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Select_Color, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale); DWIN_UpdateLCD(); + + DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Background_black, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale); + if (!planner.is_full()) { + // Wait for planner moves to finish! + planner.synchronize(); + planner.buffer_line(current_position, MMM_TO_MMS(HOMING_FEEDRATE_Z), active_extruder); + } + DWIN_UpdateLCD(); + + } + if (encoder_diffState == ENCODER_DIFF_ENTER) { + planner.synchronize(); + checkkey = AxisMove; + EncoderRate.encoderRateEnabled = 0; + DWIN_UpdateLCD(); + return; } } @@ -1085,18 +1114,10 @@ void HMI_Move_Z(void) { else if (encoder_diffState == ENCODER_DIFF_CCW) { HMI_ValueStruct.Move_E_scale -= EncoderRate.encoderMoveValue; } - else if (encoder_diffState == ENCODER_DIFF_ENTER) { - checkkey = AxisMove; - EncoderRate.encoderRateEnabled = 0; - last_E_scale = HMI_ValueStruct.Move_E_scale; - show_plus_or_minus(font8x16, Background_black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale); - if (!planner.is_full()) { - planner.synchronize(); // Wait for planner moves to finish! - planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder); - } - DWIN_UpdateLCD(); - return; - } + + last_E_scale = HMI_ValueStruct.Move_E_scale; + show_plus_or_minus(font8x16, Background_black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale); + if ((HMI_ValueStruct.Move_E_scale - last_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT) HMI_ValueStruct.Move_E_scale = last_E_scale + (EXTRUDE_MAXLENGTH) * MINUNITMULT; else if ((last_E_scale - HMI_ValueStruct.Move_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT) @@ -1104,6 +1125,20 @@ void HMI_Move_Z(void) { current_position.e = HMI_ValueStruct.Move_E_scale / 10; show_plus_or_minus(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale); DWIN_UpdateLCD(); + + if (!planner.is_full()) { + planner.synchronize(); // Wait for planner moves to finish! + planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder); + } + DWIN_UpdateLCD(); + + } + if (encoder_diffState == ENCODER_DIFF_ENTER ) { + EncoderRate.encoderRateEnabled = 0; + planner.synchronize(); // Wait for planner moves to finish! + checkkey = AxisMove; + DWIN_UpdateLCD(); + return; } } @@ -1119,30 +1154,22 @@ void HMI_Zoffset(void) { else if (encoder_diffState == ENCODER_DIFF_CCW) { HMI_ValueStruct.offset_value -= EncoderRate.encoderMoveValue; } - else if (encoder_diffState == ENCODER_DIFF_ENTER) { - EncoderRate.encoderRateEnabled = 0; - zprobe_zoffset = HMI_ValueStruct.offset_value / 100; - #if HAS_BED_PROBE - if (WITHIN(zprobe_zoffset - last_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) - probe.offset.z = zprobe_zoffset; - settings.save(); - #elif ENABLED(BABYSTEPPING) - babystep.add_mm(Z_AXIS, (zprobe_zoffset - last_zoffset)); - #else - UNUSED(zprobe_zoffset - last_zoffset); - #endif - if (HMI_ValueStruct.show_mode == -4) { - checkkey = Prepare; - show_plus_or_minus(font8x16, Background_black, 2, 2, 202, MBASE(4 + MROWS - index_prepare), TERN(HAS_BED_PROBE, probe.offset.z * 100, HMI_ValueStruct.offset_value)); + EncoderRate.encoderRateEnabled = 0; + zprobe_zoffset = HMI_ValueStruct.offset_value / 100; + #if HAS_BED_PROBE + if (WITHIN(zprobe_zoffset - last_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) { + probe.offset.z = zprobe_zoffset; + #if ENABLED(BABYSTEP_ZPROBE_OFFSET) + babystep.add_mm(Z_AXIS, (zprobe_zoffset - last_zoffset)); + #endif } - else { - checkkey = Tune; - show_plus_or_minus(font8x16, Background_black, 2, 2, 202, MBASE(5 + MROWS - index_tune), TERN(HAS_BED_PROBE, probe.offset.z * 100, HMI_ValueStruct.offset_value)); - } - DWIN_UpdateLCD(); - return; - } + #elif ENABLED(BABYSTEPPING) + babystep.add_mm(Z_AXIS, (zprobe_zoffset - last_zoffset)); + #else + UNUSED(zprobe_zoffset - last_zoffset); + #endif + NOLESS(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MIN) * 100); NOMORE(HMI_ValueStruct.offset_value, (Z_PROBE_OFFSET_RANGE_MAX) * 100); if (HMI_ValueStruct.show_mode == -4) @@ -1151,6 +1178,19 @@ void HMI_Zoffset(void) { show_plus_or_minus(font8x16, Select_Color, 2, 2, 202, MBASE(5 + MROWS - index_tune), HMI_ValueStruct.offset_value); DWIN_UpdateLCD(); } + if (encoder_diffState == ENCODER_DIFF_ENTER) { + if (HMI_ValueStruct.show_mode == -4) { + checkkey = Prepare; + show_plus_or_minus(font8x16, Background_black, 2, 2, 202, MBASE(4 + MROWS - index_prepare), TERN(HAS_BED_PROBE, probe.offset.z * 100, HMI_ValueStruct.offset_value)); + } + else { + checkkey = Tune; + show_plus_or_minus(font8x16, Background_black, 2, 2, 202, MBASE(5 + MROWS - index_tune), TERN(HAS_BED_PROBE, probe.offset.z * 100, HMI_ValueStruct.offset_value)); + } + settings.save(); + DWIN_UpdateLCD(); + return; + } } #if HAS_HOTEND @@ -2459,6 +2499,12 @@ void HMI_AxisMove(void) { EncoderRate.encoderRateEnabled = 1; break; case 3: // Z axis move + if (!all_axes_known()) { + queue.inject_P(PSTR("G28")); // G28 will set home_flag + Popup_Window_Home(); + DWIN_UpdateLCD(); + return; + } checkkey = Move_Z; HMI_ValueStruct.Move_Z_scale = current_position[Z_AXIS] * MINUNITMULT; DWIN_Draw_FloatValue(true, true, 0, font8x16, White, Select_Color, 3, 1, 216, MBASE(3), HMI_ValueStruct.Move_Z_scale); @@ -2898,6 +2944,8 @@ void HMI_Info(void) { if (encoder_diffState == ENCODER_DIFF_ENTER) { #if HAS_LEVELING checkkey = Control; + Clear_Main_Window(); + Goto_MainMenu(); select_control.set(CONTROL_ITEMS); Draw_Control_Menu(); #else @@ -3334,8 +3382,8 @@ void HMI_Init(void) { HMI_SDCardInit(); for (uint16_t t = 0; t <= 100; t += 2) { - DWIN_ICON_Show(ICON, ICON_Bar, 15, 260); - DWIN_Draw_Rectangle(1, Background_black, 15 + t * 242 / 100, 260, 257, 280); + DWIN_ICON_Show(ICON, ICON_Bar, 15, 450); + DWIN_Draw_Rectangle(1, Background_black, 15 + t * 242 / 100, 450, 257, 470); DWIN_UpdateLCD(); delay(20); } @@ -3558,6 +3606,10 @@ void DWIN_CompletedHoming(void) { planner.finish_and_disable(); Goto_MainMenu(); } + else if (checkkey == AxisMove) { + Goto_MainMenu(); + HMI_AxisMove(); + } } void DWIN_CompletedLeveling(void) {