@ -1,19 +1,20 @@
/**
* dogm_lcd_implementation . h
* dogm_lcd_implementation . h
*
* Graphics LCD implementation for 128 x64 pixel LCDs by STB for ErikZalm / Marlin
* Demonstrator : http : //www.reprap.org/wiki/STB_Electronics
* License : http : //opensource.org/licenses/BSD-3-Clause
* Graphics LCD implementation for 128 x64 pixel LCDs by STB for ErikZalm / Marlin
* Demonstrator : http : //www.reprap.org/wiki/STB_Electronics
* License : http : //opensource.org/licenses/BSD-3-Clause
*
* With the use of :
* u8glib by Oliver Kraus
* http : //code.google.com/p/u8glib/
* License : http : //opensource.org/licenses/BSD-3-Clause
* With the use of :
* u8glib by Oliver Kraus
* http : //code.google.com/p/u8glib/
* License : http : //opensource.org/licenses/BSD-3-Clause
*/
# ifndef DOGM_LCD_IMPLEMENTATION_H
# define DOGM_LCD_IMPLEMENTATION_H
# ifndef ULTRA_LCD_IMPLEMENTATION_DOGM_H
# define ULTRA_LCD_IMPLEMENTATION_DOGM_H
# define MARLIN_VERSION "1.0.2"
/**
* Implementation of the LCD display routines for a DOGM128 graphic display . These are common LCD 128 x64 pixel graphic displays .
@ -134,28 +135,12 @@ static void lcd_implementation_init()
} while ( u8g . nextPage ( ) ) ;
}
static void lcd_implementation_clear ( )
{
// NO NEED TO IMPLEMENT LIKE SO. Picture loop automatically clears the display.
//
// Check this article: http://arduino.cc/forum/index.php?topic=91395.25;wap2
//
// u8g.firstPage();
// do {
// u8g.setColorIndex(0);
// u8g.drawBox (0, 0, u8g.getWidth(), u8g.getHeight());
// u8g.setColorIndex(1);
// } while( u8g.nextPage() );
}
static void lcd_implementation_clear ( ) { } // Automatically cleared by Picture Loop
/* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */
static void lcd_printPGM ( const char * str )
{
static void lcd_printPGM ( const char * str ) {
char c ;
while ( ( c = pgm_read_byte ( str + + ) ) ! = ' \0 ' )
{
u8g . print ( c ) ;
}
while ( ( c = pgm_read_byte ( str + + ) ) ) u8g . print ( c ) ;
}
static void _draw_heater_status ( int x , int heater ) {
@ -178,8 +163,7 @@ static void _draw_heater_status(int x, int heater) {
}
}
static void lcd_implementation_status_screen ( )
{
static void lcd_implementation_status_screen ( ) {
static unsigned char fan_rot = 0 ;
@ -189,35 +173,31 @@ static void lcd_implementation_status_screen()
u8g . drawBitmapP ( 9 , 1 , STATUS_SCREENBYTEWIDTH , STATUS_SCREENHEIGHT , ( blink % 2 ) & & fanSpeed ? status_screen0_bmp : status_screen1_bmp ) ;
# ifdef SDSUPPORT
//SD Card Symbol
// SD Card Symbol
u8g . drawBox ( 42 , 42 , 8 , 7 ) ;
u8g . drawBox ( 50 , 44 , 2 , 5 ) ;
u8g . drawFrame ( 42 , 49 , 10 , 4 ) ;
u8g . drawPixel ( 50 , 43 ) ;
// Progress bar
// Progress bar frame
u8g . drawFrame ( 54 , 49 , 73 , 4 ) ;
// SD Card Progress bar and clock
u8g . setFont ( FONT_STATUSMENU ) ;
if ( IS_SD_PRINTING )
{
// Progress bar
u8g . drawBox ( 55 , 50 , ( unsigned int ) ( ( 71 * card . percentDone ( ) ) / 100 ) , 2 ) ;
}
else {
// do nothing
if ( IS_SD_PRINTING ) {
// Progress bar solid part
u8g . drawBox ( 55 , 50 , ( unsigned int ) ( 71.f * card . percentDone ( ) / 100.f ) , 2 ) ;
}
u8g . setPrintPos ( 80 , 47 ) ;
if ( starttime ! = 0 )
{
if ( starttime ! = 0 ) {
uint16_t time = millis ( ) / 60000 - starttime / 60000 ;
u8g . print ( itostr2 ( time / 60 ) ) ;
u8g . print ( ' : ' ) ;
u8g . print ( itostr2 ( time % 60 ) ) ;
} else {
}
else {
lcd_printPGM ( PSTR ( " --:-- " ) ) ;
}
# endif
@ -244,7 +224,6 @@ static void lcd_implementation_status_screen()
u8g . print ( " --- " ) ;
# endif
// X, Y, Z-Coordinates
u8g . setFont ( FONT_STATUSMENU ) ;
u8g . drawBox ( 0 , 29 , 128 , 10 ) ;
@ -284,11 +263,10 @@ static void lcd_implementation_status_screen()
# ifndef FILAMENT_LCD_DISPLAY
u8g . print ( lcd_status_message ) ;
# else
if ( message_millis + 5000 > millis ( ) ) { //Display both Status message line and Filament display on the last line
if ( millis ( ) < message_millis + 5000 ) { //Display both Status message line and Filament display on the last line
u8g . print ( lcd_status_message ) ;
}
else
{
else {
lcd_printPGM ( PSTR ( " dia: " ) ) ;
u8g . print ( ftostr12ns ( filament_width_meas ) ) ;
lcd_printPGM ( PSTR ( " factor: " ) ) ;
@ -296,35 +274,31 @@ static void lcd_implementation_status_screen()
u8g . print ( ' % ' ) ;
}
# endif
}
static void lcd_implementation_drawmenu_generic ( uint8_t row , const char * pstr , char pre_char , char post_char )
{
static void lcd_implementation_drawmenu_generic ( uint8_t row , const char * pstr , char pre_char , char post_char ) {
char c ;
uint8_t n = LCD_WIDTH - 1 - 2 ;
if ( ( pre_char = = ' > ' ) | | ( pre_char = = LCD_STR_UPLEVEL [ 0 ] ) )
{
if ( ( pre_char = = ' > ' ) | | ( pre_char = = LCD_STR_UPLEVEL [ 0 ] ) ) {
u8g . setColorIndex ( 1 ) ; // black on white
u8g . drawBox ( 0 , row * DOG_CHAR_HEIGHT + 3 , 128 , DOG_CHAR_HEIGHT ) ;
u8g . setColorIndex ( 0 ) ; // following text must be white on black
} else u8g . setColorIndex ( 1 ) ; // unmarked text is black on white
}
else {
u8g . setColorIndex ( 1 ) ; // unmarked text is black on white
}
u8g . setPrintPos ( 0 * DOG_CHAR_WIDTH , ( row + 1 ) * DOG_CHAR_HEIGHT ) ;
u8g . print ( pre_char = = ' > ' ? ' ' : pre_char ) ; // Row selector is obsolete
while ( ( c = pgm_read_byte ( pstr ) ) ! = ' \0 ' )
{
while ( ( c = pgm_read_byte ( pstr ) ) ) {
u8g . print ( c ) ;
pstr + + ;
n - - ;
}
while ( n - - ) {
u8g . print ( ' ' ) ;
}
while ( n - - ) u8g . print ( ' ' ) ;
u8g . print ( post_char ) ;
u8g . print ( ' ' ) ;
@ -393,8 +367,7 @@ static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char p
# define lcd_implementation_drawmenu_setting_edit_callback_bool_selected(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
# define lcd_implementation_drawmenu_setting_edit_callback_bool(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
void lcd_implementation_drawedit ( const char * pstr , char * value )
{
void lcd_implementation_drawedit ( const char * pstr , char * value ) {
u8g . setPrintPos ( 0 * DOG_CHAR_WIDTH_LARGE , ( u8g . getHeight ( ) - 1 - DOG_CHAR_HEIGHT_LARGE ) - ( 1 * DOG_CHAR_HEIGHT_LARGE ) - START_ROW ) ;
u8g . setFont ( u8g_font_9x18 ) ;
lcd_printPGM ( pstr ) ;
@ -447,20 +420,16 @@ static void _drawmenu_sd(uint8_t row, const char* pstr, const char* filename, ch
# define lcd_implementation_drawmenu_function_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ')
# define lcd_implementation_drawmenu_function(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ')
static void lcd_implementation_quick_feedback ( )
{
# if BEEPER > -1
static void lcd_implementation_quick_feedback ( ) {
# if BEEPER > -1
SET_OUTPUT ( BEEPER ) ;
for ( int8_t i = 0 ; i < 10 ; i + + )
{
for ( int8_t i = 0 ; i < 10 ; i + + ) {
WRITE ( BEEPER , HIGH ) ;
delay ( 3 ) ;
WRITE ( BEEPER , LOW ) ;
delay ( 3 ) ;
}
# endif
# endif
}
# endif //ULTRA_LCD_IMPLEMENTATION_DOGM_H
# endif //__DOGM_LCD_IMPLEMENTATION_H