Merge upstream changes from Marlin 2.1.2
This commit is contained in:
@@ -234,7 +234,7 @@ void DWIN_Frame_AreaMove(uint8_t mode, uint8_t dir, uint16_t dis,
|
||||
// *string: The string
|
||||
// rlimit: To limit the drawn string length
|
||||
void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t bColor, uint16_t x, uint16_t y, const char * const string, uint16_t rlimit/*=0xFFFF*/) {
|
||||
#if DISABLED(DWIN_LCD_PROUI)
|
||||
#if NONE(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI, IS_DWIN_MARLINUI)
|
||||
DWIN_Draw_Rectangle(1, bColor, x, y, x + (fontWidth(size) * strlen_P(string)), y + fontHeight(size));
|
||||
#endif
|
||||
constexpr uint8_t widthAdjust = 0;
|
||||
@@ -266,7 +266,9 @@ void DWIN_Draw_String(bool bShow, uint8_t size, uint16_t color, uint16_t bColor,
|
||||
void DWIN_Draw_IntValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_t size, uint16_t color,
|
||||
uint16_t bColor, uint8_t iNum, uint16_t x, uint16_t y, uint32_t value) {
|
||||
size_t i = 0;
|
||||
DWIN_Draw_Rectangle(1, bColor, x, y, x + fontWidth(size) * iNum + 1, y + fontHeight(size));
|
||||
#if DISABLED(DWIN_CREALITY_LCD_JYERSUI)
|
||||
DWIN_Draw_Rectangle(1, bColor, x, y, x + fontWidth(size) * iNum + 1, y + fontHeight(size));
|
||||
#endif
|
||||
DWIN_Byte(i, 0x14);
|
||||
// Bit 7: bshow
|
||||
// Bit 6: 1 = signed; 0 = unsigned number;
|
||||
@@ -314,7 +316,9 @@ void DWIN_Draw_FloatValue(uint8_t bShow, bool zeroFill, uint8_t zeroMode, uint8_
|
||||
uint16_t bColor, uint8_t iNum, uint8_t fNum, uint16_t x, uint16_t y, int32_t value) {
|
||||
//uint8_t *fvalue = (uint8_t*)&value;
|
||||
size_t i = 0;
|
||||
DWIN_Draw_Rectangle(1, bColor, x, y, x + fontWidth(size) * (iNum+fNum+1), y + fontHeight(size));
|
||||
#if DISABLED(DWIN_CREALITY_LCD_JYERSUI)
|
||||
DWIN_Draw_Rectangle(1, bColor, x, y, x + fontWidth(size) * (iNum+fNum+1), y + fontHeight(size));
|
||||
#endif
|
||||
DWIN_Byte(i, 0x14);
|
||||
DWIN_Byte(i, (bShow * 0x80) | (zeroFill * 0x20) | (zeroMode * 0x10) | size);
|
||||
DWIN_Word(i, color);
|
||||
|
@@ -96,21 +96,21 @@ EncoderState Encoder_ReceiveAnalyze() {
|
||||
}
|
||||
if (newbutton != lastEncoderBits) {
|
||||
switch (newbutton) {
|
||||
case ENCODER_PHASE_0:
|
||||
if (lastEncoderBits == ENCODER_PHASE_3) temp_diff++;
|
||||
else if (lastEncoderBits == ENCODER_PHASE_1) temp_diff--;
|
||||
case 0:
|
||||
if (lastEncoderBits == 1) temp_diff++;
|
||||
else if (lastEncoderBits == 2) temp_diff--;
|
||||
break;
|
||||
case ENCODER_PHASE_1:
|
||||
if (lastEncoderBits == ENCODER_PHASE_0) temp_diff++;
|
||||
else if (lastEncoderBits == ENCODER_PHASE_2) temp_diff--;
|
||||
case 2:
|
||||
if (lastEncoderBits == 0) temp_diff++;
|
||||
else if (lastEncoderBits == 3) temp_diff--;
|
||||
break;
|
||||
case ENCODER_PHASE_2:
|
||||
if (lastEncoderBits == ENCODER_PHASE_1) temp_diff++;
|
||||
else if (lastEncoderBits == ENCODER_PHASE_3) temp_diff--;
|
||||
case 3:
|
||||
if (lastEncoderBits == 2) temp_diff++;
|
||||
else if (lastEncoderBits == 1) temp_diff--;
|
||||
break;
|
||||
case ENCODER_PHASE_3:
|
||||
if (lastEncoderBits == ENCODER_PHASE_2) temp_diff++;
|
||||
else if (lastEncoderBits == ENCODER_PHASE_0) temp_diff--;
|
||||
case 1:
|
||||
if (lastEncoderBits == 3) temp_diff++;
|
||||
else if (lastEncoderBits == 0) temp_diff--;
|
||||
break;
|
||||
}
|
||||
lastEncoderBits = newbutton;
|
||||
|
@@ -3395,11 +3395,11 @@ void Draw_Max_Accel_Menu() {
|
||||
|
||||
Draw_Back_First();
|
||||
LOOP_L_N(i, 3 + ENABLED(HAS_HOTEND)) Draw_Menu_Line(i + 1, ICON_MaxSpeedJerkX + i);
|
||||
Draw_Edit_Float3(1, planner.max_jerk[X_AXIS] * MINUNITMULT);
|
||||
Draw_Edit_Float3(2, planner.max_jerk[Y_AXIS] * MINUNITMULT);
|
||||
Draw_Edit_Float3(3, planner.max_jerk[Z_AXIS] * MINUNITMULT);
|
||||
Draw_Edit_Float3(1, planner.max_jerk.x * MINUNITMULT);
|
||||
Draw_Edit_Float3(2, planner.max_jerk.y * MINUNITMULT);
|
||||
Draw_Edit_Float3(3, planner.max_jerk.z * MINUNITMULT);
|
||||
#if HAS_HOTEND
|
||||
Draw_Edit_Float3(4, planner.max_jerk[E_AXIS] * MINUNITMULT);
|
||||
Draw_Edit_Float3(4, planner.max_jerk.e * MINUNITMULT);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
@@ -80,6 +80,13 @@
|
||||
#include "../../../feature/powerloss.h"
|
||||
#endif
|
||||
|
||||
#if HAS_TRINAMIC_CONFIG
|
||||
#include "../../../module/stepper/trinamic.h"
|
||||
|
||||
#define TMC_MIN_CURRENT 400
|
||||
#define TMC_MAX_CURRENT 1500
|
||||
#endif
|
||||
|
||||
#define MACHINE_SIZE STRINGIFY(X_BED_SIZE) "x" STRINGIFY(Y_BED_SIZE) "x" STRINGIFY(Z_MAX_POS)
|
||||
|
||||
#define DWIN_FONT_MENU font8x16
|
||||
@@ -204,6 +211,55 @@ bool probe_deployed = false;
|
||||
|
||||
CrealityDWINClass CrealityDWIN;
|
||||
|
||||
template <unsigned N, unsigned S = N>
|
||||
class TextScroller {
|
||||
public:
|
||||
static const unsigned SIZE = N;
|
||||
static const unsigned SPACE = S;
|
||||
typedef char Buffer[SIZE + 1];
|
||||
|
||||
inline TextScroller()
|
||||
: scrollpos(0)
|
||||
{ }
|
||||
|
||||
inline void reset() {
|
||||
scrollpos = 0;
|
||||
}
|
||||
|
||||
const char* scroll(size_t& pos, Buffer &buf, const char * text, bool *updated = nullptr) {
|
||||
const size_t len = strlen(text);
|
||||
if (len > SIZE) {
|
||||
if (updated) *updated = true;
|
||||
if (scrollpos >= len + SPACE) scrollpos = 0;
|
||||
pos = 0;
|
||||
if (scrollpos < len) {
|
||||
const size_t n = min(len - scrollpos, SIZE);
|
||||
memcpy(buf, text + scrollpos, n);
|
||||
pos += n;
|
||||
}
|
||||
if (pos < SIZE) {
|
||||
const size_t n = min(len + SPACE - scrollpos, SIZE - pos);
|
||||
memset(buf + pos, ' ', n);
|
||||
pos += n;
|
||||
}
|
||||
if (pos < SIZE) {
|
||||
const size_t n = SIZE - pos;
|
||||
memcpy(buf + pos, text, n);
|
||||
pos += n;
|
||||
}
|
||||
buf[pos] = '\0';
|
||||
++scrollpos;
|
||||
return buf;
|
||||
} else {
|
||||
pos = len;
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
uint16_t scrollpos;
|
||||
};
|
||||
|
||||
#if HAS_MESH
|
||||
|
||||
struct Mesh_Settings {
|
||||
@@ -684,36 +740,18 @@ void CrealityDWINClass::Draw_Print_Screen() {
|
||||
Update_Status_Bar(true);
|
||||
Draw_Print_ProgressBar();
|
||||
Draw_Print_ProgressElapsed();
|
||||
TERN_(USE_M73_REMAINING_TIME, Draw_Print_ProgressRemain());
|
||||
TERN_(SET_REMAINING_TIME, Draw_Print_ProgressRemain());
|
||||
Draw_Print_Filename(true);
|
||||
}
|
||||
|
||||
void CrealityDWINClass::Draw_Print_Filename(const bool reset/*=false*/) {
|
||||
static uint8_t namescrl = 0;
|
||||
if (reset) namescrl = 0;
|
||||
typedef TextScroller<30> Scroller;
|
||||
static Scroller scroller;
|
||||
if (reset) scroller.reset();
|
||||
if (process == Print) {
|
||||
constexpr int8_t maxlen = 30;
|
||||
char *outstr = filename;
|
||||
size_t slen = strlen(filename);
|
||||
int8_t outlen = slen;
|
||||
if (slen > maxlen) {
|
||||
char dispname[maxlen + 1];
|
||||
int8_t pos = slen - namescrl, len = maxlen;
|
||||
if (pos >= 0) {
|
||||
NOMORE(len, pos);
|
||||
LOOP_L_N(i, len) dispname[i] = filename[i + namescrl];
|
||||
}
|
||||
else {
|
||||
const int8_t mp = maxlen + pos;
|
||||
LOOP_L_N(i, mp) dispname[i] = ' ';
|
||||
LOOP_S_L_N(i, mp, maxlen) dispname[i] = filename[i - mp];
|
||||
if (mp <= 0) namescrl = 0;
|
||||
}
|
||||
dispname[len] = '\0';
|
||||
outstr = dispname;
|
||||
outlen = maxlen;
|
||||
namescrl++;
|
||||
}
|
||||
Scroller::Buffer buf;
|
||||
size_t outlen = 0;
|
||||
const char* outstr = scroller.scroll(outlen, buf, filename);
|
||||
DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 50, DWIN_WIDTH - 8, 80);
|
||||
const int8_t npos = (DWIN_WIDTH - outlen * MENU_CHR_W) / 2;
|
||||
DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, npos, 60, outstr);
|
||||
@@ -728,7 +766,7 @@ void CrealityDWINClass::Draw_Print_ProgressBar() {
|
||||
DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.progress_percent, Percent_Color), Color_Bg_Black, 133, 133, F("%"));
|
||||
}
|
||||
|
||||
#if ENABLED(USE_M73_REMAINING_TIME)
|
||||
#if ENABLED(SET_REMAINING_TIME)
|
||||
|
||||
void CrealityDWINClass::Draw_Print_ProgressRemain() {
|
||||
uint16_t remainingtime = ui.get_remaining_time();
|
||||
@@ -973,57 +1011,30 @@ void CrealityDWINClass::Popup_Select() {
|
||||
}
|
||||
|
||||
void CrealityDWINClass::Update_Status_Bar(bool refresh/*=false*/) {
|
||||
typedef TextScroller<30> Scroller;
|
||||
static bool new_msg;
|
||||
static uint8_t msgscrl = 0;
|
||||
static Scroller scroller;
|
||||
static char lastmsg[64];
|
||||
if (strcmp(lastmsg, statusmsg) != 0 || refresh) {
|
||||
strcpy(lastmsg, statusmsg);
|
||||
msgscrl = 0;
|
||||
scroller.reset();
|
||||
new_msg = true;
|
||||
}
|
||||
size_t len = strlen(statusmsg);
|
||||
int8_t pos = len;
|
||||
if (pos > 30) {
|
||||
pos -= msgscrl;
|
||||
len = pos;
|
||||
if (len > 30)
|
||||
len = 30;
|
||||
char dispmsg[len + 1];
|
||||
if (pos >= 0) {
|
||||
LOOP_L_N(i, len) dispmsg[i] = statusmsg[i + msgscrl];
|
||||
}
|
||||
else {
|
||||
LOOP_L_N(i, 30 + pos) dispmsg[i] = ' ';
|
||||
LOOP_S_L_N(i, 30 + pos, 30) dispmsg[i] = statusmsg[i - (30 + pos)];
|
||||
}
|
||||
dispmsg[len] = '\0';
|
||||
Scroller::Buffer buf;
|
||||
size_t len = 0;
|
||||
const char* dispmsg = scroller.scroll(len, buf, statusmsg, &new_msg);
|
||||
if (new_msg) {
|
||||
new_msg = false;
|
||||
if (process == Print) {
|
||||
DWIN_Draw_Rectangle(1, Color_Grey, 8, 214, DWIN_WIDTH - 8, 238);
|
||||
const int8_t npos = (DWIN_WIDTH - 30 * MENU_CHR_W) / 2;
|
||||
const int8_t npos = (DWIN_WIDTH - len * MENU_CHR_W) / 2;
|
||||
DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 219, dispmsg);
|
||||
}
|
||||
else {
|
||||
DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 352, DWIN_WIDTH - 8, 376);
|
||||
const int8_t npos = (DWIN_WIDTH - 30 * MENU_CHR_W) / 2;
|
||||
const int8_t npos = (DWIN_WIDTH - len * MENU_CHR_W) / 2;
|
||||
DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 357, dispmsg);
|
||||
}
|
||||
if (-pos >= 30) msgscrl = 0;
|
||||
msgscrl++;
|
||||
}
|
||||
else {
|
||||
if (new_msg) {
|
||||
new_msg = false;
|
||||
if (process == Print) {
|
||||
DWIN_Draw_Rectangle(1, Color_Grey, 8, 214, DWIN_WIDTH - 8, 238);
|
||||
const int8_t npos = (DWIN_WIDTH - strlen(statusmsg) * MENU_CHR_W) / 2;
|
||||
DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 219, statusmsg);
|
||||
}
|
||||
else {
|
||||
DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 352, DWIN_WIDTH - 8, 376);
|
||||
const int8_t npos = (DWIN_WIDTH - strlen(statusmsg) * MENU_CHR_W) / 2;
|
||||
DWIN_Draw_String(false, DWIN_FONT_MENU, GetColor(eeprom_settings.status_bar_text, Color_White), Color_Bg_Black, npos, 357, statusmsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2136,7 +2147,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case HOTENDPID_KP:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Kp Value"));
|
||||
Draw_Float(thermalManager.temp_hotend[0].pid.Kp, row, false, 100);
|
||||
Draw_Float(thermalManager.temp_hotend[0].pid.p(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_hotend[0].pid.Kp, 0, 5000, 100, thermalManager.updatePID);
|
||||
@@ -2144,7 +2155,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case HOTENDPID_KI:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Ki Value"));
|
||||
Draw_Float(unscalePID_i(thermalManager.temp_hotend[0].pid.Ki), row, false, 100);
|
||||
Draw_Float(thermalManager.temp_hotend[0].pid.i(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_hotend[0].pid.Ki, 0, 5000, 100, thermalManager.updatePID);
|
||||
@@ -2152,7 +2163,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case HOTENDPID_KD:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Kd Value"));
|
||||
Draw_Float(unscalePID_d(thermalManager.temp_hotend[0].pid.Kd), row, false, 100);
|
||||
Draw_Float(thermalManager.temp_hotend[0].pid.d(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_hotend[0].pid.Kd, 0, 5000, 100, thermalManager.updatePID);
|
||||
@@ -2203,7 +2214,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case BEDPID_KP:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Kp Value"));
|
||||
Draw_Float(thermalManager.temp_bed.pid.Kp, row, false, 100);
|
||||
Draw_Float(thermalManager.temp_bed.pid.p(), row, false, 100);
|
||||
}
|
||||
else {
|
||||
Modify_Value(thermalManager.temp_bed.pid.Kp, 0, 5000, 100, thermalManager.updatePID);
|
||||
@@ -2212,7 +2223,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case BEDPID_KI:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Ki Value"));
|
||||
Draw_Float(unscalePID_i(thermalManager.temp_bed.pid.Ki), row, false, 100);
|
||||
Draw_Float(thermalManager.temp_bed.pid.i(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_bed.pid.Ki, 0, 5000, 100, thermalManager.updatePID);
|
||||
@@ -2220,7 +2231,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case BEDPID_KD:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_Version, F("Kd Value"));
|
||||
Draw_Float(unscalePID_d(thermalManager.temp_bed.pid.Kd), row, false, 100);
|
||||
Draw_Float(thermalManager.temp_bed.pid.d(), row, false, 100);
|
||||
}
|
||||
else
|
||||
Modify_Value(thermalManager.temp_bed.pid.Kd, 0, 5000, 100, thermalManager.updatePID);
|
||||
@@ -2291,7 +2302,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
Draw_Float(planner.flow_percentage[0], row, false, 1);
|
||||
}
|
||||
else
|
||||
Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1);
|
||||
Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1, []{ planner.refresh_e_factor(0); });
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
@@ -2461,35 +2472,35 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
case JERK_X:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_MaxSpeedJerkX, F("X Axis"));
|
||||
Draw_Float(planner.max_jerk[X_AXIS], row, false, 10);
|
||||
Draw_Float(planner.max_jerk.x, row, false, 10);
|
||||
}
|
||||
else
|
||||
Modify_Value(planner.max_jerk[X_AXIS], 0, default_max_jerk[X_AXIS] * 2, 10);
|
||||
Modify_Value(planner.max_jerk.x, 0, default_max_jerk[X_AXIS] * 2, 10);
|
||||
break;
|
||||
case JERK_Y:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_MaxSpeedJerkY, F("Y Axis"));
|
||||
Draw_Float(planner.max_jerk[Y_AXIS], row, false, 10);
|
||||
Draw_Float(planner.max_jerk.y, row, false, 10);
|
||||
}
|
||||
else
|
||||
Modify_Value(planner.max_jerk[Y_AXIS], 0, default_max_jerk[Y_AXIS] * 2, 10);
|
||||
Modify_Value(planner.max_jerk.y, 0, default_max_jerk[Y_AXIS] * 2, 10);
|
||||
break;
|
||||
case JERK_Z:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_MaxSpeedJerkZ, F("Z Axis"));
|
||||
Draw_Float(planner.max_jerk[Z_AXIS], row, false, 10);
|
||||
Draw_Float(planner.max_jerk.z, row, false, 10);
|
||||
}
|
||||
else
|
||||
Modify_Value(planner.max_jerk[Z_AXIS], 0, default_max_jerk[Z_AXIS] * 2, 10);
|
||||
Modify_Value(planner.max_jerk.z, 0, default_max_jerk[Z_AXIS] * 2, 10);
|
||||
break;
|
||||
#if HAS_HOTEND
|
||||
case JERK_E:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_MaxSpeedJerkE, F("Extruder"));
|
||||
Draw_Float(planner.max_jerk[E_AXIS], row, false, 10);
|
||||
Draw_Float(planner.max_jerk.e, row, false, 10);
|
||||
}
|
||||
else
|
||||
Modify_Value(planner.max_jerk[E_AXIS], 0, default_max_jerk[E_AXIS] * 2, 10);
|
||||
Modify_Value(planner.max_jerk.e, 0, default_max_jerk[E_AXIS] * 2, 10);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
@@ -2716,7 +2727,8 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
#define ADVANCED_BACK 0
|
||||
#define ADVANCED_BEEPER (ADVANCED_BACK + ENABLED(SOUND_MENU_ITEM))
|
||||
#define ADVANCED_PROBE (ADVANCED_BEEPER + ENABLED(HAS_BED_PROBE))
|
||||
#define ADVANCED_CORNER (ADVANCED_PROBE + 1)
|
||||
#define ADVANCED_TMC (ADVANCED_PROBE + ENABLED(HAS_TRINAMIC_CONFIG))
|
||||
#define ADVANCED_CORNER (ADVANCED_TMC + 1)
|
||||
#define ADVANCED_LA (ADVANCED_CORNER + ENABLED(LIN_ADVANCE))
|
||||
#define ADVANCED_LOAD (ADVANCED_LA + ENABLED(ADVANCED_PAUSE_FEATURE))
|
||||
#define ADVANCED_UNLOAD (ADVANCED_LOAD + ENABLED(ADVANCED_PAUSE_FEATURE))
|
||||
@@ -2756,6 +2768,15 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if HAS_TRINAMIC_CONFIG
|
||||
case ADVANCED_TMC:
|
||||
if (draw)
|
||||
Draw_Menu_Item(row, ICON_Motion, F("TMC Drivers"), nullptr, true);
|
||||
else
|
||||
Draw_Menu(TMCMenu);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case ADVANCED_CORNER:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_MaxAccelerated, F("Bed Screw Inset"));
|
||||
@@ -2768,7 +2789,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
#if ENABLED(LIN_ADVANCE)
|
||||
case ADVANCED_LA:
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_MaxAccelerated, F("Lin Advance Kp"));
|
||||
Draw_Menu_Item(row, ICON_MaxAccelerated, F("Lin Advance K"));
|
||||
Draw_Float(planner.extruder_advance_K[0], row, false, 100);
|
||||
}
|
||||
else
|
||||
@@ -2901,7 +2922,93 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
break;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#endif // HAS_PROBE_MENU
|
||||
|
||||
#if HAS_TRINAMIC_CONFIG
|
||||
case TMCMenu:
|
||||
|
||||
#define TMC_BACK 0
|
||||
#define TMC_STEPPER_CURRENT_X (TMC_BACK + AXIS_IS_TMC(X))
|
||||
#define TMC_STEPPER_CURRENT_Y (TMC_STEPPER_CURRENT_X + AXIS_IS_TMC(Y))
|
||||
#define TMC_STEPPER_CURRENT_Z (TMC_STEPPER_CURRENT_Y + AXIS_IS_TMC(Z))
|
||||
#define TMC_STEPPER_CURRENT_E (TMC_STEPPER_CURRENT_Z + AXIS_IS_TMC(E0))
|
||||
#define TMC_TOTAL TMC_STEPPER_CURRENT_E
|
||||
|
||||
switch (item) {
|
||||
|
||||
case TMC_BACK:
|
||||
if (draw)
|
||||
Draw_Menu_Item(row, ICON_Back, F("Back"));
|
||||
else
|
||||
Draw_Menu(Advanced, ADVANCED_TMC);
|
||||
break;
|
||||
|
||||
#if AXIS_IS_TMC(X)
|
||||
case TMC_STEPPER_CURRENT_X:
|
||||
|
||||
static float stepper_current_x;
|
||||
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_StepX, F("Stepper X current"));
|
||||
stepper_current_x = stepperX.getMilliamps();
|
||||
Draw_Float(stepper_current_x, row, false, 1);
|
||||
}
|
||||
else {
|
||||
Modify_Value(stepper_current_x, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperX.rms_current(stepper_current_x); });
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(Y)
|
||||
case TMC_STEPPER_CURRENT_Y:
|
||||
|
||||
static float stepper_current_y;
|
||||
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_StepY, F("Stepper Y current"));
|
||||
stepper_current_y = stepperY.getMilliamps();
|
||||
Draw_Float(stepper_current_y, row, false, 1);
|
||||
}
|
||||
else {
|
||||
Modify_Value(stepper_current_y, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperY.rms_current(stepper_current_y); });
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(Z)
|
||||
case TMC_STEPPER_CURRENT_Z:
|
||||
|
||||
static float stepper_current_z;
|
||||
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_StepZ, F("Stepper Z current"));
|
||||
stepper_current_z = stepperZ.getMilliamps();
|
||||
Draw_Float(stepper_current_z, row, false, 1);
|
||||
}
|
||||
else {
|
||||
Modify_Value(stepper_current_z, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperZ.rms_current(stepper_current_z); });
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(E0)
|
||||
case TMC_STEPPER_CURRENT_E:
|
||||
|
||||
static float stepper_current_e;
|
||||
|
||||
if (draw) {
|
||||
Draw_Menu_Item(row, ICON_StepE, F("Stepper E current"));
|
||||
stepper_current_e = stepperE0.getMilliamps();
|
||||
Draw_Float(stepper_current_e, row, false, 1);
|
||||
}
|
||||
else {
|
||||
Modify_Value(stepper_current_e, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperE0.rms_current(stepper_current_e); });
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
};
|
||||
break;
|
||||
#endif // HAS_TRINAMIC_CONFIG
|
||||
|
||||
case InfoMain:
|
||||
case Info:
|
||||
@@ -3633,7 +3740,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
|
||||
Draw_Float(planner.flow_percentage[0], row, false, 1);
|
||||
}
|
||||
else
|
||||
Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1);
|
||||
Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1, []{ planner.refresh_e_factor(0); });
|
||||
break;
|
||||
case TUNE_HOTEND:
|
||||
if (draw) {
|
||||
@@ -3875,7 +3982,10 @@ FSTR_P CrealityDWINClass::Get_Menu_Title(uint8_t menu) {
|
||||
case Visual: return F("Visual Settings");
|
||||
case Advanced: return F("Advanced Settings");
|
||||
#if HAS_BED_PROBE
|
||||
case ProbeMenu: return F("Probe Menu");
|
||||
case ProbeMenu: return F("Bed Probe");
|
||||
#endif
|
||||
#if HAS_TRINAMIC_CONFIG
|
||||
case TMCMenu: return F("TMC Drivers");
|
||||
#endif
|
||||
case ColorSettings: return F("UI Color Settings");
|
||||
case Info: return F("Info");
|
||||
@@ -3945,6 +4055,9 @@ uint8_t CrealityDWINClass::Get_Menu_Size(uint8_t menu) {
|
||||
#if HAS_BED_PROBE
|
||||
case ProbeMenu: return PROBE_TOTAL;
|
||||
#endif
|
||||
#if HAS_TRINAMIC_CONFIG
|
||||
case TMCMenu: return TMC_TOTAL;
|
||||
#endif
|
||||
case Info: return INFO_TOTAL;
|
||||
case InfoMain: return INFO_TOTAL;
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL) && !HAS_BED_PROBE
|
||||
@@ -4113,8 +4226,6 @@ void CrealityDWINClass::Value_Control() {
|
||||
case LevelManual: mesh_conf.manual_mesh_move(selection == LEVELING_M_OFFSET); break;
|
||||
#endif
|
||||
}
|
||||
if (valuepointer == &planner.flow_percentage[0])
|
||||
planner.refresh_e_factor(0);
|
||||
if (funcpointer) funcpointer();
|
||||
return;
|
||||
}
|
||||
@@ -4168,35 +4279,25 @@ void CrealityDWINClass::Option_Control() {
|
||||
}
|
||||
|
||||
void CrealityDWINClass::File_Control() {
|
||||
typedef TextScroller<MENU_CHAR_LIMIT> Scroller;
|
||||
static Scroller scroller;
|
||||
EncoderState encoder_diffState = Encoder_ReceiveAnalyze();
|
||||
static uint8_t filescrl = 0;
|
||||
if (encoder_diffState == ENCODER_DIFF_NO) {
|
||||
if (selection > 0) {
|
||||
card.getfilename_sorted(SD_ORDER(selection - 1, card.get_num_Files()));
|
||||
char * const filename = card.longest_filename();
|
||||
size_t len = strlen(filename);
|
||||
int8_t pos = len;
|
||||
size_t pos = len;
|
||||
if (!card.flag.filenameIsDir)
|
||||
while (pos && filename[pos] != '.') pos--;
|
||||
if (pos > MENU_CHAR_LIMIT) {
|
||||
static millis_t time = 0;
|
||||
if (PENDING(millis(), time)) return;
|
||||
time = millis() + 200;
|
||||
pos -= filescrl;
|
||||
len = _MIN(pos, MENU_CHAR_LIMIT);
|
||||
char name[len + 1];
|
||||
if (pos >= 0) {
|
||||
LOOP_L_N(i, len) name[i] = filename[i + filescrl];
|
||||
}
|
||||
else {
|
||||
LOOP_L_N(i, MENU_CHAR_LIMIT + pos) name[i] = ' ';
|
||||
LOOP_S_L_N(i, MENU_CHAR_LIMIT + pos, MENU_CHAR_LIMIT) name[i] = filename[i - (MENU_CHAR_LIMIT + pos)];
|
||||
}
|
||||
name[len] = '\0';
|
||||
Scroller::Buffer buf;
|
||||
const char* const name = scroller.scroll(pos, buf, filename);
|
||||
DWIN_Draw_Rectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28);
|
||||
Draw_Menu_Item(selection - scrollpos, card.flag.filenameIsDir ? ICON_More : ICON_File, name);
|
||||
if (-pos >= MENU_CHAR_LIMIT) filescrl = 0;
|
||||
filescrl++;
|
||||
DWIN_UpdateLCD();
|
||||
}
|
||||
}
|
||||
@@ -4208,7 +4309,7 @@ void CrealityDWINClass::File_Control() {
|
||||
DWIN_Draw_Rectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28);
|
||||
Draw_SD_Item(selection, selection - scrollpos);
|
||||
}
|
||||
filescrl = 0;
|
||||
scroller.reset();
|
||||
selection++; // Select Down
|
||||
if (selection > scrollpos + MROWS) {
|
||||
scrollpos++;
|
||||
@@ -4221,7 +4322,7 @@ void CrealityDWINClass::File_Control() {
|
||||
DWIN_Draw_Rectangle(1, Color_Bg_Black, 0, MBASE(selection - scrollpos) - 18, 14, MBASE(selection - scrollpos) + 33);
|
||||
DWIN_Draw_Rectangle(1, Color_Bg_Black, LBLX, MBASE(selection - scrollpos) - 14, 271, MBASE(selection - scrollpos) + 28);
|
||||
Draw_SD_Item(selection, selection - scrollpos);
|
||||
filescrl = 0;
|
||||
scroller.reset();
|
||||
selection--; // Select Up
|
||||
if (selection < scrollpos) {
|
||||
scrollpos--;
|
||||
@@ -4571,8 +4672,8 @@ void CrealityDWINClass::Start_Print(bool sd) {
|
||||
}
|
||||
else
|
||||
strcpy_P(filename, PSTR("Host Print"));
|
||||
TERN_(LCD_SET_PROGRESS_MANUALLY, ui.set_progress(0));
|
||||
TERN_(USE_M73_REMAINING_TIME, ui.set_remaining_time(0));
|
||||
TERN_(SET_PROGRESS_PERCENT, ui.set_progress(0));
|
||||
TERN_(SET_REMAINING_TIME, ui.set_remaining_time(0));
|
||||
Draw_Print_Screen();
|
||||
}
|
||||
}
|
||||
@@ -4581,8 +4682,8 @@ void CrealityDWINClass::Stop_Print() {
|
||||
printing = false;
|
||||
sdprint = false;
|
||||
thermalManager.cooldown();
|
||||
TERN_(LCD_SET_PROGRESS_MANUALLY, ui.set_progress(100 * (PROGRESS_SCALE)));
|
||||
TERN_(USE_M73_REMAINING_TIME, ui.set_remaining_time(0));
|
||||
TERN_(SET_PROGRESS_PERCENT, ui.set_progress(100 * (PROGRESS_SCALE)));
|
||||
TERN_(SET_REMAINING_TIME, ui.set_remaining_time(0));
|
||||
Draw_Print_confirm();
|
||||
}
|
||||
|
||||
@@ -4659,7 +4760,7 @@ void CrealityDWINClass::Screen_Update() {
|
||||
if (process == Print) {
|
||||
Draw_Print_ProgressBar();
|
||||
Draw_Print_ProgressElapsed();
|
||||
TERN_(USE_M73_REMAINING_TIME, Draw_Print_ProgressRemain());
|
||||
TERN_(SET_REMAINING_TIME, Draw_Print_ProgressRemain());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -75,6 +75,9 @@ enum menuID : uint8_t {
|
||||
ColorSettings,
|
||||
Advanced,
|
||||
ProbeMenu,
|
||||
#if HAS_TRINAMIC_CONFIG
|
||||
TMCMenu,
|
||||
#endif
|
||||
Info,
|
||||
Leveling,
|
||||
LevelManual,
|
||||
@@ -188,7 +191,7 @@ public:
|
||||
static void Draw_Print_Screen();
|
||||
static void Draw_Print_Filename(const bool reset=false);
|
||||
static void Draw_Print_ProgressBar();
|
||||
#if ENABLED(USE_M73_REMAINING_TIME)
|
||||
#if ENABLED(SET_REMAINING_TIME)
|
||||
static void Draw_Print_ProgressRemain();
|
||||
#endif
|
||||
static void Draw_Print_ProgressElapsed();
|
||||
|
@@ -213,7 +213,7 @@ void MarlinUI::draw_status_message(const bool blink) {
|
||||
lcd_put_u8str(status_message);
|
||||
|
||||
// Fill the rest with spaces
|
||||
while (slen < max_status_chars) { lcd_put_lchar(' '); ++slen; }
|
||||
while (slen < max_status_chars) { lcd_put_u8str(F(" ")); ++slen; }
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -227,10 +227,10 @@ void MarlinUI::draw_status_message(const bool blink) {
|
||||
|
||||
// If the string doesn't completely fill the line...
|
||||
if (rlen < max_status_chars) {
|
||||
lcd_put_lchar('.'); // Always at 1+ spaces left, draw a dot
|
||||
lcd_put_u8str(F(".")); // Always at 1+ spaces left, draw a dot
|
||||
uint8_t chars = max_status_chars - rlen; // Amount of space left in characters
|
||||
if (--chars) { // Draw a second dot if there's space
|
||||
lcd_put_lchar('.');
|
||||
lcd_put_u8str(F("."));
|
||||
if (--chars)
|
||||
lcd_put_u8str_max(status_message, chars); // Print a second copy of the message
|
||||
}
|
||||
@@ -254,7 +254,7 @@ void MarlinUI::draw_status_message(const bool blink) {
|
||||
lcd_put_u8str_max(status_message, max_status_chars);
|
||||
|
||||
// Fill the rest with spaces if there are missing spaces
|
||||
while (slen < max_status_chars) { lcd_put_lchar(' '); ++slen; }
|
||||
while (slen < max_status_chars) { lcd_put_u8str(F(" ")); ++slen; }
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -366,6 +366,8 @@ void MarlinUI::draw_status_screen() {
|
||||
);
|
||||
}
|
||||
|
||||
// TODO!
|
||||
|
||||
//
|
||||
// Elapsed time
|
||||
//
|
||||
@@ -374,11 +376,11 @@ void MarlinUI::draw_status_screen() {
|
||||
|
||||
#if ENABLED(DWIN_MARLINUI_PORTRAIT)
|
||||
|
||||
// Portrait mode only shows one value at a time, and will rotate if ROTATE_PROGRESS_DISPLAY
|
||||
// Portrait mode only shows one value at a time, and will rotate if many are enabled
|
||||
dwin_string.set();
|
||||
char prefix = ' ';
|
||||
#if ENABLED(SHOW_REMAINING_TIME)
|
||||
if (TERN1(ROTATE_PROGRESS_DISPLAY, blink) && print_job_timer.isRunning()) {
|
||||
if (blink && print_job_timer.isRunning()) {
|
||||
time = get_remaining_time();
|
||||
prefix = 'R';
|
||||
}
|
||||
@@ -447,13 +449,13 @@ void MarlinUI::draw_status_screen() {
|
||||
//if (pb_solid < old_solid)
|
||||
DWIN_Draw_Rectangle(1, Color_Bg_Black, pb_left + 1 + pb_solid, pb_top + 1, pb_right - 1, pb_bottom - 1); // Erase the rest
|
||||
|
||||
#if ENABLED(SHOW_SD_PERCENT)
|
||||
#if ENABLED(SHOW_PROGRESS_PERCENT)
|
||||
dwin_string.set(TERN(PRINT_PROGRESS_SHOW_DECIMALS, permyriadtostr4(progress), ui8tostr3rj(progress / (PROGRESS_SCALE))));
|
||||
dwin_string.add('%');
|
||||
DWIN_Draw_String(
|
||||
false, font16x32, Percent_Color, Color_Bg_Black,
|
||||
pb_left + (pb_width - dwin_string.length * 16) / 2,
|
||||
pb_top + (pb_height - 32) / 2,
|
||||
pb_top + (pb_height - 32) / 2 - 1,
|
||||
S(dwin_string.string())
|
||||
);
|
||||
#endif
|
||||
|
@@ -43,8 +43,8 @@
|
||||
#if DISABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU)
|
||||
#warning "INDIVIDUAL_AXIS_HOMING_SUBMENU is recommended with ProUI."
|
||||
#endif
|
||||
#if DISABLED(LCD_SET_PROGRESS_MANUALLY)
|
||||
#warning "LCD_SET_PROGRESS_MANUALLY is recommended with ProUI."
|
||||
#if DISABLED(SET_PROGRESS_MANUALLY)
|
||||
#warning "SET_PROGRESS_MANUALLY is recommended with ProUI."
|
||||
#endif
|
||||
#if DISABLED(STATUS_MESSAGE_SCROLLING)
|
||||
#warning "STATUS_MESSAGE_SCROLLING is recommended with ProUI."
|
||||
@@ -2654,11 +2654,11 @@ void SetMaxAccelZ() { HMI_value.axis = Z_AXIS, SetIntOnClick(MIN_MAXACCELERATION
|
||||
|
||||
#if HAS_CLASSIC_JERK
|
||||
void ApplyMaxJerk() { planner.set_max_jerk(HMI_value.axis, MenuData.Value / MINUNITMULT); }
|
||||
void SetMaxJerkX() { HMI_value.axis = X_AXIS, SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[X_AXIS], UNITFDIGITS, planner.max_jerk[X_AXIS], ApplyMaxJerk); }
|
||||
void SetMaxJerkY() { HMI_value.axis = Y_AXIS, SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[Y_AXIS], UNITFDIGITS, planner.max_jerk[Y_AXIS], ApplyMaxJerk); }
|
||||
void SetMaxJerkZ() { HMI_value.axis = Z_AXIS, SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[Z_AXIS], UNITFDIGITS, planner.max_jerk[Z_AXIS], ApplyMaxJerk); }
|
||||
void SetMaxJerkX() { HMI_value.axis = X_AXIS, SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[X_AXIS], UNITFDIGITS, planner.max_jerk.x, ApplyMaxJerk); }
|
||||
void SetMaxJerkY() { HMI_value.axis = Y_AXIS, SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[Y_AXIS], UNITFDIGITS, planner.max_jerk.y, ApplyMaxJerk); }
|
||||
void SetMaxJerkZ() { HMI_value.axis = Z_AXIS, SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[Z_AXIS], UNITFDIGITS, planner.max_jerk.z, ApplyMaxJerk); }
|
||||
#if HAS_HOTEND
|
||||
void SetMaxJerkE() { HMI_value.axis = E_AXIS; SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[E_AXIS], UNITFDIGITS, planner.max_jerk[E_AXIS], ApplyMaxJerk); }
|
||||
void SetMaxJerkE() { HMI_value.axis = E_AXIS; SetFloatOnClick(MIN_MAXJERK, max_jerk_edit_values[E_AXIS], UNITFDIGITS, planner.max_jerk.e, ApplyMaxJerk); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -2667,13 +2667,15 @@ void SetStepsY() { HMI_value.axis = Y_AXIS, SetPFloatOnClick( MIN_STEP, MAX_STEP
|
||||
void SetStepsZ() { HMI_value.axis = Z_AXIS, SetPFloatOnClick( MIN_STEP, MAX_STEP, UNITFDIGITS); }
|
||||
#if HAS_HOTEND
|
||||
void SetStepsE() { HMI_value.axis = E_AXIS; SetPFloatOnClick( MIN_STEP, MAX_STEP, UNITFDIGITS); }
|
||||
void SetHotendPidT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP); }
|
||||
#if ENABLED(PIDTEMP)
|
||||
void SetHotendPidT() { SetPIntOnClick(MIN_ETEMP, MAX_ETEMP); }
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
void SetBedPidT() { SetPIntOnClick(MIN_BEDTEMP, MAX_BEDTEMP); }
|
||||
#endif
|
||||
|
||||
#if HAS_HOTEND || HAS_HEATED_BED
|
||||
#if EITHER(PIDTEMP, PIDTEMPBED)
|
||||
void SetPidCycles() { SetPIntOnClick(3, 50); }
|
||||
void SetKp() { SetPFloatOnClick(0, 1000, 2); }
|
||||
void ApplyPIDi() {
|
||||
@@ -3222,10 +3224,10 @@ void Draw_AdvancedSettings_Menu() {
|
||||
#if HAS_HOME_OFFSET
|
||||
MENU_ITEM_F(ICON_HomeOffset, MSG_SET_HOME_OFFSETS, onDrawSubMenu, Draw_HomeOffset_Menu);
|
||||
#endif
|
||||
#if HAS_HOTEND
|
||||
#if ENABLED(PIDTEMP)
|
||||
MENU_ITEM(ICON_PIDNozzle, F(STR_HOTEND_PID " Settings"), onDrawSubMenu, Draw_HotendPID_Menu);
|
||||
#endif
|
||||
#if HAS_HEATED_BED
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
MENU_ITEM(ICON_PIDbed, F(STR_BED_PID " Settings"), onDrawSubMenu, Draw_BedPID_Menu);
|
||||
#endif
|
||||
MENU_ITEM_F(ICON_FilSet, MSG_FILAMENT_SET, onDrawSubMenu, Draw_FilSet_Menu);
|
||||
@@ -3639,11 +3641,11 @@ void Draw_MaxAccel_Menu() {
|
||||
SetMenuTitle({1, 16, 28, 13}, GET_TEXT_F(MSG_JERK));
|
||||
MenuItemsPrepare(5);
|
||||
BACK_ITEM(Draw_Motion_Menu);
|
||||
EDIT_ITEM_F(ICON_MaxSpeedJerkX, MSG_VA_JERK, onDrawMaxJerkX, SetMaxJerkX, &planner.max_jerk[X_AXIS]);
|
||||
EDIT_ITEM_F(ICON_MaxSpeedJerkY, MSG_VB_JERK, onDrawMaxJerkY, SetMaxJerkY, &planner.max_jerk[Y_AXIS]);
|
||||
EDIT_ITEM_F(ICON_MaxSpeedJerkZ, MSG_VC_JERK, onDrawMaxJerkZ, SetMaxJerkZ, &planner.max_jerk[Z_AXIS]);
|
||||
EDIT_ITEM_F(ICON_MaxSpeedJerkX, MSG_VA_JERK, onDrawMaxJerkX, SetMaxJerkX, &planner.max_jerk.x);
|
||||
EDIT_ITEM_F(ICON_MaxSpeedJerkY, MSG_VB_JERK, onDrawMaxJerkY, SetMaxJerkY, &planner.max_jerk.y);
|
||||
EDIT_ITEM_F(ICON_MaxSpeedJerkZ, MSG_VC_JERK, onDrawMaxJerkZ, SetMaxJerkZ, &planner.max_jerk.z);
|
||||
#if HAS_HOTEND
|
||||
EDIT_ITEM_F(ICON_MaxSpeedJerkE, MSG_VE_JERK, onDrawMaxJerkE, SetMaxJerkE, &planner.max_jerk[E_AXIS]);
|
||||
EDIT_ITEM_F(ICON_MaxSpeedJerkE, MSG_VE_JERK, onDrawMaxJerkE, SetMaxJerkE, &planner.max_jerk.e);
|
||||
#endif
|
||||
}
|
||||
CurrentMenu->draw();
|
||||
@@ -3668,10 +3670,10 @@ void Draw_Steps_Menu() {
|
||||
CurrentMenu->draw();
|
||||
}
|
||||
|
||||
#if HAS_HOTEND
|
||||
#if ENABLED(PIDTEMP)
|
||||
void Draw_HotendPID_Menu() {
|
||||
checkkey = Menu;
|
||||
if (SetMenu(HotendPIDMenu, F(STR_HOTEND_PID " Settings"),8)) {
|
||||
if (SetMenu(HotendPIDMenu, F(STR_HOTEND_PID " Settings"), 8)) {
|
||||
BACK_ITEM(Draw_AdvancedSettings_Menu);
|
||||
MENU_ITEM(ICON_PIDNozzle, F(STR_HOTEND_PID), onDrawMenuItem, HotendPID);
|
||||
EDIT_ITEM(ICON_PIDValue, F("Set" STR_KP), onDrawPFloat2Menu, SetKp, &thermalManager.temp_hotend[0].pid.Kp);
|
||||
@@ -3687,10 +3689,10 @@ void Draw_Steps_Menu() {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAS_HEATED_BED
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
void Draw_BedPID_Menu() {
|
||||
checkkey = Menu;
|
||||
if (SetMenu(BedPIDMenu, F(STR_BED_PID " Settings"),8)) {
|
||||
if (SetMenu(BedPIDMenu, F(STR_BED_PID " Settings"), 8)) {
|
||||
BACK_ITEM(Draw_AdvancedSettings_Menu);
|
||||
MENU_ITEM(ICON_PIDNozzle, F(STR_BED_PID), onDrawMenuItem,BedPID);
|
||||
EDIT_ITEM(ICON_PIDValue, F("Set" STR_KP), onDrawPFloat2Menu, SetKp, &thermalManager.temp_bed.pid.Kp);
|
||||
|
@@ -264,7 +264,9 @@ void Draw_Motion_Menu();
|
||||
void Draw_Preheat1_Menu();
|
||||
void Draw_Preheat2_Menu();
|
||||
void Draw_Preheat3_Menu();
|
||||
void Draw_HotendPID_Menu();
|
||||
#if ENABLED(PIDTEMP)
|
||||
void Draw_HotendPID_Menu();
|
||||
#endif
|
||||
#endif
|
||||
void Draw_Temperature_Menu();
|
||||
void Draw_MaxSpeed_Menu();
|
||||
@@ -273,7 +275,7 @@ void Draw_MaxAccel_Menu();
|
||||
void Draw_MaxJerk_Menu();
|
||||
#endif
|
||||
void Draw_Steps_Menu();
|
||||
#if HAS_HEATED_BED
|
||||
#if ENABLED(PIDTEMPBED)
|
||||
void Draw_BedPID_Menu();
|
||||
#endif
|
||||
#if EITHER(HAS_BED_PROBE, BABYSTEPPING)
|
||||
|
Reference in New Issue
Block a user