|
@@ -163,10 +163,10 @@ static bool sdprint = false;
|
163
|
163
|
|
164
|
164
|
#if ENABLED(PAUSE_HEAT)
|
165
|
165
|
#if HAS_HOTEND
|
166
|
|
- uint16_t resume_hotend_temp = 0;
|
|
166
|
+ celsius_t resume_hotend_temp = 0;
|
167
|
167
|
#endif
|
168
|
168
|
#if HAS_HEATED_BED
|
169
|
|
- uint16_t resume_bed_temp = 0;
|
|
169
|
+ celsius_t resume_bed_temp = 0;
|
170
|
170
|
#endif
|
171
|
171
|
#if HAS_FAN
|
172
|
172
|
uint16_t resume_fan = 0;
|
|
@@ -708,7 +708,7 @@ void _update_axis_value(const AxisEnum axis, const uint16_t x, const uint16_t y,
|
708
|
708
|
else if (blink && draw_empty)
|
709
|
709
|
DWINUI::Draw_String(HMI_data.Coordinate_Color, HMI_data.Background_Color, x, y, F(" "));
|
710
|
710
|
else
|
711
|
|
- DWINUI::Draw_Signed_Float(HMI_data.Coordinate_Color, HMI_data.Background_Color, 3, 1, x, y, p * 10);
|
|
711
|
+ DWINUI::Draw_Signed_Float(HMI_data.Coordinate_Color, HMI_data.Background_Color, 3, 1, x, y, p);
|
712
|
712
|
}
|
713
|
713
|
}
|
714
|
714
|
|
|
@@ -805,7 +805,7 @@ void update_variable() {
|
805
|
805
|
static float _offset = 0;
|
806
|
806
|
if (BABY_Z_VAR != _offset) {
|
807
|
807
|
_offset = BABY_Z_VAR;
|
808
|
|
- DWINUI::Draw_Signed_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 210, 417, _offset * 100);
|
|
808
|
+ DWINUI::Draw_Signed_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 210, 417, _offset);
|
809
|
809
|
}
|
810
|
810
|
|
811
|
811
|
_draw_xyz_position(false);
|
|
@@ -1030,14 +1030,7 @@ void Draw_Status_Area(const bool with_update) {
|
1030
|
1030
|
DWINUI::Draw_Icon(ICON_Zoffset, 187, 416);
|
1031
|
1031
|
#endif
|
1032
|
1032
|
|
1033
|
|
- if (BABY_Z_VAR < 0) {
|
1034
|
|
- DWINUI::Draw_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 207, 417, -BABY_Z_VAR * 100);
|
1035
|
|
- DWINUI::Draw_String(HMI_data.Indicator_Color, 205, 419, F("-"));
|
1036
|
|
- }
|
1037
|
|
- else {
|
1038
|
|
- DWINUI::Draw_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 207, 417, BABY_Z_VAR * 100);
|
1039
|
|
- DWINUI::Draw_String(HMI_data.Indicator_Color, 205, 419, F(" "));
|
1040
|
|
- }
|
|
1033
|
+ DWINUI::Draw_Signed_Float(DWIN_FONT_STAT, HMI_data.Indicator_Color, HMI_data.Background_Color, 2, 2, 210, 417, BABY_Z_VAR);
|
1041
|
1034
|
|
1042
|
1035
|
DWIN_Draw_Rectangle(1, HMI_data.SplitLine_Color, 0, 449, DWIN_WIDTH, 451);
|
1043
|
1036
|
|
|
@@ -1690,7 +1683,7 @@ void DWIN_CompletedLeveling() { HMI_ReturnScreen(); }
|
1690
|
1683
|
void DWIN_MeshUpdate(const int8_t xpos, const int8_t ypos, const float zval) {
|
1691
|
1684
|
char msg[33] = "";
|
1692
|
1685
|
char str_1[6] = "";
|
1693
|
|
- sprintf_P(msg, PSTR(S_FMT " %i/%i Z=%s"), GET_TEXT(MSG_PROBING_MESH), xpos, ypos,
|
|
1686
|
+ sprintf_P(msg, PSTR(S_FMT " %i/%i Z=%s"), GET_TEXT(MSG_PROBING_POINT), xpos, ypos,
|
1694
|
1687
|
dtostrf(zval, 1, 2, str_1));
|
1695
|
1688
|
ui.set_status(msg);
|
1696
|
1689
|
}
|
|
@@ -1791,6 +1784,7 @@ void DWIN_Print_Started(const bool sd) {
|
1791
|
1784
|
sdprint = card.isPrinting() || sd;
|
1792
|
1785
|
_percent_done = 0;
|
1793
|
1786
|
_remain_time = 0;
|
|
1787
|
+ HMI_flag.print_finish = false;
|
1794
|
1788
|
Goto_PrintProcess();
|
1795
|
1789
|
}
|
1796
|
1790
|
|
|
@@ -1846,18 +1840,20 @@ void DWIN_SetDataDefaults() {
|
1846
|
1840
|
TERN_(HAS_HOTEND, HMI_data.HotendPidT = PREHEAT_1_TEMP_HOTEND);
|
1847
|
1841
|
TERN_(HAS_HEATED_BED, HMI_data.BedPidT = PREHEAT_1_TEMP_BED);
|
1848
|
1842
|
TERN_(HAS_HOTEND, HMI_data.PidCycles = 5);
|
|
1843
|
+ TERN_(PREVENT_COLD_EXTRUSION, HMI_data.ExtMinT = EXTRUDE_MINTEMP);
|
1849
|
1844
|
}
|
1850
|
1845
|
|
1851
|
1846
|
void DWIN_StoreSettings(char *buff) {
|
1852
|
|
- memcpy(buff, &HMI_data, min(sizeof(HMI_data), eeprom_data_size));
|
|
1847
|
+ memcpy(buff, &HMI_data, _MIN(sizeof(HMI_data), eeprom_data_size));
|
1853
|
1848
|
}
|
1854
|
1849
|
|
1855
|
1850
|
void DWIN_LoadSettings(const char *buff) {
|
1856
|
|
- memcpy(&HMI_data, buff, min(sizeof(HMI_data), eeprom_data_size));
|
|
1851
|
+ memcpy(&HMI_data, buff, _MIN(sizeof(HMI_data), eeprom_data_size));
|
1857
|
1852
|
dwin_zoffset = TERN0(HAS_BED_PROBE, probe.offset.z);
|
1858
|
1853
|
if (HMI_data.Text_Color == HMI_data.Background_Color) DWIN_SetColorDefaults();
|
1859
|
1854
|
DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color);
|
1860
|
1855
|
TERN_(PREVENT_COLD_EXTRUSION, ApplyExtMinT());
|
|
1856
|
+ feedrate_percentage = 100;
|
1861
|
1857
|
}
|
1862
|
1858
|
|
1863
|
1859
|
void MarlinUI::kill_screen(PGM_P lcd_error, PGM_P lcd_component) {
|
|
@@ -1970,11 +1966,11 @@ void DWIN_LockScreen(const bool flag) {
|
1970
|
1966
|
// lo: low limit
|
1971
|
1967
|
// hi: high limit
|
1972
|
1968
|
// dp: decimal places, 0 for integers
|
1973
|
|
-// val: value
|
|
1969
|
+// val: value / scaled value
|
1974
|
1970
|
// LiveUpdate: live update function when the encoder changes
|
1975
|
1971
|
// Apply: update function when the encoder is pressed
|
1976
|
1972
|
void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
1977
|
|
- last_checkkey = checkkey;
|
|
1973
|
+ last_checkkey = Menu;
|
1978
|
1974
|
checkkey = process;
|
1979
|
1975
|
HMI_value.MinValue = lo;
|
1980
|
1976
|
HMI_value.MaxValue = hi;
|
|
@@ -1985,18 +1981,29 @@ void SetOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp,
|
1985
|
1981
|
EncoderRate.enabled = true;
|
1986
|
1982
|
}
|
1987
|
1983
|
|
1988
|
|
-// Generic onclick event for set values (dp = 0: integer, dp > 0: float)
|
|
1984
|
+// Generic onclick event for integer values
|
1989
|
1985
|
// process: process id HMI destiny
|
1990
|
1986
|
// lo: scaled low limit
|
1991
|
1987
|
// hi: scaled high limit
|
1992
|
|
-// dp: decimal places, 0 for integers
|
1993
|
|
-// val: scaled value
|
|
1988
|
+// val: value
|
|
1989
|
+// LiveUpdate: live update function when the encoder changes
|
|
1990
|
+// Apply: update function when the encoder is pressed
|
|
1991
|
+void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
|
1992
|
+ SetOnClick(process, lo, hi, 0, val, Apply, LiveUpdate);
|
|
1993
|
+ Draw_Menu_IntValue(HMI_data.Selected_Color, CurrentMenu->line(), 4, HMI_value.Value);
|
|
1994
|
+}
|
|
1995
|
+
|
|
1996
|
+// Generic onclick event for float values
|
|
1997
|
+// process: process id HMI destiny
|
|
1998
|
+// lo: scaled low limit
|
|
1999
|
+// hi: scaled high limit
|
|
2000
|
+// val: value
|
1994
|
2001
|
// LiveUpdate: live update function when the encoder changes
|
1995
|
2002
|
// Apply: update function when the encoder is pressed
|
1996
|
|
-void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_t dp, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
1997
|
|
- SetOnClick(process, lo, hi, dp, val, Apply, LiveUpdate);
|
1998
|
|
- dp ? DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Selected_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(CurrentMenu->line()), HMI_value.Value)
|
1999
|
|
- : Draw_Menu_IntValue(HMI_data.Selected_Color, CurrentMenu->line(), 4, HMI_value.Value);
|
|
2003
|
+void SetValueOnClick(uint8_t process, const float lo, const float hi, uint8_t dp, const float val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
|
2004
|
+ const int32_t value = round(val * POW(10, dp));
|
|
2005
|
+ SetOnClick(process, lo * POW(10, dp), hi * POW(10, dp), dp, value, Apply, LiveUpdate);
|
|
2006
|
+ DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Selected_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(CurrentMenu->line()), val);
|
2000
|
2007
|
}
|
2001
|
2008
|
|
2002
|
2009
|
// Generic onclick event for integer values
|
|
@@ -2005,8 +2012,8 @@ void SetValueOnClick(uint8_t process, const int32_t lo, const int32_t hi, uint8_
|
2005
|
2012
|
// val: value
|
2006
|
2013
|
// LiveUpdate: live update function when the encoder changes
|
2007
|
2014
|
// Apply: update function when the encoder is pressed
|
2008
|
|
-void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
2009
|
|
- SetValueOnClick(SetInt, lo, hi, 0, val, Apply, LiveUpdate);
|
|
2015
|
+inline void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
|
2016
|
+ SetValueOnClick(SetInt, lo, hi, val, Apply, LiveUpdate);
|
2010
|
2017
|
}
|
2011
|
2018
|
|
2012
|
2019
|
// Generic onclick event for set pointer to 16 bit uinteger values
|
|
@@ -2017,7 +2024,7 @@ void SetIntOnClick(const int32_t lo, const int32_t hi, const int32_t val, void (
|
2017
|
2024
|
void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
2018
|
2025
|
HMI_value.P_Int = (int16_t*)static_cast<MenuItemPtrClass*>(CurrentMenu->SelectedItem())->value;
|
2019
|
2026
|
const int32_t value = *HMI_value.P_Int;
|
2020
|
|
- SetValueOnClick(SetPInt, lo, hi, 0, value, Apply, LiveUpdate);
|
|
2027
|
+ SetValueOnClick(SetPInt, lo, hi, value, Apply, LiveUpdate);
|
2021
|
2028
|
}
|
2022
|
2029
|
|
2023
|
2030
|
// Generic onclick event for float values
|
|
@@ -2026,8 +2033,8 @@ void SetPIntOnClick(const int32_t lo, const int32_t hi, void (*Apply)() = nullpt
|
2026
|
2033
|
// hi: high limit
|
2027
|
2034
|
// dp: decimal places
|
2028
|
2035
|
// val: value
|
2029
|
|
-void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
2030
|
|
- SetValueOnClick(SetFloat, lo * POW(10, dp), hi * POW(10, dp), dp, val * POW(10, dp), Apply, LiveUpdate);
|
|
2036
|
+inline void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
|
2037
|
+ SetValueOnClick(SetFloat, lo, hi, dp, val, Apply, LiveUpdate);
|
2031
|
2038
|
}
|
2032
|
2039
|
|
2033
|
2040
|
// Generic onclick event for set pointer to float values
|
|
@@ -2037,8 +2044,7 @@ void SetFloatOnClick(const float lo, const float hi, uint8_t dp, const float val
|
2037
|
2044
|
// Apply: update function when the encoder is pressed
|
2038
|
2045
|
void SetPFloatOnClick(const float lo, const float hi, uint8_t dp, void (*Apply)() = nullptr, void (*LiveUpdate)() = nullptr) {
|
2039
|
2046
|
HMI_value.P_Float = (float*)static_cast<MenuItemPtrClass*>(CurrentMenu->SelectedItem())->value;
|
2040
|
|
- const int32_t value = *HMI_value.P_Float * POW(10, dp);
|
2041
|
|
- SetValueOnClick(SetPFloat, lo * POW(10, dp), hi * POW(10, dp), dp, value, Apply, LiveUpdate);
|
|
2047
|
+ SetValueOnClick(SetPFloat, lo, hi, dp, *HMI_value.P_Float, Apply, LiveUpdate);
|
2042
|
2048
|
}
|
2043
|
2049
|
|
2044
|
2050
|
#if ENABLED(EEPROM_SETTINGS)
|
|
@@ -2148,7 +2154,7 @@ void SetMoveZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick(Z_MIN_POS, Z_MAX_POS
|
2148
|
2154
|
|
2149
|
2155
|
#if HAS_HOTEND
|
2150
|
2156
|
void SetMoveE() {
|
2151
|
|
- #ifdef PREVENT_COLD_EXTRUSION
|
|
2157
|
+ #if ENABLED(PREVENT_COLD_EXTRUSION)
|
2152
|
2158
|
if (thermalManager.tooColdToExtrude(0)) {
|
2153
|
2159
|
Popup_Window_ETempTooLow();
|
2154
|
2160
|
return;
|
|
@@ -2162,8 +2168,14 @@ void SetMoveZto0() {
|
2162
|
2168
|
char cmd[48] = "";
|
2163
|
2169
|
char str_1[5] = "", str_2[5] = "";
|
2164
|
2170
|
sprintf_P(cmd, PSTR("G28OXY\nG28Z\nG0X%sY%sF5000\nG0Z0F300"),
|
2165
|
|
- dtostrf(X_CENTER, 1, 1, str_1),
|
2166
|
|
- dtostrf(Y_CENTER, 1, 1, str_2));
|
|
2171
|
+ #if ENABLED(MESH_BED_LEVELING)
|
|
2172
|
+ dtostrf(0, 1, 1, str_1),
|
|
2173
|
+ dtostrf(0, 1, 1, str_2)
|
|
2174
|
+ #else
|
|
2175
|
+ dtostrf(X_CENTER, 1, 1, str_1),
|
|
2176
|
+ dtostrf(Y_CENTER, 1, 1, str_2)
|
|
2177
|
+ #endif
|
|
2178
|
+ );
|
2167
|
2179
|
gcode.process_subcommands_now_P(cmd);
|
2168
|
2180
|
planner.synchronize();
|
2169
|
2181
|
ui.set_status_P(PSTR("Now adjust Z Offset"));
|
|
@@ -2175,7 +2187,8 @@ void SetPID(celsius_t t, heater_id_t h) {
|
2175
|
2187
|
char str_1[5] = "", str_2[5] = "";
|
2176
|
2188
|
sprintf_P(cmd, PSTR("G28OXY\nG0Z5F300\nG0X%sY%sF5000\nM84"),
|
2177
|
2189
|
dtostrf(X_CENTER, 1, 1, str_1),
|
2178
|
|
- dtostrf(Y_CENTER, 1, 1, str_2));
|
|
2190
|
+ dtostrf(Y_CENTER, 1, 1, str_2)
|
|
2191
|
+ );
|
2179
|
2192
|
gcode.process_subcommands_now_P(cmd);
|
2180
|
2193
|
planner.synchronize();
|
2181
|
2194
|
thermalManager.PID_autotune(t, h, HMI_data.PidCycles, true);
|
|
@@ -2217,6 +2230,7 @@ void Goto_LockScreen() {
|
2217
|
2230
|
#if HAS_BED_PROBE
|
2218
|
2231
|
void SetProbeOffsetX() { SetPFloatOnClick(-50, 50, UNITFDIGITS); }
|
2219
|
2232
|
void SetProbeOffsetY() { SetPFloatOnClick(-50, 50, UNITFDIGITS); }
|
|
2233
|
+ void SetProbeOffsetZ() { SetPFloatOnClick(-10, 10, 2); }
|
2220
|
2234
|
void ProbeTest() {
|
2221
|
2235
|
ui.set_status_P(GET_TEXT(MSG_M48_TEST));
|
2222
|
2236
|
queue.inject_P(PSTR("G28O\nM48 P10"));
|
|
@@ -2250,24 +2264,24 @@ void RestoreDefaultsColors() {
|
2250
|
2264
|
|
2251
|
2265
|
void SelColor() {
|
2252
|
2266
|
HMI_value.P_Int = (int16_t*)static_cast<MenuItemPtrClass*>(CurrentMenu->SelectedItem())->value;
|
2253
|
|
- HMI_value.Color[2] = GetRColor(*HMI_value.P_Int); // Red
|
|
2267
|
+ HMI_value.Color[0] = GetRColor(*HMI_value.P_Int); // Red
|
2254
|
2268
|
HMI_value.Color[1] = GetGColor(*HMI_value.P_Int); // Green
|
2255
|
|
- HMI_value.Color[0] = GetBColor(*HMI_value.P_Int); // Blue
|
|
2269
|
+ HMI_value.Color[2] = GetBColor(*HMI_value.P_Int); // Blue
|
2256
|
2270
|
Draw_GetColor_Menu();
|
2257
|
2271
|
}
|
2258
|
2272
|
|
2259
|
2273
|
void LiveRGBColor() {
|
2260
|
2274
|
HMI_value.Color[CurrentMenu->line() - 2] = HMI_value.Value;
|
2261
|
|
- uint16_t color = RGB(HMI_value.Color[2], HMI_value.Color[1], HMI_value.Color[0]);
|
|
2275
|
+ uint16_t color = RGB(HMI_value.Color[0], HMI_value.Color[1], HMI_value.Color[2]);
|
2262
|
2276
|
DWIN_Draw_Rectangle(1, color, 20, 315, DWIN_WIDTH - 20, 335);
|
2263
|
2277
|
}
|
2264
|
2278
|
void SetRGBColor() {
|
2265
|
|
- const uint8_t line = CurrentMenu->line() - 2;
|
2266
|
|
- SetIntOnClick(0, (line == 1) ? 63 : 31, HMI_value.Color[CurrentMenu->SelectedItem()->icon], nullptr, LiveRGBColor);
|
|
2279
|
+ const uint8_t color = CurrentMenu->SelectedItem()->icon;
|
|
2280
|
+ SetIntOnClick(0, (color == 1) ? 63 : 31, HMI_value.Color[color], nullptr, LiveRGBColor);
|
2267
|
2281
|
}
|
2268
|
2282
|
|
2269
|
2283
|
void DWIN_ApplyColor() {
|
2270
|
|
- *HMI_value.P_Int = RGB(HMI_value.Color[2], HMI_value.Color[1], HMI_value.Color[0]);
|
|
2284
|
+ *HMI_value.P_Int = RGB(HMI_value.Color[0], HMI_value.Color[1], HMI_value.Color[2]);
|
2271
|
2285
|
DWINUI::SetColors(HMI_data.Text_Color, HMI_data.Background_Color);
|
2272
|
2286
|
Draw_Status_Area(false);
|
2273
|
2287
|
Draw_SelectColors_Menu();
|
|
@@ -2278,7 +2292,7 @@ void SetSpeed() { SetPIntOnClick(MIN_PRINT_SPEED, MAX_PRINT_SPEED); }
|
2278
|
2292
|
|
2279
|
2293
|
#if HAS_HOTEND
|
2280
|
2294
|
void ApplyHotendTemp() { thermalManager.setTargetHotend(HMI_value.Value, 0); }
|
2281
|
|
- void SetHotendTemp() { SetIntOnClick(HEATER_0_MINTEMP, HEATER_0_MAXTEMP, thermalManager.degTargetHotend(0), ApplyHotendTemp); }
|
|
2295
|
+ void SetHotendTemp() { SetIntOnClick(MIN_ETEMP, MAX_ETEMP, thermalManager.degTargetHotend(0), ApplyHotendTemp); }
|
2282
|
2296
|
#endif
|
2283
|
2297
|
|
2284
|
2298
|
#if HAS_HEATED_BED
|
|
@@ -2384,11 +2398,19 @@ void LevBedC () { LevBed(4); }
|
2384
|
2398
|
gcode.process_subcommands_now_P(PSTR("G28 XYO\nG28 Z\nM211 S0\nG29S1"));
|
2385
|
2399
|
planner.synchronize();
|
2386
|
2400
|
#ifdef MANUAL_PROBE_START_Z
|
2387
|
|
- MMeshMoveZItem->Draw(CurrentMenu->line(MMeshMoveZItem->pos));
|
|
2401
|
+ const uint8_t line = CurrentMenu->line(MMeshMoveZItem->pos);
|
|
2402
|
+ DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Background_Color, 3, 2, VALX - 2 * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(line), MANUAL_PROBE_START_Z);
|
2388
|
2403
|
#endif
|
2389
|
2404
|
}
|
2390
|
2405
|
|
2391
|
|
- void SetMMeshMoveZ() { HMI_value.axis = Z_AXIS; SetPFloatOnClick(-1, 1, 2, planner.synchronize, LiveMove);}
|
|
2406
|
+ void LiveMeshMoveZ() {
|
|
2407
|
+ *HMI_value.P_Float = HMI_value.Value / POW(10, 2);
|
|
2408
|
+ if (!planner.is_full()) {
|
|
2409
|
+ planner.synchronize();
|
|
2410
|
+ planner.buffer_line(current_position, homing_feedrate(Z_AXIS));
|
|
2411
|
+ }
|
|
2412
|
+ }
|
|
2413
|
+ void SetMMeshMoveZ() { SetPFloatOnClick(-1, 1, 2, planner.synchronize, LiveMeshMoveZ);}
|
2392
|
2414
|
|
2393
|
2415
|
void ManualMeshContinue(){
|
2394
|
2416
|
gcode.process_subcommands_now_P(PSTR("G29S2"));
|
|
@@ -2496,7 +2518,7 @@ void onDrawPInt32Menu(MenuItemClass* menuitem, int8_t line) {
|
2496
|
2518
|
|
2497
|
2519
|
void onDrawFloatMenu(MenuItemClass* menuitem, int8_t line, uint8_t dp, const float value) {
|
2498
|
2520
|
onDrawMenuItem(menuitem, line);
|
2499
|
|
- DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Background_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(line), value * POW(10, dp));
|
|
2521
|
+ DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Background_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(line), value);
|
2500
|
2522
|
}
|
2501
|
2523
|
|
2502
|
2524
|
void onDrawPFloatMenu(MenuItemClass* menuitem, int8_t line) {
|
|
@@ -2507,8 +2529,7 @@ void onDrawPFloatMenu(MenuItemClass* menuitem, int8_t line) {
|
2507
|
2529
|
|
2508
|
2530
|
void onDrawPFloat2Menu(MenuItemClass* menuitem, int8_t line) {
|
2509
|
2531
|
const float value = *(float*)static_cast<MenuItemPtrClass*>(menuitem)->value;
|
2510
|
|
- const int8_t dp = 2;
|
2511
|
|
- onDrawFloatMenu(menuitem, line, dp, value);
|
|
2532
|
+ onDrawFloatMenu(menuitem, line, 2, value);
|
2512
|
2533
|
}
|
2513
|
2534
|
|
2514
|
2535
|
void onDrawChkbMenu(MenuItemClass* menuitem, int8_t line, bool checked) {
|
|
@@ -2643,9 +2664,9 @@ void onDrawGetColorItem(MenuItemClass* menuitem, int8_t line) {
|
2643
|
2664
|
const uint8_t i = menuitem->icon;
|
2644
|
2665
|
uint16_t color;
|
2645
|
2666
|
switch (i) {
|
2646
|
|
- case 0: color = RGB(0, 0, 31); break;
|
2647
|
|
- case 1: color = RGB(0, 63, 0); break;
|
2648
|
|
- case 2: color = RGB(31, 0, 0); break;
|
|
2667
|
+ case 0: color = RGB(31, 0, 0); break; // Red
|
|
2668
|
+ case 1: color = RGB(0, 63, 0); break; // Green
|
|
2669
|
+ case 2: color = RGB(0, 0, 31); break; // Blue
|
2649
|
2670
|
default: color = 0; break;
|
2650
|
2671
|
}
|
2651
|
2672
|
DWIN_Draw_Rectangle(0, HMI_data.Highlight_Color, ICOX + 1, MBASE(line) - 1 + 1, ICOX + 18, MBASE(line) - 1 + 18);
|
|
@@ -3002,12 +3023,12 @@ int8_t HMI_GetFloat(uint8_t dp, int32_t lo, int32_t hi) {
|
3002
|
3023
|
if (encoder_diffState != ENCODER_DIFF_NO) {
|
3003
|
3024
|
if (Apply_Encoder(encoder_diffState, HMI_value.Value)) {
|
3004
|
3025
|
EncoderRate.enabled = false;
|
3005
|
|
- DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Background_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(CurrentMenu->line()), HMI_value.Value);
|
|
3026
|
+ DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Background_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(CurrentMenu->line()), HMI_value.Value / POW(10, dp));
|
3006
|
3027
|
checkkey = last_checkkey;
|
3007
|
3028
|
return 2;
|
3008
|
3029
|
}
|
3009
|
3030
|
LIMIT(HMI_value.Value, lo, hi);
|
3010
|
|
- DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Selected_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(CurrentMenu->line()), HMI_value.Value);
|
|
3031
|
+ DWINUI::Draw_Signed_Float(HMI_data.Text_Color, HMI_data.Selected_Color, 3, dp, VALX - dp * DWINUI::Get_font_width(DWIN_FONT_MENU), MBASE(CurrentMenu->line()), HMI_value.Value / POW(10, dp));
|
3011
|
3032
|
return 1;
|
3012
|
3033
|
}
|
3013
|
3034
|
return 0;
|
|
@@ -3182,10 +3203,11 @@ void Draw_Move_Menu() {
|
3182
|
3203
|
if (CurrentMenu != ProbeSetMenu) {
|
3183
|
3204
|
CurrentMenu = ProbeSetMenu;
|
3184
|
3205
|
SetMenuTitle({0}, {0}, GET_TEXT_F(MSG_ZPROBE_SETTINGS)); // TODO: Chinese, English "Probe Settings" JPG
|
3185
|
|
- DWINUI::MenuItemsPrepare(4);
|
|
3206
|
+ DWINUI::MenuItemsPrepare(5);
|
3186
|
3207
|
ADDMENUITEM(ICON_Back, GET_TEXT(MSG_BUTTON_BACK), onDrawBack, Draw_AdvancedSettings_Menu);
|
3187
|
3208
|
ADDMENUITEM_P(ICON_ProbeOffsetX, GET_TEXT(MSG_ZPROBE_XOFFSET), onDrawPFloatMenu, SetProbeOffsetX, &probe.offset.x);
|
3188
|
3209
|
ADDMENUITEM_P(ICON_ProbeOffsetY, GET_TEXT(MSG_ZPROBE_YOFFSET), onDrawPFloatMenu, SetProbeOffsetY, &probe.offset.y);
|
|
3210
|
+ ADDMENUITEM_P(ICON_ProbeOffsetZ, GET_TEXT(MSG_ZPROBE_ZOFFSET), onDrawPFloat2Menu, SetProbeOffsetZ, &probe.offset.z);
|
3189
|
3211
|
ADDMENUITEM(ICON_ProbeTest, GET_TEXT(MSG_M48_TEST), onDrawMenuItem, ProbeTest);
|
3190
|
3212
|
}
|
3191
|
3213
|
CurrentMenu->Draw();
|
|
@@ -3203,7 +3225,7 @@ void Draw_Move_Menu() {
|
3203
|
3225
|
ADDMENUITEM(ICON_Back, GET_TEXT(MSG_BUTTON_BACK), onDrawMenuItem, Draw_AdvancedSettings_Menu);
|
3204
|
3226
|
TERN_(HAS_FILAMENT_SENSOR, ADDMENUITEM(ICON_Runout, GET_TEXT(MSG_RUNOUT_ENABLE), onDrawRunoutEnable, SetRunoutEnable));
|
3205
|
3227
|
TERN_(HAS_FILAMENT_RUNOUT_DISTANCE, ADDMENUITEM_P(ICON_Runout, F("Runout Distance"), onDrawPFloatMenu, SetRunoutDistance, &runout.runout_distance()));
|
3206
|
|
- TERN_(PREVENT_COLD_EXTRUSION, ADDMENUITEM_P(ICON_ExtrudeMinT, F("Extrude Min Temp."), onDrawPIntMenu, SetExtMinT, &thermalManager.extrude_min_temp));
|
|
3228
|
+ TERN_(PREVENT_COLD_EXTRUSION, ADDMENUITEM_P(ICON_ExtrudeMinT, F("Extrude Min Temp."), onDrawPIntMenu, SetExtMinT, &HMI_data.ExtMinT));
|
3207
|
3229
|
TERN_(ADVANCED_PAUSE_FEATURE, ADDMENUITEM_P(ICON_FilLoad, GET_TEXT(MSG_FILAMENT_LOAD), onDrawPFloatMenu, SetFilLoad, &fc_settings[0].load_length));
|
3208
|
3230
|
TERN_(ADVANCED_PAUSE_FEATURE, ADDMENUITEM_P(ICON_FilUnload, GET_TEXT(MSG_FILAMENT_UNLOAD), onDrawPFloatMenu, SetFilUnload, &fc_settings[0].unload_length));
|
3209
|
3231
|
}
|
|
@@ -3250,9 +3272,9 @@ void Draw_GetColor_Menu() {
|
3250
|
3272
|
DWINUI::MenuItemsPrepare(5);
|
3251
|
3273
|
ADDMENUITEM(ICON_Back, GET_TEXT(MSG_BUTTON_BACK), onDrawBack, DWIN_ApplyColor);
|
3252
|
3274
|
ADDMENUITEM(ICON_Cancel, GET_TEXT(MSG_BUTTON_CANCEL), onDrawMenuItem, Draw_SelectColors_Menu);
|
3253
|
|
- ADDMENUITEM(0, "Blue", onDrawGetColorItem, SetRGBColor);
|
|
3275
|
+ ADDMENUITEM(0, "Red", onDrawGetColorItem, SetRGBColor);
|
3254
|
3276
|
ADDMENUITEM(1, "Green", onDrawGetColorItem, SetRGBColor);
|
3255
|
|
- ADDMENUITEM(2, "Red", onDrawGetColorItem, SetRGBColor);
|
|
3277
|
+ ADDMENUITEM(2, "Blue", onDrawGetColorItem, SetRGBColor);
|
3256
|
3278
|
}
|
3257
|
3279
|
CurrentMenu->Draw();
|
3258
|
3280
|
DWIN_Draw_Rectangle(1, *HMI_value.P_Int, 20, 315, DWIN_WIDTH - 20, 335);
|
|
@@ -3270,16 +3292,12 @@ void Draw_Tune_Menu() {
|
3270
|
3292
|
TERN_(HAS_HOTEND, HotendTargetItem = ADDMENUITEM_P(ICON_HotendTemp, GET_TEXT(MSG_UBL_SET_TEMP_HOTEND), onDrawHotendTemp, SetHotendTemp, &thermalManager.temp_hotend[0].target));
|
3271
|
3293
|
TERN_(HAS_HEATED_BED, BedTargetItem = ADDMENUITEM_P(ICON_BedTemp, GET_TEXT(MSG_UBL_SET_TEMP_BED), onDrawBedTemp, SetBedTemp, &thermalManager.temp_bed.target));
|
3272
|
3294
|
TERN_(HAS_FAN, FanSpeedItem = ADDMENUITEM_P(ICON_FanSpeed, GET_TEXT(MSG_FAN_SPEED), onDrawFanSpeed, SetFanSpeed, &thermalManager.fan_speed[0]));
|
3273
|
|
- #if HAS_ZOFFSET_ITEM
|
3274
|
|
- #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
|
3275
|
|
- ADDMENUITEM_P(ICON_Zoffset, GET_TEXT(MSG_ZPROBE_ZOFFSET), onDrawZOffset, SetZOffset, &BABY_Z_VAR);
|
3276
|
|
- #else
|
3277
|
|
- ADDMENUITEM(ICON_SetHome, GET_TEXT(MSG_SET_HOME_OFFSETS), onDrawHomeOffset, SetHome);
|
3278
|
|
- #endif
|
|
3295
|
+ #if HAS_ZOFFSET_ITEM && EITHER(HAS_BED_PROBE, BABYSTEPPING)
|
|
3296
|
+ ADDMENUITEM_P(ICON_Zoffset, GET_TEXT(MSG_ZPROBE_ZOFFSET), onDrawZOffset, SetZOffset, &BABY_Z_VAR);
|
3279
|
3297
|
#endif
|
3280
|
3298
|
ADDMENUITEM_P(ICON_Flow, GET_TEXT(MSG_FLOW), onDrawPIntMenu, SetFlow, &planner.flow_percentage[0]);
|
3281
|
3299
|
TERN_(ADVANCED_PAUSE_FEATURE, ADDMENUITEM(ICON_FilMan, GET_TEXT(MSG_FILAMENTCHANGE), onDrawMenuItem, ChangeFilament));
|
3282
|
|
- ADDMENUITEM(ICON_Lock, PSTR("Lock Screen"), onDrawMenuItem, Goto_LockScreen);
|
|
3300
|
+ ADDMENUITEM(ICON_Lock, F("Lock Screen"), onDrawMenuItem, Goto_LockScreen);
|
3283
|
3301
|
TERN_(HAS_LCD_BRIGHTNESS, ADDMENUITEM_P(ICON_Brightness, F("LCD Brightness"), onDrawPInt8Menu, SetBrightness, &ui.brightness));
|
3284
|
3302
|
}
|
3285
|
3303
|
CurrentMenu->Draw();
|
|
@@ -3300,7 +3318,6 @@ void Draw_Motion_Menu() {
|
3300
|
3318
|
ADDMENUITEM_P(ICON_Flow, GET_TEXT(MSG_FLOW), onDrawPIntMenu, SetFlow, &planner.flow_percentage[0]);
|
3301
|
3319
|
}
|
3302
|
3320
|
CurrentMenu->Draw();
|
3303
|
|
- DWIN_StatusChanged(nullptr);
|
3304
|
3321
|
}
|
3305
|
3322
|
|
3306
|
3323
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
|
@@ -3476,9 +3493,9 @@ void Draw_Steps_Menu() {
|
3476
|
3493
|
DWINUI::MenuItemsPrepare(8);
|
3477
|
3494
|
ADDMENUITEM(ICON_Back, GET_TEXT(MSG_BUTTON_BACK), onDrawMenuItem, Draw_AdvancedSettings_Menu);
|
3478
|
3495
|
ADDMENUITEM(ICON_PIDNozzle, F("Hotend PID"), onDrawMenuItem, HotendPID);
|
3479
|
|
- ADDMENUITEM_P(ICON_PIDValue, F(STR_KP), onDrawPFloat2Menu, SetKp, &thermalManager.temp_hotend[0].pid.Kp);
|
3480
|
|
- ADDMENUITEM_P(ICON_PIDValue, F(STR_KI), onDrawPIDi, SetKi, &thermalManager.temp_hotend[0].pid.Ki);
|
3481
|
|
- ADDMENUITEM_P(ICON_PIDValue, F(STR_KD), onDrawPIDd, SetKd, &thermalManager.temp_hotend[0].pid.Kd);
|
|
3496
|
+ ADDMENUITEM_P(ICON_PIDValue, F("Set" STR_KP), onDrawPFloat2Menu, SetKp, &thermalManager.temp_hotend[0].pid.Kp);
|
|
3497
|
+ ADDMENUITEM_P(ICON_PIDValue, F("Set" STR_KI), onDrawPIDi, SetKi, &thermalManager.temp_hotend[0].pid.Ki);
|
|
3498
|
+ ADDMENUITEM_P(ICON_PIDValue, F("Set" STR_KD), onDrawPIDd, SetKd, &thermalManager.temp_hotend[0].pid.Kd);
|
3482
|
3499
|
ADDMENUITEM_P(ICON_Temperature, GET_TEXT(MSG_TEMPERATURE), onDrawPIntMenu, SetHotendPidT, &HMI_data.HotendPidT);
|
3483
|
3500
|
ADDMENUITEM_P(ICON_PIDcycles, GET_TEXT(MSG_PID_CYCLE), onDrawPIntMenu, SetPidCycles, &HMI_data.PidCycles);
|
3484
|
3501
|
TERN_(EEPROM_SETTINGS, ADDMENUITEM(ICON_WriteEEPROM, GET_TEXT(MSG_STORE_EEPROM), onDrawMenuItem, WriteEeprom));
|
|
@@ -3497,9 +3514,9 @@ void Draw_Steps_Menu() {
|
3497
|
3514
|
DWINUI::MenuItemsPrepare(8);
|
3498
|
3515
|
ADDMENUITEM(ICON_Back, GET_TEXT(MSG_BUTTON_BACK), onDrawMenuItem, Draw_AdvancedSettings_Menu);
|
3499
|
3516
|
ADDMENUITEM(ICON_PIDNozzle, F("Bed PID"), onDrawMenuItem,BedPID);
|
3500
|
|
- ADDMENUITEM_P(ICON_PIDValue, F(STR_KP), onDrawPFloat2Menu, SetKp, &thermalManager.temp_bed.pid.Kp);
|
3501
|
|
- ADDMENUITEM_P(ICON_PIDValue, F(STR_KI), onDrawPIDi, SetKi, &thermalManager.temp_bed.pid.Ki);
|
3502
|
|
- ADDMENUITEM_P(ICON_PIDValue, F(STR_KD), onDrawPIDd, SetKd, &thermalManager.temp_bed.pid.Kd);
|
|
3517
|
+ ADDMENUITEM_P(ICON_PIDValue, F("Set" STR_KP), onDrawPFloat2Menu, SetKp, &thermalManager.temp_bed.pid.Kp);
|
|
3518
|
+ ADDMENUITEM_P(ICON_PIDValue, F("Set" STR_KI), onDrawPIDi, SetKi, &thermalManager.temp_bed.pid.Ki);
|
|
3519
|
+ ADDMENUITEM_P(ICON_PIDValue, F("Set" STR_KD), onDrawPIDd, SetKd, &thermalManager.temp_bed.pid.Kd);
|
3503
|
3520
|
ADDMENUITEM_P(ICON_Temperature, GET_TEXT(MSG_TEMPERATURE), onDrawPIntMenu, SetBedPidT, &HMI_data.BedPidT);
|
3504
|
3521
|
ADDMENUITEM_P(ICON_PIDcycles, GET_TEXT(MSG_PID_CYCLE), onDrawPIntMenu, SetPidCycles, &HMI_data.PidCycles);
|
3505
|
3522
|
TERN_(EEPROM_SETTINGS, ADDMENUITEM(ICON_WriteEEPROM, GET_TEXT(MSG_STORE_EEPROM), onDrawMenuItem, WriteEeprom));
|
|
@@ -3522,6 +3539,7 @@ void Draw_Steps_Menu() {
|
3522
|
3539
|
ADDMENUITEM_P(ICON_Zoffset, GET_TEXT(MSG_ZPROBE_ZOFFSET), onDrawPFloat2Menu, SetZOffset, &BABY_Z_VAR);
|
3523
|
3540
|
}
|
3524
|
3541
|
CurrentMenu->Draw();
|
|
3542
|
+ if (!axis_is_trusted(Z_AXIS)) ui.set_status_P(PSTR("WARNING: Z position is unknow, move Z to home"));
|
3525
|
3543
|
}
|
3526
|
3544
|
#endif
|
3527
|
3545
|
|