Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix E3V2 DWIN Jerk Menu #20352

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
143 changes: 76 additions & 67 deletions Marlin/src/lcd/dwin/e3v2/dwin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,10 @@ bool dwin_abort_flag = false; // Flag to reset feedrate, return to Home

constexpr float default_max_feedrate[] = DEFAULT_MAX_FEEDRATE;
constexpr float default_max_acceleration[] = DEFAULT_MAX_ACCELERATION;
constexpr float default_max_jerk[] = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK };

#if HAS_CLASSIC_JERK
constexpr float default_max_jerk[] = { DEFAULT_XJERK, DEFAULT_YJERK, DEFAULT_ZJERK, DEFAULT_EJERK };
#endif

uint8_t Percentrecord = 0;
uint16_t remain_time = 0;
Expand Down Expand Up @@ -1492,8 +1495,8 @@ void HMI_MaxAccelerationXYZE() {
if (Apply_Encoder(encoder_diffState, HMI_ValueStruct.Max_Jerk)) {
checkkey = MaxJerk;
EncoderRate.enabled = false;
if (WITHIN(HMI_flag.step_axis, X_AXIS, E_AXIS))
planner.set_max_jerk(HMI_flag.step_axis, HMI_ValueStruct.Max_Jerk / 10);
if (WITHIN(HMI_flag.jerk_axis, X_AXIS, E_AXIS))
planner.set_max_jerk(HMI_flag.jerk_axis, HMI_ValueStruct.Max_Jerk / 10);
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(select_jerk.now), HMI_ValueStruct.Max_Jerk);
return;
}
Expand Down Expand Up @@ -2955,75 +2958,77 @@ inline void Draw_Max_Accel_Menu() {
#endif
}

inline void Draw_Max_Jerk_Menu() {
Clear_Main_Window();
#if HAS_CLASSIC_JERK
inline void Draw_Max_Jerk_Menu() {
Clear_Main_Window();

if (HMI_IsChinese()) {
DWIN_Frame_TitleCopy(1, 1, 16, 28, 28); // "Jerk"

DWIN_Frame_AreaCopy(1, 173, 133, 200, 147, LBLX , MBASE(1));
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(1) + 1);
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(1));
DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 83, MBASE(1)); // Max Jerk speed X
DWIN_Frame_AreaCopy(1, 173, 133, 200, 147, LBLX , MBASE(2));
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(2) + 1);
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(2));
DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 83, MBASE(2) + 3); // Max Jerk speed Y
DWIN_Frame_AreaCopy(1, 173, 133, 200, 147, LBLX , MBASE(3));
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(3) + 1);
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(3));
DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 83, MBASE(3) + 3); // Max Jerk speed Z
#if HAS_HOTEND
DWIN_Frame_AreaCopy(1, 173, 133, 200, 147, LBLX , MBASE(4));
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(4) + 1);
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(4));
DWIN_Frame_AreaCopy(1, 18, 150, 25, 160, LBLX + 83, MBASE(4) + 3); // Max Jerk speed E
#endif
}
else {
#ifdef USE_STRING_HEADINGS
Draw_Title(GET_TEXT_F(MSG_JERK));
DWIN_Draw_String(false, true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(1), F("Max Jerk X"));
DWIN_Draw_String(false, true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(2), F("Max Jerk Y"));
DWIN_Draw_String(false, true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(3), F("Max Jerk Z"));
if (HMI_IsChinese()) {
DWIN_Frame_TitleCopy(1, 1, 16, 28, 28); // "Jerk"

DWIN_Frame_AreaCopy(1, 173, 133, 200, 147, LBLX , MBASE(1));
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(1) + 1);
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(1));
DWIN_Frame_AreaCopy(1, 229, 133, 236, 147, LBLX + 83, MBASE(1)); // Max Jerk speed X
DWIN_Frame_AreaCopy(1, 173, 133, 200, 147, LBLX , MBASE(2));
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(2) + 1);
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(2));
DWIN_Frame_AreaCopy(1, 1, 150, 7, 160, LBLX + 83, MBASE(2) + 3); // Max Jerk speed Y
DWIN_Frame_AreaCopy(1, 173, 133, 200, 147, LBLX , MBASE(3));
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(3) + 1);
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(3));
DWIN_Frame_AreaCopy(1, 9, 150, 16, 160, LBLX + 83, MBASE(3) + 3); // Max Jerk speed Z
#if HAS_HOTEND
DWIN_Draw_String(false, true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(4), F("Max Jerk E"));
DWIN_Frame_AreaCopy(1, 173, 133, 200, 147, LBLX , MBASE(4));
DWIN_Frame_AreaCopy(1, 1, 180, 28, 192, LBLX + 27, MBASE(4) + 1);
DWIN_Frame_AreaCopy(1, 202, 133, 228, 147, LBLX + 53, MBASE(4));
DWIN_Frame_AreaCopy(1, 18, 150, 25, 160, LBLX + 83, MBASE(4) + 3); // Max Jerk speed E
#endif
#else
DWIN_Frame_TitleCopy(1, 144, 16, 189, 26); // "Jerk"
draw_max_en(MBASE(1)); // "Max"
draw_jerk_en(MBASE(1)); // "Jerk"
draw_speed_en(72, MBASE(1)); // "Speed"
say_x(115, MBASE(1)); // "X"

