Changes to reduce and simplify
This commit is contained in:
parent
80abc872f3
commit
b492e0878d
|
@ -789,7 +789,7 @@ void kill_screen(const char* lcd_msg) {
|
||||||
encoderPosition = 0;
|
encoderPosition = 0;
|
||||||
lcd_implementation_drawmenu_static(0, PSTR(MSG_PROGRESS_BAR_TEST), true, true);
|
lcd_implementation_drawmenu_static(0, PSTR(MSG_PROGRESS_BAR_TEST), true, true);
|
||||||
lcd.setCursor((LCD_WIDTH) / 2 - 2, LCD_HEIGHT - 2);
|
lcd.setCursor((LCD_WIDTH) / 2 - 2, LCD_HEIGHT - 2);
|
||||||
lcd.print(itostr3(bar_percent)); lcd.print('%');
|
lcd.print(itostr3(bar_percent)); lcd.write('%');
|
||||||
lcd.setCursor(0, LCD_HEIGHT - 1); lcd_draw_progress_bar(bar_percent);
|
lcd.setCursor(0, LCD_HEIGHT - 1); lcd_draw_progress_bar(bar_percent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2144,9 +2144,13 @@ void kill_screen(const char* lcd_msg) {
|
||||||
void _lcd_ubl_map_homing() {
|
void _lcd_ubl_map_homing() {
|
||||||
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_HOMING), NULL);
|
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_HOMING), NULL);
|
||||||
lcdDrawUpdate = LCDVIEW_CALL_NO_REDRAW;
|
lcdDrawUpdate = LCDVIEW_CALL_NO_REDRAW;
|
||||||
if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS])
|
if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) {
|
||||||
|
#if DISABLED(DOGLCD)
|
||||||
|
lcd_set_ubl_map_plot_chars();
|
||||||
|
#endif
|
||||||
lcd_goto_screen(_lcd_ubl_output_map_lcd);
|
lcd_goto_screen(_lcd_ubl_output_map_lcd);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UBL LCD "radar" map point editing
|
* UBL LCD "radar" map point editing
|
||||||
|
@ -2217,19 +2221,13 @@ void kill_screen(const char* lcd_msg) {
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC
|
||||||
n_edit_pts = 9; //TODO: Delta accessible edit points
|
n_edit_pts = 9; //TODO: Delta accessible edit points
|
||||||
#else
|
#else
|
||||||
if (x_plot < 1 || x_plot >= GRID_MAX_POINTS_X - 1)
|
const bool xc = WITHIN(x_plot, 1, GRID_MAX_POINTS_X - 2),
|
||||||
if (y_plot < 1 || y_plot >= GRID_MAX_POINTS_Y - 1) n_edit_pts = 4; // Corners
|
yc = WITHIN(y_plot, 1, GRID_MAX_POINTS_Y - 2);
|
||||||
else n_edit_pts = 6;
|
n_edit_pts = yc ? (xc ? 9 : 6) : (xc ? 6 : 4); // Corners
|
||||||
else if (y_plot < 1 || y_plot >= GRID_MAX_POINTS_Y - 1) n_edit_pts = 6; // Edges
|
|
||||||
else n_edit_pts = 9; // Field
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (lcdDrawUpdate) {
|
if (lcdDrawUpdate) {
|
||||||
#if ENABLED(DOGLCD)
|
lcd_implementation_ubl_plot(x_plot, y_plot);
|
||||||
_lcd_ubl_plot_DOGLCD(x_plot, y_plot);
|
|
||||||
#else
|
|
||||||
_lcd_ubl_plot_HD44780(x_plot, y_plot);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ubl_map_move_to_xy(); // Move to current location
|
ubl_map_move_to_xy(); // Move to current location
|
||||||
|
|
||||||
|
|
|
@ -688,7 +688,7 @@ static void lcd_implementation_status_screen() {
|
||||||
|
|
||||||
#define STATUS_BASELINE (55 + INFO_FONT_HEIGHT)
|
#define STATUS_BASELINE (55 + INFO_FONT_HEIGHT)
|
||||||
|
|
||||||
if (PAGE_CONTAINS(STATUS_BASELINE + 1 - INFO_FONT_HEIGHT, STATUS_BASELINE)) {
|
if (PAGE_CONTAINS(STATUS_BASELINE - (INFO_FONT_HEIGHT - 1), STATUS_BASELINE)) {
|
||||||
u8g.setPrintPos(0, STATUS_BASELINE);
|
u8g.setPrintPos(0, STATUS_BASELINE);
|
||||||
|
|
||||||
#if ENABLED(FILAMENT_LCD_DISPLAY) && ENABLED(SDSUPPORT)
|
#if ENABLED(FILAMENT_LCD_DISPLAY) && ENABLED(SDSUPPORT)
|
||||||
|
@ -949,84 +949,83 @@ static void lcd_implementation_status_screen() {
|
||||||
#define MAP_MAX_PIXELS_X 53
|
#define MAP_MAX_PIXELS_X 53
|
||||||
#define MAP_MAX_PIXELS_Y 49
|
#define MAP_MAX_PIXELS_Y 49
|
||||||
|
|
||||||
void _lcd_ubl_plot_DOGLCD(uint8_t x_plot, uint8_t y_plot) {
|
void lcd_implementation_ubl_plot(const uint8_t x_plot, const uint8_t y_plot) {
|
||||||
uint8_t i, j, x_offset, y_offset, x_map_pixels, y_map_pixels;
|
// Scale the box pixels appropriately
|
||||||
uint8_t pixels_per_X_mesh_pnt, pixels_per_Y_mesh_pnt, inverted_y;
|
uint8_t x_map_pixels = ((MAP_MAX_PIXELS_X - 4) / (GRID_MAX_POINTS_X)) * (GRID_MAX_POINTS_X),
|
||||||
|
y_map_pixels = ((MAP_MAX_PIXELS_Y - 4) / (GRID_MAX_POINTS_Y)) * (GRID_MAX_POINTS_Y),
|
||||||
|
|
||||||
/*********************************************************/
|
pixels_per_X_mesh_pnt = x_map_pixels / (GRID_MAX_POINTS_X),
|
||||||
/************ Scale the box pixels appropriately *********/
|
pixels_per_Y_mesh_pnt = y_map_pixels / (GRID_MAX_POINTS_Y),
|
||||||
/*********************************************************/
|
|
||||||
x_map_pixels = ((MAP_MAX_PIXELS_X - 4) / GRID_MAX_POINTS_X) * GRID_MAX_POINTS_X;
|
|
||||||
y_map_pixels = ((MAP_MAX_PIXELS_Y - 4) / GRID_MAX_POINTS_Y) * GRID_MAX_POINTS_Y;
|
|
||||||
|
|
||||||
pixels_per_X_mesh_pnt = x_map_pixels / GRID_MAX_POINTS_X;
|
x_offset = MAP_UPPER_LEFT_CORNER_X + 1 + (MAP_MAX_PIXELS_X - x_map_pixels - 2) / 2,
|
||||||
pixels_per_Y_mesh_pnt = y_map_pixels / GRID_MAX_POINTS_Y;
|
y_offset = MAP_UPPER_LEFT_CORNER_Y + 1 + (MAP_MAX_PIXELS_Y - y_map_pixels - 2) / 2;
|
||||||
|
|
||||||
x_offset = MAP_UPPER_LEFT_CORNER_X + 1 + (MAP_MAX_PIXELS_X-x_map_pixels-2)/2;
|
// Clear the Mesh Map
|
||||||
y_offset = MAP_UPPER_LEFT_CORNER_Y + 1 + (MAP_MAX_PIXELS_Y-y_map_pixels-2)/2;
|
|
||||||
|
|
||||||
/*********************************************************/
|
|
||||||
/************ Clear the Mesh Map Box**********************/
|
|
||||||
/*********************************************************/
|
|
||||||
|
|
||||||
|
if (PAGE_CONTAINS(y_offset - 2, y_offset + y_map_pixels + 4)) {
|
||||||
u8g.setColorIndex(1); // First draw the bigger box in White so we have a border around the mesh map box
|
u8g.setColorIndex(1); // First draw the bigger box in White so we have a border around the mesh map box
|
||||||
u8g.drawBox(x_offset-2, y_offset-2, x_map_pixels+4, y_map_pixels+4);
|
u8g.drawBox(x_offset - 2, y_offset - 2, x_map_pixels + 4, y_map_pixels + 4);
|
||||||
|
if (PAGE_CONTAINS(y_offset, y_offset + y_map_pixels)) {
|
||||||
u8g.setColorIndex(0); // Now actually clear the mesh map box
|
u8g.setColorIndex(0); // Now actually clear the mesh map box
|
||||||
u8g.drawBox(x_offset, y_offset, x_map_pixels, y_map_pixels);
|
u8g.drawBox(x_offset, y_offset, x_map_pixels, y_map_pixels);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************/
|
// Display Mesh Point Locations
|
||||||
/************ Display Mesh Point Locations ***************/
|
|
||||||
/*********************************************************/
|
|
||||||
|
|
||||||
u8g.setColorIndex(1);
|
u8g.setColorIndex(1);
|
||||||
for (i = 0; i < GRID_MAX_POINTS_X; i++) {
|
const uint8_t sx = x_offset + pixels_per_X_mesh_pnt / 2;
|
||||||
for (j = 0; j < GRID_MAX_POINTS_Y; j++) {
|
uint8_t y = y_offset + pixels_per_Y_mesh_pnt / 2;
|
||||||
u8g.drawBox(x_offset+i*pixels_per_X_mesh_pnt+pixels_per_X_mesh_pnt/2,
|
for (uint8_t j = 0; j < GRID_MAX_POINTS_Y; j++, y += pixels_per_Y_mesh_pnt)
|
||||||
y_offset+j*pixels_per_Y_mesh_pnt+pixels_per_Y_mesh_pnt/2, 1, 1);
|
if (PAGE_CONTAINS(y, y))
|
||||||
}
|
for (uint8_t i = 0, x = sx; i < GRID_MAX_POINTS_X; i++, x += pixels_per_X_mesh_pnt)
|
||||||
}
|
u8g.drawBox(sx, y, 1, 1);
|
||||||
|
|
||||||
/*********************************************************/
|
// Fill in the Specified Mesh Point
|
||||||
/************ Fill in the Specified Mesh Point ***********/
|
|
||||||
/*********************************************************/
|
|
||||||
|
|
||||||
inverted_y = GRID_MAX_POINTS_Y - y_plot - 1; // The origin is typically in the lower right corner. We need to
|
uint8_t inverted_y = GRID_MAX_POINTS_Y - y_plot - 1; // The origin is typically in the lower right corner. We need to
|
||||||
// invert the Y to get it to plot in the right location.
|
// invert the Y to get it to plot in the right location.
|
||||||
u8g.drawBox(x_offset+x_plot*pixels_per_X_mesh_pnt, y_offset+inverted_y*pixels_per_Y_mesh_pnt,
|
|
||||||
pixels_per_X_mesh_pnt, pixels_per_Y_mesh_pnt);
|
|
||||||
|
|
||||||
/*********************************************************/
|
const uint8_t by = y_offset + inverted_y * pixels_per_Y_mesh_pnt;
|
||||||
/************** Put Relevent Text on Display *************/
|
if (PAGE_CONTAINS(by, by + pixels_per_Y_mesh_pnt))
|
||||||
/*********************************************************/
|
u8g.drawBox(
|
||||||
|
x_offset + x_plot * pixels_per_X_mesh_pnt, by,
|
||||||
|
pixels_per_X_mesh_pnt, pixels_per_Y_mesh_pnt
|
||||||
|
);
|
||||||
|
|
||||||
|
// Put Relevant Text on Display
|
||||||
|
|
||||||
// Show X and Y positions at top of screen
|
// Show X and Y positions at top of screen
|
||||||
u8g.setColorIndex(1);
|
u8g.setColorIndex(1);
|
||||||
|
if (PAGE_UNDER(7)) {
|
||||||
u8g.setPrintPos(5, 7);
|
u8g.setPrintPos(5, 7);
|
||||||
lcd_print("X:");
|
lcd_print("X:");
|
||||||
lcd_print(ftostr32(LOGICAL_X_POSITION(pgm_read_float(&ubl._mesh_index_to_xpos[x_plot]))));
|
lcd_print(ftostr32(LOGICAL_X_POSITION(pgm_read_float(&ubl._mesh_index_to_xpos[x_plot]))));
|
||||||
u8g.setPrintPos(74, 7);
|
u8g.setPrintPos(74, 7);
|
||||||
lcd_print("Y:");
|
lcd_print("Y:");
|
||||||
lcd_print(ftostr32(LOGICAL_Y_POSITION(pgm_read_float(&ubl._mesh_index_to_ypos[y_plot]))));
|
lcd_print(ftostr32(LOGICAL_Y_POSITION(pgm_read_float(&ubl._mesh_index_to_ypos[y_plot]))));
|
||||||
|
}
|
||||||
|
|
||||||
// Print plot position
|
// Print plot position
|
||||||
|
if (PAGE_CONTAINS(64 - (INFO_FONT_HEIGHT - 1), 64)) {
|
||||||
u8g.setPrintPos(5, 64);
|
u8g.setPrintPos(5, 64);
|
||||||
lcd_print("(");
|
lcd_print('(');
|
||||||
u8g.print(x_plot);
|
u8g.print(x_plot);
|
||||||
lcd_print(",");
|
lcd_print(',');
|
||||||
u8g.print(y_plot);
|
u8g.print(y_plot);
|
||||||
lcd_print(")");
|
lcd_print(')');
|
||||||
|
|
||||||
// Show the location value
|
// Show the location value
|
||||||
u8g.setPrintPos(74, 64);
|
u8g.setPrintPos(74, 64);
|
||||||
lcd_print("Z:");
|
lcd_print("Z:");
|
||||||
if (!isnan(ubl.z_values[x_plot][y_plot])) {
|
if (!isnan(ubl.z_values[x_plot][y_plot]))
|
||||||
lcd_print(ftostr43sign(ubl.z_values[x_plot][y_plot]));
|
lcd_print(ftostr43sign(ubl.z_values[x_plot][y_plot]));
|
||||||
|
else
|
||||||
|
lcd_printPGM(PSTR(" -----"));
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
lcd_print(" -----");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // AUTO_BED_LEVELING_UBL
|
#endif // AUTO_BED_LEVELING_UBL
|
||||||
|
|
||||||
#endif // ULTIPANEL
|
#endif // ULTIPANEL
|
||||||
|
|
|
@ -421,7 +421,7 @@ void lcd_printPGM_utf(const char *str, uint8_t n=LCD_WIDTH) {
|
||||||
void lcd_erase_line(const int16_t line) {
|
void lcd_erase_line(const int16_t line) {
|
||||||
lcd.setCursor(0, line);
|
lcd.setCursor(0, line);
|
||||||
for (uint8_t i = LCD_WIDTH + 1; --i;)
|
for (uint8_t i = LCD_WIDTH + 1; --i;)
|
||||||
lcd.print(' ');
|
lcd.write(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scroll the PSTR 'text' in a 'len' wide field for 'time' milliseconds at position col,line
|
// Scroll the PSTR 'text' in a 'len' wide field for 'time' milliseconds at position col,line
|
||||||
|
@ -438,9 +438,9 @@ void lcd_printPGM_utf(const char *str, uint8_t n=LCD_WIDTH) {
|
||||||
|
|
||||||
static void logo_lines(const char* const extra) {
|
static void logo_lines(const char* const extra) {
|
||||||
int16_t indent = (LCD_WIDTH - 8 - lcd_strlen_P(extra)) / 2;
|
int16_t indent = (LCD_WIDTH - 8 - lcd_strlen_P(extra)) / 2;
|
||||||
lcd.setCursor(indent, 0); lcd.print('\x00'); lcd_printPGM(PSTR( "------" )); lcd.print('\x01');
|
lcd.setCursor(indent, 0); lcd.print('\x00'); lcd_printPGM(PSTR( "------" )); lcd.write('\x01');
|
||||||
lcd.setCursor(indent, 1); lcd_printPGM(PSTR("|Marlin|")); lcd_printPGM(extra);
|
lcd.setCursor(indent, 1); lcd_printPGM(PSTR("|Marlin|")); lcd_printPGM(extra);
|
||||||
lcd.setCursor(indent, 2); lcd.print('\x02'); lcd_printPGM(PSTR( "------" )); lcd.print('\x03');
|
lcd.setCursor(indent, 2); lcd.write('\x02'); lcd_printPGM(PSTR( "------" )); lcd.write('\x03');
|
||||||
}
|
}
|
||||||
|
|
||||||
void bootscreen() {
|
void bootscreen() {
|
||||||
|
@ -581,11 +581,11 @@ FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr,
|
||||||
lcd_printPGM(pstr);
|
lcd_printPGM(pstr);
|
||||||
else {
|
else {
|
||||||
if (!axis_homed[axis])
|
if (!axis_homed[axis])
|
||||||
lcd.print('?');
|
lcd.write('?');
|
||||||
else {
|
else {
|
||||||
#if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
|
#if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
|
||||||
if (!axis_known_position[axis])
|
if (!axis_known_position[axis])
|
||||||
lcd.print(' ');
|
lcd.write(' ');
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
lcd_printPGM(pstr);
|
lcd_printPGM(pstr);
|
||||||
|
@ -602,7 +602,7 @@ FORCE_INLINE void _draw_heater_status(const int8_t heater, const char prefix, co
|
||||||
if (prefix >= 0) lcd.print(prefix);
|
if (prefix >= 0) lcd.print(prefix);
|
||||||
|
|
||||||
lcd.print(itostr3(t1 + 0.5));
|
lcd.print(itostr3(t1 + 0.5));
|
||||||
lcd.print('/');
|
lcd.write('/');
|
||||||
|
|
||||||
#if HEATER_IDLE_HANDLER
|
#if HEATER_IDLE_HANDLER
|
||||||
const bool is_idle = (!isBed ? thermalManager.is_heater_idle(heater) :
|
const bool is_idle = (!isBed ? thermalManager.is_heater_idle(heater) :
|
||||||
|
@ -614,9 +614,9 @@ FORCE_INLINE void _draw_heater_status(const int8_t heater, const char prefix, co
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!blink && is_idle) {
|
if (!blink && is_idle) {
|
||||||
lcd.print(' ');
|
lcd.write(' ');
|
||||||
if (t2 >= 10) lcd.print(' ');
|
if (t2 >= 10) lcd.write(' ');
|
||||||
if (t2 >= 100) lcd.print(' ');
|
if (t2 >= 100) lcd.write(' ');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
@ -624,8 +624,8 @@ FORCE_INLINE void _draw_heater_status(const int8_t heater, const char prefix, co
|
||||||
|
|
||||||
if (prefix >= 0) {
|
if (prefix >= 0) {
|
||||||
lcd.print((char)LCD_DEGREE_CHAR);
|
lcd.print((char)LCD_DEGREE_CHAR);
|
||||||
lcd.print(' ');
|
lcd.write(' ');
|
||||||
if (t2 < 10) lcd.print(' ');
|
if (t2 < 10) lcd.write(' ');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -742,7 +742,7 @@ static void lcd_implementation_status_screen() {
|
||||||
lcd.print(itostr3(card.percentDone()));
|
lcd.print(itostr3(card.percentDone()));
|
||||||
else
|
else
|
||||||
lcd_printPGM(PSTR("---"));
|
lcd_printPGM(PSTR("---"));
|
||||||
lcd.print('%');
|
lcd.write('%');
|
||||||
#endif // SDSUPPORT
|
#endif // SDSUPPORT
|
||||||
|
|
||||||
#else // LCD_WIDTH >= 20
|
#else // LCD_WIDTH >= 20
|
||||||
|
@ -764,7 +764,7 @@ static void lcd_implementation_status_screen() {
|
||||||
_draw_axis_label(X_AXIS, PSTR(MSG_X), blink);
|
_draw_axis_label(X_AXIS, PSTR(MSG_X), blink);
|
||||||
lcd.print(ftostr4sign(current_position[X_AXIS]));
|
lcd.print(ftostr4sign(current_position[X_AXIS]));
|
||||||
|
|
||||||
lcd.print(' ');
|
lcd.write(' ');
|
||||||
|
|
||||||
_draw_axis_label(Y_AXIS, PSTR(MSG_Y), blink);
|
_draw_axis_label(Y_AXIS, PSTR(MSG_Y), blink);
|
||||||
lcd.print(ftostr4sign(current_position[Y_AXIS]));
|
lcd.print(ftostr4sign(current_position[Y_AXIS]));
|
||||||
|
@ -788,7 +788,7 @@ static void lcd_implementation_status_screen() {
|
||||||
lcd.setCursor(0, 2);
|
lcd.setCursor(0, 2);
|
||||||
lcd.print((char)LCD_FEEDRATE_CHAR);
|
lcd.print((char)LCD_FEEDRATE_CHAR);
|
||||||
lcd.print(itostr3(feedrate_percentage));
|
lcd.print(itostr3(feedrate_percentage));
|
||||||
lcd.print('%');
|
lcd.write('%');
|
||||||
|
|
||||||
#if LCD_WIDTH >= 20 && ENABLED(SDSUPPORT)
|
#if LCD_WIDTH >= 20 && ENABLED(SDSUPPORT)
|
||||||
|
|
||||||
|
@ -798,7 +798,7 @@ static void lcd_implementation_status_screen() {
|
||||||
lcd.print(itostr3(card.percentDone()));
|
lcd.print(itostr3(card.percentDone()));
|
||||||
else
|
else
|
||||||
lcd_printPGM(PSTR("---"));
|
lcd_printPGM(PSTR("---"));
|
||||||
lcd.print('%');
|
lcd.write('%');
|
||||||
|
|
||||||
#endif // LCD_WIDTH >= 20 && SDSUPPORT
|
#endif // LCD_WIDTH >= 20 && SDSUPPORT
|
||||||
|
|
||||||
|
@ -837,7 +837,7 @@ static void lcd_implementation_status_screen() {
|
||||||
lcd.print(ftostr12ns(filament_width_meas));
|
lcd.print(ftostr12ns(filament_width_meas));
|
||||||
lcd_printPGM(PSTR(" V"));
|
lcd_printPGM(PSTR(" V"));
|
||||||
lcd.print(itostr3(100.0 * volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]));
|
lcd.print(itostr3(100.0 * volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]));
|
||||||
lcd.print('%');
|
lcd.write('%');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -858,10 +858,10 @@ static void lcd_implementation_status_screen() {
|
||||||
lcd_print_utf(stat); // The string leaves space
|
lcd_print_utf(stat); // The string leaves space
|
||||||
chars -= slen - status_scroll_pos; // Amount of space left
|
chars -= slen - status_scroll_pos; // Amount of space left
|
||||||
}
|
}
|
||||||
lcd.print('.'); // Always at 1+ spaces left, draw a dot
|
lcd.write('.'); // Always at 1+ spaces left, draw a dot
|
||||||
if (--chars) {
|
if (--chars) {
|
||||||
if (status_scroll_pos < slen + 1) // Draw a second dot if there's space
|
if (status_scroll_pos < slen + 1) // Draw a second dot if there's space
|
||||||
--chars, lcd.print('.');
|
--chars, lcd.write('.');
|
||||||
if (chars) lcd_print_utf(lcd_status_message, chars); // Print a second copy of the message
|
if (chars) lcd_print_utf(lcd_status_message, chars); // Print a second copy of the message
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -897,7 +897,7 @@ static void lcd_implementation_status_screen() {
|
||||||
lcd.setCursor(0, row);
|
lcd.setCursor(0, row);
|
||||||
if (center && !valstr) {
|
if (center && !valstr) {
|
||||||
int8_t pad = (LCD_WIDTH - lcd_strlen_P(pstr)) / 2;
|
int8_t pad = (LCD_WIDTH - lcd_strlen_P(pstr)) / 2;
|
||||||
while (--pad >= 0) { lcd.print(' '); n--; }
|
while (--pad >= 0) { lcd.write(' '); n--; }
|
||||||
}
|
}
|
||||||
while (n > 0 && (c = pgm_read_byte(pstr))) {
|
while (n > 0 && (c = pgm_read_byte(pstr))) {
|
||||||
n -= charset_mapper(c);
|
n -= charset_mapper(c);
|
||||||
|
@ -907,7 +907,7 @@ static void lcd_implementation_status_screen() {
|
||||||
n -= charset_mapper(c);
|
n -= charset_mapper(c);
|
||||||
valstr++;
|
valstr++;
|
||||||
}
|
}
|
||||||
while (n-- > 0) lcd.print(' ');
|
while (n-- > 0) lcd.write(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_implementation_drawmenu_generic(const bool sel, const uint8_t row, const char* pstr, const char pre_char, const char post_char) {
|
static void lcd_implementation_drawmenu_generic(const bool sel, const uint8_t row, const char* pstr, const char pre_char, const char post_char) {
|
||||||
|
@ -919,7 +919,7 @@ static void lcd_implementation_status_screen() {
|
||||||
n -= charset_mapper(c);
|
n -= charset_mapper(c);
|
||||||
pstr++;
|
pstr++;
|
||||||
}
|
}
|
||||||
while (n--) lcd.print(' ');
|
while (n--) lcd.write(' ');
|
||||||
lcd.print(post_char);
|
lcd.print(post_char);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -932,8 +932,8 @@ static void lcd_implementation_status_screen() {
|
||||||
n -= charset_mapper(c);
|
n -= charset_mapper(c);
|
||||||
pstr++;
|
pstr++;
|
||||||
}
|
}
|
||||||
lcd.print(':');
|
lcd.write(':');
|
||||||
while (n--) lcd.print(' ');
|
while (n--) lcd.write(' ');
|
||||||
lcd_print(data);
|
lcd_print(data);
|
||||||
}
|
}
|
||||||
static void lcd_implementation_drawmenu_setting_edit_generic_P(const bool sel, const uint8_t row, const char* pstr, const char pre_char, const char* const data) {
|
static void lcd_implementation_drawmenu_setting_edit_generic_P(const bool sel, const uint8_t row, const char* pstr, const char pre_char, const char* const data) {
|
||||||
|
@ -945,8 +945,8 @@ static void lcd_implementation_status_screen() {
|
||||||
n -= charset_mapper(c);
|
n -= charset_mapper(c);
|
||||||
pstr++;
|
pstr++;
|
||||||
}
|
}
|
||||||
lcd.print(':');
|
lcd.write(':');
|
||||||
while (n--) lcd.print(' ');
|
while (n--) lcd.write(' ');
|
||||||
lcd_printPGM(data);
|
lcd_printPGM(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -981,10 +981,10 @@ static void lcd_implementation_status_screen() {
|
||||||
lcd.setCursor(1, 1);
|
lcd.setCursor(1, 1);
|
||||||
lcd_printPGM(pstr);
|
lcd_printPGM(pstr);
|
||||||
if (value != NULL) {
|
if (value != NULL) {
|
||||||
lcd.print(':');
|
lcd.write(':');
|
||||||
const uint8_t valrow = (lcd_strlen_P(pstr) + 1 + lcd_strlen(value) + 1) > (LCD_WIDTH - 2) ? 2 : 1; // Value on the next row if it won't fit
|
const uint8_t valrow = (lcd_strlen_P(pstr) + 1 + lcd_strlen(value) + 1) > (LCD_WIDTH - 2) ? 2 : 1; // Value on the next row if it won't fit
|
||||||
lcd.setCursor((LCD_WIDTH - 1) - (lcd_strlen(value) + 1), valrow); // Right-justified, padded by spaces
|
lcd.setCursor((LCD_WIDTH - 1) - (lcd_strlen(value) + 1), valrow); // Right-justified, padded by spaces
|
||||||
lcd.print(' '); // overwrite char if value gets shorter
|
lcd.write(' '); // overwrite char if value gets shorter
|
||||||
lcd_print(value);
|
lcd_print(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1005,7 +1005,7 @@ static void lcd_implementation_status_screen() {
|
||||||
n -= charset_mapper(c);
|
n -= charset_mapper(c);
|
||||||
filename++;
|
filename++;
|
||||||
}
|
}
|
||||||
while (n--) lcd.print(' ');
|
while (n--) lcd.write(' ');
|
||||||
lcd.print(post_char);
|
lcd.print(post_char);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1083,7 +1083,7 @@ static void lcd_implementation_status_screen() {
|
||||||
|
|
||||||
#endif // LCD_HAS_STATUS_INDICATORS
|
#endif // LCD_HAS_STATUS_INDICATORS
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_UBL
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These are just basic data for the 20x4 LCD work that
|
* These are just basic data for the 20x4 LCD work that
|
||||||
|
@ -1111,75 +1111,10 @@ static void lcd_implementation_status_screen() {
|
||||||
| +-------+ Z:00.000|
|
| +-------+ Z:00.000|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void _lcd_ubl_plot_HD44780(uint8_t x_plot, uint8_t y_plot) {
|
void lcd_set_ubl_map_plot_chars() {
|
||||||
|
#if LCD_HEIGHT > 3
|
||||||
uint8_t lcd_w_pos;
|
|
||||||
|
|
||||||
#if LCD_WIDTH < 20
|
|
||||||
lcd_w_pos = 8;
|
|
||||||
#else
|
|
||||||
lcd_w_pos = 12;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LCD_HEIGHT < 3
|
|
||||||
|
|
||||||
/*
|
|
||||||
*** 16x2 or 20x2 display **
|
|
||||||
*
|
|
||||||
* Show X and Y positions
|
|
||||||
*/
|
|
||||||
#if LCD_WIDTH < 20
|
|
||||||
lcd.setCursor(0, 0);
|
|
||||||
lcd.print("X");
|
|
||||||
#else
|
|
||||||
lcd.setCursor(1, 0);
|
|
||||||
lcd.print("X:");
|
|
||||||
#endif
|
|
||||||
lcd.print(ftostr32(LOGICAL_X_POSITION(pgm_read_float(&ubl._mesh_index_to_xpos[x_plot]))));
|
|
||||||
|
|
||||||
lcd.setCursor(lcd_w_pos, 0);
|
|
||||||
#if LCD_WIDTH < 20
|
|
||||||
lcd.print("Y");
|
|
||||||
#else
|
|
||||||
lcd.print("Y:");
|
|
||||||
#endif
|
|
||||||
lcd.print(ftostr32(LOGICAL_Y_POSITION(pgm_read_float(&ubl._mesh_index_to_ypos[y_plot]))));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Print plot position
|
|
||||||
*/
|
|
||||||
#if LCD_WIDTH < 20
|
|
||||||
lcd.setCursor(0, 1);
|
|
||||||
#else
|
|
||||||
lcd.setCursor(1, 1);
|
|
||||||
#endif
|
|
||||||
lcd.print("(");
|
|
||||||
lcd.print(x_plot);
|
|
||||||
lcd.print(",");
|
|
||||||
lcd.print(y_plot);
|
|
||||||
lcd.print(")");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Print Z values
|
|
||||||
*/
|
|
||||||
lcd.setCursor(lcd_w_pos, 1);
|
|
||||||
#if LCD_WIDTH < 20
|
|
||||||
lcd.print("Z");
|
|
||||||
#else
|
|
||||||
lcd.print("Z:");
|
|
||||||
#endif
|
|
||||||
if (!isnan(ubl.z_values[x_plot][y_plot])) {
|
|
||||||
lcd.print(ftostr43sign(ubl.z_values[x_plot][y_plot]));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
lcd.print(" -----");
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif LCD_HEIGHT > 3
|
|
||||||
|
|
||||||
//#include "_ubl_lcd_map_characters.h"
|
//#include "_ubl_lcd_map_characters.h"
|
||||||
|
const static byte _lcd_box_top[8] PROGMEM = {
|
||||||
const static PROGMEM byte _lcd_box_top[8] = {
|
|
||||||
B11111,
|
B11111,
|
||||||
B00000,
|
B00000,
|
||||||
B00000,
|
B00000,
|
||||||
|
@ -1189,8 +1124,7 @@ static void lcd_implementation_status_screen() {
|
||||||
B00000,
|
B00000,
|
||||||
B00000
|
B00000
|
||||||
};
|
};
|
||||||
|
const static byte _lcd_box_bottom[8] PROGMEM = {
|
||||||
const static PROGMEM byte _lcd_box_bottom[8] = {
|
|
||||||
B00000,
|
B00000,
|
||||||
B00000,
|
B00000,
|
||||||
B00000,
|
B00000,
|
||||||
|
@ -1200,75 +1134,99 @@ static void lcd_implementation_status_screen() {
|
||||||
B00000,
|
B00000,
|
||||||
B11111
|
B11111
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* Draw the Mesh Map Box
|
|
||||||
*/
|
|
||||||
// First create the box custom characters
|
|
||||||
createChar_P(1, _lcd_box_top);
|
createChar_P(1, _lcd_box_top);
|
||||||
createChar_P(2, _lcd_box_bottom);
|
createChar_P(2, _lcd_box_bottom);
|
||||||
|
|
||||||
// Draw the mesh map box
|
|
||||||
uint8_t m;
|
|
||||||
|
|
||||||
#if LCD_WIDTH < 20
|
|
||||||
|
|
||||||
for(m = 1; m <= 5; m++) { lcd.setCursor(m, 0); lcd.write(1); } // Top
|
|
||||||
for(m = 1; m <= 5; m++) { lcd.setCursor(m, 3); lcd.write(2); } // Bottom
|
|
||||||
for(m = 0; m <= 3; m++) { lcd.setCursor(2, m); lcd.write('|'); } // Left
|
|
||||||
for(m = 0; m <= 3; m++) { lcd.setCursor(8, m); lcd.write('|'); } // Right
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
for(m = 3; m <= 7; m++) { lcd.setCursor(m, 0); lcd.write(1); } // Top
|
|
||||||
for(m = 3; m <= 7; m++) { lcd.setCursor(m, 3); lcd.write(2); } // Bottom
|
|
||||||
for(m = 0; m <= 3; m++) { lcd.setCursor(2, m); lcd.write('|'); } // Left
|
|
||||||
for(m = 0; m <= 3; m++) { lcd.setCursor(8, m); lcd.write('|'); } // Right
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/*
|
}
|
||||||
* Print plot position
|
|
||||||
*/
|
|
||||||
lcd.setCursor(lcd_w_pos, 0);
|
|
||||||
lcd.print("(");
|
|
||||||
lcd.print(x_plot);
|
|
||||||
lcd.print(",");
|
|
||||||
lcd.print(y_plot);
|
|
||||||
lcd.print(")");
|
|
||||||
|
|
||||||
/*
|
void lcd_implementation_ubl_plot(const uint8_t x_plot, const uint8_t y_plot) {
|
||||||
* Show all values at right of screen
|
|
||||||
*/
|
#if LCD_WIDTH >= 20
|
||||||
lcd.setCursor(lcd_w_pos, 1);
|
#define _LCD_W_POS 12
|
||||||
#if LCD_WIDTH < 20
|
#define _PLOT_X 1
|
||||||
lcd.print("X");
|
#define _MAP_X 3
|
||||||
|
#define _LABEL(C,X,Y) lcd.setCursor(X, Y); lcd.print(C)
|
||||||
|
#define _XLABEL(X,Y) _LABEL("X:",X,Y)
|
||||||
|
#define _YLABEL(X,Y) _LABEL("Y:",X,Y)
|
||||||
|
#define _ZLABEL(X,Y) _LABEL("Z:",X,Y)
|
||||||
#else
|
#else
|
||||||
lcd.print("X:");
|
#define _LCD_W_POS 8
|
||||||
|
#define _PLOT_X 0
|
||||||
|
#define _MAP_X 1
|
||||||
|
#define _LABEL(X,Y,C) lcd.setCursor(X, Y); lcd.write(C)
|
||||||
|
#define _XLABEL(X,Y) _LABEL('X',X,Y)
|
||||||
|
#define _YLABEL(X,Y) _LABEL('Y',X,Y)
|
||||||
|
#define _ZLABEL(X,Y) _LABEL('Z',X,Y)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if LCD_HEIGHT <= 3 // 16x2 or 20x2 display
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show X and Y positions
|
||||||
|
*/
|
||||||
|
_XLABEL(_PLOT_X, 0);
|
||||||
lcd.print(ftostr32(LOGICAL_X_POSITION(pgm_read_float(&ubl._mesh_index_to_xpos[x_plot]))));
|
lcd.print(ftostr32(LOGICAL_X_POSITION(pgm_read_float(&ubl._mesh_index_to_xpos[x_plot]))));
|
||||||
lcd.setCursor(lcd_w_pos, 2);
|
|
||||||
#if LCD_WIDTH < 20
|
_YLABEL(_LCD_W_POS, 0);
|
||||||
lcd.print("Y");
|
|
||||||
#else
|
|
||||||
lcd.print("Y:");
|
|
||||||
#endif
|
|
||||||
lcd.print(ftostr32(LOGICAL_Y_POSITION(pgm_read_float(&ubl._mesh_index_to_ypos[y_plot]))));
|
lcd.print(ftostr32(LOGICAL_Y_POSITION(pgm_read_float(&ubl._mesh_index_to_ypos[y_plot]))));
|
||||||
|
|
||||||
/*
|
lcd.setCursor(_PLOT_X, 0);
|
||||||
|
|
||||||
|
#else // 16x4 or 20x4 display
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draw the Mesh Map Box
|
||||||
|
*/
|
||||||
|
uint8_t m;
|
||||||
|
lcd.setCursor(_MAP_X, 0); for (m = 0; m < 5; m++) lcd.write(1); // Top
|
||||||
|
lcd.setCursor(_MAP_X, 3); for (m = 0; m < 5; m++) lcd.write(2); // Bottom
|
||||||
|
for (m = 0; m <= 3; m++) {
|
||||||
|
lcd.setCursor(2, m); lcd.write('|'); // Left
|
||||||
|
lcd.setCursor(8, m); lcd.write('|'); // Right
|
||||||
|
}
|
||||||
|
|
||||||
|
lcd.setCursor(_LCD_W_POS, 0);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print plot position
|
||||||
|
*/
|
||||||
|
lcd.write('(');
|
||||||
|
lcd.print(x_plot);
|
||||||
|
lcd.write(',');
|
||||||
|
lcd.print(y_plot);
|
||||||
|
lcd.write(')');
|
||||||
|
|
||||||
|
#if LCD_HEIGHT <= 3 // 16x2 or 20x2 display
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print Z values
|
||||||
|
*/
|
||||||
|
_ZLABEL(_LCD_W_POS, 1);
|
||||||
|
if (!isnan(ubl.z_values[x_plot][y_plot]))
|
||||||
|
lcd.print(ftostr43sign(ubl.z_values[x_plot][y_plot]));
|
||||||
|
else
|
||||||
|
lcd_printPGM(PSTR(" -----"));
|
||||||
|
|
||||||
|
#else // 16x4 or 20x4 display
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show all values at right of screen
|
||||||
|
*/
|
||||||
|
_XLABEL(_LCD_W_POS, 1);
|
||||||
|
lcd.print(ftostr32(LOGICAL_X_POSITION(pgm_read_float(&ubl._mesh_index_to_xpos[x_plot]))));
|
||||||
|
_YLABEL(_LCD_W_POS, 2);
|
||||||
|
lcd.print(ftostr32(LOGICAL_Y_POSITION(pgm_read_float(&ubl._mesh_index_to_ypos[y_plot]))));
|
||||||
|
|
||||||
|
/**
|
||||||
* Show the location value
|
* Show the location value
|
||||||
*/
|
*/
|
||||||
lcd.setCursor(lcd_w_pos, 3);
|
_ZLABEL(_LCD_W_POS, 3);
|
||||||
#if LCD_WIDTH < 20
|
if (!isnan(ubl.z_values[x_plot][y_plot]))
|
||||||
lcd.print("Z");
|
|
||||||
#else
|
|
||||||
lcd.print("Z:");
|
|
||||||
#endif
|
|
||||||
if (!isnan(ubl.z_values[x_plot][y_plot])) {
|
|
||||||
lcd.print(ftostr43sign(ubl.z_values[x_plot][y_plot]));
|
lcd.print(ftostr43sign(ubl.z_values[x_plot][y_plot]));
|
||||||
}
|
else
|
||||||
else {
|
lcd_printPGM(PSTR(" -----"));
|
||||||
lcd.print(" -----");
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // LCD_HEIGHT > 3
|
#endif // LCD_HEIGHT > 3
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue