31
31
32
32
#if ENABLED(DWIN_LCD_PROUI)
33
33
34
+ #if DISABLED(LIMITED_MAX_FR_EDITING)
35
+ #warning "LIMITED_MAX_FR_EDITING is recommended with ProUI."
36
+ #endif
37
+ #if DISABLED(LIMITED_MAX_ACCEL_EDITING)
38
+ #warning "LIMITED_MAX_ACCEL_EDITING is recommended with ProUI."
39
+ #endif
40
+ #if ENABLED(CLASSIC_JERK) && DISABLED(LIMITED_JERK_EDITING)
41
+ #warning "LIMITED_JERK_EDITING is recommended with ProUI."
42
+ #endif
43
+ #if DISABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU)
44
+ #warning "INDIVIDUAL_AXIS_HOMING_SUBMENU is recommended with ProUI."
45
+ #endif
46
+ #if DISABLED(LCD_SET_PROGRESS_MANUALLY)
47
+ #warning "LCD_SET_PROGRESS_MANUALLY is recommended with ProUI."
48
+ #endif
49
+ #if DISABLED(STATUS_MESSAGE_SCROLLING)
50
+ #warning "STATUS_MESSAGE_SCROLLING is recommended with ProUI."
51
+ #endif
52
+ #if DISABLED(BAUD_RATE_GCODE)
53
+ #warning "BAUD_RATE_GCODE is recommended with ProUI."
54
+ #endif
55
+ #if DISABLED(SOUND_MENU_ITEM)
56
+ #warning "SOUND_MENU_ITEM is recommended with ProUI."
57
+ #endif
58
+ #if DISABLED(PRINTCOUNTER)
59
+ #warning "PRINTCOUNTER is recommended with ProUI."
60
+ #endif
61
+ #if HAS_MESH && DISABLED(MESH_EDIT_MENU)
62
+ #warning "MESH_EDIT_MENU is recommended with ProUI."
63
+ #endif
64
+
34
65
#include " dwin.h"
35
66
#include " menus.h"
36
67
#include " dwin_popup.h"
68
99
#define HAS_ONESTEP_LEVELING 1
69
100
#endif
70
101
71
- #if HAS_MESH || HAS_ONESTEP_LEVELING
102
+ #if HAS_MESH || (HAS_LEVELING && HAS_ZOFFSET_ITEM)
72
103
#include " ../../../feature/bedlevel/bedlevel.h"
73
104
#include " bedlevel_tools.h"
74
105
#endif
165
196
#define DWIN_SCROLL_UPDATE_INTERVAL SEC_TO_MS (2 )
166
197
#define DWIN_REMAIN_TIME_UPDATE_INTERVAL SEC_TO_MS (20 )
167
198
168
- #define BABY_Z_VAR TERN (HAS_BED_PROBE, probe.offset.z, HMI_data.ManualZOffset)
199
+ #if HAS_MESH
200
+ #define BABY_Z_VAR TERN (HAS_BED_PROBE, probe.offset.z, HMI_data.ManualZOffset)
201
+ #else
202
+ float z_offset = 0 ;
203
+ #define BABY_Z_VAR z_offset
204
+ #endif
169
205
170
206
// Structs
171
207
HMI_value_t HMI_value;
@@ -220,7 +256,13 @@ constexpr float max_acceleration_edit_values[] =
220
256
;
221
257
222
258
#if HAS_CLASSIC_JERK
223
- constexpr float max_jerk_edit_values[] = MAX_JERK_EDIT_VALUES;
259
+ constexpr float max_jerk_edit_values[] =
260
+ #ifdef MAX_JERK_EDIT_VALUES
261
+ MAX_JERK_EDIT_VALUES
262
+ #else
263
+ { DEFAULT_XJERK * 2 , DEFAULT_YJERK * 2 , DEFAULT_ZJERK * 2 , DEFAULT_EJERK * 2 }
264
+ #endif
265
+ ;
224
266
#endif
225
267
226
268
static uint8_t _percent_done = 0 ;
@@ -834,6 +876,8 @@ void update_variable() {
834
876
else
835
877
DWINUI::Draw_Icon (ICON_Zoffset, 187 , 416 );
836
878
}
879
+ #else
880
+ DWINUI::Draw_Icon (ICON_Zoffset, 187 , 416 );
837
881
#endif
838
882
839
883
_draw_xyz_position (false );
@@ -1781,7 +1825,7 @@ void DWIN_SetDataDefaults() {
1781
1825
#endif
1782
1826
TERN_ (BAUD_RATE_GCODE, SetBaud250K ());
1783
1827
#if BOTH(LED_CONTROL_MENU, HAS_COLOR_LEDS)
1784
- leds.set_default ();
1828
+ TERN_ (LED_COLOR_PRESETS, leds.set_default () );
1785
1829
ApplyLEDColor ();
1786
1830
#endif
1787
1831
}
@@ -1799,10 +1843,10 @@ void DWIN_CopySettingsFrom(const char * const buff) {
1799
1843
TERN_ (BAUD_RATE_GCODE, HMI_SetBaudRate ());
1800
1844
#if BOTH(LED_CONTROL_MENU, HAS_COLOR_LEDS)
1801
1845
leds.set_color (
1802
- ( HMI_data.LED_Color >> 16 ) & 0xFF ,
1803
- ( HMI_data.LED_Color >> 8 ) & 0xFF ,
1804
- ( HMI_data.LED_Color >> 0 ) & 0xFF
1805
- OPTARG (HAS_WHITE_LED, ( HMI_data.LED_Color >> 24 ) & 0xFF )
1846
+ HMI_data.Led_Color . r ,
1847
+ HMI_data.Led_Color . g ,
1848
+ HMI_data.Led_Color . b
1849
+ OPTARG (HAS_WHITE_LED, HMI_data.Led_Color . w )
1806
1850
);
1807
1851
leds.update ();
1808
1852
#endif
@@ -2094,7 +2138,7 @@ void HomeZ() { queue.inject(F("G28Z")); }
2094
2138
);
2095
2139
gcode.process_subcommands_now (cmd);
2096
2140
#else
2097
- set_bed_leveling_enabled (false );
2141
+ TERN_ (HAS_LEVELING, set_bed_leveling_enabled (false ) );
2098
2142
gcode.process_subcommands_now (F (" G28O\n G0Z0F300\n M400" ));
2099
2143
#endif
2100
2144
ui.reset_status ();
@@ -2182,10 +2226,9 @@ void SetPID(celsius_t t, heater_id_t h) {
2182
2226
#endif
2183
2227
2184
2228
#if ENABLED(BAUD_RATE_GCODE)
2185
- void HMI_SetBaudRate () {
2186
- if (HMI_data.Baud115K ) SetBaud115K (); else SetBaud250K ();
2187
- }
2229
+ void HMI_SetBaudRate () { HMI_data.Baud115K ? SetBaud115K () : SetBaud250K (); }
2188
2230
void SetBaudRate () {
2231
+ HMI_data.Baud115K ^= true ;
2189
2232
HMI_SetBaudRate ();
2190
2233
Draw_Chkb_Line (CurrentMenu->line (), HMI_data.Baud115K );
2191
2234
DWIN_UpdateLCD ();
@@ -2223,7 +2266,9 @@ void SetPID(celsius_t t, heater_id_t h) {
2223
2266
}
2224
2267
#endif
2225
2268
#if HAS_COLOR_LEDS
2226
- void ApplyLEDColor () { HMI_data.LED_Color = TERN0 (HAS_WHITE_LED, (leds.color .w << 24 )) | (leds.color .r << 16 ) | (leds.color .g << 8 ) | leds.color .b ; }
2269
+ void ApplyLEDColor () {
2270
+ HMI_data.Led_Color = LEDColor ( {leds.color .r , leds.color .g , leds.color .b OPTARG (HAS_WHITE_LED, HMI_data.Led_Color .w ) } );
2271
+ }
2227
2272
void LiveLEDColor (uint8_t *color) { *color = MenuData.Value ; leds.update (); }
2228
2273
void LiveLEDColorR () { LiveLEDColor (&leds.color .r ); }
2229
2274
void LiveLEDColorG () { LiveLEDColor (&leds.color .g ); }
@@ -2377,55 +2422,66 @@ void ApplyFlow() { planner.refresh_e_factor(0); }
2377
2422
void SetFlow () { SetPIntOnClick (MIN_PRINT_FLOW, MAX_PRINT_FLOW, ApplyFlow); }
2378
2423
2379
2424
// Bed Tramming
2380
- TERN (HAS_BED_PROBE, float , void ) Tram(uint8_t point) {
2381
- char cmd[100 ] = " " ;
2382
- #if HAS_BED_PROBE
2383
- static bool inLev = false ;
2384
- float xpos = 0 , ypos = 0 , zval = 0 , margin = 0 ;
2385
- char str_1[6 ] = " " , str_2[6 ] = " " , str_3[6 ] = " " ;
2386
- if (inLev) return NAN;
2387
- margin = HMI_data.FullManualTramming ? 30 : PROBING_MARGIN;
2388
- #else
2389
- int16_t xpos = 0 , ypos = 0 ;
2390
- int16_t margin = 30 ;
2391
- #endif
2392
2425
2426
+ void TramXY (const uint8_t point, const float &margin, float &x, float &y) {
2393
2427
switch (point) {
2394
2428
case 0 :
2395
2429
LCD_MESSAGE (MSG_LEVBED_FL);
2396
- xpos = ypos = margin;
2430
+ x = y = margin;
2397
2431
break ;
2398
2432
case 1 :
2399
2433
LCD_MESSAGE (MSG_LEVBED_FR);
2400
- xpos = X_BED_SIZE - margin; ypos = margin;
2434
+ x = X_BED_SIZE - margin; y = margin;
2401
2435
break ;
2402
2436
case 2 :
2403
2437
LCD_MESSAGE (MSG_LEVBED_BR);
2404
- xpos = X_BED_SIZE - margin; ypos = Y_BED_SIZE - margin;
2438
+ x = X_BED_SIZE - margin; y = Y_BED_SIZE - margin;
2405
2439
break ;
2406
2440
case 3 :
2407
2441
LCD_MESSAGE (MSG_LEVBED_BL);
2408
- xpos = margin; ypos = Y_BED_SIZE - margin;
2442
+ x = margin; y = Y_BED_SIZE - margin;
2409
2443
break ;
2410
2444
case 4 :
2411
2445
LCD_MESSAGE (MSG_LEVBED_C);
2412
- xpos = X_BED_SIZE / 2 ; ypos = Y_BED_SIZE / 2 ;
2446
+ x = X_CENTER; y = Y_CENTER ;
2413
2447
break ;
2414
2448
}
2449
+ }
2415
2450
2416
- planner.synchronize ();
2451
+ #if HAS_BED_PROBE
2452
+
2453
+ float Tram (const uint8_t point) {
2454
+ char cmd[100 ] = " " ;
2455
+ static bool inLev = false ;
2456
+ float xpos = 0 , ypos = 0 , zval = 0 , margin = 0 ;
2457
+ char str_1[6 ] = " " , str_2[6 ] = " " , str_3[6 ] = " " ;
2458
+ if (inLev) return NAN;
2459
+ margin = HMI_data.FullManualTramming ? 30 : PROBING_MARGIN;
2417
2460
2418
- # if HAS_BED_PROBE
2461
+ TramXY (point, margin, xpos, ypos);
2419
2462
2420
2463
if (HMI_data.FullManualTramming ) {
2421
- planner.synchronize ();
2422
2464
sprintf_P (cmd, PSTR (" M420S0\n G28O\n G90\n G0Z5F300\n G0X%sY%sF5000\n G0Z0F300" ),
2423
2465
dtostrf (xpos, 1 , 1 , str_1),
2424
2466
dtostrf (ypos, 1 , 1 , str_2)
2425
2467
);
2426
2468
queue.inject (cmd);
2427
2469
}
2428
2470
else {
2471
+ // AUTO_BED_LEVELING_BILINEAR does not define MESH_INSET
2472
+ #ifndef MESH_MIN_X
2473
+ #define MESH_MIN_X (_MAX(X_MIN_BED + PROBING_MARGIN, X_MIN_POS))
2474
+ #endif
2475
+ #ifndef MESH_MIN_Y
2476
+ #define MESH_MIN_Y (_MAX(Y_MIN_BED + PROBING_MARGIN, Y_MIN_POS))
2477
+ #endif
2478
+ #ifndef MESH_MAX_X
2479
+ #define MESH_MAX_X (_MIN(X_MAX_BED - (PROBING_MARGIN), X_MAX_POS))
2480
+ #endif
2481
+ #ifndef MESH_MAX_Y
2482
+ #define MESH_MAX_Y (_MIN(Y_MAX_BED - (PROBING_MARGIN), Y_MAX_POS))
2483
+ #endif
2484
+
2429
2485
LIMIT (xpos, MESH_MIN_X, MESH_MAX_X);
2430
2486
LIMIT (ypos, MESH_MIN_Y, MESH_MAX_Y);
2431
2487
probe.stow ();
@@ -2445,14 +2501,20 @@ TERN(HAS_BED_PROBE, float, void) Tram(uint8_t point) {
2445
2501
inLev = false ;
2446
2502
}
2447
2503
return zval;
2504
+ }
2505
+
2506
+ #else
2448
2507
2449
- #else // !HAS_BED_PROBE
2508
+ void Tram (const uint8_t point) {
2509
+ float xpos = 0 , ypos = 0 , margin = 30 ;
2510
+ TramXY (point, margin, xpos, ypos);
2450
2511
2451
- sprintf_P (cmd, PSTR (" M420S0\n G28O\n G90\n G0Z5F300\n G0X%iY%iF5000\n G0Z0F300" ), xpos, ypos);
2512
+ char cmd[100 ] = " " , str_1[6 ] = " " , str_2[6 ] = " " ;
2513
+ sprintf_P (cmd, PSTR (" M420S0\n G28O\n G90\n G0Z5F300\n G0X%sY%sF5000\n G0Z0F300" ), dtostrf (xpos, 1 , 1 , str_1), dtostrf (ypos, 1 , 1 , str_2));
2452
2514
queue.inject (cmd);
2515
+ }
2453
2516
2454
- #endif
2455
- }
2517
+ #endif
2456
2518
2457
2519
void TramFL () { Tram (0 ); }
2458
2520
void TramFR () { Tram (1 ); }
@@ -3350,7 +3412,7 @@ void Draw_GetColor_Menu() {
3350
3412
EDIT_ITEM_F (ICON_LedControl, MSG_COLORS_GREEN, onDrawPInt8Menu, SetLEDColorG, &leds.color .g );
3351
3413
EDIT_ITEM_F (ICON_LedControl, MSG_COLORS_BLUE, onDrawPInt8Menu, SetLEDColorB, &leds.color .b );
3352
3414
#if ENABLED(HAS_WHITE_LED)
3353
- EDIT_ITEM_F (ICON_LedControl, MSG_COLORS_WHITE, onDrawPInt8Menu, SetLedColorW , &leds.color .w );
3415
+ EDIT_ITEM_F (ICON_LedControl, MSG_COLORS_WHITE, onDrawPInt8Menu, SetLEDColorW , &leds.color .w );
3354
3416
#endif
3355
3417
#endif
3356
3418
#endif
@@ -3763,6 +3825,7 @@ void Draw_Steps_Menu() {
3763
3825
#endif // AUTO_BED_LEVELING_UBL
3764
3826
3765
3827
#if HAS_MESH
3828
+
3766
3829
void Draw_MeshSet_Menu () {
3767
3830
checkkey = Menu;
3768
3831
if (SetMenu (MeshMenu, GET_TEXT_F (MSG_MESH_LEVELING), 15 )) {
0 commit comments