draw_max_en(MBASE(2)); // "Max"
draw_jerk_en(MBASE(2)); // "Jerk"
draw_speed_en(72, MBASE(2)); // "Speed"
say_y(115, MBASE(2)); // "Y"

draw_max_en(MBASE(3)); // "Max"
draw_jerk_en(MBASE(3)); // "Jerk"
draw_speed_en(72, MBASE(3)); // "Speed"
say_z(115, MBASE(3)); // "Z"
}
else {
#ifdef USE_STRING_HEADINGS
Draw_Title(GET_TEXT_F(MSG_JERK));
DWIN_Draw_String(false, true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(1), F("Max Jerk X"));
DWIN_Draw_String(false, true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(2), F("Max Jerk Y"));
DWIN_Draw_String(false, true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(3), F("Max Jerk Z"));
#if HAS_HOTEND
DWIN_Draw_String(false, true, font8x16, Color_White, Color_Bg_Black, LBLX, MBASE(4), F("Max Jerk E"));
#endif
#else
DWIN_Frame_TitleCopy(1, 144, 16, 189, 26); // "Jerk"
draw_max_en(MBASE(1)); // "Max"
draw_jerk_en(MBASE(1)); // "Jerk"
draw_speed_en(72, MBASE(1)); // "Speed"
say_x(115, MBASE(1)); // "X"

draw_max_en(MBASE(2)); // "Max"
draw_jerk_en(MBASE(2)); // "Jerk"
draw_speed_en(72, MBASE(2)); // "Speed"
say_y(115, MBASE(2)); // "Y"

draw_max_en(MBASE(3)); // "Max"
draw_jerk_en(MBASE(3)); // "Jerk"
draw_speed_en(72, MBASE(3)); // "Speed"
say_z(115, MBASE(3)); // "Z"

#if HAS_HOTEND
draw_max_en(MBASE(4)); // "Max"
draw_jerk_en(MBASE(4)); // "Jerk"
draw_speed_en(72, MBASE(4)); // "Speed"
say_e(115, MBASE(4)); // "E"
#if HAS_HOTEND
draw_max_en(MBASE(4)); // "Max"
draw_jerk_en(MBASE(4)); // "Jerk"
draw_speed_en(72, MBASE(4)); // "Speed"
say_e(115, MBASE(4)); // "E"
#endif
#endif
}

Draw_Back_First();
LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MaxSpeedJerkX + i);
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(1), planner.max_jerk[X_AXIS] * MINUNITMULT);
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(2), planner.max_jerk[Y_AXIS] * MINUNITMULT);
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(3), planner.max_jerk[Z_AXIS] * MINUNITMULT);
#if HAS_HOTEND
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(4), planner.max_jerk[E_AXIS] * MINUNITMULT);
#endif
}

Draw_Back_First();
LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MaxSpeedJerkX + i);
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(1), planner.max_jerk[X_AXIS] * MINUNITMULT);
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(2), planner.max_jerk[Y_AXIS] * MINUNITMULT);
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(3), planner.max_jerk[Z_AXIS] * MINUNITMULT);
#if HAS_HOTEND
DWIN_Draw_FloatValue(true, true, 0, font8x16, Color_White, Color_Bg_Black, 3, 1, 210, MBASE(4), planner.max_jerk[E_AXIS] * MINUNITMULT);
#endif
}
#endif

inline void Draw_Steps_Menu() {
Clear_Main_Window();
Expand Down Expand Up @@ -3636,7 +3641,9 @@ void DWIN_HandleScreen() {
#endif
case MaxSpeed: HMI_MaxSpeed(); break;
case MaxAcceleration: HMI_MaxAcceleration(); break;
case MaxJerk: HMI_MaxJerk(); break;
#if HAS_CLASSIC_JERK
case MaxJerk: HMI_MaxJerk(); break;
#endif
case Step: HMI_Step(); break;
case Move_X: HMI_Move_X(); break;
case Move_Y: HMI_Move_Y(); break;
Expand All @@ -3657,7 +3664,9 @@ void DWIN_HandleScreen() {
case PrintSpeed: HMI_PrintSpeed(); break;
case MaxSpeed_value: HMI_MaxFeedspeedXYZE(); break;
case MaxAcceleration_value: HMI_MaxAccelerationXYZE(); break;
case MaxJerk_value: HMI_MaxJerkXYZE(); break;
#if HAS_CLASSIC_JERK
case MaxJerk_value: HMI_MaxJerkXYZE(); break;
#endif
case Step_value: HMI_StepXYZE(); break;
default: break;
}
Expand Down
4 changes: 4 additions & 0 deletions buildroot/tests/STM32F103RET6_creality-tests
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,8 @@ use_example_configs "Creality/Ender-3 V2"
opt_enable MARLIN_DEV_MODE
exec_test $1 $2 "Ender 3 v2" "$3"

use_example_configs "Creality/Ender-3 V2"
opt_disable CLASSIC_JERK
exec_test $1 $2 "Ender 3 v2 w/o CLASSIC_JERK" "$3"

restore_configs