Skip to content

Commit

Permalink
🚸 Negative temperature display option (#25036)
Browse files Browse the repository at this point in the history
Co-authored-by: Scott Lahteine <[email protected]>
  • Loading branch information
trivalik and thinkyhead authored Feb 12, 2023
1 parent 58d6b5d commit db01960
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 8 deletions.
3 changes: 3 additions & 0 deletions Marlin/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1455,6 +1455,9 @@
// Show the E position (filament used) during printing
//#define LCD_SHOW_E_TOTAL

// Display a negative temperature instead of "err"
//#define SHOW_TEMPERATURE_BELOW_ZERO

/**
* LED Control Menu
* Add LED Control to the LCD menu
Expand Down
14 changes: 12 additions & 2 deletions Marlin/src/lcd/HD44780/marlinui_HD44780.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -537,7 +537,7 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const
*/
FORCE_INLINE void _draw_heater_status(const heater_id_t heater_id, const char prefix, const bool blink) {
#if HAS_HEATED_BED
const bool isBed = TERN(HAS_HEATED_CHAMBER, heater_id == H_BED, heater_id < 0);
const bool isBed = heater_id == H_BED;
const celsius_t t1 = (isBed ? thermalManager.wholeDegBed() : thermalManager.wholeDegHotend(heater_id)),
t2 = (isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater_id));
#else
Expand All @@ -546,7 +546,17 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater_id, const char pr

if (prefix >= 0) lcd_put_lchar(prefix);

lcd_put_u8str(t1 < 0 ? "err" : i16tostr3rj(t1));
if (t1 >= 0)
lcd_put_u8str(ui16tostr3rj(t1));
else {
#if ENABLED(SHOW_TEMPERATURE_BELOW_ZERO)
char * const str = i16tostr3rj(t1);
lcd_put_u8str(&str[1]);
#else
lcd_put_u8str(F("err"));
#endif
}

lcd_put_u8str(F("/"));

#if !HEATER_IDLE_HANDLER
Expand Down
24 changes: 18 additions & 6 deletions Marlin/src/lcd/dogm/status_screen_DOGM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,14 +192,26 @@
#define PROGRESS_BAR_WIDTH (LCD_PIXEL_WIDTH - PROGRESS_BAR_X)

FORCE_INLINE void _draw_centered_temp(const celsius_t temp, const uint8_t tx, const uint8_t ty) {
if (temp < 0)
lcd_put_u8str(tx - 3 * (INFO_FONT_WIDTH) / 2 + 1, ty, F("err"));
const char *str;
uint8_t len;
if (temp >= 0) {
str = i16tostr3left(temp);
len = strlen(str);
lcd_moveto(tx + 1 - len * (INFO_FONT_WIDTH) / 2, ty);
}
else {
const char *str = i16tostr3rj(temp);
const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
lcd_put_u8str(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty, &str[3-len]);
lcd_put_lchar(LCD_STR_DEGREE[0]);
#if ENABLED(SHOW_TEMPERATURE_BELOW_ZERO)
str = i16tostr3left((-temp) % 100);
len = strlen(str) + 1;
lcd_moveto(tx + 1 - len * (INFO_FONT_WIDTH) / 2, ty);
lcd_put_lchar('-');
#else
lcd_put_u8str(tx + 1 - 3 * (INFO_FONT_WIDTH) / 2, ty, F("err"));
return;
#endif
}
lcd_put_u8str(str);
lcd_put_lchar(LCD_STR_DEGREE[0]);
}

#if DO_DRAW_FLOWMETER
Expand Down

0 comments on commit db01960

Please sign in to comment.