From e736779d7ee786e55d5267b84ca15a393a473849 Mon Sep 17 00:00:00 2001 From: AnHardt Date: Thu, 8 Oct 2015 20:55:46 +0200 Subject: [PATCH] blink for char-lcds Implement and test blinking for char-lcds # Conflicts: # Marlin/ultralcd_implementation_hitachi_HD44780.h solved --- Marlin/dogm_lcd_implementation.h | 6 +++--- Marlin/ultralcd.cpp | 10 ++++++---- Marlin/ultralcd_implementation_hitachi_HD44780.h | 16 ++++++---------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index 4e2cbf9ef5..00c3a774cd 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -352,7 +352,7 @@ static void lcd_implementation_status_screen() { u8g.drawPixel(8, XYZ_BASELINE - 5); u8g.drawPixel(8, XYZ_BASELINE - 3); u8g.setPrintPos(10, XYZ_BASELINE); - if (axis_known_position[X_AXIS]) + if (axis_known_position[X_AXIS] || (blink & 1)) lcd_print(ftostr31ns(current_position[X_AXIS])); else lcd_printPGM(PSTR("---")); @@ -361,7 +361,7 @@ static void lcd_implementation_status_screen() { u8g.drawPixel(49, XYZ_BASELINE - 5); u8g.drawPixel(49, XYZ_BASELINE - 3); u8g.setPrintPos(51, XYZ_BASELINE); - if (axis_known_position[Y_AXIS]) + if (axis_known_position[Y_AXIS] || (blink & 1)) lcd_print(ftostr31ns(current_position[Y_AXIS])); else lcd_printPGM(PSTR("---")); @@ -370,7 +370,7 @@ static void lcd_implementation_status_screen() { u8g.drawPixel(89, XYZ_BASELINE - 5); u8g.drawPixel(89, XYZ_BASELINE - 3); u8g.setPrintPos(91, XYZ_BASELINE); - if (axis_known_position[Z_AXIS]) + if (axis_known_position[Z_AXIS] || (blink & 1)) lcd_print(ftostr32sp(current_position[Z_AXIS])); else lcd_printPGM(PSTR("---.--")); diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 810bfcff99..8722f237f4 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1732,21 +1732,23 @@ void lcd_update() { } #if ENABLED(DOGLCD) // Changes due to different driver architecture of the DOGM display if (lcdDrawUpdate) { - blink++; // Variable for fan animation and alive dot + blink++; // Variable for animation and alive dot u8g.firstPage(); do { lcd_setFont(FONT_MENU); u8g.setPrintPos(125, 0); - if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot + if (blink & 1) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot u8g.drawPixel(127, 63); // draw alive dot u8g.setColorIndex(1); // black on white (*currentMenu)(); } while (u8g.nextPage()); } #else - if (lcdDrawUpdate) + if (lcdDrawUpdate) { + blink++; // Variable for animation (*currentMenu)(); - #endif + } + #endif #if ENABLED(LCD_HAS_STATUS_INDICATORS) lcd_implementation_update_indicators(); diff --git a/Marlin/ultralcd_implementation_hitachi_HD44780.h b/Marlin/ultralcd_implementation_hitachi_HD44780.h index 0ba411cf8e..fbcba3e75a 100644 --- a/Marlin/ultralcd_implementation_hitachi_HD44780.h +++ b/Marlin/ultralcd_implementation_hitachi_HD44780.h @@ -3,14 +3,10 @@ /** * Implementation of the LCD display routines for a Hitachi HD44780 display. These are common LCD character displays. -* When selecting the Russian language, a slightly different LCD implementation is used to handle UTF8 characters. **/ -//#if DISABLED(REPRAPWORLD_KEYPAD) -// extern volatile uint8_t buttons; //the last checked buttons in a bit array. -//#else - extern volatile uint8_t buttons; //an extended version of the last checked buttons in a bit array. -//#endif +static unsigned char blink = 0; // Variable for animation +extern volatile uint8_t buttons; //an extended version of the last checked buttons in a bit array. //////////////////////////////////// // Setup button and encode mappings for each panel (into 'buttons' variable @@ -621,13 +617,13 @@ static void lcd_implementation_status_screen() { #else lcd.print('X'); - if (axis_known_position[X_AXIS]) + if (axis_known_position[X_AXIS] || (blink & 1)) lcd.print(ftostr4sign(current_position[X_AXIS])); else lcd_printPGM(PSTR(" ---")); - lcd_printPGM(PSTR(" Y")); - if (axis_known_position[Y_AXIS]) + lcd_printPGM(PSTR(" Y")); + if (axis_known_position[Y_AXIS] || (blink & 1)) lcd.print(ftostr4sign(current_position[Y_AXIS])); else lcd_printPGM(PSTR(" ---")); @@ -638,7 +634,7 @@ static void lcd_implementation_status_screen() { lcd.setCursor(LCD_WIDTH - 8, 1); lcd_printPGM(PSTR("Z ")); - if (axis_known_position[Z_AXIS]) + if (axis_known_position[Z_AXIS] || (blink & 1)) lcd.print(ftostr32sp(current_position[Z_AXIS] + 0.00001)); else lcd_printPGM(PSTR("---.--"));