mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-27 05:48:43 +00:00
Merge pull request #6154 from thinkyhead/rc_fil_sensor_vs_sd
Show Filament Width on LCD when SD is disabled
This commit is contained in:
commit
af09095f03
@ -224,6 +224,10 @@
|
||||
#define LCD_STR_SPECIAL_MAX '\x09'
|
||||
// Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin.
|
||||
// Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here.
|
||||
|
||||
// Symbol characters
|
||||
#define LCD_STR_FILAM_DIA "\xf8"
|
||||
#define LCD_STR_FILAM_MUL "\xa4"
|
||||
#else
|
||||
/* Custom characters defined in the first 8 characters of the LCD */
|
||||
#define LCD_STR_BEDTEMP "\x00" // Print only as a char. This will have 'unexpected' results when used in a string!
|
||||
|
@ -47,7 +47,7 @@ extern float zprobe_zoffset;
|
||||
|
||||
int lcd_preheat_hotend_temp[2], lcd_preheat_bed_temp[2], lcd_preheat_fan_speed[2];
|
||||
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY) && ENABLED(SDSUPPORT)
|
||||
millis_t previous_lcd_status_ms = 0;
|
||||
#endif
|
||||
|
||||
@ -547,7 +547,7 @@ void lcd_status_screen() {
|
||||
#if ENABLED(ULTIPANEL)
|
||||
|
||||
if (lcd_clicked) {
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY) && ENABLED(SDSUPPORT)
|
||||
previous_lcd_status_ms = millis(); // get status message to show up for a while
|
||||
#endif
|
||||
lcd_implementation_init( // to maybe revive the LCD if static electricity killed it.
|
||||
@ -3456,7 +3456,7 @@ void lcd_finishstatus(bool persist=false) {
|
||||
#endif
|
||||
lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
|
||||
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY) && ENABLED(SDSUPPORT)
|
||||
previous_lcd_status_ms = millis(); //get status message to show up for a while
|
||||
#endif
|
||||
}
|
||||
|
@ -93,7 +93,7 @@
|
||||
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY) && ENABLED(SDSUPPORT)
|
||||
extern millis_t previous_lcd_status_ms;
|
||||
#endif
|
||||
|
||||
|
@ -535,12 +535,19 @@ static void lcd_implementation_status_screen() {
|
||||
// When everything is ok you see a constant 'X'.
|
||||
|
||||
static char xstring[5], ystring[5], zstring[7];
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY) && DISABLED(SDSUPPORT)
|
||||
static char wstring[5], mstring[4];
|
||||
#endif
|
||||
|
||||
// At the first page, regenerate the XYZ strings
|
||||
if (page.page == 0) {
|
||||
strcpy(xstring, ftostr4sign(current_position[X_AXIS]));
|
||||
strcpy(ystring, ftostr4sign(current_position[Y_AXIS]));
|
||||
strcpy(zstring, ftostr52sp(current_position[Z_AXIS] + 0.00001));
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY) && DISABLED(SDSUPPORT)
|
||||
strcpy(wstring, ftostr12ns(filament_width_meas));
|
||||
strcpy(mstring, itostr3(100.0 * volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]));
|
||||
#endif
|
||||
}
|
||||
|
||||
if (PAGE_CONTAINS(XYZ_FRAME_TOP, XYZ_FRAME_TOP + XYZ_FRAME_HEIGHT - 1)) {
|
||||
@ -591,6 +598,22 @@ static void lcd_implementation_status_screen() {
|
||||
u8g.setPrintPos(12, 50);
|
||||
lcd_print(itostr3(feedrate_percentage));
|
||||
u8g.print('%');
|
||||
|
||||
//
|
||||
// Filament sensor display if SD is disabled
|
||||
//
|
||||
#if DISABLED(SDSUPPORT) && ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
u8g.setPrintPos(56, 50);
|
||||
lcd_print(wstring);
|
||||
u8g.setPrintPos(102, 50);
|
||||
lcd_print(mstring);
|
||||
u8g.print('%');
|
||||
lcd_setFont(FONT_MENU);
|
||||
u8g.setPrintPos(47, 50);
|
||||
lcd_print(LCD_STR_FILAM_DIA);
|
||||
u8g.setPrintPos(93, 50);
|
||||
lcd_print(LCD_STR_FILAM_MUL);
|
||||
#endif
|
||||
}
|
||||
|
||||
//
|
||||
@ -602,19 +625,21 @@ static void lcd_implementation_status_screen() {
|
||||
if (PAGE_CONTAINS(STATUS_BASELINE + 1 - INFO_FONT_HEIGHT, STATUS_BASELINE)) {
|
||||
u8g.setPrintPos(0, STATUS_BASELINE);
|
||||
|
||||
#if DISABLED(FILAMENT_LCD_DISPLAY)
|
||||
lcd_print(lcd_status_message);
|
||||
#else
|
||||
#if ENABLED(FILAMENT_LCD_DISPLAY) && ENABLED(SDSUPPORT)
|
||||
if (PENDING(millis(), previous_lcd_status_ms + 5000UL)) { //Display both Status message line and Filament display on the last line
|
||||
lcd_print(lcd_status_message);
|
||||
}
|
||||
else {
|
||||
lcd_printPGM(PSTR("dia:"));
|
||||
lcd_printPGM(PSTR(LCD_STR_FILAM_DIA));
|
||||
u8g.print(':');
|
||||
lcd_print(ftostr12ns(filament_width_meas));
|
||||
lcd_printPGM(PSTR(" factor:"));
|
||||
lcd_printPGM(PSTR(" " LCD_STR_FILAM_MUL));
|
||||
u8g.print(':');
|
||||
lcd_print(itostr3(100.0 * volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]));
|
||||
u8g.print('%');
|
||||
}
|
||||
#else
|
||||
lcd_print(lcd_status_message);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -396,7 +396,7 @@ void lcd_print(char c) { charset_mapper(c); }
|
||||
void lcd_erase_line(const int line) {
|
||||
lcd.setCursor(0, line);
|
||||
for (uint8_t i = LCD_WIDTH + 1; --i;)
|
||||
lcd_print(' ');
|
||||
lcd.print(' ');
|
||||
}
|
||||
|
||||
// Scroll the PSTR 'text' in a 'len' wide field for 'time' milliseconds at position col,line
|
||||
@ -775,14 +775,12 @@ static void lcd_implementation_status_screen() {
|
||||
|
||||
#if ENABLED(LCD_PROGRESS_BAR)
|
||||
|
||||
if (card.isFileOpen()) {
|
||||
// Draw the progress bar if the message has shown long enough
|
||||
// or if there is no message set.
|
||||
if (ELAPSED(millis(), progress_bar_ms + PROGRESS_BAR_MSG_TIME) || !lcd_status_message[0])
|
||||
return lcd_draw_progress_bar(card.percentDone());
|
||||
} //card.isFileOpen
|
||||
// Draw the progress bar if the message has shown long enough
|
||||
// or if there is no message set.
|
||||
if (card.isFileOpen() && ELAPSED(millis(), progress_bar_ms + PROGRESS_BAR_MSG_TIME) || !lcd_status_message[0])
|
||||
return lcd_draw_progress_bar(card.percentDone());
|
||||
|
||||
#elif ENABLED(FILAMENT_LCD_DISPLAY)
|
||||
#elif ENABLED(FILAMENT_LCD_DISPLAY) && ENABLED(SDSUPPORT)
|
||||
|
||||
// Show Filament Diameter and Volumetric Multiplier %
|
||||
// After allowing lcd_status_message to show for 5 seconds
|
||||
@ -795,7 +793,7 @@ static void lcd_implementation_status_screen() {
|
||||
return;
|
||||
}
|
||||
|
||||
#endif // FILAMENT_LCD_DISPLAY
|
||||
#endif // FILAMENT_LCD_DISPLAY && SDSUPPORT
|
||||
|
||||
lcd_print(lcd_status_message);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user