Merge pull request #4553 from thinkyhead/rc_lcd_chars_save_ram
Save bytes for custom chars (Hitachi LCD)
This commit is contained in:
commit
cffe77c537
@ -367,22 +367,22 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* General function to go directly to a menu
|
* General function to go directly to a menu
|
||||||
* Remembers the previous position
|
|
||||||
*/
|
*/
|
||||||
static void lcd_goto_screen(screenFunc_t screen, const bool feedback = false, const uint32_t encoder = 0) {
|
static void lcd_goto_screen(screenFunc_t screen, const bool feedback = false, const uint32_t encoder = 0) {
|
||||||
if (currentScreen != screen) {
|
if (currentScreen != screen) {
|
||||||
currentScreen = screen;
|
currentScreen = screen;
|
||||||
lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
|
|
||||||
encoderPosition = encoder;
|
encoderPosition = encoder;
|
||||||
if (feedback) lcd_quick_feedback();
|
|
||||||
if (screen == lcd_status_screen) {
|
if (screen == lcd_status_screen) {
|
||||||
defer_return_to_status = false;
|
defer_return_to_status = false;
|
||||||
screen_history_depth = 0;
|
screen_history_depth = 0;
|
||||||
}
|
}
|
||||||
|
if (feedback) lcd_quick_feedback();
|
||||||
|
lcd_implementation_clear();
|
||||||
#if ENABLED(LCD_PROGRESS_BAR)
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
// For LCD_PROGRESS_BAR re-initialize custom characters
|
// For LCD_PROGRESS_BAR re-initialize custom characters
|
||||||
lcd_set_custom_characters(screen == lcd_status_screen);
|
lcd_set_custom_characters(screen == lcd_status_screen);
|
||||||
#endif
|
#endif
|
||||||
|
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,15 +484,15 @@ static void lcd_status_screen() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (current_click) {
|
if (current_click) {
|
||||||
lcd_goto_screen(lcd_main_menu, true);
|
|
||||||
lcd_implementation_init( // to maybe revive the LCD if static electricity killed it.
|
|
||||||
#if ENABLED(LCD_PROGRESS_BAR) && ENABLED(ULTIPANEL)
|
|
||||||
currentScreen == lcd_status_screen
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
#if ENABLED(FILAMENT_LCD_DISPLAY)
|
||||||
previous_lcd_status_ms = millis(); // get status message to show up for a while
|
previous_lcd_status_ms = millis(); // get status message to show up for a while
|
||||||
#endif
|
#endif
|
||||||
|
lcd_implementation_init( // to maybe revive the LCD if static electricity killed it.
|
||||||
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
|
false
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
lcd_goto_screen(lcd_main_menu, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(ULTIPANEL_FEEDMULTIPLY)
|
#if ENABLED(ULTIPANEL_FEEDMULTIPLY)
|
||||||
@ -2091,7 +2091,6 @@ void kill_screen(const char* lcd_msg) {
|
|||||||
|
|
||||||
static void lcd_filament_change_resume_print() {
|
static void lcd_filament_change_resume_print() {
|
||||||
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_RESUME_PRINT;
|
filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_RESUME_PRINT;
|
||||||
lcdDrawUpdate = 2;
|
|
||||||
lcd_goto_screen(lcd_status_screen);
|
lcd_goto_screen(lcd_status_screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2379,10 +2378,13 @@ void kill_screen(const char* lcd_msg) {
|
|||||||
|
|
||||||
#endif // ULTIPANEL
|
#endif // ULTIPANEL
|
||||||
|
|
||||||
/** LCD API **/
|
|
||||||
void lcd_init() {
|
void lcd_init() {
|
||||||
|
|
||||||
lcd_implementation_init();
|
lcd_implementation_init(
|
||||||
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
|
true
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
#if ENABLED(NEWPANEL)
|
#if ENABLED(NEWPANEL)
|
||||||
#if BUTTON_EXISTS(EN1)
|
#if BUTTON_EXISTS(EN1)
|
||||||
@ -2537,12 +2539,7 @@ void lcd_update() {
|
|||||||
|
|
||||||
bool sd_status = IS_SD_INSERTED;
|
bool sd_status = IS_SD_INSERTED;
|
||||||
if (sd_status != lcd_sd_status && lcd_detected()) {
|
if (sd_status != lcd_sd_status && lcd_detected()) {
|
||||||
lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
|
lcd_sd_status = sd_status;
|
||||||
lcd_implementation_init( // to maybe revive the LCD if static electricity killed it.
|
|
||||||
#if ENABLED(LCD_PROGRESS_BAR) && ENABLED(ULTIPANEL)
|
|
||||||
currentScreen == lcd_status_screen
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
|
|
||||||
if (sd_status) {
|
if (sd_status) {
|
||||||
card.initsd();
|
card.initsd();
|
||||||
@ -2553,7 +2550,12 @@ void lcd_update() {
|
|||||||
if (lcd_sd_status != 2) LCD_MESSAGEPGM(MSG_SD_REMOVED);
|
if (lcd_sd_status != 2) LCD_MESSAGEPGM(MSG_SD_REMOVED);
|
||||||
}
|
}
|
||||||
|
|
||||||
lcd_sd_status = sd_status;
|
lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
|
||||||
|
lcd_implementation_init( // to maybe revive the LCD if static electricity killed it.
|
||||||
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
|
currentScreen == lcd_status_screen
|
||||||
|
#endif
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //SDSUPPORT && SD_DETECT_PIN
|
#endif //SDSUPPORT && SD_DETECT_PIN
|
||||||
|
@ -189,10 +189,10 @@ extern volatile uint8_t buttons; //an extended version of the last checked butt
|
|||||||
|
|
||||||
static void lcd_set_custom_characters(
|
static void lcd_set_custom_characters(
|
||||||
#if ENABLED(LCD_PROGRESS_BAR)
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
bool progress_bar_set = true
|
bool info_screen_charset = true
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
byte bedTemp[8] = {
|
static byte bedTemp[8] = {
|
||||||
B00000,
|
B00000,
|
||||||
B11111,
|
B11111,
|
||||||
B10101,
|
B10101,
|
||||||
@ -202,7 +202,7 @@ static void lcd_set_custom_characters(
|
|||||||
B00000,
|
B00000,
|
||||||
B00000
|
B00000
|
||||||
}; //thanks Sonny Mounicou
|
}; //thanks Sonny Mounicou
|
||||||
byte degree[8] = {
|
static byte degree[8] = {
|
||||||
B01100,
|
B01100,
|
||||||
B10010,
|
B10010,
|
||||||
B10010,
|
B10010,
|
||||||
@ -212,7 +212,7 @@ static void lcd_set_custom_characters(
|
|||||||
B00000,
|
B00000,
|
||||||
B00000
|
B00000
|
||||||
};
|
};
|
||||||
byte thermometer[8] = {
|
static byte thermometer[8] = {
|
||||||
B00100,
|
B00100,
|
||||||
B01010,
|
B01010,
|
||||||
B01010,
|
B01010,
|
||||||
@ -222,37 +222,7 @@ static void lcd_set_custom_characters(
|
|||||||
B10001,
|
B10001,
|
||||||
B01110
|
B01110
|
||||||
};
|
};
|
||||||
byte uplevel[8] = {
|
static byte feedrate[8] = {
|
||||||
B00100,
|
|
||||||
B01110,
|
|
||||||
B11111,
|
|
||||||
B00100,
|
|
||||||
B11100,
|
|
||||||
B00000,
|
|
||||||
B00000,
|
|
||||||
B00000
|
|
||||||
}; //thanks joris
|
|
||||||
byte refresh[8] = {
|
|
||||||
B00000,
|
|
||||||
B00110,
|
|
||||||
B11001,
|
|
||||||
B11000,
|
|
||||||
B00011,
|
|
||||||
B10011,
|
|
||||||
B01100,
|
|
||||||
B00000,
|
|
||||||
}; //thanks joris
|
|
||||||
byte folder[8] = {
|
|
||||||
B00000,
|
|
||||||
B11100,
|
|
||||||
B11111,
|
|
||||||
B10001,
|
|
||||||
B10001,
|
|
||||||
B11111,
|
|
||||||
B00000,
|
|
||||||
B00000
|
|
||||||
}; //thanks joris
|
|
||||||
byte feedrate[8] = {
|
|
||||||
B11100,
|
B11100,
|
||||||
B10000,
|
B10000,
|
||||||
B11000,
|
B11000,
|
||||||
@ -262,7 +232,7 @@ static void lcd_set_custom_characters(
|
|||||||
B00101,
|
B00101,
|
||||||
B00000
|
B00000
|
||||||
}; //thanks Sonny Mounicou
|
}; //thanks Sonny Mounicou
|
||||||
byte clock[8] = {
|
static byte clock[8] = {
|
||||||
B00000,
|
B00000,
|
||||||
B01110,
|
B01110,
|
||||||
B10011,
|
B10011,
|
||||||
@ -273,9 +243,46 @@ static void lcd_set_custom_characters(
|
|||||||
B00000
|
B00000
|
||||||
}; //thanks Sonny Mounicou
|
}; //thanks Sonny Mounicou
|
||||||
|
|
||||||
|
lcd.createChar(LCD_STR_BEDTEMP[0], bedTemp);
|
||||||
|
lcd.createChar(LCD_STR_DEGREE[0], degree);
|
||||||
|
lcd.createChar(LCD_STR_THERMOMETER[0], thermometer);
|
||||||
|
lcd.createChar(LCD_STR_FEEDRATE[0], feedrate);
|
||||||
|
lcd.createChar(LCD_STR_CLOCK[0], clock);
|
||||||
|
|
||||||
|
#if ENABLED(SDSUPPORT)
|
||||||
|
static byte uplevel[8] = {
|
||||||
|
B00100,
|
||||||
|
B01110,
|
||||||
|
B11111,
|
||||||
|
B00100,
|
||||||
|
B11100,
|
||||||
|
B00000,
|
||||||
|
B00000,
|
||||||
|
B00000
|
||||||
|
}; //thanks joris
|
||||||
|
static byte refresh[8] = {
|
||||||
|
B00000,
|
||||||
|
B00110,
|
||||||
|
B11001,
|
||||||
|
B11000,
|
||||||
|
B00011,
|
||||||
|
B10011,
|
||||||
|
B01100,
|
||||||
|
B00000,
|
||||||
|
}; //thanks joris
|
||||||
|
static byte folder[8] = {
|
||||||
|
B00000,
|
||||||
|
B11100,
|
||||||
|
B11111,
|
||||||
|
B10001,
|
||||||
|
B10001,
|
||||||
|
B11111,
|
||||||
|
B00000,
|
||||||
|
B00000
|
||||||
|
}; //thanks joris
|
||||||
|
|
||||||
#if ENABLED(LCD_PROGRESS_BAR)
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
static bool char_mode = false;
|
static byte progress[3][8] = { {
|
||||||
byte progress[3][8] = { {
|
|
||||||
B00000,
|
B00000,
|
||||||
B10000,
|
B10000,
|
||||||
B10000,
|
B10000,
|
||||||
@ -303,39 +310,30 @@ static void lcd_set_custom_characters(
|
|||||||
B10101,
|
B10101,
|
||||||
B00000
|
B00000
|
||||||
} };
|
} };
|
||||||
if (progress_bar_set != char_mode) {
|
static bool char_mode = false;
|
||||||
char_mode = progress_bar_set;
|
if (info_screen_charset != char_mode) {
|
||||||
lcd.createChar(LCD_STR_BEDTEMP[0], bedTemp);
|
char_mode = info_screen_charset;
|
||||||
lcd.createChar(LCD_STR_DEGREE[0], degree);
|
if (info_screen_charset) { // Progress bar characters for info screen
|
||||||
lcd.createChar(LCD_STR_THERMOMETER[0], thermometer);
|
|
||||||
lcd.createChar(LCD_STR_FEEDRATE[0], feedrate);
|
|
||||||
lcd.createChar(LCD_STR_CLOCK[0], clock);
|
|
||||||
if (progress_bar_set) {
|
|
||||||
// Progress bar characters for info screen
|
|
||||||
for (int i = 3; i--;) lcd.createChar(LCD_STR_PROGRESS[i], progress[i]);
|
for (int i = 3; i--;) lcd.createChar(LCD_STR_PROGRESS[i], progress[i]);
|
||||||
}
|
}
|
||||||
else {
|
else { // Custom characters for submenus
|
||||||
// Custom characters for submenus
|
|
||||||
lcd.createChar(LCD_STR_UPLEVEL[0], uplevel);
|
lcd.createChar(LCD_STR_UPLEVEL[0], uplevel);
|
||||||
lcd.createChar(LCD_STR_REFRESH[0], refresh);
|
lcd.createChar(LCD_STR_REFRESH[0], refresh);
|
||||||
lcd.createChar(LCD_STR_FOLDER[0], folder);
|
lcd.createChar(LCD_STR_FOLDER[0], folder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
lcd.createChar(LCD_STR_BEDTEMP[0], bedTemp);
|
|
||||||
lcd.createChar(LCD_STR_DEGREE[0], degree);
|
|
||||||
lcd.createChar(LCD_STR_THERMOMETER[0], thermometer);
|
|
||||||
lcd.createChar(LCD_STR_UPLEVEL[0], uplevel);
|
lcd.createChar(LCD_STR_UPLEVEL[0], uplevel);
|
||||||
lcd.createChar(LCD_STR_REFRESH[0], refresh);
|
lcd.createChar(LCD_STR_REFRESH[0], refresh);
|
||||||
lcd.createChar(LCD_STR_FOLDER[0], folder);
|
lcd.createChar(LCD_STR_FOLDER[0], folder);
|
||||||
lcd.createChar(LCD_STR_FEEDRATE[0], feedrate);
|
#endif
|
||||||
lcd.createChar(LCD_STR_CLOCK[0], clock);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_implementation_init(
|
static void lcd_implementation_init(
|
||||||
#if ENABLED(LCD_PROGRESS_BAR)
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
bool progress_bar_set = true
|
bool info_screen_charset = true
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@ -365,7 +363,7 @@ static void lcd_implementation_init(
|
|||||||
|
|
||||||
lcd_set_custom_characters(
|
lcd_set_custom_characters(
|
||||||
#if ENABLED(LCD_PROGRESS_BAR)
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
progress_bar_set
|
info_screen_charset
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -528,6 +526,7 @@ unsigned lcd_print(char c) { return charset_mapper(c); }
|
|||||||
logo_lines(PSTR(""));
|
logo_lines(PSTR(""));
|
||||||
safe_delay(2000);
|
safe_delay(2000);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lcd_set_custom_characters(
|
lcd_set_custom_characters(
|
||||||
#if ENABLED(LCD_PROGRESS_BAR)
|
#if ENABLED(LCD_PROGRESS_BAR)
|
||||||
false
|
false
|
||||||
|
Loading…
Reference in New Issue
Block a user