diff --git a/Documentation/Logo/Marlin Logo LCD High.png b/Documentation/Logo/Marlin Logo LCD High.png new file mode 100644 index 0000000000..81225c3de0 Binary files /dev/null and b/Documentation/Logo/Marlin Logo LCD High.png differ diff --git a/Documentation/Logo/Marlin Logo LCD Low.png b/Documentation/Logo/Marlin Logo LCD Low.png new file mode 100644 index 0000000000..34b80c4939 Binary files /dev/null and b/Documentation/Logo/Marlin Logo LCD Low.png differ diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 9b77f96f4f..dfc1965e6e 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -24,8 +24,11 @@ // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "v1.0.2" +#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_SPLASH STRING_VERSION " - " STRING_URL // will be shown during bootup // SERIAL_PORT selects which serial port should be used for communication with the host. // This allows the connection of wireless adapters (for instance) to non-default port pins. diff --git a/Marlin/DOGMbitmaps.h b/Marlin/DOGMbitmaps.h index b149b76098..b735477e3f 100644 --- a/Marlin/DOGMbitmaps.h +++ b/Marlin/DOGMbitmaps.h @@ -1,28 +1,78 @@ -#define START_BMPWIDTH 60 //Width in pixels - http://www.digole.com/tools/PicturetoC_Hex_converter.php -#define START_BMPHEIGHT 64 //Height in pixels -#define START_BMPBYTEWIDTH 8 //Width in bytes -const unsigned char start_bmp[574] PROGMEM = { //AVR-GCC, WinAVR -0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0x30,0x00,0x00,0x00,0x00,0x00,0x3f,0xff, -0x40,0x00,0x00,0x00,0x00,0x00,0x1f,0xff, -0xc0,0x00,0x00,0x00,0x00,0x00,0x0f,0xff, -0x80,0x83,0x00,0x00,0x01,0x80,0x07,0xff, -0x83,0xef,0xc0,0x00,0x01,0x8c,0x03,0xff, -0x87,0xff,0xe0,0x00,0x01,0x8c,0x01,0xff, -0x8e,0x38,0x60,0x00,0x01,0x80,0x00,0xff, -0x8c,0x18,0x67,0xe0,0xf9,0x8c,0x7e,0x7f, -0x8c,0x18,0x6f,0xf1,0xfd,0x8c,0xfe,0x3f, -0x8c,0x18,0x6e,0x31,0x8d,0x8c,0xc7,0x1f, -0x8c,0x18,0x6c,0x39,0x8d,0x8c,0xc3,0x1f, -0x8c,0x18,0x6c,0x19,0x81,0x8c,0xc3,0x1f, -0x8c,0x18,0x6e,0x19,0x81,0x8c,0xc3,0x1f, -0x8c,0x18,0x6f,0x9f,0x81,0xef,0xc3,0x1f, -0x8c,0x18,0x67,0xdf,0x80,0xef,0xc3,0x1f, -0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x1f, -0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x2f, -0x30,0x00,0x00,0x00,0x00,0x00,0x00,0xcf, -0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0x8f -}; +// BitMap for splashscreen +// Generated with: http://www.digole.com/tools/PicturetoC_Hex_converter.php +// Please note that using the high-res version takes about 0.5KB of +#ifdef START_BMPHIGH + #define START_BMPWIDTH 112 + #define START_BMPHEIGHT 38 + #define START_BMPBYTEWIDTH 14 + #define START_BMPBYTES 532 // START_BMPWIDTH * START_BMPHEIGHT / 8 + + const unsigned char start_bmp[START_BMPBYTES] PROGMEM = { + 0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff + ,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff + ,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff + ,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff + ,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff + ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff + ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff + ,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x3f,0xff + ,0xc0,0x0f,0xc0,0xfc,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x00,0x1f,0xff + ,0xc0,0x3f,0xe1,0xff,0x00,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x0f,0xff + ,0xc0,0x7f,0xf3,0xff,0x80,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x07,0xff + ,0xc0,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x03,0xff + ,0xc1,0xf8,0x7f,0x87,0xe0,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xff + ,0xc1,0xf0,0x3f,0x03,0xe0,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xff + ,0xc1,0xe0,0x1e,0x01,0xe0,0x1f,0x00,0x03,0xe0,0x78,0x3c,0x03,0xf0,0x7f + ,0xc1,0xe0,0x1e,0x01,0xe0,0x7f,0xc0,0x0f,0xf8,0x78,0x3c,0x07,0xfc,0x3f + ,0xc1,0xe0,0x1e,0x01,0xe1,0xff,0xe0,0x1f,0xfc,0x78,0x3c,0x0f,0xfe,0x1f + ,0xc1,0xe0,0x1e,0x01,0xe3,0xff,0xf0,0x3f,0xfe,0x78,0x3c,0x1f,0xfe,0x0f + ,0xc1,0xe0,0x1e,0x01,0xe3,0xf3,0xf8,0x3f,0x3e,0x78,0x3c,0x3f,0x3f,0x07 + ,0xc1,0xe0,0x1e,0x01,0xe7,0xe0,0xfc,0x7c,0x1f,0x78,0x3c,0x3e,0x1f,0x07 + ,0xc1,0xe0,0x1e,0x01,0xe7,0xc0,0x7c,0x7c,0x0f,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x7c,0x78,0x0f,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0xc0,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe3,0xe0,0x3c,0x78,0x00,0x7c,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe3,0xff,0x3f,0xf8,0x00,0x7f,0xbc,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe1,0xff,0x3f,0xf8,0x00,0x3f,0xbf,0xfc,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe0,0xff,0x3f,0xf8,0x00,0x1f,0xbf,0xfc,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe0,0x7f,0x3f,0xf8,0x00,0x0f,0xbf,0xfc,0x0f,0x03 + ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07 + ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06 + ,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e + ,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c + ,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78 + ,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0 + ,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80 }; +#else + #define START_BMPWIDTH 56 + #define START_BMPHEIGHT 19 + #define START_BMPBYTEWIDTH 7 + #define START_BMPBYTES 133 // START_BMPWIDTH * START_BMPHEIGHT / 8 + + const unsigned char start_bmp[START_BMPBYTES] PROGMEM = { + 0x1f,0xff,0xff,0xff,0xff,0xff,0xff + ,0x60,0x00,0x00,0x00,0x00,0x01,0xff + ,0x40,0x00,0x00,0x00,0x00,0x00,0xff + ,0x80,0x00,0x00,0x00,0x00,0x00,0x7f + ,0x83,0xcf,0x00,0x00,0x0c,0x30,0x3f + ,0x87,0xff,0x80,0x00,0x0c,0x30,0x1f + ,0x86,0x79,0x80,0x00,0x0c,0x00,0x0f + ,0x8c,0x30,0xc7,0x83,0x8c,0x30,0xe7 + ,0x8c,0x30,0xcf,0xc7,0xcc,0x31,0xf3 + ,0x8c,0x30,0xdc,0xec,0xec,0x33,0xb9 + ,0x8c,0x30,0xd8,0x6c,0x6c,0x33,0x19 + ,0x8c,0x30,0xd0,0x6c,0x0c,0x33,0x19 + ,0x8c,0x30,0xd8,0x6c,0x0c,0x33,0x19 + ,0x8c,0x30,0xdc,0x6c,0x0e,0x3b,0x19 + ,0x8c,0x30,0xcf,0x7c,0x07,0x9f,0x19 + ,0x8c,0x30,0xc7,0x7c,0x03,0x8f,0x19 + ,0x40,0x00,0x00,0x00,0x00,0x00,0x02 + ,0x60,0x00,0x00,0x00,0x00,0x00,0x06 + ,0x1f,0xff,0xff,0xff,0xff,0xff,0xf8 }; +#endif // Here comes a compile-time operation to match the extruder symbols // on the info screen to the set number of extruders in configuration.h diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index d5a732ba42..6f595ce77f 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -86,46 +86,53 @@ U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0); U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0); // HW-SPI Com: CS, A0 #endif -static void lcd_implementation_init() { - #ifdef LCD_PIN_BL - pinMode(LCD_PIN_BL, OUTPUT); // Enable LCD backlight - digitalWrite(LCD_PIN_BL, HIGH); +static void lcd_implementation_init() +{ + #ifdef LCD_PIN_BL // Enable LCD backlight + pinMode(LCD_PIN_BL, OUTPUT); + digitalWrite(LCD_PIN_BL, HIGH); #endif - u8g.setContrast(lcd_contrast); - - /* - // Uncomment this if you have the first generation (V1.10) of STBs board - - pinMode(17, OUTPUT); // Enable LCD backlight - digitalWrite(17, HIGH); - - //*/ - - u8g.firstPage(); - do { - u8g.setFont(u8g_font_6x10_marlin); - u8g.setColorIndex(1); - u8g.drawBox (0, 0, u8g.getWidth(), u8g.getHeight()); - u8g.setColorIndex(1); - } while( u8g.nextPage() ); - - #if defined(LCD_SCREEN_ROT_90) - u8g.setRot90(); // Rotate screen by 90° - #elif defined(LCD_SCREEN_ROT_180) - u8g.setRot180(); // Rotate screen by 180° - #elif defined(LCD_SCREEN_ROT_270) - u8g.setRot270(); // Rotate screen by 270° - #endif - - u8g.firstPage(); + u8g.setContrast(lcd_contrast); + // FIXME: remove this workaround + // Uncomment this if you have the first generation (V1.10) of STBs board + // pinMode(17, OUTPUT); // Enable LCD backlight + // digitalWrite(17, HIGH); + +#ifdef LCD_SCREEN_ROT_90 + u8g.setRot90(); // Rotate screen by 90° +#elif defined(LCD_SCREEN_ROT_180) + u8g.setRot180(); // Rotate screen by 180° +#elif defined(LCD_SCREEN_ROT_270) + u8g.setRot270(); // Rotate screen by 270° +#endif + + // FIXME: whats the purpose of the box? Maybe clear screen? + u8g.firstPage(); do { - // RepRap init bmp - u8g.drawBitmapP(7,7,START_BMPBYTEWIDTH,START_BMPHEIGHT,start_bmp); - // Welcome message + u8g.setFont(u8g_font_6x10_marlin); + u8g.setColorIndex(1); + u8g.drawBox (0, 0, u8g.getWidth(), u8g.getHeight()); + u8g.setColorIndex(1); + } while(u8g.nextPage()); + + // Show splashscreen + int off = (u8g.getWidth() - START_BMPWIDTH) / 2; + int txtX = (u8g.getWidth() - sizeof(STRING_SPLASH) - 1) / 2; + int txtY = u8g.getHeight() - 10; + u8g.firstPage(); + do { + #ifdef START_BMPHIGH + u8g.drawBitmapP(off, off, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp); + #else + u8g.setScale2x2(); + u8g.drawBitmapP(off, off, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp); + u8g.undoScale(); + #endif + u8g.setFont(u8g_font_5x8); - u8g.drawStr(7, 51, "V" MARLIN_VERSION " - marlin.reprap.org"); - } while( u8g.nextPage() ); + u8g.drawStr(txtX, txtY, STRING_SPLASH); + } while(u8g.nextPage()); } static void lcd_implementation_clear() { } // Automatically cleared by Picture Loop