diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/ChangeLog b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/ChangeLog index 1ee88d6cfc..9bf4b34edb 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/ChangeLog +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/ChangeLog @@ -107,7 +107,55 @@ u8glib ChangeLog * Sleep Mode * 4x mode for ST7920 * New C++ interface for ST7920 - +2013-03-24 v1.12 Oliver Kraus + * Added touch panel examples +2013-06-30 v1.13 Oliver Kraus + * Fixed missing "Arduino.h" in u8g_delay.c + * Disable interrupt for port/pin access (AVR), issue 19 + * Support for HT1632: U8GLIB_HT1632_24X16 u8g(wr, data, cs), issue 165 + * Support for SSD1351 OLED, issue 168 + * Cleaned up several compiler warnings + * Fixed conflict with scheduler (Arduino Due), issue 155 + * HW SPI for Arduino Due, issue 180 + * Performance improvement for ST7920, issue 177 + * Added ":" to the "n"umeric variant of the fonts, issue 166 + * Added additional argument u8g_InitCom(). Use U8G_SPI_CLK_CYCLE_NONE by default. + * Added double buffer option for many ST7565 devices + * Tested with Arduino 1.0.5 +2013-10-03 v1.14 Oliver Kraus + * Support for ARM controller + * Support for the A2 micro printer (issue 191) + * Ellipse drawing primitive (issue 187) + * Added software reset for UC1701 + * Fixed compiler warning (issue 196) + * Support for Freetronics SSD1351 OLED (issue 195) + * Several other fixes and improvements +2014-01-25 v1.15 Oliver Kraus + * Fixed a bug with the rotation procs: Occupied too much flash ROM (issue 219) + * Fixed issue with more than one SPI controller (SW SPI, issue 227) + * Added "drawTriangle" (issue 226) + * Added support for UC1608 (issue 214) + * Added ProFont family of fonts (issue 234) + * SW SPI support for Teensy 3 (issue 230) + * Removed Arduino/AVR specific files from ARM port (issue 209) +2014-07-05 v1.16 Oliver Kraus + * Added support for LD7032 60x32 OLED + * Added support for SSD1306 OLED, which does not send I2C ACK (issue 239) + * Added support for SH1106 128x64 OLED + * Added support for T6963 128x128 displays + * Added U8GLIB_SSD1306_ADAFRUIT_128X64 constructor +2014-12-21 v1.17 Oliver Kraus + * Added U8GLIB_UC1611_DOGM240 constructor (Issue 284) + * Added U8GLIB_UC1611_DOGXL240 constructor + * Added support for UC1608 controller (Issue 300) + * Added U8GLIB_SSD1306_ADAFRUIT_128X64 for Adafruit OLEDs (Issue 289) + * Bufix in the sleep on/off sequence (CS has not been releases, issue 298) + * helvB and helvR number only fonts (Issue 271) + * 400KHz option for I2C with U8G_I2C_OPT_FAST available for Due and Uno (Issue 303) + * I2C support for Arduino Due. 100KHz/400KHz, TWI & TWI1, ACK will be ignored (issue 285) + * Unifont update (Issue 297) + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/INSTALL.TXT b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/INSTALL.TXT index d87f97128d..efcedd03b8 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/INSTALL.TXT +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/INSTALL.TXT @@ -2,10 +2,15 @@ U8GLIB http://code.google.com/p/u8glib/ - Install instructions for the Arduino environment. - 1. Unzip u8glib_arduino_vX.XX.zip into the "libraries" folder + 1. Start Arduino IDE + 2. In the Arduino IDE, import the library from the "Add Library" Menu. + +Alternative install instructions for the Arduino environment. + + 1. Unzip u8glib_arduino_vX.XX.zip into the "libraries" folder of the + Arduino install directory 2. Start Arduino IDE Install instructions for the Chipkit (Arduino) environment. diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.cpp b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.cpp index aa870b1147..542fc673ad 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.cpp +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.cpp @@ -77,4 +77,3 @@ uint8_t U8GLIB::initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, u return u8g_InitRW8Bit(&u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset); } - diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.h b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.h index a77444425d..bff8268dc4 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.h +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.h @@ -57,10 +57,8 @@ class U8GLIB : public Print protected: uint8_t init8BitFixedPort(u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset); private: - uint8_t init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, - uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE); - uint8_t initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, - uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset); + uint8_t init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE); + uint8_t initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset); public: /* constructor */ @@ -68,17 +66,17 @@ class U8GLIB : public Print { } U8GLIB(u8g_dev_t *dev) { prepare(); u8g_Init(&u8g, dev); } + U8GLIB(u8g_dev_t *dev, u8g_com_fnptr com_fn) + { prepare(); u8g_InitComFn(&u8g, dev, com_fn); } U8GLIB(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) { initSPI(dev, sck, mosi, cs, a0, reset); } U8GLIB(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) { initHWSPI(dev, cs, a0, reset); } U8GLIB(u8g_dev_t *dev, uint8_t options) { initI2C(dev, options); } - U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, - uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) + U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) { init8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset); } - U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, - uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) + U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) { initRW8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset); } uint8_t begin(void) { is_begin = 1; return u8g_Begin(&u8g); } @@ -114,6 +112,11 @@ class U8GLIB : public Print void sleepOff(void) { u8g_SleepOff(&u8g); } /* graphic primitives */ + void setColorEntry(uint8_t color_index, uint8_t r, uint8_t g, uint8_t b) { u8g_SetColorEntry(&u8g, color_index, r, g, b); } + void setHiColor(uint16_t rgb) { u8g_SetHiColor(&u8g, rgb); } + void setHiColorByRGB(uint8_t r, uint8_t g, uint8_t b) { u8g_SetHiColorByRGB(&u8g, r, g, b); } + void setRGB(uint8_t r, uint8_t g, uint8_t b) { u8g_SetRGB(&u8g, r, g, b); } + void setColorIndex(uint8_t color_index) { u8g_SetColorIndex(&u8g, color_index); } uint8_t getColorIndex(void) { return u8g_GetColorIndex(&u8g); } @@ -138,6 +141,14 @@ class U8GLIB : public Print void drawCircle(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawCircle(&u8g, x0, y0, rad, opt); } void drawDisc(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawDisc(&u8g, x0, y0, rad, opt); } + void drawEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawEllipse(&u8g, x0, y0, rx, ry, opt); } + void drawFilledEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawFilledEllipse(&u8g, x0, y0, rx, ry, opt); } + + void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) + { u8g_DrawTriangle(&u8g, x0, y0, x1, y1, x2, y2); } + + + /* bitmap handling */ void drawBitmap(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap) { u8g_DrawBitmap(&u8g, x, y, cnt, h, bitmap); } @@ -223,6 +234,17 @@ class U8GLIB_DOGS102 : public U8GLIB { } }; +class U8GLIB_DOGS102_2X : public U8GLIB +{ + public: + U8GLIB_DOGS102_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGS102_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_2x_hw_spi, cs, a0, reset) + { } +}; + class U8GLIB_MINI12864 : public U8GLIB { public: @@ -234,6 +256,17 @@ class U8GLIB_MINI12864 : public U8GLIB { } }; +class U8GLIB_MINI12864_2X : public U8GLIB +{ + public: + U8GLIB_MINI12864_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_MINI12864_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_2x_hw_spi, cs, a0, reset) + { } +}; + class U8GLIB_DOGM132 : public U8GLIB { public: @@ -260,6 +293,14 @@ class U8GLIB_NHD_C12832 : public U8GLIB { } }; +class U8GLIB_NHD_C12832_USART : public U8GLIB +{ + public: + U8GLIB_NHD_C12832_USART(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_hw_usart_spi, cs, a0, reset) + { } +}; + class U8GLIB_DOGM128 : public U8GLIB { public: @@ -269,6 +310,25 @@ class U8GLIB_DOGM128 : public U8GLIB U8GLIB_DOGM128(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) : U8GLIB(&u8g_dev_st7565_dogm128_hw_spi, cs, a0, reset) { } + U8GLIB_DOGM128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_DOGM128_2X : public U8GLIB +{ + public: + U8GLIB_DOGM128_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGM128_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_DOGM128_2X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_2x_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } }; class U8GLIB_LM6059 : public U8GLIB @@ -282,6 +342,17 @@ class U8GLIB_LM6059 : public U8GLIB { } }; +class U8GLIB_LM6059_2X : public U8GLIB +{ + public: + U8GLIB_LM6059_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6059_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_2x_hw_spi, cs, a0, reset) + { } +}; + class U8GLIB_LM6063 : public U8GLIB { public: @@ -293,6 +364,17 @@ class U8GLIB_LM6063 : public U8GLIB { } }; +class U8GLIB_LM6063_2X : public U8GLIB +{ + public: + U8GLIB_LM6063_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6063_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_2x_hw_spi, cs, a0, reset) + { } +}; + class U8GLIB_64128N : public U8GLIB { public: @@ -302,6 +384,25 @@ class U8GLIB_64128N : public U8GLIB U8GLIB_64128N(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) : U8GLIB(&u8g_dev_st7565_64128n_hw_spi, cs, a0, reset) { } + U8GLIB_64128N(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_64128N_2X : public U8GLIB +{ + public: + U8GLIB_64128N_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_64128N_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_64128N_2X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_2x_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } }; class U8GLIB_NHD_C12864 : public U8GLIB @@ -315,6 +416,111 @@ class U8GLIB_NHD_C12864 : public U8GLIB { } }; +class U8GLIB_NHD_C12864_2X : public U8GLIB +{ + public: + U8GLIB_NHD_C12864_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD_C12864_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_2x_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1601_C128032 : public U8GLIB +{ + public: + U8GLIB_UC1601_C128032(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1601_c128032_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1601_C128032(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1601_c128032_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1601_C128032_2X : public U8GLIB +{ + public: + U8GLIB_UC1601_C128032_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1601_c128032_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1601_C128032_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1601_c128032_2x_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1608_240X64 : public U8GLIB +{ + public: + U8GLIB_UC1608_240X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1608_240X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x64_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1608_240X64_2X : public U8GLIB +{ + public: + U8GLIB_UC1608_240X64_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x64_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1608_240X64_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x64_2x_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1608_240X128 : public U8GLIB +{ + public: + U8GLIB_UC1608_240X128(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x128_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1608_240X128(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x128_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1608_240X128_2X : public U8GLIB +{ + public: + U8GLIB_UC1608_240X128_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x128_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1608_240X128_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x128_2x_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_UC1611_DOGM240 : public U8GLIB +{ + public: + U8GLIB_UC1611_DOGM240(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_uc1611_dogm240_i2c, options) + {} + U8GLIB_UC1611_DOGM240(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1611_dogm240_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1611_DOGM240(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1611_dogm240_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1611_DOGXL240 : public U8GLIB +{ + public: + U8GLIB_UC1611_DOGXL240(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_uc1611_dogxl240_i2c, options) + {} + U8GLIB_UC1611_DOGXL240(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1611_dogxl240_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1611_DOGXL240(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1611_dogxl240_hw_spi, cs, a0, reset) + { } +}; class U8GLIB_ST7920_128X64 : public U8GLIB { @@ -349,6 +555,14 @@ class U8GLIB_ST7920_128X64_1X : public U8GLIB { } }; +class U8GLIB_ST7920_128X64_CUSTOM_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_CUSTOM_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_custom, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } +}; + class U8GLIB_ST7920_128X64_4X : public U8GLIB { public: @@ -364,6 +578,13 @@ class U8GLIB_ST7920_128X64_4X : public U8GLIB { } }; +class U8GLIB_ST7920_128X64_CUSTOM_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_CUSTOM_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_custom, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } +}; class U8GLIB_ST7920_192X32 : public U8GLIB // OBSOLETE, use U8GLIB_ST7920_192X32_1X instead @@ -485,7 +706,7 @@ class U8GLIB_LC7981_240X128 : public U8GLIB { } }; -// 16 bit mode required: Remove comment from "#define U8G_16BIT 1" in utility/u8g.h +// 16 bit mode required: Remove comment from "#define U8G_16BIT 1" in utility/utility/u8g.h class U8GLIB_LC7981_320X64 : public U8GLIB { public: @@ -581,6 +802,10 @@ class U8GLIB_NHD31OLED_BW : public U8GLIB U8GLIB_NHD31OLED_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) : U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_hw_spi, cs, a0, reset) { } + U8GLIB_NHD31OLED_BW(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset) + { } }; class U8GLIB_NHD31OLED_2X_BW : public U8GLIB @@ -603,6 +828,10 @@ class U8GLIB_NHD31OLED_GR : public U8GLIB U8GLIB_NHD31OLED_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) : U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_hw_spi, cs, a0, reset) { } + U8GLIB_NHD31OLED_GR(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset) + { } }; class U8GLIB_NHD31OLED_2X_GR : public U8GLIB @@ -629,7 +858,63 @@ class U8GLIB_SSD1306_128X64 : public U8GLIB U8GLIB_SSD1306_128X64(uint8_t options = U8G_I2C_OPT_NONE) : U8GLIB(&u8g_dev_ssd1306_128x64_i2c, options) { } - +}; + +class U8GLIB_SSD1306_ADAFRUIT_128X64 : public U8GLIB +{ + public: + U8GLIB_SSD1306_ADAFRUIT_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_adafruit_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_ADAFRUIT_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_adafruit_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_ADAFRUIT_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_adafruit_128x64_i2c, options) + { } +}; + + +class U8GLIB_SSD1306_128X64_2X : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X64_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64_2X(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_2x_i2c, options) + { } +}; + +class U8GLIB_SH1106_128X64 : public U8GLIB +{ + public: + U8GLIB_SH1106_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SH1106_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SH1106_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_i2c, options) + { } +}; + +class U8GLIB_SH1106_128X64_2X : public U8GLIB +{ + public: + U8GLIB_SH1106_128X64_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SH1106_128X64_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_SH1106_128X64_2X(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_2x_i2c, options) + { } }; class U8GLIB_SSD1309_128X64 : public U8GLIB @@ -644,7 +929,6 @@ class U8GLIB_SSD1309_128X64 : public U8GLIB U8GLIB_SSD1309_128X64(uint8_t options = U8G_I2C_OPT_NONE) : U8GLIB(&u8g_dev_ssd1309_128x64_i2c, options) { } - }; class U8GLIB_SSD1306_128X32 : public U8GLIB @@ -659,7 +943,20 @@ class U8GLIB_SSD1306_128X32 : public U8GLIB U8GLIB_SSD1306_128X32(uint8_t options = U8G_I2C_OPT_NONE) : U8GLIB(&u8g_dev_ssd1306_128x32_i2c, options) { } - +}; + +class U8GLIB_SSD1306_128X32_2X : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X32_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32_2X(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_2x_i2c, options) + { } }; @@ -713,12 +1010,43 @@ class U8GLIB_SSD1327_96X96_2X_GR : public U8GLIB { } }; + +class U8GLIB_LD7032_60x32 : public U8GLIB +{ + public: + U8GLIB_LD7032_60x32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ld7032_60x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LD7032_60x32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ld7032_60x32_hw_spi, cs, a0, reset) + { } + U8GLIB_LD7032_60x32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ld7032_60x32_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + + + +class U8GLIB_HT1632_24X16 : public U8GLIB +{ + public: + U8GLIB_HT1632_24X16(uint8_t wr, uint8_t data, uint8_t cs) + : U8GLIB(&u8g_dev_ht1632_24x16, wr, data, cs, U8G_PIN_NONE, U8G_PIN_NONE) + { } +}; + + + class U8GLIB_PCF8812 : public U8GLIB { public: U8GLIB_PCF8812(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) : U8GLIB(&u8g_dev_pcf8812_96x65_sw_spi, sck, mosi, cs, a0, reset) { } + U8GLIB_PCF8812(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcf8812_96x65_hw_spi, cs, a0, reset) + { } }; class U8GLIB_PCD8544 : public U8GLIB @@ -727,6 +1055,9 @@ class U8GLIB_PCD8544 : public U8GLIB U8GLIB_PCD8544(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) : U8GLIB(&u8g_dev_pcd8544_84x48_sw_spi, sck, mosi, cs, a0, reset) { } + U8GLIB_PCD8544(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcd8544_84x48_hw_spi, cs, a0, reset) + { } }; class U8GLIB_TLS8204_84X48 : public U8GLIB @@ -764,6 +1095,15 @@ class U8GLIB_T6963_240X128 : public U8GLIB { } }; +class U8GLIB_T6963_128X128 : public U8GLIB +{ + public: + U8GLIB_T6963_128X128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_128x128_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + class U8GLIB_T6963_240X64 : public U8GLIB { public: @@ -808,6 +1148,108 @@ class U8GLIB_ILI9325D_320x240 : public U8GLIB { init8BitFixedPort(&u8g_dev_ili9325d_320x240_8bit, en, cs1, di, rw, reset); } }; + + +class U8GLIB_SSD1351_128X128_332 : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_332_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_332_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128_4X_332 : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_4X_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_4x_332_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_4X_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_4x_332_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128GH_332 : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128GH_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_332_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128GH_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_332_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128GH_4X_332 : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128GH_4X_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_332_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128GH_4X_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_332_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128_IDX : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_IDX(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_idx_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_IDX(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_idx_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128_HICOLOR : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_hicolor_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_hicolor_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128_4X_HICOLOR : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_4X_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_4X_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128GH_HICOLOR : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128GH_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_hicolor_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128GH_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_hicolor_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128GH_4X_HICOLOR : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128GH_4X_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128GH_4X_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi, cs, a0, reset) + { } +}; + + class U8GLIB_FLIPDISC_2X7 : public U8GLIB { public: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/A2Printer/A2Printer.ino b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/A2Printer/A2Printer.ino new file mode 100644 index 0000000000..d40bd791bb --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/A2Printer/A2Printer.ino @@ -0,0 +1,131 @@ +/* + + A2Printer.pde + + Special example code for the A2 Mciro Printer (https://www.sparkfun.com/products/10438) + + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// use this serial interface +#define PRINTER_SERIAL Serial +// #define PRINTER_SERIAL Serial1 + + +uint8_t u8g_com_uart(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) { + switch(msg) { + case U8G_COM_MSG_WRITE_BYTE: + PRINTER_SERIAL.write(arg_val); + break; + } + return 1; +} + +// setup u8g object, please remove comment from one of the following constructor calls + +// half resolution +//U8GLIB u8g(&u8g_dev_a2_micro_printer_192x120_ds, (u8g_com_fnptr)u8g_com_uart); + +// full resolution, requires to uncomment U8G_16BIT in u8g.h +//U8GLIB u8g(&u8g_dev_a2_micro_printer_384x240, (u8g_com_fnptr)u8g_com_uart); + +// half resolution, extra log, requires to uncomment U8G_16BIT in u8g.h +//U8GLIB u8g(&u8g_dev_a2_micro_printer_192x360_ds, (u8g_com_fnptr)u8g_com_uart); +U8GLIB u8g(&u8g_dev_a2_micro_printer_192x720_ds, (u8g_com_fnptr)u8g_com_uart); + + + +void drawLogo(uint8_t d) { + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(0+d, 30+d, "U"); + u8g.setFont(u8g_font_gdr30n); + u8g.drawStr90(23+d,10+d,"8"); + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(53+d,30+d,"g"); + + u8g.drawHLine(2+d, 35+d, 47); + u8g.drawVLine(45+d, 32+d, 12); +} + +void drawURL(void) { + u8g.setFont(u8g_font_4x6); + if ( u8g.getHeight() < 59 ) { + u8g.drawStr(53,9,"code.google.com"); + u8g.drawStr(77,18,"/p/u8glib"); + } + else { + u8g.drawStr(1,54,"code.google.com/p/u8glib"); + } +} + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + + drawLogo(0); + drawURL(); + u8g.drawFrame(0,0,u8g.getWidth(), u8g.getHeight()); + + u8g.setFont(u8g_font_helvR24r); + u8g.setPrintPos(0, 100); + u8g.print(u8g.getWidth(), DEC); + u8g.print("x"); + u8g.print(u8g.getHeight(), DEC); +} + +void setup(void) { + PRINTER_SERIAL.begin(19200); + + // flip screen, if required + // u8g.setRot180(); + + // assign default color value + u8g.setColorIndex(1); // pixel on +} + +void loop(void) { + + // picture loop: This will print the picture + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // send manual CR to the printer + PRINTER_SERIAL.write('\n'); + + // reprint the picture after 10 seconds + delay(10000); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Bitmap/Bitmap.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Bitmap/Bitmap.ino similarity index 63% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Bitmap/Bitmap.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Bitmap/Bitmap.ino index 53fbe1b211..e9a30e2d15 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Bitmap/Bitmap.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Bitmap/Bitmap.ino @@ -42,8 +42,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -52,9 +52,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -84,19 +85,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) const uint8_t rook_bitmap[] PROGMEM = { 0x00, // 00000000 diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Chess/Chess.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Chess/Chess.ino similarity index 67% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Chess/Chess.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Chess/Chess.ino index 3cef353982..eeebe4ac2e 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Chess/Chess.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Chess/Chess.ino @@ -43,8 +43,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -53,9 +53,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -85,19 +86,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) // DOGS102 shield configuration values diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Color/Color.ino b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Color/Color.ino new file mode 100644 index 0000000000..a389e32242 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Color/Color.ino @@ -0,0 +1,201 @@ +/* + + Color.pde + + "Hello World!" example code with color. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + + +void draw(void) { + + if ( u8g.getMode() == U8G_MODE_HICOLOR || u8g.getMode() == U8G_MODE_R3G3B2) { + /* draw background (area is 128x128) */ + u8g_uint_t r, g, b; + for( b = 0; b < 4; b++ ) + { + for( g = 0; g < 32; g++ ) + { + for( r = 0; r < 32; r++ ) + { + u8g.setRGB(r<<3, g<<3, b<<4 ); + u8g.drawPixel(g + b*32, r); + u8g.setRGB(r<<3, g<<3, (b<<4)+64 ); + u8g.drawPixel(g + b*32, r+32); + u8g.setRGB(r<<3, g<<3, (b<<4)+128 ); + u8g.drawPixel(g + b*32, r+32+32); + u8g.setRGB(r<<3, g<<3, (b<<4)+128+64 ); + u8g.drawPixel(g + b*32, r+32+32+32); + } + } + } + } + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) { + u8g.setColorIndex(255); // white + } + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) { + u8g.setColorIndex(3); // max intensity + } + else if ( u8g.getMode() == U8G_MODE_BW ) { + u8g.setColorIndex(1); // pixel on + } + else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + u8g.setFont(u8g_font_unifont); + u8g.drawStr( 0, 22, "Hello World!"); + + +} + +void setup(void) { + + // flip screen, if required + // u8g.setRot180(); + + // set SPI backup if required + //u8g.setHardwareBackup(u8g_backup_avr_spi); + +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Console/Console.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Console/Console.ino similarity index 69% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Console/Console.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Console/Console.ino index fcf4b74c58..70e0e2f09b 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Console/Console.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Console/Console.ino @@ -42,8 +42,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -52,9 +52,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -84,19 +85,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) // setup input buffer diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/F/F.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/F/F.ino similarity index 64% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/F/F.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/F/F.ino index 4cb3b20b76..4393ddfe49 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/F/F.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/F/F.ino @@ -44,8 +44,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -54,9 +54,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -86,19 +87,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) void draw(void) { // graphic commands to redraw the complete screen should be placed here diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/FPS/FPS.ino b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/FPS/FPS.ino new file mode 100644 index 0000000000..bcf93cd5bb --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/FPS/FPS.ino @@ -0,0 +1,398 @@ +/* + + FPS.pde + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ST7920_192X32, SPI: FPS: Box=7.6 @=9.8 iFPS: Box=11.4 @=14.7 + ST7920_192X32, 8Bit: FPS: Box=6.2 @=7.5 iFPS: Box=9.3 @=11.2 + DOGM128 SW SPI: FPS: Box=5.1 @=5.9 Pix=2.6 iFPS: Box=10.2 @=11.8 Pix=5.2 + DOGM128 HW SPI: FPS: Box=5.5 @=6.3 iFPS: Box=11.0 @=12.6 + DOGXL160 SW SPI: FPS: Box=1.7 @=1.9 iFPS: Box=6.9 @=7.7 + DOGXL160 HW SPI: FPS: Box=1.8 @=2.1 + + NHD27OLED_BW, SW SPI: FPS: Box=3.0 @=3.7 + NHD27OLED_BW, HW SPI: FPS: Box=3.5 @=4.5 + NHD27OLED_2X_BW, SW SPI: FPS: Box=3.8 @=4.9 + NHD27OLED_2X_BW, HW SPI: FPS: Box=4.6 @=6.4 + + 30 Sep 2012 + NHD27OLED_BW, SW SPI: FPS: Clip=9.2 Box=3.9 @=4.4 NEW_CODE + NHD27OLED_BW, SW SPI: FPS: Clip=9.2 Box=3.6 @=4.5 + NHD27OLED_BW, HW SPI: FPS: Clip=16.3 Box=4.7 @=5.6 + NHD27OLED_2X_BW, SW SPI: FPS: Clip=9.7 Box=4.5 @=5.8 + NHD27OLED_2X_BW, SW SPI: FPS: Clip=18.0 Box=5.8 @=7.9 + + 1 Oct 2012 + ST7920_192X32, 8Bit: FPS: Box=7.2 @=10.0 + DOGM128 SW SPI: FPS: Box=5.2 @=6.6 Pix=2.6 + DOGM128 HW SPI: FPS: Clip=33.2 Box=5.5 @=7.1 + DOGXL160 SW SPI: FPS: Box=1.7 @=2.0 + DOGXL160 HW SPI: FPS: Box=1.8 @=2.2 + + DOGXL160 GR SW SPI: FPS: Box=1.1 @=1.3 + + 1 Mar 2013 + ST7920_192X32_1X, SPI: FPS: Clip=10.3 Box=5.5 @=7.2 Pix=3.9 + ST7920_192X32_4X, SPI: FPS: Clip=10.9 Box=6.7 @=8.8 Pix=7.4 + ST7920_192X32_1X, 8Bit: FPS: Clip=14.2 Box=6.1 @=8.4 Pix=4.2 + ST7920_192X32_4X, 8Bit: FPS: Clip=14.2 Box=7.8 @=10.7 Pix=8.7 + ST7920_192X32_1X, HW SPI: FPS: Clip=14.2 Box=6.3 @=8.7 Pix=4.3 + ST7920_192X32_4X, HW SPI: FPS: Clip=15.3 Box=8.0 @=11.2 Pix=9.0 + + 2 Jun 2013 + U8GLIB_DOGM128 SW SPI: FPS: Clip=23.9 Box=4.5 @=6.6 Pix=2.1 + U8GLIB_DOGM128_2X SW SPI: FPS: Clip=28.5 Box=6.6 @=9.7 Pix=3.9 + U8GLIB_DOGM128_2X HW SPI: FPS: Clip=40.8 Box=7.1 @=10.8 Pix=4.1 + + 3 Jun 2013 + U8GLIB_ST7920_192X32_1X -Os SW SPI FPS: Clip=11.0 Box=5.4 @=7.1 Pix=3.9 Size=11828 + U8GLIB_ST7920_192X32_1X -O3 SW SPI FPS: Clip=10.9 Box=5.6 @=7.5 Pix=4.0 Size=13800 + U8GLIB_ST7920_192X32_1X -Os SW SPI FPS: Clip=16.8 Box=6.7 @=9.6 Pix=4.5 Size=11858 (new seq data output) + U8GLIB_ST7920_192X32_1X -Os HW SPI FPS: Clip=25.7 Box=7.5 @=11.3 Pix=4.8 (new seq data output) + + 6 Jun 2013 + U8GLIB_DOGS102 u8g(13, 11, 10, 9); STD SW SPI FPS: Clip=9.5 Box=7.6 @=8.2 Pix=6.2 Size=15652 + U8GLIB_DOGS102 u8g(13, 11, 10, 9); SW SPI FPS: Clip=19.1 Box=12.8 @=14.0 Pix=9.2 Size=15532 + + + 12 Jun 2013 + SSD1351_128X128_332 SW SPI Clip=1.3 Box=0.7 @=0.9 Pix=0.4 + SSD1351_128X128_332 HW SPI Clip=3.6 Box=1.1 @=1.5 Pix=0.5 + + 24 Jun 2013 + Uno SSD1351_128X128_332 SW SPI Clip=1.4 Box=0.8 @=0.9 Pix=0.4 + + Uno SSD1351_128X128_332 HW SPI Clip=4.4 Box=1.2 @=1.6 Pix=0.5 + Uno SSD1351_128X128_HICOLOR HW SPI Clip=3.7 Box=0.8 @=1.0 Pix=0.3 + + Mega2560 SSD1351_128X128_332 HW SPI Clip=4.4 Box=1.2 @=1.6 Pix=0.5 + Mega2560 SSD1351_128X128_4X_332 HW SPI Clip=4.6 Box=2.3 @=2.8 Pix=1.5 + Mega2560 SSD1351_128X128_HICOLOR HW SPI Clip=3.6 Box=0.8 @=1.0 Pix=0.3 + Mega2560 SSD1351_128X128_4X_HICOLOR HW SPI Clip=4.2 Box=1.7 @=2.1 Pix=1.0 + + Due SSD1351_128X128_332 HW SPI Clip=24.6 Box=6.3 @=7.8 Pix=2.8 + Due SSD1351_128X128_4X_332 HW SPI Clip=28.1 Box=13.0 @=15.1 Pix=8.5 + Due SSD1351_128X128_HICOLOR HW SPI Clip=20.8 Box=3.4 @=4.5 Pix=1.4 + Due SSD1351_128X128_4X_HICOLOR HW SPI Clip=26.3 Box=8.9 @=11.1 Pix=4.8 + + Due SSD1351_128X128_4X_HICOLOR SW SPI Clip=0.4 Box=0.4 @=0.4 Pix=0.4 + + Due DOGS102 u8g(13, 11, 10, 9); SW SPI FPS: Clip=19.1 Box=13.1 @=14.3 Pix=9.4 + Due DOGS102 u8g(10, 9); HW SPI FPS: Clip=128.9 Box=30.7 @=40.6 Pix=15.4 + + Due NHD27OLED_BW u8g(10, 9) HW SPI FPS: Clip=53.0 Box=19.6 @=23.8 Pix=10.6 + Due NHD27OLED_2X_BW u8g(10, 9) HW SPI FPS: Clip=57.0 Box=25.3 @=31.7 Pix=18.1 + Due NHD27OLED_GR u8g(10, 9) HW SPI FPS: Clip=34.1 Box=11.7 @=13.7 Pix=5.6 + Due NHD27OLED_2X_GR u8g(10, 9) HW SPI FPS: Clip=38.1 Box=15.5 @=20.0 Pix=8.8 + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +#define SECONDS 10 +uint8_t flip_color = 0; +uint8_t draw_color = 1; + +void draw_set_screen(void) { + // graphic commands to redraw the complete screen should be placed here + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + if ( flip_color == 0 ) + u8g.setHiColorByRGB(0,0,0); + else + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(flip_color); + } + u8g.drawBox( 0, 0, u8g.getWidth(), u8g.getHeight() ); +} + +void draw_clip_test(void) { + u8g_uint_t i, j, k; + char buf[3] = "AB"; + k = 0; + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(draw_color); + } + u8g.setFont(u8g_font_6x10); + + for( i = 0; i < 6; i++ ) { + for( j = 1; j < 8; j++ ) { + u8g.drawHLine(i-3, k, j); + u8g.drawHLine(i-3+10, k, j); + + u8g.drawVLine(k+20, i-3, j); + u8g.drawVLine(k+20, i-3+10, j); + + k++; + } + } + u8g.drawStr(0-3, 50, buf); + u8g.drawStr180(0+3, 50, buf); + + u8g.drawStr(u8g.getWidth()-3, 40, buf); + u8g.drawStr180(u8g.getWidth()+3, 40, buf); + + u8g.drawStr90(u8g.getWidth()-10, 0-3, buf); + u8g.drawStr270(u8g.getWidth()-10, 3, buf); + + u8g.drawStr90(u8g.getWidth()-20, u8g.getHeight()-3, buf); + u8g.drawStr270(u8g.getWidth()-20, u8g.getHeight()+3, buf); + +} + +void draw_char(void) { + char buf[2] = "@"; + u8g_uint_t i, j; + // graphic commands to redraw the complete screen should be placed here + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(draw_color); + } + u8g.setFont(u8g_font_6x10); + j = 8; + for(;;) { + i = 0; + for(;;) { + u8g.drawStr( i, j, buf); + i += 8; + if ( i > u8g.getWidth() ) + break; + } + j += 8; + if ( j > u8g.getHeight() ) + break; + } + +} + +void draw_pixel(void) { + u8g_uint_t x, y, w2, h2; + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(draw_color); + } + w2 = u8g.getWidth(); + h2 = u8g.getHeight(); + w2 /= 2; + h2 /= 2; + for( y = 0; y < h2; y++ ) { + for( x = 0; x < w2; x++ ) { + if ( (x + y) & 1 ) { + u8g.drawPixel(x,y); + u8g.drawPixel(x,y+h2); + u8g.drawPixel(x+w2,y); + u8g.drawPixel(x+w2,y+h2); + } + } + } +} + +// returns unadjusted FPS +uint16_t picture_loop_with_fps(void (*draw_fn)(void)) { + uint16_t FPS10 = 0; + uint32_t time; + + time = millis() + SECONDS*1000; + + // picture loop + do { + u8g.firstPage(); + do { + draw_fn(); + } while( u8g.nextPage() ); + FPS10++; + flip_color = flip_color ^ 1; + } while( millis() < time ); + return FPS10; +} + +const char *convert_FPS(uint16_t fps) { + static char buf[6]; + strcpy(buf, u8g_u8toa( (uint8_t)(fps/10), 3)); + buf[3] = '.'; + buf[4] = (fps % 10) + '0'; + buf[5] = '\0'; + return buf; +} + +void show_result(const char *s, uint16_t fps) { + // assign default color value + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(draw_color); + } + u8g.setFont(u8g_font_8x13B); + u8g.firstPage(); + do { + u8g.drawStr(0,12, s); + u8g.drawStr(0,24, convert_FPS(fps)); + } while( u8g.nextPage() ); +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + draw_color = 255; // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + draw_color = 3; // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + draw_color = 1; // pixel on + else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } +} + +void loop(void) { + uint16_t fps; + fps = picture_loop_with_fps(draw_clip_test); + show_result("draw clip test", fps); + delay(5000); + fps = picture_loop_with_fps(draw_set_screen); + show_result("clear screen", fps); + delay(5000); + fps = picture_loop_with_fps(draw_char); + show_result("draw @", fps); + delay(5000); + fps = picture_loop_with_fps(draw_pixel); + show_result("draw pixel", fps); + delay(5000); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/GraphicsTest/GraphicsTest.ino similarity index 61% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/GraphicsTest/GraphicsTest.ino index 4e91352097..f159b8ddc2 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/GraphicsTest/GraphicsTest.ino @@ -41,8 +41,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -51,9 +51,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -83,19 +84,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) void u8g_prepare(void) { u8g.setFont(u8g_font_6x10); @@ -143,6 +179,15 @@ void u8g_line(uint8_t a) { u8g.drawLine(7+a*4, 10, 100, 55); } +void u8g_triangle(uint8_t a) { + uint16_t offset = a; + u8g.drawStr( 0, 0, "drawTriangle"); + u8g.drawTriangle(14,7, 45,30, 10,40); + u8g.drawTriangle(14+offset,7-offset, 45+offset,30-offset, 57+offset,10-offset); + u8g.drawTriangle(57+offset*2,10, 45+offset*2,30, 86+offset*2,53); + u8g.drawTriangle(10+offset,40+offset, 45+offset,30+offset, 86+offset,53+offset); +} + void u8g_ascii_1() { char s[2] = " "; uint8_t x, y; @@ -167,6 +212,45 @@ void u8g_ascii_2() { } } +void u8g_extra_page(uint8_t a) +{ + if ( u8g.getMode() == U8G_MODE_HICOLOR || u8g.getMode() == U8G_MODE_R3G3B2) { + /* draw background (area is 128x128) */ + u8g_uint_t r, g, b; + b = a << 5; + for( g = 0; g < 64; g++ ) + { + for( r = 0; r < 64; r++ ) + { + u8g.setRGB(r<<2, g<<2, b ); + u8g.drawPixel(g, r); + } + } + u8g.setRGB(255,255,255); + u8g.drawStr( 66, 0, "Color Page"); + } + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + { + u8g.drawStr( 66, 0, "Gray Level"); + u8g.setColorIndex(1); + u8g.drawBox(0, 4, 64, 32); + u8g.drawBox(70, 20, 4, 12); + u8g.setColorIndex(2); + u8g.drawBox(0+1*a, 4+1*a, 64-2*a, 32-2*a); + u8g.drawBox(74, 20, 4, 12); + u8g.setColorIndex(3); + u8g.drawBox(0+2*a, 4+2*a, 64-4*a, 32-4*a); + u8g.drawBox(78, 20, 4, 12); + } + else + { + u8g.drawStr( 0, 12, "setScale2x2"); + u8g.setScale2x2(); + u8g.drawStr( 0, 6+a, "setScale2x2"); + u8g.undoScale(); + } +} + uint8_t draw_state = 0; @@ -178,8 +262,10 @@ void draw(void) { case 2: u8g_r_frame(draw_state&7); break; case 3: u8g_string(draw_state&7); break; case 4: u8g_line(draw_state&7); break; - case 5: u8g_ascii_1(); break; - case 6: u8g_ascii_2(); break; + case 5: u8g_triangle(draw_state&7); break; + case 6: u8g_ascii_1(); break; + case 7: u8g_ascii_2(); break; + case 8: u8g_extra_page(draw_state&7); break; } } @@ -188,15 +274,6 @@ void setup(void) { // flip screen, if required //u8g.setRot180(); - // assign default color value - if ( u8g.getMode() == U8G_MODE_R3G3B2 ) - u8g.setColorIndex(255); // white - else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) - u8g.setColorIndex(3); // max intensity - else if ( u8g.getMode() == U8G_MODE_BW ) - u8g.setColorIndex(1); // pixel on - - //u8g.setContrast(0x30); pinMode(13, OUTPUT); digitalWrite(13, HIGH); @@ -212,11 +289,11 @@ void loop(void) { // increase the state draw_state++; - if ( draw_state >= 7*8 ) + if ( draw_state >= 9*8 ) draw_state = 0; // rebuild the picture after some delay - delay(150); + //delay(150); } diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/HelloWorld/HelloWorld.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/HelloWorld/HelloWorld.ino similarity index 62% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/HelloWorld/HelloWorld.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/HelloWorld/HelloWorld.ino index 5a00939a34..f71bf8e4f0 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/HelloWorld/HelloWorld.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/HelloWorld/HelloWorld.ino @@ -42,8 +42,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -52,9 +52,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -84,19 +85,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) void draw(void) { @@ -107,7 +143,6 @@ void draw(void) { } void setup(void) { - // flip screen, if required // u8g.setRot180(); @@ -115,12 +150,18 @@ void setup(void) { //u8g.setHardwareBackup(u8g_backup_avr_spi); // assign default color value - if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) { u8g.setColorIndex(255); // white - else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + } + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) { u8g.setColorIndex(3); // max intensity - else if ( u8g.getMode() == U8G_MODE_BW ) + } + else if ( u8g.getMode() == U8G_MODE_BW ) { u8g.setColorIndex(1); // pixel on + } + else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } } void loop(void) { @@ -131,6 +172,6 @@ void loop(void) { } while( u8g.nextPage() ); // rebuild the picture after some delay - delay(500); + delay(50); } diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Menu/Menu.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Menu/Menu.ino similarity index 70% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Menu/Menu.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Menu/Menu.ino index fbb0af034c..d8ab6f0df1 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Menu/Menu.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Menu/Menu.ino @@ -45,6 +45,9 @@ // setup u8g object, please remove comment from one of the following constructor calls // IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -53,9 +56,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -85,19 +89,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) #define KEY_NONE 0 diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/PrintTest/PrintTest.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/PrintTest/PrintTest.ino similarity index 63% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/PrintTest/PrintTest.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/PrintTest/PrintTest.ino index 7535c22f19..edc9afa8c1 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/PrintTest/PrintTest.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/PrintTest/PrintTest.ino @@ -42,8 +42,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -52,9 +52,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -84,19 +85,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) void draw(void) { // graphic commands to redraw the complete screen should be placed here diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Rotation/Rotation.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Rotation/Rotation.ino similarity index 64% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Rotation/Rotation.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Rotation/Rotation.ino index 424b7bfb61..f4008138b9 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Rotation/Rotation.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Rotation/Rotation.ino @@ -1,8 +1,8 @@ /* - HelloWorld.pde + Rotation.pde - "Hello World!" example code. + Example code for RotXXX functions. >>> Before compiling: Please remove comment from the constructor of the >>> connected graphics display (see below). @@ -42,8 +42,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -52,9 +52,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -84,19 +85,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) uint8_t offset = 0; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Scale/Scale.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Scale/Scale.ino similarity index 64% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Scale/Scale.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Scale/Scale.ino index ce87c76fa1..5fc5d331fd 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Scale/Scale.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Scale/Scale.ino @@ -1,8 +1,8 @@ /* - HelloWorld.pde + Scale.pde - "Hello World!" example code. + Example code for the 2x2 scale function. >>> Before compiling: Please remove comment from the constructor of the >>> connected graphics display (see below). @@ -42,8 +42,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -52,9 +52,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -84,19 +85,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) void draw(void) { diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/TextRotX/TextRotX.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/TextRotX/TextRotX.ino similarity index 64% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/TextRotX/TextRotX.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/TextRotX/TextRotX.ino index 718fd821c8..3527808284 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/TextRotX/TextRotX.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/TextRotX/TextRotX.ino @@ -42,8 +42,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -52,9 +52,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -84,19 +85,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) // graphic commands to redraw the complete screen should be placed here void draw(void) { diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Touch4WSetup/Touch4WSetup.ino b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Touch4WSetup/Touch4WSetup.ino new file mode 100644 index 0000000000..9ce10e9416 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Touch4WSetup/Touch4WSetup.ino @@ -0,0 +1,348 @@ +/* + + Touch4WSetup.pde + + Use this example to figure out the ranges for of the active area of a 4-wire resistive + touch panel. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +//================================================================ +// Setup 4-Wire Resistive Touch Panel + +uint8_t tp_left = A3; +uint8_t tp_right = A5; +uint8_t tp_top = A4; +uint8_t tp_bottom = A2; + +#define X_START 120 +#define X_END 140 +#define Y_START 120 +#define Y_END 140 + +#define PULLUP_THRESHOLD 235 + +//================================================================ +// Touch Panel Code + +/* touch panel dimension */ +struct tpd_struct +{ + /* raw value */ + uint8_t raw; + + /* calibration values */ + uint8_t start; + uint8_t end; + + /* user values */ + uint8_t range; /* result will have range fron 0..range (including the value of range) */ + + uint8_t result; /* output value: position [0...range] */ + uint8_t is_pressed; /* output value: pressed (=1) or not pressed (=0) */ + uint8_t is_update; /* will be set to 1 if result or is_pressed has been updated */ +}; + +struct tp_struct +{ + struct tpd_struct x; + struct tpd_struct y; + uint8_t is_pressed; /* combination of x.is_pressed && y.is_pressed */ + uint8_t is_update; +}; + +struct tp_struct tp; + +/* map raw value to 0...range (result) */ +void tpd_map_touch_position(struct tpd_struct *d, uint8_t raw) +{ + uint8_t is_pressed; + uint16_t p; + uint8_t start, end; + + d->raw = raw; + + start = d->start; + end = d->end; + + /* check if position is within active area; store result in "is_pressed" */ + is_pressed = 1; + if ( raw >= PULLUP_THRESHOLD ) + { + d->result = 0; + is_pressed = 0; + } + else + { + /* update start and end */ + if ( raw < start ) + { + start = raw; + d->start = raw; + } + if ( raw > end ) + { + end = raw; + d->end = raw; + } + } + + /* store "is_pressed" in the global structure, set update flag */ + if ( d->is_pressed != is_pressed ) + d->is_update = 1; + d->is_pressed = is_pressed; + + /* map "raw" value into target range */ + if ( is_pressed != 0 ) + { + p = raw; + p -= start; + p *= d->range; + end -= start; + p /= end; + + if ( d->result != p ) + d->is_update = 1; + d->result = p; + } +} + +void tp_Init(uint8_t width, uint8_t height) +{ + tp.x.start = X_START; + tp.x.end = X_END; + tp.x.range = width-1; + + tp.y.start = Y_START; + tp.y.end = Y_END; + tp.y.range = height-1; + + tp.is_update = 1; +} + +void setTouchRawValues(uint8_t x, uint8_t y) +{ + tpd_map_touch_position(&(tp.x), x); + tpd_map_touch_position(&(tp.y), y); + + tp.is_pressed = tp.x.is_pressed && tp.y.is_pressed; + if ( tp.x.is_update || tp.y.is_update ) + tp.is_update = 1; +} + + +uint8_t getTouchPos(uint8_t hiPin, uint8_t lowPin, uint8_t sensePin, uint8_t dcPin) +{ + uint8_t val; + pinMode(dcPin, INPUT); + pinMode(sensePin, INPUT_PULLUP); + pinMode(hiPin, OUTPUT); + pinMode(lowPin, OUTPUT); + + digitalWrite(hiPin, HIGH); + digitalWrite(lowPin, LOW); + delay(10); + val = analogRead(sensePin) >> 2; + pinMode(hiPin, INPUT); + pinMode(lowPin, INPUT); + delay(10); + return val; +} + +void updateTouchPanel(void) +{ + uint8_t tp_raw_x; + uint8_t tp_raw_y; + + tp_raw_x = getTouchPos(tp_right, tp_left, tp_bottom, tp_top); + tp_raw_y = getTouchPos(tp_top, tp_bottom, tp_left, tp_right); + + setTouchRawValues(tp_raw_x, tp_raw_y); +} + +//================================================================ +// graphics output and picture loop + +void center(u8g_uint_t y, const char *str) +{ + u8g_uint_t x; + x = u8g.getWidth(); + x -= u8g.getStrWidth(str); + x /= 2; + u8g.drawStr(x, y, str); +} + + +void draw(void) { + u8g.setFont(u8g_font_6x10); + center( 10, "Touch Panel Setup"); + u8g.setPrintPos(0, 20); u8g.print("x_start=");u8g.print((int)tp.x.start);u8g.print(" x_end=");u8g.print((int)tp.x.end); + u8g.setPrintPos(0, 30); u8g.print("y_start=");u8g.print((int)tp.y.start);u8g.print(" y_end=");u8g.print((int)tp.y.end); + u8g.setPrintPos(0, 40); u8g.print("x=");u8g.print((int)tp.x.raw); + u8g.setPrintPos(0, 50); u8g.print("y=");u8g.print((int)tp.y.raw); +} + +void setup(void) { + + // flip screen, if required + // u8g.setRot180(); + u8g.setCursorFont(u8g_font_cursor); + u8g.setCursorStyle(32); + + tp_Init(u8g.getWidth(), u8g.getHeight()); + + tp.is_update = 1; +} + +void loop(void) { + + // update touch panel and handle return values + updateTouchPanel(); + + if ( tp.is_pressed != 0 ) + u8g.enableCursor(); + else + u8g.disableCursor(); + + u8g.setCursorPos(tp.x.result, u8g.getHeight()-tp.y.result-1); + + // picture loop + if ( tp.is_update != 0 ) + { + tp.is_update = 0; + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + } + +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Touch4WTest/Touch4WTest.ino b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Touch4WTest/Touch4WTest.ino new file mode 100644 index 0000000000..ebe15838f3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Touch4WTest/Touch4WTest.ino @@ -0,0 +1,335 @@ +/* + + Touch4WTest.pde + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +//================================================================ +// Setup 4-Wire Resistive Touch Panel + +uint8_t tp_left = A3; +uint8_t tp_right = A5; +uint8_t tp_top = A4; +uint8_t tp_bottom = A2; + +/* Run "Touch4WSetup" and enter values here */ +#define X_START 64 +#define X_END 200 +#define Y_START 105 +#define Y_END 160 + +//================================================================ +// Touch Panel Code + +/* touch panel dimension */ +struct tpd_struct +{ + /* raw value */ + uint8_t raw; + + /* calibration values */ + uint8_t start; + uint8_t end; + + /* user values */ + uint8_t range; /* result will have range fron 0..range (including the value of range) */ + + uint8_t result; /* output value: position [0...range] */ + uint8_t is_pressed; /* output value: pressed (=1) or not pressed (=0) */ + uint8_t is_update; /* will be set to 1 if result or is_pressed has been updated */ +}; + +struct tp_struct +{ + struct tpd_struct x; + struct tpd_struct y; + uint8_t is_pressed; /* combination of x.is_pressed && y.is_pressed */ + uint8_t is_update; +}; + +struct tp_struct tp; + +/* map raw value to 0...range (result) */ +void tpd_map_touch_position(struct tpd_struct *d, uint8_t raw) +{ + uint8_t is_pressed; + uint16_t p; + uint8_t start, end; + + d->raw = raw; + + start = d->start; + end = d->end; + + /* check if position is within active area; store result in "is_pressed" */ + is_pressed = 1; + if ( raw < start ) + { + d->result = 0; + is_pressed = 0; + } + if ( raw >= end ) + { + d->result = d->range; + is_pressed = 0; + } + + /* store "is_pressed" in the global structure, set update flag */ + if ( d->is_pressed != is_pressed ) + d->is_update = 1; + d->is_pressed = is_pressed; + + /* map "raw" value into target range */ + if ( is_pressed != 0 ) + { + p = raw; + p -= start; + p *= d->range; + end -= start; + p /= end; + + if ( d->result != p ) + d->is_update = 1; + d->result = p; + } +} + +void tp_Init(uint8_t width, uint8_t height) +{ + tp.x.start = X_START; + tp.x.end = X_END; + tp.x.range = width-1; + + tp.y.start = Y_START; + tp.y.end = Y_END; + tp.y.range = height-1; + + tp.is_update = 1; +} + +void setTouchRawValues(uint8_t x, uint8_t y) +{ + tpd_map_touch_position(&(tp.x), x); + tpd_map_touch_position(&(tp.y), y); + + tp.is_pressed = tp.x.is_pressed && tp.y.is_pressed; + if ( tp.x.is_update || tp.y.is_update ) + tp.is_update = 1; +} + + +uint8_t getTouchPos(uint8_t hiPin, uint8_t lowPin, uint8_t sensePin, uint8_t dcPin) +{ + uint8_t val; + pinMode(dcPin, INPUT); + pinMode(sensePin, INPUT_PULLUP); + pinMode(hiPin, OUTPUT); + pinMode(lowPin, OUTPUT); + + digitalWrite(hiPin, HIGH); + digitalWrite(lowPin, LOW); + delay(10); + val = analogRead(sensePin) >> 2; + pinMode(hiPin, INPUT); + pinMode(lowPin, INPUT); + delay(10); + return val; +} + +void updateTouchPanel(void) +{ + uint8_t tp_raw_x; + uint8_t tp_raw_y; + + tp_raw_x = getTouchPos(tp_right, tp_left, tp_bottom, tp_top); + tp_raw_y = getTouchPos(tp_top, tp_bottom, tp_left, tp_right); + + setTouchRawValues(tp_raw_x, tp_raw_y); +} + +//================================================================ +// graphics output and picture loop + +void center(u8g_uint_t y, const char *str) +{ + u8g_uint_t x; + x = u8g.getWidth(); + x -= u8g.getStrWidth(str); + x /= 2; + u8g.drawStr(x, y, str); +} + + +void draw(void) { + u8g.setFont(u8g_font_6x10); + center( 10, "Touch Panel Test"); + if ( tp.is_pressed != 0 ) + { + u8g.setPrintPos(0, 20); u8g.print("x=");u8g.print((int)tp.x.result); + u8g.setPrintPos(0, 30); u8g.print("y=");u8g.print((int)(u8g.getHeight()-tp.y.result-1)); + //u8g.setPrintPos(0, 40); u8g.print("x: ");u8g.print((int)tp.x.start);u8g.print("..");u8g.print((int)tp.x.end); + //u8g.setPrintPos(0, 50); u8g.print("y: ");u8g.print((int)tp.y.start);u8g.print("..");u8g.print((int)tp.y.end); + } +} + +void setup(void) { + + // flip screen, if required + // u8g.setRot180(); + u8g.setCursorFont(u8g_font_cursor); + u8g.setCursorStyle(32); + + tp_Init(u8g.getWidth(), u8g.getHeight()); +} + +void loop(void) { + + // update touch panel and handle return values + updateTouchPanel(); + + if ( tp.is_pressed != 0 ) + u8g.enableCursor(); + else + u8g.disableCursor(); + + u8g.setCursorPos(tp.x.result, u8g.getHeight()-tp.y.result-1); + + // picture loop + if ( tp.is_update != 0 ) { + tp.is_update = 0; + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + } + +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/U8gLogo/U8gLogo.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/U8gLogo/U8gLogo.ino similarity index 62% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/U8gLogo/U8gLogo.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/U8gLogo/U8gLogo.ino index 78c866f0fe..151542dcf8 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/U8gLogo/U8gLogo.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/U8gLogo/U8gLogo.ino @@ -42,8 +42,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -52,9 +52,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -84,20 +85,56 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//#define MINI_LOGO void drawColorBox(void) { @@ -117,19 +154,32 @@ void drawColorBox(void) void drawLogo(uint8_t d) { - u8g.setFont(u8g_font_gdr25r); - u8g.drawStr(0+d, 30+d, "U"); - u8g.setFont(u8g_font_gdr30n); - u8g.drawStr90(23+d,10+d,"8"); - u8g.setFont(u8g_font_gdr25r); - u8g.drawStr(53+d,30+d,"g"); - - u8g.drawHLine(2+d, 35+d, 47); - u8g.drawVLine(45+d, 32+d, 12); +#ifdef MINI_LOGO + u8g.setFont(u8g_font_gdr17r); + u8g.drawStr(0+d, 22+d, "U"); + u8g.setFont(u8g_font_gdr20n); + u8g.drawStr90(17+d,8+d,"8"); + u8g.setFont(u8g_font_gdr17r); + u8g.drawStr(39+d,22+d,"g"); + + u8g.drawHLine(2+d, 25+d, 34); + u8g.drawVLine(32+d, 22+d, 12); +#else + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(0+d, 30+d, "U"); + u8g.setFont(u8g_font_gdr30n); + u8g.drawStr90(23+d,10+d,"8"); + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(53+d,30+d,"g"); + + u8g.drawHLine(2+d, 35+d, 47); + u8g.drawVLine(45+d, 32+d, 12); +#endif } void drawURL(void) { +#ifndef MINI_LOGO u8g.setFont(u8g_font_4x6); if ( u8g.getHeight() < 59 ) { @@ -140,6 +190,7 @@ void drawURL(void) { u8g.drawStr(1,54,"code.google.com/p/u8glib"); } +#endif } diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/XBM/XBM.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/XBM/XBM.ino similarity index 65% rename from ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/XBM/XBM.pde rename to ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/XBM/XBM.ino index 44dd720d92..65b1831872 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/XBM/XBM.pde +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/XBM/XBM.ino @@ -42,8 +42,8 @@ #include "U8glib.h" // setup u8g object, please remove comment from one of the following constructor calls -// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device - +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 @@ -52,9 +52,10 @@ //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 -//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 @@ -84,19 +85,54 @@ //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) //U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) -//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) #define u8g_logo_width 38 #define u8g_logo_height 24 diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/license.txt b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/license.txt index c9eea75c4d..f1a9615c7d 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/license.txt +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/license.txt @@ -78,3 +78,4 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/chessengine.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/chessengine.c index 4a8758c382..f86bf0687e 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/chessengine.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/chessengine.c @@ -72,7 +72,7 @@ - Castling: Need to check for fields under attack --> done - - Check for WIN / LOSE situation, perhaps call ce_Eval() once on the top-level board setup + - Check for WIN / LOOSE situation, perhaps call ce_Eval() once on the top-level board setup just after the real move - cleanup cu_Move --> almost done diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g.h b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g.h index f5a0230acb..afe161fc6c 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g.h +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g.h @@ -36,8 +36,13 @@ #ifndef _U8G_H #define _U8G_H +/* uncomment the following line to support displays larger than 240x240 */ //#define U8G_16BIT 1 +/* comment the following line to generate more compact but interrupt unsafe code */ +#define U8G_INTERRUPT_SAFE 1 + + #include #ifdef __18CXX @@ -53,6 +58,15 @@ typedef signed short int16_t; #include #endif +/* + use the com interface directly on any systems which are not AVR or ARDUINO +*/ +#if defined(__AVR__) || defined(ARDUINO) +#define U8G_WITH_PINLIST +#endif +#define U8G_WITH_PINLIST + + #ifdef __cplusplus extern "C" { #endif @@ -60,17 +74,30 @@ extern "C" { /*===============================================================*/ #ifdef __GNUC__ -#define U8G_NOINLINE __attribute__((noinline)) -#define U8G_PURE __attribute__ ((pure)) -#define U8G_NOCOMMON __attribute__ ((nocommon)) -#define U8G_SECTION(name) __attribute__ ((section (name))) +# define U8G_NOINLINE __attribute__((noinline)) +# define U8G_PURE __attribute__ ((pure)) +# define U8G_NOCOMMON __attribute__ ((nocommon)) +# define U8G_SECTION(name) __attribute__ ((section (name))) +# if defined(__MSPGCC__) +/* mspgcc does not have .progmem sections. Use -fdata-sections. */ +# define U8G_FONT_SECTION(name) +# endif +# if defined(__AVR__) +# define U8G_FONT_SECTION(name) U8G_SECTION(".progmem." name) +# endif #else -#define U8G_NOINLINE -#define U8G_PURE -#define U8G_NOCOMMON -#define U8G_SECTION(name) +# define U8G_NOINLINE +# define U8G_PURE +# define U8G_NOCOMMON +# define U8G_SECTION(name) +# define U8G_FONT_SECTION(name) #endif - + +#ifndef U8G_FONT_SECTION +# define U8G_FONT_SECTION(name) +#endif + + /*===============================================================*/ /* flash memory access */ @@ -81,15 +108,41 @@ typedef uint8_t PROGMEM u8g_pgm_uint8_t; typedef uint8_t u8g_fntpgm_uint8_t; #define u8g_pgm_read(adr) pgm_read_byte_near(adr) #define U8G_PSTR(s) ((u8g_pgm_uint8_t *)PSTR(s)) + #else + #define U8G_PROGMEM #define PROGMEM typedef uint8_t u8g_pgm_uint8_t; typedef uint8_t u8g_fntpgm_uint8_t; #define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr)) #define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s)) + #endif +/*===============================================================*/ +/* interrupt safe code */ +#if defined(U8G_INTERRUPT_SAFE) +# if defined(__AVR__) +extern uint8_t global_SREG_backup; /* u8g_state.c */ +# define U8G_ATOMIC_START() do { global_SREG_backup = SREG; cli(); } while(0) +# define U8G_ATOMIC_END() SREG = global_SREG_backup +# define U8G_ATOMIC_OR(ptr, val) do { uint8_t tmpSREG = SREG; cli(); (*(ptr) |= (val)); SREG = tmpSREG; } while(0) +# define U8G_ATOMIC_AND(ptr, val) do { uint8_t tmpSREG = SREG; cli(); (*(ptr) &= (val)); SREG = tmpSREG; } while(0) +# else +# define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val)) +# define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val)) +# define U8G_ATOMIC_START() +# define U8G_ATOMIC_END() +# endif /* __AVR__ */ +#else +# define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val)) +# define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val)) +# define U8G_ATOMIC_START() +# define U8G_ATOMIC_END() +#endif /* U8G_INTERRUPT_SAFE */ + + /*===============================================================*/ /* forward */ typedef struct _u8g_t u8g_t; @@ -98,6 +151,7 @@ typedef struct _u8g_dev_t u8g_dev_t; typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; typedef struct _u8g_box_t u8g_box_t; +typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_t; /*===============================================================*/ @@ -155,6 +209,8 @@ extern u8g_dev_t u8g_dev_sdl_1bit_h; extern u8g_dev_t u8g_dev_sdl_2bit; extern u8g_dev_t u8g_dev_sdl_2bit_double_mem; extern u8g_dev_t u8g_dev_sdl_8bit; +extern u8g_dev_t u8g_dev_sdl_hicolor; +extern u8g_dev_t u8g_dev_sdl_fullcolor; int u8g_sdl_get_key(void); /* Size: 70x30 monochrom, stdout */ @@ -172,10 +228,16 @@ extern u8g_dev_t u8g_dev_gprof; extern u8g_dev_t u8g_dev_uc1701_dogs102_sw_spi; extern u8g_dev_t u8g_dev_uc1701_dogs102_hw_spi; +extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_hw_spi; + /* Display: Mini12864 (dealextreme), Size: 128x64 monochrom */ extern u8g_dev_t u8g_dev_uc1701_mini12864_sw_spi; extern u8g_dev_t u8g_dev_uc1701_mini12864_hw_spi; +extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_hw_spi; + /* Display: EA DOGM132, Size: 128x32 monochrom */ extern u8g_dev_t u8g_dev_st7565_dogm132_sw_spi; extern u8g_dev_t u8g_dev_st7565_dogm132_hw_spi; @@ -183,31 +245,84 @@ extern u8g_dev_t u8g_dev_st7565_dogm132_hw_spi; /* Display: EA DOGM128, Size: 128x64 monochrom */ extern u8g_dev_t u8g_dev_st7565_dogm128_sw_spi; extern u8g_dev_t u8g_dev_st7565_dogm128_hw_spi; -/* Display: Topway LM6063 128x64 */ -extern u8g_dev_t u8g_dev_st7565_lm6063_sw_spi; -extern u8g_dev_t u8g_dev_st7565_lm6063_hw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm128_parallel; + +extern u8g_dev_t u8g_dev_st7565_dogm128_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm128_2x_hw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm128_2x_parallel; + +/* EA DOGM 240-6 */ +extern u8g_dev_t u8g_dev_uc1611_dogm240_i2c; +extern u8g_dev_t u8g_dev_uc1611_dogm240_hw_spi; +extern u8g_dev_t u8g_dev_uc1611_dogm240_sw_spi; + +/* EA DOGXL 240 */ +extern u8g_dev_t u8g_dev_uc1611_dogxl240_i2c; +extern u8g_dev_t u8g_dev_uc1611_dogxl240_hw_spi; +extern u8g_dev_t u8g_dev_uc1611_dogxl240_sw_spi; + /* Display: Topway LM6059 128x64 (Adafruit) */ extern u8g_dev_t u8g_dev_st7565_lm6059_sw_spi; extern u8g_dev_t u8g_dev_st7565_lm6059_hw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6059_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6059_2x_hw_spi; +/* Display: Topway LM6063 128x64 */ +extern u8g_dev_t u8g_dev_st7565_lm6063_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6063_hw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6063_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6063_2x_hw_spi; /* Display: Newhaven NHD-C12864 */ extern u8g_dev_t u8g_dev_st7565_nhd_c12864_sw_spi; extern u8g_dev_t u8g_dev_st7565_nhd_c12864_hw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_hw_spi; + /* Display: Newhaven NHD-C12832 */ extern u8g_dev_t u8g_dev_st7565_nhd_c12832_sw_spi; extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_spi; extern u8g_dev_t u8g_dev_st7565_nhd_c12832_parallel; +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_usart_spi; + /* Display: Displaytech 64128N */ extern u8g_dev_t u8g_dev_st7565_64128n_sw_spi; extern u8g_dev_t u8g_dev_st7565_64128n_hw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_parallel; + +extern u8g_dev_t u8g_dev_st7565_64128n_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_2x_hw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_2x_parallel; + +/* Display: LCD-AG-C128032R-DIW W/KK E6 PBF */ +extern u8g_dev_t u8g_dev_uc1601_c128032_sw_spi; +extern u8g_dev_t u8g_dev_uc1601_c128032_hw_spi; + +extern u8g_dev_t u8g_dev_uc1601_c128032_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1601_c128032_2x_hw_spi; + +/* East Rising/buy-display.com ERC24064-1 */ +extern u8g_dev_t u8g_dev_uc1608_240x64_sw_spi; +extern u8g_dev_t u8g_dev_uc1608_240x64_hw_spi; + +extern u8g_dev_t u8g_dev_uc1608_240x64_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1608_240x64_2x_hw_spi; + +/* UC1608 240x128 */ +extern u8g_dev_t u8g_dev_uc1608_240x128_sw_spi; +extern u8g_dev_t u8g_dev_uc1608_240x128_hw_spi; + +extern u8g_dev_t u8g_dev_uc1608_240x128_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1608_240x128_2x_hw_spi; /* dfrobot 128x64 Graphic LCD (SKU:FIT0021) */ extern u8g_dev_t u8g_dev_st7920_128x64_sw_spi; extern u8g_dev_t u8g_dev_st7920_128x64_hw_spi; extern u8g_dev_t u8g_dev_st7920_128x64_8bit; +extern u8g_dev_t u8g_dev_st7920_128x64_custom; extern u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi; extern u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi; extern u8g_dev_t u8g_dev_st7920_128x64_4x_8bit; +extern u8g_dev_t u8g_dev_st7920_128x64_4x_custom; /* NHD-19232WG */ extern u8g_dev_t u8g_dev_st7920_192x32_sw_spi; @@ -238,6 +353,7 @@ extern u8g_dev_t u8g_dev_lc7981_320x64_8bit; /* T6963, all t6963 devices have double page (2x) */ extern u8g_dev_t u8g_dev_t6963_240x128_8bit; +extern u8g_dev_t u8g_dev_t6963_128x128_8bit; extern u8g_dev_t u8g_dev_t6963_240x64_8bit; extern u8g_dev_t u8g_dev_t6963_128x64_8bit; @@ -258,10 +374,12 @@ extern u8g_dev_t u8g_dev_ks0108_128x64_fast; /* faster, but uses private tabl /* Nokia 84x48 Display with PCD8544 */ extern u8g_dev_t u8g_dev_pcd8544_84x48_sw_spi; +extern u8g_dev_t u8g_dev_pcd8544_84x48_hw_spi; extern u8g_dev_t u8g_dev_tls8204_84x48_sw_spi; /* Nokia 96x65 Display with PCF8812 */ extern u8g_dev_t u8g_dev_pcf8812_96x65_sw_spi; +extern u8g_dev_t u8g_dev_pcf8812_96x65_hw_spi; /* NHD-2.7-12864UCY3 OLED Display with SSD1325 Controller */ extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_sw_spi; @@ -288,11 +406,13 @@ extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c; /* NHD-3.12-25664 OLED Display with SSD1322 Controller */ extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_sw_spi; extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_parallel; extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi; extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi; extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_sw_spi; extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_parallel; extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi; extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi; @@ -301,6 +421,23 @@ extern u8g_dev_t u8g_dev_ssd1306_128x64_sw_spi; extern u8g_dev_t u8g_dev_ssd1306_128x64_hw_spi; extern u8g_dev_t u8g_dev_ssd1306_128x64_i2c; +extern u8g_dev_t u8g_dev_ssd1306_adafruit_128x64_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_adafruit_128x64_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_adafruit_128x64_i2c; + +extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c; + +/* OLED 128x64 Display with SH1106 Controller */ +extern u8g_dev_t u8g_dev_sh1106_128x64_sw_spi; +extern u8g_dev_t u8g_dev_sh1106_128x64_hw_spi; +extern u8g_dev_t u8g_dev_sh1106_128x64_i2c; + +extern u8g_dev_t u8g_dev_sh1106_128x64_2x_sw_spi; +extern u8g_dev_t u8g_dev_sh1106_128x64_2x_hw_spi; +extern u8g_dev_t u8g_dev_sh1106_128x64_2x_i2c; + /* OLED 128x64 Display with SSD1309 Controller */ extern u8g_dev_t u8g_dev_ssd1309_128x64_sw_spi; extern u8g_dev_t u8g_dev_ssd1309_128x64_hw_spi; @@ -311,6 +448,15 @@ extern u8g_dev_t u8g_dev_ssd1306_128x32_sw_spi; extern u8g_dev_t u8g_dev_ssd1306_128x32_hw_spi; extern u8g_dev_t u8g_dev_ssd1306_128x32_i2c; +extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_i2c; + +/* OLED 60x32 Display with LD7032 Controller */ +extern u8g_dev_t u8g_dev_ld7032_60x32_sw_spi; +extern u8g_dev_t u8g_dev_ld7032_60x32_hw_spi; +extern u8g_dev_t u8g_dev_ld7032_60x32_parallel; + /* experimental 65K TFT with st7687 controller */ extern u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi; extern u8g_dev_t u8g_dev_st7687_c144mvgd_8bit; @@ -325,6 +471,38 @@ void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, ui /* ILI9325D based TFT */ extern u8g_dev_t u8g_dev_ili9325d_320x240_8bit; + +/* SSD1351 OLED (breakout board from http://www.kickstarter.com/projects/ilsoftltd/colour-oled-breakout-board) */ +extern u8g_dev_t u8g_dev_ssd1351_128x128_332_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_332_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi; + +/* SSD1351 OLED (Freetronics, GPIOs set to high level) */ +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi; + +/* HT1632 */ +extern u8g_dev_t u8g_dev_ht1632_24x16; + +/* A2 Micro Printer */ +extern u8g_dev_t u8g_dev_a2_micro_printer_384x240; +extern u8g_dev_t u8g_dev_a2_micro_printer_192x120_ds; +extern u8g_dev_t u8g_dev_a2_micro_printer_192x360_ds; +extern u8g_dev_t u8g_dev_a2_micro_printer_192x720_ds; + /* u8g_virtual_screen.c */ extern u8g_dev_t u8g_dev_vs; @@ -335,12 +513,17 @@ extern u8g_dev_t u8g_dev_vs; struct _u8g_dev_arg_pixel_t { u8g_uint_t x, y; /* will be modified */ - uint8_t pixel; /* will be modified */ + uint8_t pixel; /* will be modified, pixel sequence or transparency value */ uint8_t dir; - uint8_t color; + uint8_t color; /* color or index value, red value for true color mode */ + uint8_t hi_color; /* high byte for 64K color mode, low byte is in "color", green value for true color mode */ + uint8_t blue; /* blue value in true color mode */ }; /* typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; */ /* forward decl */ +/* range for r,g,b: 0..255 */ +#define U8G_GET_HICOLOR_BY_RGB(r,g,b) (((uint16_t)((r)&0x0f8))<<8)|(((uint16_t)((g)&0x0fc))<<3)|(((uint16_t)((b)>>3))) + struct _u8g_dev_arg_bbx_t { u8g_uint_t x, y, w, h; @@ -353,6 +536,13 @@ struct _u8g_box_t }; /* typedef struct _u8g_box_t u8g_box_t; */ /* forward decl */ +struct _u8g_dev_arg_irgb_t +{ + u8g_uint_t idx, r, g, b; /* index with rgb value */ +}; +/* typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_t; */ /* forward decl */ + + #define U8G_DEV_MSG_INIT 10 #define U8G_DEV_MSG_STOP 11 @@ -379,10 +569,13 @@ struct _u8g_box_t */ /* arg: u8g_dev_arg_pixel_t * */ +#define U8G_DEV_MSG_SET_TPIXEL 44 +#define U8G_DEV_MSG_SET_4TPIXEL 45 + #define U8G_DEV_MSG_SET_PIXEL 50 #define U8G_DEV_MSG_SET_8PIXEL 59 -#define U8G_DEV_MSG_SET_COLOR_INDEX 60 +#define U8G_DEV_MSG_SET_COLOR_ENTRY 60 #define U8G_DEV_MSG_SET_XY_CB 61 @@ -392,15 +585,22 @@ struct _u8g_box_t /*===============================================================*/ /* device modes */ -#define U8G_MODE(is_color, bits_per_pixel) (((is_color)<<4)|(bits_per_pixel)) +#define U8G_MODE(is_index_mode, is_color, bits_per_pixel) (((is_index_mode)<<6) | ((is_color)<<5)|(bits_per_pixel)) #define U8G_MODE_UNKNOWN 0 -#define U8G_MODE_BW U8G_MODE(0, 1) -#define U8G_MODE_GRAY2BIT U8G_MODE(0, 2) -#define U8G_MODE_R3G3B2 U8G_MODE(1, 8) +#define U8G_MODE_BW U8G_MODE(0, 0, 1) +#define U8G_MODE_GRAY2BIT U8G_MODE(0, 0, 2) +#define U8G_MODE_R3G3B2 U8G_MODE(0, 1, 8) +#define U8G_MODE_INDEX U8G_MODE(1, 1, 8) +/* hicolor is R5G6B5 */ +#define U8G_MODE_HICOLOR U8G_MODE(0, 1, 16) +/* truecolor */ +#define U8G_MODE_TRUECOLOR U8G_MODE(0, 1, 24) -#define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&15) -#define U8G_MODE_IS_COLOR(mode) (((mode)&16)==0?0:1) + +#define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&31) +#define U8G_MODE_IS_COLOR(mode) (((mode)&32)==0?0:1) +#define U8G_MODE_IS_INDEX_MODE(mode) (((mode)&64)==0?0:1) /*===============================================================*/ @@ -429,15 +629,19 @@ struct _u8g_box_t /* com driver */ uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_null.c */ uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_std_sw_spi.c */ +uint8_t u8g_com_arduino_hw_usart_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_hw_usart_spi.c */ uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_sw_spi.c */ uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_hw_spi.c */ +uint8_t u8g_com_arduino_ATtiny85_std_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_arduino_ATTiny85_std_hw_spi.c */ uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_spi.c */ +uint8_t u8g_com_arduino_st7920_custom_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_custom.c */ uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_hw_spi.c */ uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_parallel.c */ uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_fast_parallel.c */ uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_port_d_wr.c */ uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_no_en_parallel.c */ uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_ssd_i2c.c */ +uint8_t u8g_com_arduino_uc_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_t6963.c */ @@ -447,6 +651,9 @@ uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_parallel.c */ +uint8_t u8g_com_raspberrypi_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_rasperrypi_hw_spi.c */ +uint8_t u8g_com_raspberrypi_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_raspberrypi_ssd_i2c.c */ + /* Translation of system specific com drives to generic com names @@ -457,18 +664,44 @@ uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, voi U8G_COM_T6963 U8G_COM_FAST_PARALLEL U8G_COM_SSD_I2C + U8G_COM_UC_I2C defined(__18CXX) || defined(__PIC32MX) */ + +/* ==== HW SPI, Raspberry PI ====*/ +#if defined(U8G_RASPBERRY_PI) +#define U8G_COM_HW_SPI u8g_com_raspberrypi_hw_spi_fn +#define U8G_COM_SW_SPI u8g_com_null_fn + +/* I'm sure there must be some mad reason for needing this */ +#define U8G_COM_ST7920_SW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#endif + /* ==== HW SPI, Arduino ====*/ #if defined(ARDUINO) #if defined(__AVR__) + +#if defined(__AVR_ATtiny85__) +#define U8G_COM_HW_SPI u8g_com_arduino_ATtiny85_std_hw_spi_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#else + #define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn +#if defined(__AVR_ATmega32U4__) +#define U8G_COM_HW_USART_SPI u8g_com_arduino_hw_usart_spi_fn +#endif /* __AVR_ATmega32U4__ */ #define U8G_COM_ST7920_HW_SPI u8g_com_arduino_st7920_hw_spi_fn +#endif /* __AVR_ATtiny85__ */ + #elif defined(__18CXX) || defined(__PIC32MX) #define U8G_COM_HW_SPI u8g_com_null_fn #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#elif defined(__SAM3X8E__) /* Arduino Due */ +#define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn #endif #endif /* ==== HW SPI, not Arduino ====*/ @@ -482,6 +715,10 @@ defined(__18CXX) || defined(__PIC32MX) #define U8G_COM_HW_SPI u8g_com_null_fn #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn #endif +#ifndef U8G_COM_HW_USART_SPI +#define U8G_COM_HW_USART_SPI u8g_com_null_fn +#endif + /* ==== SW SPI, Arduino ====*/ #if defined(ARDUINO) @@ -491,7 +728,11 @@ defined(__18CXX) || defined(__PIC32MX) #elif defined(__18CXX) || defined(__PIC32MX) #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn -#elif defined(__arm__) /* Arduino Due */ +#elif defined(__SAM3X8E__) /* Arduino Due */ +//#define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn +#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#elif defined(__arm__) /* Teensy */ #define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn #endif @@ -509,7 +750,7 @@ defined(__18CXX) || defined(__PIC32MX) #define U8G_COM_ST7920_SW_SPI u8g_com_null_fn #endif -/* ==== Parallel iinterface, Arduino ====*/ +/* ==== Parallel interface, Arduino ====*/ #if defined(ARDUINO) #if defined(__AVR__) #define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn @@ -537,24 +778,47 @@ defined(__18CXX) || defined(__PIC32MX) #if defined(ARDUINO) #if defined(__AVR__) #define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn +#define U8G_COM_UC_I2C u8g_com_arduino_uc_i2c_fn #endif #endif #ifndef U8G_COM_SSD_I2C -#if defined(__AVR__) -/* AVR variant can use the arduino version at the moment */ +#if defined(__AVR__) || defined(__SAM3X8E__) +/* AVR variant and also DUE can use the arduino version at the moment */ #define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn #endif #endif + +#ifndef U8G_COM_SSD_I2C +#if defined(U8G_RASPBERRY_PI) +#define U8G_COM_SSD_I2C u8g_com_raspberrypi_ssd_i2c_fn +#endif +#endif + #ifndef U8G_COM_SSD_I2C #define U8G_COM_SSD_I2C u8g_com_null_fn #endif +#ifndef U8G_COM_UC_I2C +#if defined(__AVR__) +/* AVR variant can use the arduino version at the moment */ +#define U8G_COM_UC_I2C u8g_com_arduino_uc_i2c_fn +#endif +#endif +#ifndef U8G_COM_UC_I2C +#define U8G_COM_UC_I2C u8g_com_null_fn +#endif /*===============================================================*/ /* com api */ -uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev); + +#define U8G_SPI_CLK_CYCLE_50NS 1 +#define U8G_SPI_CLK_CYCLE_300NS 2 +#define U8G_SPI_CLK_CYCLE_400NS 3 +#define U8G_SPI_CLK_CYCLE_NONE 255 + +uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev, uint8_t clk_cycle_time); void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev); void u8g_EnableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */ void u8g_DisableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */ @@ -711,6 +975,11 @@ uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *ar /* u8g_pb8h8.c */ uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); +/* u8g_pbxh16.c */ +uint8_t u8g_dev_pbxh16_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pbxh24.c */ +uint8_t u8g_dev_pbxh24_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); /*===============================================================*/ @@ -772,6 +1041,7 @@ typedef void (*u8g_state_cb)(uint8_t msg); #define U8G_PIN_LIST_LEN 14 +#define U8G_PIN_DUMMY 254 #define U8G_PIN_NONE 255 #define U8G_FONT_HEIGHT_MODE_TEXT 0 @@ -810,7 +1080,9 @@ struct _u8g_t u8g_dev_arg_pixel_t arg_pixel; /* uint8_t color_index; */ +#ifdef U8G_WITH_PINLIST uint8_t pin_list[U8G_PIN_LIST_LEN]; +#endif u8g_state_cb state_cb; @@ -830,6 +1102,7 @@ uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev); uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast); void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y); void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); +void u8g_Draw4TPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); /* obsolete */ u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev); u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev); @@ -837,6 +1110,7 @@ u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev); void u8g_UpdateDimension(u8g_t *u8g); uint8_t u8g_Begin(u8g_t *u8g); /* reset device, put it into default state and call u8g_UpdateDimension() */ uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev); /* only usefull if the device only as hardcoded ports */ +uint8_t u8g_InitComFn(u8g_t *u8g, u8g_dev_t *dev, u8g_com_fnptr com_fn); /* Init procedure for anything which is not Arduino or AVR (e.g. ARM, but not Due, which is Arduino) */ uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset); uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset); uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options); /* use U8G_I2C_OPT_NONE as options */ @@ -852,9 +1126,14 @@ void u8g_SleepOn(u8g_t *u8g); void u8g_SleepOff(u8g_t *u8g); void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y); void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); +void u8g_Draw4TPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); uint8_t u8g_Stop(u8g_t *u8g); +void u8g_SetColorEntry(u8g_t *u8g, uint8_t idx, uint8_t r, uint8_t g, uint8_t b); void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx); +void u8g_SetHiColor(u8g_t *u8g, uint16_t rgb); +void u8g_SetHiColorByRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b); +void u8g_SetRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b); uint8_t u8g_GetColorIndex(u8g_t *u8g); uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g); @@ -892,7 +1171,9 @@ void u8g_SetDefaultMidColor(u8g_t *u8g); void u8g_state_dummy_cb(uint8_t msg); -void u8g_backup_avr_spi(uint8_t msg); /* backup SPI state on atmel avr controller */ +void u8g_backup_spi(uint8_t msg); /* backup SPI state controller */ +/* backward compatible definition */ +#define u8g_backup_avr_spi u8g_backup_spi void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb); @@ -974,7 +1255,7 @@ u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s); u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s); int8_t u8g_GetStrX(u8g_t *u8g, const char *s); int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s); -u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s); +u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s) U8G_NOINLINE; u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s); u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s); @@ -982,17 +1263,20 @@ u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t di void u8g_GetStrMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); void u8g_GetStrAMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); + +u8g_uint_t u8g_DrawAAStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); + /* u8g_rect.c */ void u8g_draw_box(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE; -void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w); -void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w); -void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); -void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); +void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) U8G_NOINLINE; +void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) U8G_NOINLINE; +void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE; +void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE; -void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r); -void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r); +void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) U8G_NOINLINE; +void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) U8G_NOINLINE; /* u8g_bitmap.c */ @@ -1034,6 +1318,10 @@ void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uin void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +/* u8g_ellipse.c */ +void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option); +void u8g_DrawFilledEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option); + /* u8g_clip.c */ uint8_t u8g_is_box_bbx_intersection(u8g_box_t *box, u8g_dev_arg_bbx_t *bbx); @@ -1047,6 +1335,63 @@ void u8g_EnableCursor(u8g_t *u8g); void u8g_DisableCursor(u8g_t *u8g); void u8g_DrawCursor(u8g_t *u8g); +/* u8g_polygon.c */ + +typedef int16_t pg_word_t; + +#define PG_NOINLINE U8G_NOINLINE + +struct pg_point_struct +{ + pg_word_t x; + pg_word_t y; +}; + +typedef struct _pg_struct pg_struct; /* forward declaration */ + +struct pg_edge_struct +{ + pg_word_t x_direction; /* 1, if x2 is greater than x1, -1 otherwise */ + pg_word_t height; + pg_word_t current_x_offset; + pg_word_t error_offset; + + /* --- line loop --- */ + pg_word_t current_y; + pg_word_t max_y; + pg_word_t current_x; + pg_word_t error; + + /* --- outer loop --- */ + uint8_t (*next_idx_fn)(pg_struct *pg, uint8_t i); + uint8_t curr_idx; +}; + +/* maximum number of points in the polygon */ +/* can be redefined, but highest possible value is 254 */ +#define PG_MAX_POINTS 6 + +/* index numbers for the pge structures below */ +#define PG_LEFT 0 +#define PG_RIGHT 1 + + +struct _pg_struct +{ + struct pg_point_struct list[PG_MAX_POINTS]; + uint8_t cnt; + uint8_t is_min_y_not_flat; + pg_word_t total_scan_line_cnt; + struct pg_edge_struct pge[2]; /* left and right line draw structures */ +}; + +void pg_ClearPolygonXY(pg_struct *pg); +void pg_AddPolygonXY(pg_struct *pg, u8g_t *u8g, int16_t x, int16_t y); +void pg_DrawPolygon(pg_struct *pg, u8g_t *u8g); +void u8g_ClearPolygonXY(void); +void u8g_AddPolygonXY(u8g_t *u8g, int16_t x, int16_t y); +void u8g_DrawPolygon(u8g_t *u8g); +void u8g_DrawTriangle(u8g_t *u8g, int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2); /*===============================================================*/ @@ -1063,6 +1408,10 @@ void st_Step(uint8_t player_pos, uint8_t is_auto_fire, uint8_t is_fire); /* options for u8g_i2c_init() */ #define U8G_I2C_OPT_NONE 0 +#define U8G_I2C_OPT_NO_ACK 2 +#define U8G_I2C_OPT_DEV_0 0 +#define U8G_I2C_OPT_DEV_1 4 +#define U8G_I2C_OPT_FAST 16 /* retrun values from u8g_twi_get_error() */ #define U8G_I2C_ERR_NONE 0x00 @@ -1077,6 +1426,7 @@ void u8g_i2c_init(uint8_t options) U8G_NOINLINE; /* use U8G_I2C_OPT_NONE as opt uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) U8G_NOINLINE; uint8_t u8g_i2c_start(uint8_t sla) U8G_NOINLINE; uint8_t u8g_i2c_send_byte(uint8_t data) U8G_NOINLINE; +uint8_t u8g_i2c_send_mode(uint8_t mode) U8G_NOINLINE; void u8g_i2c_stop(void) U8G_NOINLINE; @@ -1115,91 +1465,90 @@ void chess_Step(uint8_t keycode); /*===============================================================*/ /* font definitions */ +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_5[] U8G_FONT_SECTION("u8g_font_m2icon_5"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_7[] U8G_FONT_SECTION("u8g_font_m2icon_7"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_9[] U8G_FONT_SECTION("u8g_font_m2icon_9"); -extern const u8g_fntpgm_uint8_t u8g_font_m2icon_5[] U8G_SECTION(".progmem.u8g_font_m2icon_5"); -extern const u8g_fntpgm_uint8_t u8g_font_m2icon_7[] U8G_SECTION(".progmem.u8g_font_m2icon_7"); -extern const u8g_fntpgm_uint8_t u8g_font_m2icon_9[] U8G_SECTION(".progmem.u8g_font_m2icon_9"); - -extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4[] U8G_SECTION(".progmem.u8g_font_u8glib_4"); -extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] U8G_SECTION(".progmem.u8g_font_u8glib_4r"); +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4[] U8G_FONT_SECTION("u8g_font_u8glib_4"); +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] U8G_FONT_SECTION("u8g_font_u8glib_4r"); -extern const u8g_fntpgm_uint8_t u8g_font_6x12_75r[] U8G_SECTION(".progmem.u8g_font_6x12_75r"); -extern const u8g_fntpgm_uint8_t u8g_font_6x13_75r[] U8G_SECTION(".progmem.u8g_font_6x13_75r"); -extern const u8g_fntpgm_uint8_t u8g_font_7x13_75r[] U8G_SECTION(".progmem.u8g_font_7x13_75r"); -extern const u8g_fntpgm_uint8_t u8g_font_8x13_75r[] U8G_SECTION(".progmem.u8g_font_8x13_75r"); -extern const u8g_fntpgm_uint8_t u8g_font_9x15_75r[] U8G_SECTION(".progmem.u8g_font_9x15_75r"); -extern const u8g_fntpgm_uint8_t u8g_font_9x18_75r[] U8G_SECTION(".progmem.u8g_font_9x18_75r"); -extern const u8g_fntpgm_uint8_t u8g_font_cu12_75r[] U8G_SECTION(".progmem.u8g_font_cu12_75r"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_75r[] U8G_SECTION(".progmem.u8g_font_unifont_75r"); -extern const u8g_fntpgm_uint8_t u8g_font_10x20_75r[] U8G_SECTION(".progmem.u8g_font_10x20_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_75r[] U8G_FONT_SECTION("u8g_font_6x12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_75r[] U8G_FONT_SECTION("u8g_font_6x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_75r[] U8G_FONT_SECTION("u8g_font_7x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_75r[] U8G_FONT_SECTION("u8g_font_8x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_75r[] U8G_FONT_SECTION("u8g_font_9x15_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_75r[] U8G_FONT_SECTION("u8g_font_9x18_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_75r[] U8G_FONT_SECTION("u8g_font_cu12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_75r[] U8G_FONT_SECTION("u8g_font_unifont_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_75r[] U8G_FONT_SECTION("u8g_font_10x20_75r"); -extern const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] U8G_SECTION(".progmem.u8g_font_10x20_67_75"); -extern const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] U8G_SECTION(".progmem.u8g_font_10x20_78_79"); -extern const u8g_fntpgm_uint8_t u8g_font_10x20[] U8G_SECTION(".progmem.u8g_font_10x20"); -extern const u8g_fntpgm_uint8_t u8g_font_10x20r[] U8G_SECTION(".progmem.u8g_font_10x20r"); -extern const u8g_fntpgm_uint8_t u8g_font_4x6[] U8G_SECTION(".progmem.u8g_font_4x6"); -extern const u8g_fntpgm_uint8_t u8g_font_4x6r[] U8G_SECTION(".progmem.u8g_font_4x6r"); -//extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_SECTION(".progmem.u8g_font_4x6n"); -extern const u8g_fntpgm_uint8_t u8g_font_5x7[] U8G_SECTION(".progmem.u8g_font_5x7"); -extern const u8g_fntpgm_uint8_t u8g_font_5x7r[] U8G_SECTION(".progmem.u8g_font_5x7r"); -extern const u8g_fntpgm_uint8_t u8g_font_5x8[] U8G_SECTION(".progmem.u8g_font_5x8"); -extern const u8g_fntpgm_uint8_t u8g_font_5x8r[] U8G_SECTION(".progmem.u8g_font_5x8r"); -extern const u8g_fntpgm_uint8_t u8g_font_6x10[] U8G_SECTION(".progmem.u8g_font_6x10"); -extern const u8g_fntpgm_uint8_t u8g_font_6x10r[] U8G_SECTION(".progmem.u8g_font_6x10r"); -extern const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] U8G_SECTION(".progmem.u8g_font_6x12_67_75"); -extern const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] U8G_SECTION(".progmem.u8g_font_6x12_78_79"); -extern const u8g_fntpgm_uint8_t u8g_font_6x12[] U8G_SECTION(".progmem.u8g_font_6x12"); -extern const u8g_fntpgm_uint8_t u8g_font_6x12r[] U8G_SECTION(".progmem.u8g_font_6x12r"); -extern const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] U8G_SECTION(".progmem.u8g_font_6x13_67_75"); -extern const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] U8G_SECTION(".progmem.u8g_font_6x13_78_79"); -extern const u8g_fntpgm_uint8_t u8g_font_6x13B[] U8G_SECTION(".progmem.u8g_font_6x13B"); -extern const u8g_fntpgm_uint8_t u8g_font_6x13Br[] U8G_SECTION(".progmem.u8g_font_6x13Br"); -extern const u8g_fntpgm_uint8_t u8g_font_6x13[] U8G_SECTION(".progmem.u8g_font_6x13"); -extern const u8g_fntpgm_uint8_t u8g_font_6x13r[] U8G_SECTION(".progmem.u8g_font_6x13r"); -extern const u8g_fntpgm_uint8_t u8g_font_6x13O[] U8G_SECTION(".progmem.u8g_font_6x13O"); -extern const u8g_fntpgm_uint8_t u8g_font_6x13Or[] U8G_SECTION(".progmem.u8g_font_6x13Or"); -extern const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] U8G_SECTION(".progmem.u8g_font_7x13_67_75"); -extern const u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] U8G_SECTION(".progmem.u8g_font_7x13_78_79"); -extern const u8g_fntpgm_uint8_t u8g_font_7x13B[] U8G_SECTION(".progmem.u8g_font_7x13B"); -extern const u8g_fntpgm_uint8_t u8g_font_7x13Br[] U8G_SECTION(".progmem.u8g_font_7x13Br"); -extern const u8g_fntpgm_uint8_t u8g_font_7x13[] U8G_SECTION(".progmem.u8g_font_7x13"); -extern const u8g_fntpgm_uint8_t u8g_font_7x13r[] U8G_SECTION(".progmem.u8g_font_7x13r"); -extern const u8g_fntpgm_uint8_t u8g_font_7x13O[] U8G_SECTION(".progmem.u8g_font_7x13O"); -extern const u8g_fntpgm_uint8_t u8g_font_7x13Or[] U8G_SECTION(".progmem.u8g_font_7x13Or"); -extern const u8g_fntpgm_uint8_t u8g_font_7x14B[] U8G_SECTION(".progmem.u8g_font_7x14B"); -extern const u8g_fntpgm_uint8_t u8g_font_7x14Br[] U8G_SECTION(".progmem.u8g_font_7x14Br"); -extern const u8g_fntpgm_uint8_t u8g_font_7x14[] U8G_SECTION(".progmem.u8g_font_7x14"); -extern const u8g_fntpgm_uint8_t u8g_font_7x14r[] U8G_SECTION(".progmem.u8g_font_7x14r"); -extern const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] U8G_SECTION(".progmem.u8g_font_8x13_67_75"); -extern const u8g_fntpgm_uint8_t u8g_font_8x13B[] U8G_SECTION(".progmem.u8g_font_8x13B"); -extern const u8g_fntpgm_uint8_t u8g_font_8x13Br[] U8G_SECTION(".progmem.u8g_font_8x13Br"); -extern const u8g_fntpgm_uint8_t u8g_font_8x13[] U8G_SECTION(".progmem.u8g_font_8x13"); -extern const u8g_fntpgm_uint8_t u8g_font_8x13r[] U8G_SECTION(".progmem.u8g_font_8x13r"); -extern const u8g_fntpgm_uint8_t u8g_font_8x13O[] U8G_SECTION(".progmem.u8g_font_8x13O"); -extern const u8g_fntpgm_uint8_t u8g_font_8x13Or[] U8G_SECTION(".progmem.u8g_font_8x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] U8G_FONT_SECTION("u8g_font_10x20_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] U8G_FONT_SECTION("u8g_font_10x20_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20[] U8G_FONT_SECTION("u8g_font_10x20"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20r[] U8G_FONT_SECTION("u8g_font_10x20r"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6[] U8G_FONT_SECTION("u8g_font_4x6"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6r[] U8G_FONT_SECTION("u8g_font_4x6r"); +//extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_FONT_SECTION("u8g_font_4x6n"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7[] U8G_FONT_SECTION("u8g_font_5x7"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7r[] U8G_FONT_SECTION("u8g_font_5x7r"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8[] U8G_FONT_SECTION("u8g_font_5x8"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8r[] U8G_FONT_SECTION("u8g_font_5x8r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10[] U8G_FONT_SECTION("u8g_font_6x10"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10r[] U8G_FONT_SECTION("u8g_font_6x10r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] U8G_FONT_SECTION("u8g_font_6x12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] U8G_FONT_SECTION("u8g_font_6x12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12[] U8G_FONT_SECTION("u8g_font_6x12"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12r[] U8G_FONT_SECTION("u8g_font_6x12r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] U8G_FONT_SECTION("u8g_font_6x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] U8G_FONT_SECTION("u8g_font_6x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13B[] U8G_FONT_SECTION("u8g_font_6x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Br[] U8G_FONT_SECTION("u8g_font_6x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13[] U8G_FONT_SECTION("u8g_font_6x13"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13r[] U8G_FONT_SECTION("u8g_font_6x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13O[] U8G_FONT_SECTION("u8g_font_6x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Or[] U8G_FONT_SECTION("u8g_font_6x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] U8G_FONT_SECTION("u8g_font_7x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] U8G_FONT_SECTION("u8g_font_7x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13B[] U8G_FONT_SECTION("u8g_font_7x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Br[] U8G_FONT_SECTION("u8g_font_7x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13[] U8G_FONT_SECTION("u8g_font_7x13"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13r[] U8G_FONT_SECTION("u8g_font_7x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13O[] U8G_FONT_SECTION("u8g_font_7x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Or[] U8G_FONT_SECTION("u8g_font_7x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14B[] U8G_FONT_SECTION("u8g_font_7x14B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14Br[] U8G_FONT_SECTION("u8g_font_7x14Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14[] U8G_FONT_SECTION("u8g_font_7x14"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14r[] U8G_FONT_SECTION("u8g_font_7x14r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] U8G_FONT_SECTION("u8g_font_8x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13B[] U8G_FONT_SECTION("u8g_font_8x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Br[] U8G_FONT_SECTION("u8g_font_8x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13[] U8G_FONT_SECTION("u8g_font_8x13"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13r[] U8G_FONT_SECTION("u8g_font_8x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13O[] U8G_FONT_SECTION("u8g_font_8x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Or[] U8G_FONT_SECTION("u8g_font_8x13Or"); -extern const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] U8G_SECTION(".progmem.u8g_font_9x15_67_75"); -extern const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] U8G_SECTION(".progmem.u8g_font_9x15_78_79"); -extern const u8g_fntpgm_uint8_t u8g_font_9x15B[] U8G_SECTION(".progmem.u8g_font_9x15B"); -extern const u8g_fntpgm_uint8_t u8g_font_9x15Br[] U8G_SECTION(".progmem.u8g_font_9x15Br"); -extern const u8g_fntpgm_uint8_t u8g_font_9x15[] U8G_SECTION(".progmem.u8g_font_9x15"); -extern const u8g_fntpgm_uint8_t u8g_font_9x15r[] U8G_SECTION(".progmem.u8g_font_9x15r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] U8G_FONT_SECTION("u8g_font_9x15_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] U8G_FONT_SECTION("u8g_font_9x15_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15B[] U8G_FONT_SECTION("u8g_font_9x15B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15Br[] U8G_FONT_SECTION("u8g_font_9x15Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15[] U8G_FONT_SECTION("u8g_font_9x15"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15r[] U8G_FONT_SECTION("u8g_font_9x15r"); -extern const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] U8G_SECTION(".progmem.u8g_font_9x18_67_75"); -extern const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] U8G_SECTION(".progmem.u8g_font_9x18_78_79"); -extern const u8g_fntpgm_uint8_t u8g_font_9x18B[] U8G_SECTION(".progmem.u8g_font_9x18B"); -extern const u8g_fntpgm_uint8_t u8g_font_9x18[] U8G_SECTION(".progmem.u8g_font_9x18"); -extern const u8g_fntpgm_uint8_t u8g_font_9x18Br[] U8G_SECTION(".progmem.u8g_font_9x18Br"); -extern const u8g_fntpgm_uint8_t u8g_font_9x18r[] U8G_SECTION(".progmem.u8g_font_9x18r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] U8G_FONT_SECTION("u8g_font_9x18_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] U8G_FONT_SECTION("u8g_font_9x18_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18B[] U8G_FONT_SECTION("u8g_font_9x18B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18[] U8G_FONT_SECTION("u8g_font_9x18"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18Br[] U8G_FONT_SECTION("u8g_font_9x18Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18r[] U8G_FONT_SECTION("u8g_font_9x18r"); -extern const u8g_fntpgm_uint8_t u8g_font_cursor[] U8G_SECTION(".progmem.u8g_font_cursor"); -extern const u8g_fntpgm_uint8_t u8g_font_cursorr[] U8G_SECTION(".progmem.u8g_font_cursorr"); -extern const u8g_fntpgm_uint8_t u8g_font_micro[] U8G_SECTION(".progmem.u8g_font_micro"); +extern const u8g_fntpgm_uint8_t u8g_font_cursor[] U8G_FONT_SECTION("u8g_font_cursor"); +extern const u8g_fntpgm_uint8_t u8g_font_cursorr[] U8G_FONT_SECTION("u8g_font_cursorr"); +extern const u8g_fntpgm_uint8_t u8g_font_micro[] U8G_FONT_SECTION("u8g_font_micro"); -extern const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] U8G_SECTION(".progmem.u8g_font_cu12_67_75"); -extern const u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] U8G_SECTION(".progmem.u8g_font_cu12_78_79"); -extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_SECTION(".progmem.u8g_font_cu12"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] U8G_FONT_SECTION("u8g_font_cu12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] U8G_FONT_SECTION("u8g_font_cu12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_FONT_SECTION("u8g_font_cu12"); /* Free-Universal Bold @@ -1208,27 +1557,27 @@ extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_SECTION(".progmem.u8g_font_c no char: Full set (codes 32 - 255) */ -extern const u8g_fntpgm_uint8_t u8g_font_fub11[] U8G_SECTION(".progmem.u8g_font_fub11"); -extern const u8g_fntpgm_uint8_t u8g_font_fub11r[] U8G_SECTION(".progmem.u8g_font_fub11r"); -extern const u8g_fntpgm_uint8_t u8g_font_fub11n[] U8G_SECTION(".progmem.u8g_font_fub11n"); -extern const u8g_fntpgm_uint8_t u8g_font_fub14[] U8G_SECTION(".progmem.u8g_font_fub14"); -extern const u8g_fntpgm_uint8_t u8g_font_fub14r[] U8G_SECTION(".progmem.u8g_font_fub14r"); -extern const u8g_fntpgm_uint8_t u8g_font_fub14n[] U8G_SECTION(".progmem.u8g_font_fub14n"); -extern const u8g_fntpgm_uint8_t u8g_font_fub17[] U8G_SECTION(".progmem.u8g_font_fub17"); -extern const u8g_fntpgm_uint8_t u8g_font_fub17r[] U8G_SECTION(".progmem.u8g_font_fub17r"); -extern const u8g_fntpgm_uint8_t u8g_font_fub17n[] U8G_SECTION(".progmem.u8g_font_fub17n"); -extern const u8g_fntpgm_uint8_t u8g_font_fub20[] U8G_SECTION(".progmem.u8g_font_fub20"); -extern const u8g_fntpgm_uint8_t u8g_font_fub20r[] U8G_SECTION(".progmem.u8g_font_fub20r"); -extern const u8g_fntpgm_uint8_t u8g_font_fub20n[] U8G_SECTION(".progmem.u8g_font_fub20n"); -extern const u8g_fntpgm_uint8_t u8g_font_fub25[] U8G_SECTION(".progmem.u8g_font_fub25"); -extern const u8g_fntpgm_uint8_t u8g_font_fub25r[] U8G_SECTION(".progmem.u8g_font_fub25r"); -extern const u8g_fntpgm_uint8_t u8g_font_fub25n[] U8G_SECTION(".progmem.u8g_font_fub25n"); -extern const u8g_fntpgm_uint8_t u8g_font_fub30[] U8G_SECTION(".progmem.u8g_font_fub30"); -extern const u8g_fntpgm_uint8_t u8g_font_fub30r[] U8G_SECTION(".progmem.u8g_font_fub30r"); -extern const u8g_fntpgm_uint8_t u8g_font_fub30n[] U8G_SECTION(".progmem.u8g_font_fub30n"); -extern const u8g_fntpgm_uint8_t u8g_font_fub35n[] U8G_SECTION(".progmem.u8g_font_fub35n"); -extern const u8g_fntpgm_uint8_t u8g_font_fub42n[] U8G_SECTION(".progmem.u8g_font_fub42n"); -extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_SECTION(".progmem.u8g_font_fub49n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11[] U8G_FONT_SECTION("u8g_font_fub11"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11r[] U8G_FONT_SECTION("u8g_font_fub11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11n[] U8G_FONT_SECTION("u8g_font_fub11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14[] U8G_FONT_SECTION("u8g_font_fub14"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14r[] U8G_FONT_SECTION("u8g_font_fub14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14n[] U8G_FONT_SECTION("u8g_font_fub14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17[] U8G_FONT_SECTION("u8g_font_fub17"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17r[] U8G_FONT_SECTION("u8g_font_fub17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17n[] U8G_FONT_SECTION("u8g_font_fub17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20[] U8G_FONT_SECTION("u8g_font_fub20"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20r[] U8G_FONT_SECTION("u8g_font_fub20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20n[] U8G_FONT_SECTION("u8g_font_fub20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25[] U8G_FONT_SECTION("u8g_font_fub25"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25r[] U8G_FONT_SECTION("u8g_font_fub25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25n[] U8G_FONT_SECTION("u8g_font_fub25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30[] U8G_FONT_SECTION("u8g_font_fub30"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30r[] U8G_FONT_SECTION("u8g_font_fub30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30n[] U8G_FONT_SECTION("u8g_font_fub30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub35n[] U8G_FONT_SECTION("u8g_font_fub35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub42n[] U8G_FONT_SECTION("u8g_font_fub42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_FONT_SECTION("u8g_font_fub49n"); /* Free-Universal Regular @@ -1237,27 +1586,27 @@ extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_SECTION(".progmem.u8g_font no char: Full set (codes 32 - 255) */ -extern const u8g_fntpgm_uint8_t u8g_font_fur11[] U8G_SECTION(".progmem.u8g_font_fur11"); -extern const u8g_fntpgm_uint8_t u8g_font_fur11r[] U8G_SECTION(".progmem.u8g_font_fur11r"); -extern const u8g_fntpgm_uint8_t u8g_font_fur11n[] U8G_SECTION(".progmem.u8g_font_fur11n"); -extern const u8g_fntpgm_uint8_t u8g_font_fur14[] U8G_SECTION(".progmem.u8g_font_fur14"); -extern const u8g_fntpgm_uint8_t u8g_font_fur14r[] U8G_SECTION(".progmem.u8g_font_fur14r"); -extern const u8g_fntpgm_uint8_t u8g_font_fur14n[] U8G_SECTION(".progmem.u8g_font_fur14n"); -extern const u8g_fntpgm_uint8_t u8g_font_fur17[] U8G_SECTION(".progmem.u8g_font_fur17"); -extern const u8g_fntpgm_uint8_t u8g_font_fur17r[] U8G_SECTION(".progmem.u8g_font_fur17r"); -extern const u8g_fntpgm_uint8_t u8g_font_fur17n[] U8G_SECTION(".progmem.u8g_font_fur17n"); -extern const u8g_fntpgm_uint8_t u8g_font_fur20[] U8G_SECTION(".progmem.u8g_font_fur20"); -extern const u8g_fntpgm_uint8_t u8g_font_fur20r[] U8G_SECTION(".progmem.u8g_font_fur20r"); -extern const u8g_fntpgm_uint8_t u8g_font_fur20n[] U8G_SECTION(".progmem.u8g_font_fur20n"); -extern const u8g_fntpgm_uint8_t u8g_font_fur25[] U8G_SECTION(".progmem.u8g_font_fur25"); -extern const u8g_fntpgm_uint8_t u8g_font_fur25r[] U8G_SECTION(".progmem.u8g_font_fur25r"); -extern const u8g_fntpgm_uint8_t u8g_font_fur25n[] U8G_SECTION(".progmem.u8g_font_fur25n"); -extern const u8g_fntpgm_uint8_t u8g_font_fur30[] U8G_SECTION(".progmem.u8g_font_fur30"); -extern const u8g_fntpgm_uint8_t u8g_font_fur30r[] U8G_SECTION(".progmem.u8g_font_fur30r"); -extern const u8g_fntpgm_uint8_t u8g_font_fur30n[] U8G_SECTION(".progmem.u8g_font_fur30n"); -extern const u8g_fntpgm_uint8_t u8g_font_fur35n[] U8G_SECTION(".progmem.u8g_font_fur35n"); -extern const u8g_fntpgm_uint8_t u8g_font_fur42n[] U8G_SECTION(".progmem.u8g_font_fur42n"); -extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_SECTION(".progmem.u8g_font_fur49n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11[] U8G_FONT_SECTION("u8g_font_fur11"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11r[] U8G_FONT_SECTION("u8g_font_fur11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11n[] U8G_FONT_SECTION("u8g_font_fur11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14[] U8G_FONT_SECTION("u8g_font_fur14"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14r[] U8G_FONT_SECTION("u8g_font_fur14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14n[] U8G_FONT_SECTION("u8g_font_fur14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17[] U8G_FONT_SECTION("u8g_font_fur17"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17r[] U8G_FONT_SECTION("u8g_font_fur17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17n[] U8G_FONT_SECTION("u8g_font_fur17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20[] U8G_FONT_SECTION("u8g_font_fur20"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20r[] U8G_FONT_SECTION("u8g_font_fur20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20n[] U8G_FONT_SECTION("u8g_font_fur20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25[] U8G_FONT_SECTION("u8g_font_fur25"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25r[] U8G_FONT_SECTION("u8g_font_fur25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25n[] U8G_FONT_SECTION("u8g_font_fur25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30[] U8G_FONT_SECTION("u8g_font_fur30"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30r[] U8G_FONT_SECTION("u8g_font_fur30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30n[] U8G_FONT_SECTION("u8g_font_fur30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur35n[] U8G_FONT_SECTION("u8g_font_fur35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur42n[] U8G_FONT_SECTION("u8g_font_fur42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_FONT_SECTION("u8g_font_fur49n"); /* Gentium Bold @@ -1266,29 +1615,29 @@ extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_SECTION(".progmem.u8g_font no char: Full set (codes 32 - 255) */ -extern const u8g_fntpgm_uint8_t u8g_font_gdb11[] U8G_SECTION(".progmem.u8g_font_gdb11"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb12[] U8G_SECTION(".progmem.u8g_font_gdb12"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb14[] U8G_SECTION(".progmem.u8g_font_gdb14"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb17[] U8G_SECTION(".progmem.u8g_font_gdb17"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb20[] U8G_SECTION(".progmem.u8g_font_gdb20"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb25[] U8G_SECTION(".progmem.u8g_font_gdb25"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb30[] U8G_SECTION(".progmem.u8g_font_gdb30"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb11[] U8G_FONT_SECTION("u8g_font_gdb11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12[] U8G_FONT_SECTION("u8g_font_gdb12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14[] U8G_FONT_SECTION("u8g_font_gdb14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17[] U8G_FONT_SECTION("u8g_font_gdb17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20[] U8G_FONT_SECTION("u8g_font_gdb20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25[] U8G_FONT_SECTION("u8g_font_gdb25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30[] U8G_FONT_SECTION("u8g_font_gdb30"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb11r[] U8G_SECTION(".progmem.u8g_font_gdb11r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb12r[] U8G_SECTION(".progmem.u8g_font_gdb12r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb14r[] U8G_SECTION(".progmem.u8g_font_gdb14r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb17r[] U8G_SECTION(".progmem.u8g_font_gdb17r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb20r[] U8G_SECTION(".progmem.u8g_font_gdb20r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb25r[] U8G_SECTION(".progmem.u8g_font_gdb25r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb30r[] U8G_SECTION(".progmem.u8g_font_gdb30r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb11r[] U8G_FONT_SECTION("u8g_font_gdb11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12r[] U8G_FONT_SECTION("u8g_font_gdb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14r[] U8G_FONT_SECTION("u8g_font_gdb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17r[] U8G_FONT_SECTION("u8g_font_gdb17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20r[] U8G_FONT_SECTION("u8g_font_gdb20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25r[] U8G_FONT_SECTION("u8g_font_gdb25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30r[] U8G_FONT_SECTION("u8g_font_gdb30r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb11n[] U8G_SECTION(".progmem.u8g_font_gdb11n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb12n[] U8G_SECTION(".progmem.u8g_font_gdb12n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb14n[] U8G_SECTION(".progmem.u8g_font_gdb14n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb17n[] U8G_SECTION(".progmem.u8g_font_gdb17n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb20n[] U8G_SECTION(".progmem.u8g_font_gdb20n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb25n[] U8G_SECTION(".progmem.u8g_font_gdb25n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_SECTION(".progmem.u8g_font_gdb30n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb11n[] U8G_FONT_SECTION("u8g_font_gdb11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12n[] U8G_FONT_SECTION("u8g_font_gdb12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14n[] U8G_FONT_SECTION("u8g_font_gdb14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17n[] U8G_FONT_SECTION("u8g_font_gdb17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20n[] U8G_FONT_SECTION("u8g_font_gdb20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25n[] U8G_FONT_SECTION("u8g_font_gdb25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_FONT_SECTION("u8g_font_gdb30n"); /* Gentium Regular @@ -1297,35 +1646,35 @@ extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_SECTION(".progmem.u8g_font no char: Full set (codes 32 - 255) */ -extern const u8g_fntpgm_uint8_t u8g_font_gdr9[] U8G_SECTION(".progmem.u8g_font_gdr9"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr10[] U8G_SECTION(".progmem.u8g_font_gdr10"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr11[] U8G_SECTION(".progmem.u8g_font_gdr11"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr12[] U8G_SECTION(".progmem.u8g_font_gdr12"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr14[] U8G_SECTION(".progmem.u8g_font_gdr14"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr17[] U8G_SECTION(".progmem.u8g_font_gdr17"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr20[] U8G_SECTION(".progmem.u8g_font_gdr20"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr25[] U8G_SECTION(".progmem.u8g_font_gdr25"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr30[] U8G_SECTION(".progmem.u8g_font_gdr30"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr9[] U8G_FONT_SECTION("u8g_font_gdr9"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10[] U8G_FONT_SECTION("u8g_font_gdr10"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11[] U8G_FONT_SECTION("u8g_font_gdr11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12[] U8G_FONT_SECTION("u8g_font_gdr12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14[] U8G_FONT_SECTION("u8g_font_gdr14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17[] U8G_FONT_SECTION("u8g_font_gdr17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20[] U8G_FONT_SECTION("u8g_font_gdr20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25[] U8G_FONT_SECTION("u8g_font_gdr25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30[] U8G_FONT_SECTION("u8g_font_gdr30"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr9r[] U8G_SECTION(".progmem.u8g_font_gdr9r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr10r[] U8G_SECTION(".progmem.u8g_font_gdr10r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr11r[] U8G_SECTION(".progmem.u8g_font_gdr11r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr12r[] U8G_SECTION(".progmem.u8g_font_gdr12r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr14r[] U8G_SECTION(".progmem.u8g_font_gdr14r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr17r[] U8G_SECTION(".progmem.u8g_font_gdr17r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr20r[] U8G_SECTION(".progmem.u8g_font_gdr20r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr25r[] U8G_SECTION(".progmem.u8g_font_gdr25r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr30r[] U8G_SECTION(".progmem.u8g_font_gdr30r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr9r[] U8G_FONT_SECTION("u8g_font_gdr9r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10r[] U8G_FONT_SECTION("u8g_font_gdr10r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11r[] U8G_FONT_SECTION("u8g_font_gdr11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12r[] U8G_FONT_SECTION("u8g_font_gdr12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14r[] U8G_FONT_SECTION("u8g_font_gdr14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17r[] U8G_FONT_SECTION("u8g_font_gdr17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20r[] U8G_FONT_SECTION("u8g_font_gdr20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25r[] U8G_FONT_SECTION("u8g_font_gdr25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30r[] U8G_FONT_SECTION("u8g_font_gdr30r"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr9n[] U8G_SECTION(".progmem.u8g_font_gdr9n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr10n[] U8G_SECTION(".progmem.u8g_font_gdr10n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr11n[] U8G_SECTION(".progmem.u8g_font_gdr11n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr12n[] U8G_SECTION(".progmem.u8g_font_gdr12n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr14n[] U8G_SECTION(".progmem.u8g_font_gdr14n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr17n[] U8G_SECTION(".progmem.u8g_font_gdr17n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr20n[] U8G_SECTION(".progmem.u8g_font_gdr20n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr25n[] U8G_SECTION(".progmem.u8g_font_gdr25n"); -extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_SECTION(".progmem.u8g_font_gdr30n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr9n[] U8G_FONT_SECTION("u8g_font_gdr9n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10n[] U8G_FONT_SECTION("u8g_font_gdr10n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11n[] U8G_FONT_SECTION("u8g_font_gdr11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12n[] U8G_FONT_SECTION("u8g_font_gdr12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14n[] U8G_FONT_SECTION("u8g_font_gdr14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17n[] U8G_FONT_SECTION("u8g_font_gdr17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20n[] U8G_FONT_SECTION("u8g_font_gdr20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25n[] U8G_FONT_SECTION("u8g_font_gdr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_FONT_SECTION("u8g_font_gdr30n"); /* Old-Standard Bold @@ -1334,23 +1683,23 @@ extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_SECTION(".progmem.u8g_font no char: Full set (codes 32 - 255) */ -extern const u8g_fntpgm_uint8_t u8g_font_osb18[] U8G_SECTION(".progmem.u8g_font_osb18"); -extern const u8g_fntpgm_uint8_t u8g_font_osb21[] U8G_SECTION(".progmem.u8g_font_osb21"); -extern const u8g_fntpgm_uint8_t u8g_font_osb26[] U8G_SECTION(".progmem.u8g_font_osb26"); -extern const u8g_fntpgm_uint8_t u8g_font_osb29[] U8G_SECTION(".progmem.u8g_font_osb29"); -extern const u8g_fntpgm_uint8_t u8g_font_osb35[] U8G_SECTION(".progmem.u8g_font_osb35"); +extern const u8g_fntpgm_uint8_t u8g_font_osb18[] U8G_FONT_SECTION("u8g_font_osb18"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21[] U8G_FONT_SECTION("u8g_font_osb21"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26[] U8G_FONT_SECTION("u8g_font_osb26"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29[] U8G_FONT_SECTION("u8g_font_osb29"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35[] U8G_FONT_SECTION("u8g_font_osb35"); -extern const u8g_fntpgm_uint8_t u8g_font_osb18r[] U8G_SECTION(".progmem.u8g_font_osb18r"); -extern const u8g_fntpgm_uint8_t u8g_font_osb21r[] U8G_SECTION(".progmem.u8g_font_osb21r"); -extern const u8g_fntpgm_uint8_t u8g_font_osb26r[] U8G_SECTION(".progmem.u8g_font_osb26r"); -extern const u8g_fntpgm_uint8_t u8g_font_osb29r[] U8G_SECTION(".progmem.u8g_font_osb29r"); -extern const u8g_fntpgm_uint8_t u8g_font_osb35r[] U8G_SECTION(".progmem.u8g_font_osb35r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb18r[] U8G_FONT_SECTION("u8g_font_osb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21r[] U8G_FONT_SECTION("u8g_font_osb21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26r[] U8G_FONT_SECTION("u8g_font_osb26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29r[] U8G_FONT_SECTION("u8g_font_osb29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35r[] U8G_FONT_SECTION("u8g_font_osb35r"); -extern const u8g_fntpgm_uint8_t u8g_font_osb18n[] U8G_SECTION(".progmem.u8g_font_osb18n"); -extern const u8g_fntpgm_uint8_t u8g_font_osb21n[] U8G_SECTION(".progmem.u8g_font_osb21n"); -extern const u8g_fntpgm_uint8_t u8g_font_osb26n[] U8G_SECTION(".progmem.u8g_font_osb26n"); -extern const u8g_fntpgm_uint8_t u8g_font_osb29n[] U8G_SECTION(".progmem.u8g_font_osb29n"); -extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_SECTION(".progmem.u8g_font_osb35n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb18n[] U8G_FONT_SECTION("u8g_font_osb18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21n[] U8G_FONT_SECTION("u8g_font_osb21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26n[] U8G_FONT_SECTION("u8g_font_osb26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29n[] U8G_FONT_SECTION("u8g_font_osb29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_FONT_SECTION("u8g_font_osb35n"); /* Old-Standard Regular @@ -1359,245 +1708,266 @@ extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_SECTION(".progmem.u8g_font no char: Full set (codes 32 - 255) */ -extern const u8g_fntpgm_uint8_t u8g_font_osr18[] U8G_SECTION(".progmem.u8g_font_osr18"); -extern const u8g_fntpgm_uint8_t u8g_font_osr21[] U8G_SECTION(".progmem.u8g_font_osr21"); -extern const u8g_fntpgm_uint8_t u8g_font_osr26[] U8G_SECTION(".progmem.u8g_font_osr26"); -extern const u8g_fntpgm_uint8_t u8g_font_osr29[] U8G_SECTION(".progmem.u8g_font_osr29"); -extern const u8g_fntpgm_uint8_t u8g_font_osr35[] U8G_SECTION(".progmem.u8g_font_osr35"); +extern const u8g_fntpgm_uint8_t u8g_font_osr18[] U8G_FONT_SECTION("u8g_font_osr18"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21[] U8G_FONT_SECTION("u8g_font_osr21"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26[] U8G_FONT_SECTION("u8g_font_osr26"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29[] U8G_FONT_SECTION("u8g_font_osr29"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35[] U8G_FONT_SECTION("u8g_font_osr35"); -extern const u8g_fntpgm_uint8_t u8g_font_osr18r[] U8G_SECTION(".progmem.u8g_font_osr18r"); -extern const u8g_fntpgm_uint8_t u8g_font_osr21r[] U8G_SECTION(".progmem.u8g_font_osr21r"); -extern const u8g_fntpgm_uint8_t u8g_font_osr26r[] U8G_SECTION(".progmem.u8g_font_osr26r"); -extern const u8g_fntpgm_uint8_t u8g_font_osr29r[] U8G_SECTION(".progmem.u8g_font_osr29r"); -extern const u8g_fntpgm_uint8_t u8g_font_osr35r[] U8G_SECTION(".progmem.u8g_font_osr35r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr18r[] U8G_FONT_SECTION("u8g_font_osr18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21r[] U8G_FONT_SECTION("u8g_font_osr21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26r[] U8G_FONT_SECTION("u8g_font_osr26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29r[] U8G_FONT_SECTION("u8g_font_osr29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35r[] U8G_FONT_SECTION("u8g_font_osr35r"); -extern const u8g_fntpgm_uint8_t u8g_font_osr18n[] U8G_SECTION(".progmem.u8g_font_osr18n"); -extern const u8g_fntpgm_uint8_t u8g_font_osr21n[] U8G_SECTION(".progmem.u8g_font_osr21n"); -extern const u8g_fntpgm_uint8_t u8g_font_osr26n[] U8G_SECTION(".progmem.u8g_font_osr26n"); -extern const u8g_fntpgm_uint8_t u8g_font_osr29n[] U8G_SECTION(".progmem.u8g_font_osr29n"); -extern const u8g_fntpgm_uint8_t u8g_font_osr35n[] U8G_SECTION(".progmem.u8g_font_osr35n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr18n[] U8G_FONT_SECTION("u8g_font_osr18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21n[] U8G_FONT_SECTION("u8g_font_osr21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26n[] U8G_FONT_SECTION("u8g_font_osr26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29n[] U8G_FONT_SECTION("u8g_font_osr29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35n[] U8G_FONT_SECTION("u8g_font_osr35n"); -//extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_SECTION(".progmem.u8g_font_osr41"); +//extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_FONT_SECTION("u8g_font_osr41"); /* GNU unifont */ -extern const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] U8G_SECTION(".progmem.u8g_font_unifont_18_19"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] U8G_SECTION(".progmem.u8g_font_unifont_72_73"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] U8G_SECTION(".progmem.u8g_font_unifont_67_75"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_76[] U8G_SECTION(".progmem.u8g_font_unifont_76"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_77[] U8G_SECTION(".progmem.u8g_font_unifont_77"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] U8G_SECTION(".progmem.u8g_font_unifont_78_79"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_86[] U8G_SECTION(".progmem.u8g_font_unifont_86"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont[] U8G_SECTION(".progmem.u8g_font_unifont"); -extern const u8g_fntpgm_uint8_t u8g_font_unifontr[] U8G_SECTION(".progmem.u8g_font_unifontr"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] U8G_SECTION(".progmem.u8g_font_unifont_0_8"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] U8G_SECTION(".progmem.u8g_font_unifont_2_3"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] U8G_SECTION(".progmem.u8g_font_unifont_4_5"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] U8G_SECTION(".progmem.u8g_font_unifont_8_9"); -extern const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] U8G_SECTION(".progmem.u8g_font_unifont_12_13"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] U8G_FONT_SECTION("u8g_font_unifont_18_19"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] U8G_FONT_SECTION("u8g_font_unifont_72_73"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] U8G_FONT_SECTION("u8g_font_unifont_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_76[] U8G_FONT_SECTION("u8g_font_unifont_76"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_77[] U8G_FONT_SECTION("u8g_font_unifont_77"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] U8G_FONT_SECTION("u8g_font_unifont_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_86[] U8G_FONT_SECTION("u8g_font_unifont_86"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont[] U8G_FONT_SECTION("u8g_font_unifont"); +extern const u8g_fntpgm_uint8_t u8g_font_unifontr[] U8G_FONT_SECTION("u8g_font_unifontr"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] U8G_FONT_SECTION("u8g_font_unifont_0_8"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] U8G_FONT_SECTION("u8g_font_unifont_2_3"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] U8G_FONT_SECTION("u8g_font_unifont_4_5"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] U8G_FONT_SECTION("u8g_font_unifont_8_9"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] U8G_FONT_SECTION("u8g_font_unifont_12_13"); /* 04b fonts */ -extern const u8g_fntpgm_uint8_t u8g_font_04b_03b[] U8G_SECTION(".progmem.u8g_font_04b_03b"); -extern const u8g_fntpgm_uint8_t u8g_font_04b_03bn[] U8G_SECTION(".progmem.u8g_font_04b_03bn"); -extern const u8g_fntpgm_uint8_t u8g_font_04b_03br[] U8G_SECTION(".progmem.u8g_font_04b_03br"); -extern const u8g_fntpgm_uint8_t u8g_font_04b_03[] U8G_SECTION(".progmem.u8g_font_04b_03"); -extern const u8g_fntpgm_uint8_t u8g_font_04b_03n[] U8G_SECTION(".progmem.u8g_font_04b_03n"); -extern const u8g_fntpgm_uint8_t u8g_font_04b_03r[] U8G_SECTION(".progmem.u8g_font_04b_03r"); -extern const u8g_fntpgm_uint8_t u8g_font_04b_24[] U8G_SECTION(".progmem.u8g_font_04b_24"); -extern const u8g_fntpgm_uint8_t u8g_font_04b_24n[] U8G_SECTION(".progmem.u8g_font_04b_24n"); -extern const u8g_fntpgm_uint8_t u8g_font_04b_24r[] U8G_SECTION(".progmem.u8g_font_04b_24r"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03b[] U8G_FONT_SECTION("u8g_font_04b_03b"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03bn[] U8G_FONT_SECTION("u8g_font_04b_03bn"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03br[] U8G_FONT_SECTION("u8g_font_04b_03br"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03[] U8G_FONT_SECTION("u8g_font_04b_03"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03n[] U8G_FONT_SECTION("u8g_font_04b_03n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03r[] U8G_FONT_SECTION("u8g_font_04b_03r"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24[] U8G_FONT_SECTION("u8g_font_04b_24"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24n[] U8G_FONT_SECTION("u8g_font_04b_24n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24r[] U8G_FONT_SECTION("u8g_font_04b_24r"); /* orgdot fonts */ -extern const u8g_fntpgm_uint8_t u8g_font_orgv01[] U8G_SECTION(".progmem.u8g_font_orgv01"); -extern const u8g_fntpgm_uint8_t u8g_font_orgv01r[] U8G_SECTION(".progmem.u8g_font_orgv01r"); -extern const u8g_fntpgm_uint8_t u8g_font_orgv01n[] U8G_SECTION(".progmem.u8g_font_orgv01n"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01[] U8G_FONT_SECTION("u8g_font_orgv01"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01r[] U8G_FONT_SECTION("u8g_font_orgv01r"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01n[] U8G_FONT_SECTION("u8g_font_orgv01n"); -extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0[] U8G_SECTION(".progmem.u8g_font_fixed_v0"); -extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] U8G_SECTION(".progmem.u8g_font_fixed_v0r"); -extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] U8G_SECTION(".progmem.u8g_font_fixed_v0n"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0[] U8G_FONT_SECTION("u8g_font_fixed_v0"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] U8G_FONT_SECTION("u8g_font_fixed_v0r"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] U8G_FONT_SECTION("u8g_font_fixed_v0n"); -extern const u8g_fntpgm_uint8_t u8g_font_tpssb[] U8G_SECTION(".progmem.u8g_font_tpssb"); -extern const u8g_fntpgm_uint8_t u8g_font_tpssbr[] U8G_SECTION(".progmem.u8g_font_tpssbr"); -extern const u8g_fntpgm_uint8_t u8g_font_tpssbn[] U8G_SECTION(".progmem.u8g_font_tpssbn"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssb[] U8G_FONT_SECTION("u8g_font_tpssb"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbr[] U8G_FONT_SECTION("u8g_font_tpssbr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbn[] U8G_FONT_SECTION("u8g_font_tpssbn"); -extern const u8g_fntpgm_uint8_t u8g_font_tpss[] U8G_SECTION(".progmem.u8g_font_tpss"); -extern const u8g_fntpgm_uint8_t u8g_font_tpssr[] U8G_SECTION(".progmem.u8g_font_tpssr"); -extern const u8g_fntpgm_uint8_t u8g_font_tpssn[] U8G_SECTION(".progmem.u8g_font_tpssn"); +extern const u8g_fntpgm_uint8_t u8g_font_tpss[] U8G_FONT_SECTION("u8g_font_tpss"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssr[] U8G_FONT_SECTION("u8g_font_tpssr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssn[] U8G_FONT_SECTION("u8g_font_tpssn"); /* contributed */ -extern const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] U8G_SECTION(".progmem.u8g_font_freedoomr25n"); -extern const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] U8G_SECTION(".progmem.u8g_font_freedoomr10r"); +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] U8G_FONT_SECTION("u8g_font_freedoomr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] U8G_FONT_SECTION("u8g_font_freedoomr10r"); /* adobe X11 */ -extern const u8g_fntpgm_uint8_t u8g_font_courB08[] U8G_SECTION(".progmem.u8g_font_courB08"); -extern const u8g_fntpgm_uint8_t u8g_font_courB08r[] U8G_SECTION(".progmem.u8g_font_courB08r"); -extern const u8g_fntpgm_uint8_t u8g_font_courB10[] U8G_SECTION(".progmem.u8g_font_courB10"); -extern const u8g_fntpgm_uint8_t u8g_font_courB10r[] U8G_SECTION(".progmem.u8g_font_courB10r"); -extern const u8g_fntpgm_uint8_t u8g_font_courB12[] U8G_SECTION(".progmem.u8g_font_courB12"); -extern const u8g_fntpgm_uint8_t u8g_font_courB12r[] U8G_SECTION(".progmem.u8g_font_courB12r"); -extern const u8g_fntpgm_uint8_t u8g_font_courB14[] U8G_SECTION(".progmem.u8g_font_courB14"); -extern const u8g_fntpgm_uint8_t u8g_font_courB14r[] U8G_SECTION(".progmem.u8g_font_courB14r"); -extern const u8g_fntpgm_uint8_t u8g_font_courB18[] U8G_SECTION(".progmem.u8g_font_courB18"); -extern const u8g_fntpgm_uint8_t u8g_font_courB18r[] U8G_SECTION(".progmem.u8g_font_courB18r"); -extern const u8g_fntpgm_uint8_t u8g_font_courB24[] U8G_SECTION(".progmem.u8g_font_courB24"); -extern const u8g_fntpgm_uint8_t u8g_font_courB24r[] U8G_SECTION(".progmem.u8g_font_courB24r"); -extern const u8g_fntpgm_uint8_t u8g_font_courB24n[] U8G_SECTION(".progmem.u8g_font_courB24n"); +extern const u8g_fntpgm_uint8_t u8g_font_courB08[] U8G_FONT_SECTION("u8g_font_courB08"); +extern const u8g_fntpgm_uint8_t u8g_font_courB08r[] U8G_FONT_SECTION("u8g_font_courB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10[] U8G_FONT_SECTION("u8g_font_courB10"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10r[] U8G_FONT_SECTION("u8g_font_courB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12[] U8G_FONT_SECTION("u8g_font_courB12"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12r[] U8G_FONT_SECTION("u8g_font_courB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14[] U8G_FONT_SECTION("u8g_font_courB14"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14r[] U8G_FONT_SECTION("u8g_font_courB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18[] U8G_FONT_SECTION("u8g_font_courB18"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18r[] U8G_FONT_SECTION("u8g_font_courB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24[] U8G_FONT_SECTION("u8g_font_courB24"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24r[] U8G_FONT_SECTION("u8g_font_courB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24n[] U8G_FONT_SECTION("u8g_font_courB24n"); -extern const u8g_fntpgm_uint8_t u8g_font_courR08[] U8G_SECTION(".progmem.u8g_font_courR08"); -extern const u8g_fntpgm_uint8_t u8g_font_courR08r[] U8G_SECTION(".progmem.u8g_font_courR08r"); -extern const u8g_fntpgm_uint8_t u8g_font_courR10[] U8G_SECTION(".progmem.u8g_font_courR10"); -extern const u8g_fntpgm_uint8_t u8g_font_courR10r[] U8G_SECTION(".progmem.u8g_font_courR10r"); -extern const u8g_fntpgm_uint8_t u8g_font_courR12[] U8G_SECTION(".progmem.u8g_font_courR12"); -extern const u8g_fntpgm_uint8_t u8g_font_courR12r[] U8G_SECTION(".progmem.u8g_font_courR12r"); -extern const u8g_fntpgm_uint8_t u8g_font_courR14[] U8G_SECTION(".progmem.u8g_font_courR14"); -extern const u8g_fntpgm_uint8_t u8g_font_courR14r[] U8G_SECTION(".progmem.u8g_font_courR14r"); -extern const u8g_fntpgm_uint8_t u8g_font_courR18[] U8G_SECTION(".progmem.u8g_font_courR18"); -extern const u8g_fntpgm_uint8_t u8g_font_courR18r[] U8G_SECTION(".progmem.u8g_font_courR18r"); -extern const u8g_fntpgm_uint8_t u8g_font_courR24[] U8G_SECTION(".progmem.u8g_font_courR24"); -extern const u8g_fntpgm_uint8_t u8g_font_courR24r[] U8G_SECTION(".progmem.u8g_font_courR24r"); -extern const u8g_fntpgm_uint8_t u8g_font_courR24n[] U8G_SECTION(".progmem.u8g_font_courR24n"); +extern const u8g_fntpgm_uint8_t u8g_font_courR08[] U8G_FONT_SECTION("u8g_font_courR08"); +extern const u8g_fntpgm_uint8_t u8g_font_courR08r[] U8G_FONT_SECTION("u8g_font_courR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10[] U8G_FONT_SECTION("u8g_font_courR10"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10r[] U8G_FONT_SECTION("u8g_font_courR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12[] U8G_FONT_SECTION("u8g_font_courR12"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12r[] U8G_FONT_SECTION("u8g_font_courR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14[] U8G_FONT_SECTION("u8g_font_courR14"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14r[] U8G_FONT_SECTION("u8g_font_courR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18[] U8G_FONT_SECTION("u8g_font_courR18"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18r[] U8G_FONT_SECTION("u8g_font_courR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24[] U8G_FONT_SECTION("u8g_font_courR24"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24r[] U8G_FONT_SECTION("u8g_font_courR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24n[] U8G_FONT_SECTION("u8g_font_courR24n"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB08[] U8G_SECTION(".progmem.u8g_font_helvB08"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB08r[] U8G_SECTION(".progmem.u8g_font_helvB08r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB10[] U8G_SECTION(".progmem.u8g_font_helvB10"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB10r[] U8G_SECTION(".progmem.u8g_font_helvB10r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB12[] U8G_SECTION(".progmem.u8g_font_helvB12"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB12r[] U8G_SECTION(".progmem.u8g_font_helvB12r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB14[] U8G_SECTION(".progmem.u8g_font_helvB14"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB14r[] U8G_SECTION(".progmem.u8g_font_helvB14r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB18[] U8G_SECTION(".progmem.u8g_font_helvB18"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB18r[] U8G_SECTION(".progmem.u8g_font_helvB18r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB24[] U8G_SECTION(".progmem.u8g_font_helvB24"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB24r[] U8G_SECTION(".progmem.u8g_font_helvB24r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvB24n[] U8G_SECTION(".progmem.u8g_font_helvB24n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB08[] U8G_FONT_SECTION("u8g_font_helvB08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB08r[] U8G_FONT_SECTION("u8g_font_helvB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB08n[] U8G_FONT_SECTION("u8g_font_helvB08n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10[] U8G_FONT_SECTION("u8g_font_helvB10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10r[] U8G_FONT_SECTION("u8g_font_helvB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10n[] U8G_FONT_SECTION("u8g_font_helvB10n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12[] U8G_FONT_SECTION("u8g_font_helvB12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12r[] U8G_FONT_SECTION("u8g_font_helvB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12n[] U8G_FONT_SECTION("u8g_font_helvB12n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14[] U8G_FONT_SECTION("u8g_font_helvB14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14r[] U8G_FONT_SECTION("u8g_font_helvB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14n[] U8G_FONT_SECTION("u8g_font_helvB14n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18[] U8G_FONT_SECTION("u8g_font_helvB18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18r[] U8G_FONT_SECTION("u8g_font_helvB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18n[] U8G_FONT_SECTION("u8g_font_helvB18n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24[] U8G_FONT_SECTION("u8g_font_helvB24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24r[] U8G_FONT_SECTION("u8g_font_helvB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24n[] U8G_FONT_SECTION("u8g_font_helvB24n"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR08[] U8G_SECTION(".progmem.u8g_font_helvR08"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR08r[] U8G_SECTION(".progmem.u8g_font_helvR08r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR10[] U8G_SECTION(".progmem.u8g_font_helvR10"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR10r[] U8G_SECTION(".progmem.u8g_font_helvR10r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR12[] U8G_SECTION(".progmem.u8g_font_helvR12"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR12r[] U8G_SECTION(".progmem.u8g_font_helvR12r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR14[] U8G_SECTION(".progmem.u8g_font_helvR14"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR14r[] U8G_SECTION(".progmem.u8g_font_helvR14r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR18[] U8G_SECTION(".progmem.u8g_font_helvR18"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR18r[] U8G_SECTION(".progmem.u8g_font_helvR18r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR24[] U8G_SECTION(".progmem.u8g_font_helvR24"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR24r[] U8G_SECTION(".progmem.u8g_font_helvR24r"); -extern const u8g_fntpgm_uint8_t u8g_font_helvR24n[] U8G_SECTION(".progmem.u8g_font_helvR24n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR08[] U8G_FONT_SECTION("u8g_font_helvR08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR08r[] U8G_FONT_SECTION("u8g_font_helvR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR08n[] U8G_FONT_SECTION("u8g_font_helvR08n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10[] U8G_FONT_SECTION("u8g_font_helvR10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10r[] U8G_FONT_SECTION("u8g_font_helvR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10n[] U8G_FONT_SECTION("u8g_font_helvR10n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12[] U8G_FONT_SECTION("u8g_font_helvR12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12r[] U8G_FONT_SECTION("u8g_font_helvR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12n[] U8G_FONT_SECTION("u8g_font_helvR12n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14[] U8G_FONT_SECTION("u8g_font_helvR14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14r[] U8G_FONT_SECTION("u8g_font_helvR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14n[] U8G_FONT_SECTION("u8g_font_helvR14n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18[] U8G_FONT_SECTION("u8g_font_helvR18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18r[] U8G_FONT_SECTION("u8g_font_helvR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18n[] U8G_FONT_SECTION("u8g_font_helvR18n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24[] U8G_FONT_SECTION("u8g_font_helvR24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24r[] U8G_FONT_SECTION("u8g_font_helvR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24n[] U8G_FONT_SECTION("u8g_font_helvR24n"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB08[] U8G_SECTION(".progmem.u8g_font_ncenB08"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB08r[] U8G_SECTION(".progmem.u8g_font_ncenB08r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB10[] U8G_SECTION(".progmem.u8g_font_ncenB10"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB10r[] U8G_SECTION(".progmem.u8g_font_ncenB10r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB12[] U8G_SECTION(".progmem.u8g_font_ncenB12"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB12r[] U8G_SECTION(".progmem.u8g_font_ncenB12r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB14[] U8G_SECTION(".progmem.u8g_font_ncenB14"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB14r[] U8G_SECTION(".progmem.u8g_font_ncenB14r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB18[] U8G_SECTION(".progmem.u8g_font_ncenB18"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB18r[] U8G_SECTION(".progmem.u8g_font_ncenB18r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB24[] U8G_SECTION(".progmem.u8g_font_ncenB24"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB24r[] U8G_SECTION(".progmem.u8g_font_ncenB24r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenB24n[] U8G_SECTION(".progmem.u8g_font_ncenB24n"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08[] U8G_FONT_SECTION("u8g_font_ncenB08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08r[] U8G_FONT_SECTION("u8g_font_ncenB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10[] U8G_FONT_SECTION("u8g_font_ncenB10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10r[] U8G_FONT_SECTION("u8g_font_ncenB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12[] U8G_FONT_SECTION("u8g_font_ncenB12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12r[] U8G_FONT_SECTION("u8g_font_ncenB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14[] U8G_FONT_SECTION("u8g_font_ncenB14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14r[] U8G_FONT_SECTION("u8g_font_ncenB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18[] U8G_FONT_SECTION("u8g_font_ncenB18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18r[] U8G_FONT_SECTION("u8g_font_ncenB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24[] U8G_FONT_SECTION("u8g_font_ncenB24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24r[] U8G_FONT_SECTION("u8g_font_ncenB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24n[] U8G_FONT_SECTION("u8g_font_ncenB24n"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR08[] U8G_SECTION(".progmem.u8g_font_ncenR08"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR08r[] U8G_SECTION(".progmem.u8g_font_ncenR08r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR10[] U8G_SECTION(".progmem.u8g_font_ncenR10"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR10r[] U8G_SECTION(".progmem.u8g_font_ncenR10r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR12[] U8G_SECTION(".progmem.u8g_font_ncenR12"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR12r[] U8G_SECTION(".progmem.u8g_font_ncenR12r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR14[] U8G_SECTION(".progmem.u8g_font_ncenR14"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR14r[] U8G_SECTION(".progmem.u8g_font_ncenR14r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR18[] U8G_SECTION(".progmem.u8g_font_ncenR18"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR18r[] U8G_SECTION(".progmem.u8g_font_ncenR18r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR24[] U8G_SECTION(".progmem.u8g_font_ncenR24"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR24r[] U8G_SECTION(".progmem.u8g_font_ncenR24r"); -extern const u8g_fntpgm_uint8_t u8g_font_ncenR24n[] U8G_SECTION(".progmem.u8g_font_ncenR24n"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08[] U8G_FONT_SECTION("u8g_font_ncenR08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08r[] U8G_FONT_SECTION("u8g_font_ncenR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10[] U8G_FONT_SECTION("u8g_font_ncenR10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10r[] U8G_FONT_SECTION("u8g_font_ncenR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12[] U8G_FONT_SECTION("u8g_font_ncenR12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12r[] U8G_FONT_SECTION("u8g_font_ncenR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14[] U8G_FONT_SECTION("u8g_font_ncenR14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14r[] U8G_FONT_SECTION("u8g_font_ncenR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18[] U8G_FONT_SECTION("u8g_font_ncenR18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18r[] U8G_FONT_SECTION("u8g_font_ncenR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24[] U8G_FONT_SECTION("u8g_font_ncenR24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24r[] U8G_FONT_SECTION("u8g_font_ncenR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24n[] U8G_FONT_SECTION("u8g_font_ncenR24n"); -extern const u8g_fntpgm_uint8_t u8g_font_symb08[] U8G_SECTION(".progmem.u8g_font_symb08"); -extern const u8g_fntpgm_uint8_t u8g_font_symb08r[] U8G_SECTION(".progmem.u8g_font_symb08r"); -extern const u8g_fntpgm_uint8_t u8g_font_symb10[] U8G_SECTION(".progmem.u8g_font_symb10"); -extern const u8g_fntpgm_uint8_t u8g_font_symb10r[] U8G_SECTION(".progmem.u8g_font_symb10r"); -extern const u8g_fntpgm_uint8_t u8g_font_symb12[] U8G_SECTION(".progmem.u8g_font_symb12"); -extern const u8g_fntpgm_uint8_t u8g_font_symb12r[] U8G_SECTION(".progmem.u8g_font_symb12r"); -extern const u8g_fntpgm_uint8_t u8g_font_symb14[] U8G_SECTION(".progmem.u8g_font_symb14"); -extern const u8g_fntpgm_uint8_t u8g_font_symb14r[] U8G_SECTION(".progmem.u8g_font_symb14r"); -extern const u8g_fntpgm_uint8_t u8g_font_symb18[] U8G_SECTION(".progmem.u8g_font_symb18"); -extern const u8g_fntpgm_uint8_t u8g_font_symb18r[] U8G_SECTION(".progmem.u8g_font_symb18r"); -extern const u8g_fntpgm_uint8_t u8g_font_symb24[] U8G_SECTION(".progmem.u8g_font_symb24"); -extern const u8g_fntpgm_uint8_t u8g_font_symb24r[] U8G_SECTION(".progmem.u8g_font_symb24r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb08[] U8G_FONT_SECTION("u8g_font_symb08"); +extern const u8g_fntpgm_uint8_t u8g_font_symb08r[] U8G_FONT_SECTION("u8g_font_symb08r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10[] U8G_FONT_SECTION("u8g_font_symb10"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10r[] U8G_FONT_SECTION("u8g_font_symb10r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12[] U8G_FONT_SECTION("u8g_font_symb12"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12r[] U8G_FONT_SECTION("u8g_font_symb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14[] U8G_FONT_SECTION("u8g_font_symb14"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14r[] U8G_FONT_SECTION("u8g_font_symb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18[] U8G_FONT_SECTION("u8g_font_symb18"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18r[] U8G_FONT_SECTION("u8g_font_symb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24[] U8G_FONT_SECTION("u8g_font_symb24"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24r[] U8G_FONT_SECTION("u8g_font_symb24r"); -extern const u8g_fntpgm_uint8_t u8g_font_timB08[] U8G_SECTION(".progmem.u8g_font_timB08"); -extern const u8g_fntpgm_uint8_t u8g_font_timB08r[] U8G_SECTION(".progmem.u8g_font_timB08r"); -extern const u8g_fntpgm_uint8_t u8g_font_timB10[] U8G_SECTION(".progmem.u8g_font_timB10"); -extern const u8g_fntpgm_uint8_t u8g_font_timB10r[] U8G_SECTION(".progmem.u8g_font_timB10r"); -extern const u8g_fntpgm_uint8_t u8g_font_timB12[] U8G_SECTION(".progmem.u8g_font_timB12"); -extern const u8g_fntpgm_uint8_t u8g_font_timB12r[] U8G_SECTION(".progmem.u8g_font_timB12r"); -extern const u8g_fntpgm_uint8_t u8g_font_timB14[] U8G_SECTION(".progmem.u8g_font_timB14"); -extern const u8g_fntpgm_uint8_t u8g_font_timB14r[] U8G_SECTION(".progmem.u8g_font_timB14r"); -extern const u8g_fntpgm_uint8_t u8g_font_timB18[] U8G_SECTION(".progmem.u8g_font_timB18"); -extern const u8g_fntpgm_uint8_t u8g_font_timB18r[] U8G_SECTION(".progmem.u8g_font_timB18r"); -extern const u8g_fntpgm_uint8_t u8g_font_timB24[] U8G_SECTION(".progmem.u8g_font_timB24"); -extern const u8g_fntpgm_uint8_t u8g_font_timB24r[] U8G_SECTION(".progmem.u8g_font_timB24r"); -extern const u8g_fntpgm_uint8_t u8g_font_timB24n[] U8G_SECTION(".progmem.u8g_font_timB24n"); +extern const u8g_fntpgm_uint8_t u8g_font_timB08[] U8G_FONT_SECTION("u8g_font_timB08"); +extern const u8g_fntpgm_uint8_t u8g_font_timB08r[] U8G_FONT_SECTION("u8g_font_timB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10[] U8G_FONT_SECTION("u8g_font_timB10"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10r[] U8G_FONT_SECTION("u8g_font_timB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12[] U8G_FONT_SECTION("u8g_font_timB12"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12r[] U8G_FONT_SECTION("u8g_font_timB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14[] U8G_FONT_SECTION("u8g_font_timB14"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14r[] U8G_FONT_SECTION("u8g_font_timB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18[] U8G_FONT_SECTION("u8g_font_timB18"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18r[] U8G_FONT_SECTION("u8g_font_timB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24[] U8G_FONT_SECTION("u8g_font_timB24"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24r[] U8G_FONT_SECTION("u8g_font_timB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24n[] U8G_FONT_SECTION("u8g_font_timB24n"); -extern const u8g_fntpgm_uint8_t u8g_font_timR08[] U8G_SECTION(".progmem.u8g_font_timR08"); -extern const u8g_fntpgm_uint8_t u8g_font_timR08r[] U8G_SECTION(".progmem.u8g_font_timR08r"); -extern const u8g_fntpgm_uint8_t u8g_font_timR10[] U8G_SECTION(".progmem.u8g_font_timR10"); -extern const u8g_fntpgm_uint8_t u8g_font_timR10r[] U8G_SECTION(".progmem.u8g_font_timR10r"); -extern const u8g_fntpgm_uint8_t u8g_font_timR12[] U8G_SECTION(".progmem.u8g_font_timR12"); -extern const u8g_fntpgm_uint8_t u8g_font_timR12r[] U8G_SECTION(".progmem.u8g_font_timR12r"); -extern const u8g_fntpgm_uint8_t u8g_font_timR14[] U8G_SECTION(".progmem.u8g_font_timR14"); -extern const u8g_fntpgm_uint8_t u8g_font_timR14r[] U8G_SECTION(".progmem.u8g_font_timR14r"); -extern const u8g_fntpgm_uint8_t u8g_font_timR18[] U8G_SECTION(".progmem.u8g_font_timR18"); -extern const u8g_fntpgm_uint8_t u8g_font_timR18r[] U8G_SECTION(".progmem.u8g_font_timR18r"); -extern const u8g_fntpgm_uint8_t u8g_font_timR24[] U8G_SECTION(".progmem.u8g_font_timR24"); -extern const u8g_fntpgm_uint8_t u8g_font_timR24r[] U8G_SECTION(".progmem.u8g_font_timR24r"); -extern const u8g_fntpgm_uint8_t u8g_font_timR24n[] U8G_SECTION(".progmem.u8g_font_timR24n"); +extern const u8g_fntpgm_uint8_t u8g_font_timR08[] U8G_FONT_SECTION("u8g_font_timR08"); +extern const u8g_fntpgm_uint8_t u8g_font_timR08r[] U8G_FONT_SECTION("u8g_font_timR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10[] U8G_FONT_SECTION("u8g_font_timR10"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10r[] U8G_FONT_SECTION("u8g_font_timR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12[] U8G_FONT_SECTION("u8g_font_timR12"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12r[] U8G_FONT_SECTION("u8g_font_timR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14[] U8G_FONT_SECTION("u8g_font_timR14"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14r[] U8G_FONT_SECTION("u8g_font_timR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18[] U8G_FONT_SECTION("u8g_font_timR18"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18r[] U8G_FONT_SECTION("u8g_font_timR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24[] U8G_FONT_SECTION("u8g_font_timR24"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24r[] U8G_FONT_SECTION("u8g_font_timR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24n[] U8G_FONT_SECTION("u8g_font_timR24n"); /* fontstruct */ -extern const u8g_fntpgm_uint8_t u8g_font_p01type[] U8G_SECTION(".progmem.u8g_font_p01type"); -extern const u8g_fntpgm_uint8_t u8g_font_p01typer[] U8G_SECTION(".progmem.u8g_font_p01typer"); -extern const u8g_fntpgm_uint8_t u8g_font_p01typen[] U8G_SECTION(".progmem.u8g_font_p01typen"); +extern const u8g_fntpgm_uint8_t u8g_font_p01type[] U8G_FONT_SECTION("u8g_font_p01type"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typer[] U8G_FONT_SECTION("u8g_font_p01typer"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typen[] U8G_FONT_SECTION("u8g_font_p01typen"); -extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternate"); -extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternater"); -extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternaten"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] U8G_FONT_SECTION("u8g_font_lucasfont_alternate"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] U8G_FONT_SECTION("u8g_font_lucasfont_alternater"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] U8G_FONT_SECTION("u8g_font_lucasfont_alternaten"); -//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfont[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfont"); -//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfontr[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfontr"); -//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfontn[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfontn"); +extern const u8g_fntpgm_uint8_t u8g_font_chikita[] U8G_FONT_SECTION("u8g_font_chikita"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitar[] U8G_FONT_SECTION("u8g_font_chikitar"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitan[] U8G_FONT_SECTION("u8g_font_chikitan"); -extern const u8g_fntpgm_uint8_t u8g_font_chikita[] U8G_SECTION(".progmem.u8g_font_chikita"); -extern const u8g_fntpgm_uint8_t u8g_font_chikitar[] U8G_SECTION(".progmem.u8g_font_chikitar"); -extern const u8g_fntpgm_uint8_t u8g_font_chikitan[] U8G_SECTION(".progmem.u8g_font_chikitan"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] U8G_FONT_SECTION("u8g_font_pixelle_micro"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] U8G_FONT_SECTION("u8g_font_pixelle_micror"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] U8G_FONT_SECTION("u8g_font_pixelle_micron"); -extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] U8G_SECTION(".progmem.u8g_font_pixelle_micro"); -extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] U8G_SECTION(".progmem.u8g_font_pixelle_micror"); -extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] U8G_SECTION(".progmem.u8g_font_pixelle_micron"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_square[] U8G_FONT_SECTION("u8g_font_trixel_square"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] U8G_FONT_SECTION("u8g_font_trixel_squarer"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] U8G_FONT_SECTION("u8g_font_trixel_squaren"); -extern const u8g_fntpgm_uint8_t u8g_font_trixel_square[] U8G_SECTION(".progmem.u8g_font_trixel_square"); -extern const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] U8G_SECTION(".progmem.u8g_font_trixel_squarer"); -extern const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] U8G_SECTION(".progmem.u8g_font_trixel_squaren"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] U8G_FONT_SECTION("u8g_font_robot_de_niro"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] U8G_FONT_SECTION("u8g_font_robot_de_niror"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] U8G_FONT_SECTION("u8g_font_robot_de_niron"); -extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] U8G_SECTION(".progmem.u8g_font_robot_de_niro"); -extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] U8G_SECTION(".progmem.u8g_font_robot_de_niror"); -extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] U8G_SECTION(".progmem.u8g_font_robot_de_niron"); +extern const u8g_fntpgm_uint8_t u8g_font_baby[] U8G_FONT_SECTION("u8g_font_baby"); +extern const u8g_fntpgm_uint8_t u8g_font_babyr[] U8G_FONT_SECTION("u8g_font_babyr"); +extern const u8g_fntpgm_uint8_t u8g_font_babyn[] U8G_FONT_SECTION("u8g_font_babyn"); -extern const u8g_fntpgm_uint8_t u8g_font_baby[] U8G_SECTION(".progmem.u8g_font_baby"); -extern const u8g_fntpgm_uint8_t u8g_font_babyr[] U8G_SECTION(".progmem.u8g_font_babyr"); -extern const u8g_fntpgm_uint8_t u8g_font_babyn[] U8G_SECTION(".progmem.u8g_font_babyn"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07[] U8G_FONT_SECTION("u8g_font_blipfest_07"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] U8G_FONT_SECTION("u8g_font_blipfest_07r"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] U8G_FONT_SECTION("u8g_font_blipfest_07n"); -extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07[] U8G_SECTION(".progmem.u8g_font_blipfest_07"); -extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] U8G_SECTION(".progmem.u8g_font_blipfest_07r"); -extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] U8G_SECTION(".progmem.u8g_font_blipfest_07n"); +/* profont */ + +extern const u8g_fntpgm_uint8_t u8g_font_profont10[] U8G_FONT_SECTION("u8g_font_profont10"); +extern const u8g_fntpgm_uint8_t u8g_font_profont10r[] U8G_FONT_SECTION("u8g_font_profont10r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont11[] U8G_FONT_SECTION("u8g_font_profont11"); +extern const u8g_fntpgm_uint8_t u8g_font_profont11r[] U8G_FONT_SECTION("u8g_font_profont11r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont12[] U8G_FONT_SECTION("u8g_font_profont12"); +extern const u8g_fntpgm_uint8_t u8g_font_profont12r[] U8G_FONT_SECTION("u8g_font_profont12r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont15[] U8G_FONT_SECTION("u8g_font_profont15"); +extern const u8g_fntpgm_uint8_t u8g_font_profont15r[] U8G_FONT_SECTION("u8g_font_profont15r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont17[] U8G_FONT_SECTION("u8g_font_profont17"); +extern const u8g_fntpgm_uint8_t u8g_font_profont17r[] U8G_FONT_SECTION("u8g_font_profont17r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont22[] U8G_FONT_SECTION("u8g_font_profont22"); +extern const u8g_fntpgm_uint8_t u8g_font_profont22r[] U8G_FONT_SECTION("u8g_font_profont22r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont29[] U8G_FONT_SECTION("u8g_font_profont29"); +extern const u8g_fntpgm_uint8_t u8g_font_profont29r[] U8G_FONT_SECTION("u8g_font_profont29r"); -extern const u8g_fntpgm_uint8_t u8g_font_6x10_marlin[] U8G_SECTION(".progmem.u8g_font_6x10_marlin"); -extern const u8g_fntpgm_uint8_t u8g_font_6x9[] U8G_SECTION(".progmem.u8g_font_6x9"); #ifdef __cplusplus } diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_clip.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_clip.c index 71abef2e71..1ca223e431 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_clip.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_clip.c @@ -50,7 +50,7 @@ uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) However, this is slower than a decision tree version: static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) - Also suprising is, that he the macro implementation is slower than the inlined version. + Also suprising is, that the macro implementation is slower than the inlined version. The decision tree is based on the expansion of the truth table. @@ -59,7 +59,7 @@ #include "u8g.h" #ifdef __GNUC__ -#define U8G_ALWAYS_INLINE __attribute__((always_inline)) +#define U8G_ALWAYS_INLINE __inline__ __attribute__((always_inline)) #else #define U8G_ALWAYS_INLINE #endif @@ -94,8 +94,8 @@ static uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uin #define U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1) ((uint8_t)( (v0) <= (a1) ) ? ( ( (v1) >= (a0) ) ? ( 1 ) : ( (v0) > (v1) ) ) : ( ( (v1) >= (a0) ) ? ( (v0) > (v1) ) : ( 0 ) )) -static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) U8G_ALWAYS_INLINE; -static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) +//static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) U8G_ALWAYS_INLINE; +static uint8_t U8G_ALWAYS_INLINE u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) { /* surprisingly the macro leads to larger code */ /* return U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1); */ diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api.c index 2dd49b1260..0201808d71 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api.c @@ -36,9 +36,9 @@ #include "u8g.h" -uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev) +uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev, uint8_t clk_cycle_time) { - return dev->com_fn(u8g, U8G_COM_MSG_INIT, 0, NULL); + return dev->com_fn(u8g, U8G_COM_MSG_INIT, clk_cycle_time, NULL); } void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev) diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_attiny85_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_attiny85_hw_spi.c new file mode 100644 index 0000000000..9d0191eae5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_attiny85_hw_spi.c @@ -0,0 +1,160 @@ +/* + + u8g_arduino_ATtiny85_std_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +// Uses code from tinySPI Written by Nick Gammon +// March 2013 + +// ATMEL ATTINY45 / ARDUINO pin mappings +// +// +-\/-+ +// RESET Ain0 (D 5) PB5 1| |8 Vcc +// CLK1 Ain3 (D 3) PB3 2| |7 PB2 (D 2) Ain1 SCK / USCK / SCL +// CLK0 Ain2 (D 4) PB4 3| |6 PB1 (D 1) pwm1 MISO / DO +// GND 4| |5 PB0 (D 0) pwm0 MOSI / DI / SDA +// +----+ + + +#include "u8g.h" + + +#if defined(ARDUINO) && defined(__AVR_ATtiny85__) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +const byte DI = 0; // D0, pin 5 Data In +const byte DO = 1; // D1, pin 6 Data Out (this is *not* MOSI) +const byte USCK = 2; // D2, pin 7 Universal Serial Interface clock + +uint8_t u8g_arduino_ATtiny85_spi_out(uint8_t val) +{ + USIDR = val; // byte to output + USISR = _BV (USIOIF); // clear Counter Overflow Interrupt Flag, set count to zero + do + { + USICR = _BV (USIWM0) // 3-wire mode + | _BV (USICS1) | _BV (USICLK) // Software clock strobe + | _BV (USITC); // Toggle Clock Port Pin + } + while ((USISR & _BV (USIOIF)) == 0); // until Counter Overflow Interrupt Flag set + + return USIDR; // return read data +} + +uint8_t u8g_com_arduino_ATtiny85_std_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); // ensure SS stays high until needed + pinMode (USCK, OUTPUT); + pinMode (DO, OUTPUT); + pinMode (u8g->pin_list[U8G_PI_CS], OUTPUT); + pinMode (u8g->pin_list[U8G_PI_A0], OUTPUT); + USICR = _BV (USIWM0); // 3-wire mode + u8g_MicroDelay(); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + u8g_MicroDelay(); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + u8g_MicroDelay(); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_arduino_ATtiny85_spi_out(arg_val); + u8g_MicroDelay(); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_ATtiny85_spi_out(*ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_ATtiny85_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val); + u8g_MicroDelay(); + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_ATtiny85_std_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c index 91a32e6f0c..57d4410af1 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c @@ -49,6 +49,12 @@ u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + */ #include "u8g.h" @@ -114,7 +120,8 @@ static void u8g_com_arduino_fast_parallel_init(u8g_t *u8g) u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); } -void u8g_com_arduino_fast_write_data_pin(uint8_t pin, uint8_t val) +/* atomic protection must be done by calling function */ +static void u8g_com_arduino_fast_write_data_pin(uint8_t pin, uint8_t val) { if ( val != 0 ) *u8g_data_port[pin] |= u8g_data_mask[pin]; @@ -125,6 +132,7 @@ void u8g_com_arduino_fast_write_data_pin(uint8_t pin, uint8_t val) void u8g_com_arduino_fast_parallel_write(u8g_t *u8g, uint8_t val) { + U8G_ATOMIC_START(); u8g_com_arduino_fast_write_data_pin( 0, val&1 ); val >>= 1; u8g_com_arduino_fast_write_data_pin( 1, val&1 ); @@ -142,6 +150,7 @@ void u8g_com_arduino_fast_parallel_write(u8g_t *u8g, uint8_t val) val >>= 1; u8g_com_arduino_fast_write_data_pin( 7, val&1 ); val >>= 1; + U8G_ATOMIC_END(); /* EN cycle time must be 1 micro second */ u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c index 7d7f91000c..3c0d34a48c 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c @@ -30,7 +30,99 @@ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SPI Clock Cycle Type + SSD1351 50ns 20 MHz + SSD1322 300ns 3.3 MHz + SSD1327 300ns + SSD1306 300ns + ST7565 400ns 2.5 MHz + ST7920 400ns + + Arduino DUE + + PA25 MISO + PA26 MOSI 75 + PA27 SCLK 76 + + +typedef struct { + WoReg SPI_CR; (Spi Offset: 0x00) Control Register + RwReg SPI_MR; (Spi Offset: 0x04) Mode Register + RoReg SPI_RDR; (Spi Offset: 0x08) Receive Data Register + WoReg SPI_TDR; (Spi Offset: 0x0C) Transmit Data Register + RoReg SPI_SR; (Spi Offset: 0x10) Status Register + WoReg SPI_IER; (Spi Offset: 0x14) Interrupt Enable Register + WoReg SPI_IDR; (Spi Offset: 0x18) Interrupt Disable Register + RoReg SPI_IMR; (Spi Offset: 0x1C) Interrupt Mask Register + RoReg Reserved1[4]; + RwReg SPI_CSR[4]; (Spi Offset: 0x30) Chip Select Register + RoReg Reserved2[41]; + RwReg SPI_WPMR; (Spi Offset: 0xE4) Write Protection Control Register + RoReg SPI_WPSR; (Spi Offset: 0xE8) Write Protection Status Register +} Spi; + + Power Management Controller (PMC) + arduino-1.5.2/hardware/arduino/sam/system/CMSIS/Device/ATMEL/sam3xa/include/instance/instance_pmc.h + - enable PIO + + REG_PMC_PCER0 = 1UL << ID_PIOA + - enable SPI + REG_PMC_PCER0 = 1UL << ID_SPI0 + + + - enable PIOA and SPI0 + REG_PMC_PCER0 = (1UL << ID_PIOA) | (1UL << ID_SPI0); + + Parallel Input/Output Controller (PIO) + arduino-1.5.2/hardware/arduino/sam/system/CMSIS/Device/ATMEL/sam3xa/include/instance/instance_pioa.h + - enable special function of the pin: disable PIO on A26 and A27: + REG_PIOA_PDR = 0x0c000000 + PIOA->PIO_PDR = 0x0c000000 + + SPI + SPI0->SPI_CR = SPI_CR_SPIDIS + SPI0->SPI_CR = SPI_CR_SWRST ; + SPI0->SPI_CR = SPI_CR_SWRST ; + SPI0->SPI_CR = SPI_CR_SPIEN + + Bit 0: Master Mode = 1 (active) + Bit 1: Peripheral Select = 0 (fixed) + Bit 2: Chip Select Decode Mode = 1 (4 to 16) + Bit 4: Mode Fault Detection = 1 (disabled) + Bit 5: Wait Data Read = 0 (disabled) + Bit 7: Loop Back Mode = 0 (disabled) + Bit 16-19: Peripheral Chip Select = 0 (chip select 0) + SPI0->SPI_MR = SPI_MR_MSTR | SPI_MR_PCSDEC | SPI_MR_MODFDIS + + Bit 0: Clock Polarity = 0 + Bit 1: Clock Phase = 0 + Bit 4-7: Bits = 0 (8 Bit) + Bit 8-15: SCBR = 1 + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(x) Serial Baud Rate + SCBR / 84000000 > 50 / 1000000000 + SCBR / 84 > 5 / 100 + SCBR > 50 *84 / 1000 --> SCBR=5 + SCBR > 300*84 / 1000 --> SCBR=26 + SCBR > 400*84 / 1000 --> SCBR=34 + + Arduino Due test code: + REG_PMC_PCER0 = (1UL << ID_PIOA) | (1UL << ID_SPI0); + REG_PIOA_PDR = 0x0c000000; + SPI0->SPI_CR = SPI_CR_SPIDIS; + SPI0->SPI_CR = SPI_CR_SWRST; + SPI0->SPI_CR = SPI_CR_SWRST; + SPI0->SPI_CR = SPI_CR_SPIEN; + SPI0->SPI_MR = SPI_MR_MSTR | SPI_MR_PCSDEC | SPI_MR_MODFDIS; + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(30); + + for(;;) + { + while( (SPI0->SPI_SR & SPI_SR_TDRE) == 0 ) + ; + SPI0->SPI_TDR = 0x050; + } */ @@ -39,6 +131,17 @@ #if defined(ARDUINO) #if defined(__AVR__) +#define U8G_ARDUINO_ATMEGA_HW_SPI +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ARDUINO_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ARDUINO_ATMEGA_HW_SPI +#endif +#endif + +#if defined(U8G_ARDUINO_ATMEGA_HW_SPI) #include #include @@ -115,11 +218,17 @@ uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void 1 1 fclk/128 */ SPCR = 0; - SPCR = (1< + +/* use Arduino pin definitions */ +#define PIN_SCK SCK +#define PIN_MISO MISO +#define PIN_MOSI MOSI +#define PIN_CS SS + + +static uint8_t u8g_spi_out(uint8_t data) +{ + /* wait until tx register is empty */ + while( (SPI0->SPI_SR & SPI_SR_TDRE) == 0 ) + ; + /* send data */ + SPI0->SPI_TDR = (uint32_t)data; + return data; +} + + +uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + + /* Arduino Due specific code */ + + /* enable PIOA and SPI0 */ + REG_PMC_PCER0 = (1UL << ID_PIOA) | (1UL << ID_SPI0); + + /* disable PIO on A26 and A27 */ + REG_PIOA_PDR = 0x0c000000; + + /* reset SPI0 (from sam lib) */ + SPI0->SPI_CR = SPI_CR_SPIDIS; + SPI0->SPI_CR = SPI_CR_SWRST; + SPI0->SPI_CR = SPI_CR_SWRST; + SPI0->SPI_CR = SPI_CR_SPIEN; + u8g_MicroDelay(); + + /* master mode, no fault detection, chip select 0 */ + SPI0->SPI_MR = SPI_MR_MSTR | SPI_MR_PCSDEC | SPI_MR_MODFDIS; + + /* Polarity, Phase, 8 Bit data transfer, baud rate */ + /* x * 1000 / 84 --> clock cycle in ns + 5 * 1000 / 84 = 58 ns + SCBR > 50 *84 / 1000 --> SCBR=5 + SCBR > 300*84 / 1000 --> SCBR=26 + SCBR > 400*84 / 1000 --> SCBR=34 + */ + + if ( arg_val <= U8G_SPI_CLK_CYCLE_50NS ) + { + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(5) | 1; + } + else if ( arg_val <= U8G_SPI_CLK_CYCLE_300NS ) + { + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(26) | 1; + } + else if ( arg_val <= U8G_SPI_CLK_CYCLE_400NS ) + { + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(34) | 1; + } + else + { + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(84) | 1; + } + + u8g_MicroDelay(); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val); + u8g_MicroDelay(); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_MicroDelay(); /* this delay is required to avoid that the display is switched off too early --> DOGS102 with DUE */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + u8g_MicroDelay(); + } + else + { + /* enable */ + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + u8g_MicroDelay(); + } + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_spi_out(arg_val); + u8g_MicroDelay(); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_spi_out(*ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + + + +#else /* U8G_ARDUINO_ATMEGA_HW_SPI */ + +#endif /* U8G_ARDUINO_ATMEGA_HW_SPI */ #else /* ARDUINO */ diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_usart_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_usart_spi.c new file mode 100644 index 0000000000..27fd8d01c9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_usart_spi.c @@ -0,0 +1,159 @@ +/* + + u8g_com_arduino_hw_usart_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SPI Clock Cycle Type + + SSD1351 50ns 20 MHz + SSD1322 300ns 3.3 MHz + SSD1327 300ns + SSD1306 300ns + ST7565 400ns 2.5 MHz + ST7920 400ns + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if defined(__AVR_ATmega32U4__ ) + +#include +#include + +#if ARDUINO < 100 +#include +#else +#include +#endif + + + +static uint8_t u8g_usart_spi_out(uint8_t data) +{ + /* send data */ + UDR1 = data; + /* wait for empty transmit buffer */ + while(!(UCSR1A & (1 << UDRE1))); + + return UDR1; +} + + +uint8_t u8g_com_arduino_hw_usart_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_INIT: + /* SCK is already an output as we overwrite TXLED */ + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + + // Init interface at 2MHz + UBRR1 = 0x00; + UCSR1C = (1 << UMSEL11) | (1 << UMSEL10); + UCSR1B = (1 << TXEN1); + UBRR1 = 3; + + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_usart_spi_out(arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_usart_spi_out(*ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_usart_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +/* #elif defined(__18CXX) || defined(__PIC32MX) */ +/* #elif defined(__arm__) // Arduino Due, maybe we should better check for __SAM3X8E__ */ + +#else /* __AVR_ATmega32U4__ */ + +#endif /* __AVR_ATmega32U4__ */ + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_hw_usart_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c index 49038c36c8..4edb30a464 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c @@ -48,6 +48,12 @@ u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + Update for ATOMIC operation done (01 Jun 2013) + + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); */ @@ -97,17 +103,23 @@ static void u8g_com_arduino_no_en_parallel_init(u8g_t *u8g) u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); } -void u8g_com_arduino_no_en_write_data_pin(uint8_t pin, uint8_t val) +/* No atomic protcetion. This is done by caller */ +static void u8g_com_arduino_no_en_write_data_pin(uint8_t pin, uint8_t val) { if ( val != 0 ) - *u8g_data_port[pin] |= u8g_data_mask[pin]; + { + *u8g_data_port[pin] |= u8g_data_mask[pin]; + } else + { *u8g_data_port[pin] &= ~u8g_data_mask[pin]; + } } void u8g_com_arduino_no_en_parallel_write(u8g_t *u8g, uint8_t val) { + U8G_ATOMIC_START(); u8g_com_arduino_no_en_write_data_pin( 0, val&1 ); val >>= 1; u8g_com_arduino_no_en_write_data_pin( 1, val&1 ); @@ -125,6 +137,7 @@ void u8g_com_arduino_no_en_parallel_write(u8g_t *u8g, uint8_t val) val >>= 1; u8g_com_arduino_no_en_write_data_pin( 7, val&1 ); val >>= 1; + U8G_ATOMIC_END(); /* EN cycle time must be 1 micro second, digitalWrite is slow enough to do this */ if ( u8g->pin_list[U8G_PI_CS_STATE] == 1 ) diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_parallel.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_parallel.c index a73bc0dbee..d5d5dd7557 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_parallel.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_parallel.c @@ -1,6 +1,6 @@ /* - u8g_arduino_parallel.c + u8g_com_arduino_parallel.c Universal 8bit Graphics Library @@ -87,13 +87,10 @@ void u8g_com_arduino_parallel_write(u8g_t *u8g, uint8_t val) u8g_com_arduino_digital_write(u8g, U8G_PI_D7, val&1); /* EN cycle time must be 1 micro second, digitalWrite is slow enough to do this */ - //u8g_Delay(1); u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); - //u8g_Delay(1); u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); u8g_10MicroDelay(); /* ST7920 commands: 72us */ - //u8g_Delay(2); } diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c index cfaf71f9fa..64a8229e12 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c @@ -42,6 +42,13 @@ u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + */ #include "u8g.h" @@ -80,8 +87,10 @@ uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, v #ifdef UCSR0B UCSR0B = 0; // disable USART 0 #endif + U8G_ATOMIC_START(); DDRD = 0x0ff; PORTD = 0x0ff; + U8G_ATOMIC_END(); /* setup the RW pin as output and force it to low */ if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c index afcb4088a0..84b24daadb 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c @@ -54,18 +54,20 @@ #include "u8g.h" -#define I2C_SLA (0x3c*2) -//#define I2C_CMD_MODE 0x080 -#define I2C_CMD_MODE 0x000 -#define I2C_DATA_MODE 0x040 +#if defined(U8G_WITH_PINLIST) +#define I2C_SLA (0x3c*2) +//#define I2C_CMD_MODE 0x080 +#define I2C_CMD_MODE 0x000 +#define I2C_DATA_MODE 0x040 + uint8_t u8g_com_arduino_ssd_start_sequence(u8g_t *u8g) { /* are we requested to set the a0 state? */ if ( u8g->pin_list[U8G_PI_SET_A0] == 0 ) - return 1; - + return 1; + /* setup bus, might be a repeated start */ if ( u8g_i2c_start(I2C_SLA) == 0 ) return 0; @@ -79,8 +81,7 @@ uint8_t u8g_com_arduino_ssd_start_sequence(u8g_t *u8g) if ( u8g_i2c_send_byte(I2C_DATA_MODE) == 0 ) return 0; } - - + u8g->pin_list[U8G_PI_SET_A0] = 0; return 1; } @@ -199,3 +200,13 @@ uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, voi } return 1; } + +#else /* defined(U8G_WITH_PINLIST) */ + +uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* defined(U8G_WITH_PINLIST) */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_custom.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_custom.c new file mode 100644 index 0000000000..d157b93632 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_custom.c @@ -0,0 +1,330 @@ +/* + + u8g_com_arduino_st7920_custom.c + + Additional COM device, initially introduced for 3D Printer community + Implements a fast SW SPI com subsystem + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) + +static uint8_t u8g_bitData, u8g_bitNotData; +static uint8_t u8g_bitClock, u8g_bitNotClock; +static volatile uint8_t *u8g_outData; +static volatile uint8_t *u8g_outClock; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_outData = portOutputRegister(digitalPinToPort(dataPin)); + u8g_outClock = portOutputRegister(digitalPinToPort(clockPin)); + u8g_bitData = digitalPinToBitMask(dataPin); + u8g_bitClock = digitalPinToBitMask(clockPin); + + u8g_bitNotClock = u8g_bitClock; + u8g_bitNotClock ^= 0x0ff; + + u8g_bitNotData = u8g_bitData; + u8g_bitNotData ^= 0x0ff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) U8G_NOINLINE; +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + uint8_t bitData = u8g_bitData; + uint8_t bitNotData = u8g_bitNotData; + uint8_t bitClock = u8g_bitClock; + uint8_t bitNotClock = u8g_bitNotClock; + volatile uint8_t *outData = u8g_outData; + volatile uint8_t *outClock = u8g_outClock; + + + U8G_ATOMIC_START(); + bitData |= *outData; + bitNotData &= *outData; + do + { + if ( val & 128 ) + *outData = bitData; + else + *outData = bitNotData; + + /* + *outClock |= bitClock; + val <<= 1; + cnt--; + *outClock &= bitNotClock; + */ + + val <<= 1; + *outClock &= bitNotClock; + cnt--; + // removed micro delays, because AVRs are too slow and the delay is not required + //u8g_MicroDelay(); + *outClock |= bitClock; + //u8g_MicroDelay(); + } while( cnt != 0 ); + U8G_ATOMIC_END(); +} + +#elif defined(__18CXX) || defined(__PIC32MX) + +uint16_t dog_bitData, dog_bitNotData; +uint16_t dog_bitClock, dog_bitNotClock; +volatile uint32_t *dog_outData; +volatile uint32_t *dog_outClock; +volatile uint32_t dog_pic32_spi_tmp; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + dog_outData = portOutputRegister(digitalPinToPort(dataPin)); + dog_outClock = portOutputRegister(digitalPinToPort(clockPin)); + dog_bitData = digitalPinToBitMask(dataPin); + dog_bitClock = digitalPinToBitMask(clockPin); + + dog_bitNotClock = dog_bitClock; + dog_bitNotClock ^= 0x0ffff; + + dog_bitNotData = dog_bitData; + dog_bitNotData ^= 0x0ffff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + U8G_ATOMIC_START(); + do + { + if ( val & 128 ) + *dog_outData |= dog_bitData; + else + *dog_outData &= dog_bitNotData; + val <<= 1; + //u8g_MicroDelay(); + //*dog_outClock |= dog_bitClock; + *dog_outClock &= dog_bitNotClock; + cnt--; + u8g_MicroDelay(); + //*dog_outClock &= dog_bitNotClock; + *dog_outClock |= dog_bitClock; + u8g_MicroDelay(); + + } while( cnt != 0 ); + U8G_ATOMIC_END(); +} + +#else + +/* default interface, Arduino DUE (__arm__) */ + +uint8_t u8g_data_custom_pin; +uint8_t u8g_clock_custom_pin; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_data_custom_pin = dataPin; + u8g_clock_custom_pin = clockPin; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + digitalWrite(u8g_data_custom_pin, HIGH); + else + digitalWrite(u8g_data_custom_pin, LOW); + val <<= 1; + //u8g_MicroDelay(); + digitalWrite(u8g_clock_custom_pin, LOW); + cnt--; + u8g_MicroDelay(); + digitalWrite(u8g_clock_custom_pin, HIGH); + u8g_MicroDelay(); + } while( cnt != 0 ); +} + +#endif + + +static void u8g_com_arduino_st7920_write_byte_seq(uint8_t rs, uint8_t *ptr, uint8_t len) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_com_arduino_do_shift_out_msb_first(0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_com_arduino_do_shift_out_msb_first(0x0fa); + } + + while( len > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first(*ptr & 0x0f0); + u8g_com_arduino_do_shift_out_msb_first(*ptr << 4); + ptr++; + len--; + u8g_10MicroDelay(); + } + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} + +static void u8g_com_arduino_st7920_write_byte(uint8_t rs, uint8_t val) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_com_arduino_do_shift_out_msb_first(0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_com_arduino_do_shift_out_msb_first(0x0fa); + } + + u8g_com_arduino_do_shift_out_msb_first(val & 0x0f0); + u8g_com_arduino_do_shift_out_msb_first(val << 4); + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); + +} + + +uint8_t u8g_com_arduino_st7920_custom_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + // u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); + u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + else + { + /* enable */ + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_st7920_write_byte( u8g->pin_list[U8G_PI_A0_STATE], arg_val); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + u8g_com_arduino_st7920_write_byte_seq(u8g->pin_list[U8G_PI_A0_STATE], (uint8_t *)arg_ptr, arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte(u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr) ); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_st7920_custom_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c index d5a041386a..af44c7f860 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c @@ -54,10 +54,10 @@ /* remove the definition for attiny */ #if __AVR_ARCH__ == 2 -#undef U8G_ATMEGA_HW_SPI +#undef U8G_ARDUINO_ATMEGA_HW_SPI #endif #if __AVR_ARCH__ == 25 -#undef U8G_ATMEGA_HW_SPI +#undef U8G_ARDUINO_ATMEGA_HW_SPI #endif #endif @@ -68,6 +68,33 @@ #include #include + +#if ARDUINO < 100 + +/* fixed pins */ +#if defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) // Sanguino.cc board +#define PIN_SCK 7 +#define PIN_MISO 6 +#define PIN_MOSI 5 +#define PIN_CS 4 +#else // Arduino Board +#define PIN_SCK 13 +#define PIN_MISO 12 +#define PIN_MOSI 11 +#define PIN_CS 10 +#endif // (__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) + +#else + +/* use Arduino pin definitions */ +#define PIN_SCK SCK +#define PIN_MISO MISO +#define PIN_MOSI MOSI +#define PIN_CS SS + +#endif + + static uint8_t u8g_arduino_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; static uint8_t u8g_arduino_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) { @@ -81,6 +108,34 @@ static uint8_t u8g_arduino_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) } +static void u8g_com_arduino_st7920_write_byte_hw_spi_seq(u8g_t *u8g, uint8_t rs, uint8_t *ptr, uint8_t len) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_arduino_st7920_hw_spi_shift_out(u8g, 0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_arduino_st7920_hw_spi_shift_out(u8g, 0x0fa); + } + + while( len > 0 ) + { + u8g_arduino_st7920_hw_spi_shift_out(u8g, *ptr & 0x0f0); + u8g_arduino_st7920_hw_spi_shift_out(u8g, *ptr << 4); + ptr++; + len--; + u8g_10MicroDelay(); + } + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} + static void u8g_com_arduino_st7920_write_byte_hw_spi(u8g_t *u8g, uint8_t rs, uint8_t val) U8G_NOINLINE; static void u8g_com_arduino_st7920_write_byte_hw_spi(u8g_t *u8g, uint8_t rs, uint8_t val) { @@ -115,14 +170,29 @@ uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_va { case U8G_COM_MSG_INIT: u8g_com_arduino_assign_pin_output_high(u8g); - u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + + /* code from u8g_com-arduino_hw_spi.c */ + pinMode(PIN_SCK, OUTPUT); + digitalWrite(PIN_SCK, LOW); + pinMode(PIN_MOSI, OUTPUT); + digitalWrite(PIN_MOSI, LOW); + /* pinMode(PIN_MISO, INPUT); */ + + pinMode(PIN_CS, OUTPUT); /* system chip select for the atmega board */ + digitalWrite(PIN_CS, HIGH); + + + //u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + +#ifdef OBSOLETE DDRB |= _BV(3); /* D0, MOSI */ DDRB |= _BV(5); /* SCK */ DDRB |= _BV(2); /* slave select */ PORTB &= ~_BV(3); /* D0, MOSI = 0 */ PORTB &= ~_BV(5); /* SCK = 0 */ +#endif /* SPR1 SPR0 @@ -170,15 +240,18 @@ uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_va break; case U8G_COM_MSG_WRITE_SEQ: + u8g_com_arduino_st7920_write_byte_hw_spi_seq(u8g, u8g->pin_list[U8G_PI_A0_STATE], (uint8_t *)arg_ptr, arg_val); + /* { register uint8_t *ptr = arg_ptr; while( arg_val > 0 ) { u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); - // u8g->pin_list[U8G_PI_A0_STATE] = 2; arg_val--; } } + */ + break; case U8G_COM_MSG_WRITE_SEQ_P: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c index a733988681..9a5c2bef35 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c @@ -33,6 +33,13 @@ A special SPI interface for ST7920 controller + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + + */ #include "u8g.h" @@ -51,10 +58,10 @@ #if defined(__AVR__) -uint8_t u8g_bitData, u8g_bitNotData; -uint8_t u8g_bitClock, u8g_bitNotClock; -volatile uint8_t *u8g_outData; -volatile uint8_t *u8g_outClock; +static uint8_t u8g_bitData, u8g_bitNotData; +static uint8_t u8g_bitClock, u8g_bitNotClock; +static volatile uint8_t *u8g_outData; +static volatile uint8_t *u8g_outClock; static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) { @@ -80,12 +87,17 @@ static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) uint8_t bitNotClock = u8g_bitNotClock; volatile uint8_t *outData = u8g_outData; volatile uint8_t *outClock = u8g_outClock; + + + U8G_ATOMIC_START(); + bitData |= *outData; + bitNotData &= *outData; do { if ( val & 128 ) - *outData |= bitData; + *outData = bitData; else - *outData &= bitNotData; + *outData = bitNotData; /* *outClock |= bitClock; @@ -102,6 +114,7 @@ static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) *outClock |= bitClock; //u8g_MicroDelay(); } while( cnt != 0 ); + U8G_ATOMIC_END(); } #elif defined(__18CXX) || defined(__PIC32MX) @@ -129,6 +142,7 @@ static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) { uint8_t cnt = 8; + U8G_ATOMIC_START(); do { if ( val & 128 ) @@ -146,6 +160,7 @@ static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) u8g_MicroDelay(); } while( cnt != 0 ); + U8G_ATOMIC_END(); } #else @@ -183,7 +198,33 @@ static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) #endif +static void u8g_com_arduino_st7920_write_byte_seq(uint8_t rs, uint8_t *ptr, uint8_t len) +{ + uint8_t i; + if ( rs == 0 ) + { + /* command */ + u8g_com_arduino_do_shift_out_msb_first(0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_com_arduino_do_shift_out_msb_first(0x0fa); + } + + while( len > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first(*ptr & 0x0f0); + u8g_com_arduino_do_shift_out_msb_first(*ptr << 4); + ptr++; + len--; + u8g_10MicroDelay(); + } + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} static void u8g_com_arduino_st7920_write_byte(uint8_t rs, uint8_t val) { @@ -209,7 +250,6 @@ static void u8g_com_arduino_st7920_write_byte(uint8_t rs, uint8_t val) } - uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) { switch(msg) @@ -243,6 +283,9 @@ uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, /* enable */ //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH); u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + /* 28 Dec 2013 reassign pins, fixes issue with more than one display */ + /* issue 227 */ + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); } break; @@ -253,15 +296,7 @@ uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, break; case U8G_COM_MSG_WRITE_SEQ: - { - register uint8_t *ptr = arg_ptr; - while( arg_val > 0 ) - { - u8g_com_arduino_st7920_write_byte(u8g->pin_list[U8G_PI_A0_STATE], *ptr++); - //u8g->pin_list[U8G_PI_A0_STATE] = 2; - arg_val--; - } - } + u8g_com_arduino_st7920_write_byte_seq(u8g->pin_list[U8G_PI_A0_STATE], (uint8_t *)arg_ptr, arg_val); break; case U8G_COM_MSG_WRITE_SEQ_P: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c index 1251ef2e56..048ac1af36 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c @@ -31,7 +31,6 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ #include "u8g.h" diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c index 846baeb908..7752adc829 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c @@ -31,6 +31,12 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + */ @@ -48,6 +54,9 @@ #include "wiring_private.h" #endif +/*=========================================================*/ +/* Arduino, AVR */ + #if defined(__AVR__) uint8_t u8g_bitData, u8g_bitNotData; @@ -79,6 +88,7 @@ static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) uint8_t bitNotClock = u8g_bitNotClock; volatile uint8_t *outData = u8g_outData; volatile uint8_t *outClock = u8g_outClock; + U8G_ATOMIC_START(); do { if ( val & 128 ) @@ -91,8 +101,11 @@ static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) cnt--; *outClock &= bitNotClock; } while( cnt != 0 ); + U8G_ATOMIC_END(); } +/*=========================================================*/ +/* Arduino, Chipkit */ #elif defined(__18CXX) || defined(__PIC32MX) uint16_t dog_bitData, dog_bitNotData; @@ -118,6 +131,7 @@ static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) { uint8_t cnt = 8; + U8G_ATOMIC_START(); do { if ( val & 128 ) @@ -142,8 +156,54 @@ static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) dog_pic32_spi_tmp = *dog_outClock; dog_pic32_spi_tmp = *dog_outClock; } while( cnt != 0 ); + U8G_ATOMIC_END(); } +/*=========================================================*/ +/* Arduino Due */ +#elif defined(__SAM3X8E__) + +/* Due */ + +void u8g_digital_write_sam_high(uint8_t pin) +{ + PIO_Set( g_APinDescription[pin].pPort, g_APinDescription[pin].ulPin) ; +} + +void u8g_digital_write_sam_low(uint8_t pin) +{ + PIO_Clear( g_APinDescription[pin].pPort, g_APinDescription[pin].ulPin) ; +} + +static uint8_t u8g_sam_data_pin; +static uint8_t u8g_sam_clock_pin; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_sam_data_pin = dataPin; + u8g_sam_clock_pin = clockPin; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t i = 8; + do + { + if ( val & 128 ) + u8g_digital_write_sam_high(u8g_sam_data_pin); + else + u8g_digital_write_sam_low(u8g_sam_data_pin); + val <<= 1; + //u8g_MicroDelay(); + u8g_digital_write_sam_high(u8g_sam_clock_pin); + u8g_MicroDelay(); + u8g_digital_write_sam_low(u8g_sam_clock_pin); + u8g_MicroDelay(); + i--; + } while( i != 0 ); +} + + #else /* empty interface */ @@ -188,6 +248,8 @@ uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void /* enable */ u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + /* issue 227 */ + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); } break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_t6963.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_t6963.c index d6a817867b..50e5e93ac4 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_t6963.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_t6963.c @@ -50,6 +50,13 @@ u8g_InitRW8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) u8g_InitRW8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16) + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + + */ #include "u8g.h" @@ -123,8 +130,10 @@ static void u8g_com_arduino_t6963_init(u8g_t *u8g) u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); } + static void u8g_com_arduino_t6963_write_data_pin(uint8_t pin, uint8_t val) { + /* no ATOMIC protection required here, this is done by calling procedure */ if ( val != 0 ) *u8g_output_data_port[pin] |= u8g_data_mask[pin]; else @@ -134,6 +143,7 @@ static void u8g_com_arduino_t6963_write_data_pin(uint8_t pin, uint8_t val) static void u8g_com_arduino_t6963_set_port_output(void) { uint8_t i; + U8G_ATOMIC_START(); for( i = 0; i < 8; i++ ) { #if defined(__PIC32MX) @@ -147,11 +157,13 @@ static void u8g_com_arduino_t6963_set_port_output(void) #endif } + U8G_ATOMIC_END(); } static void u8g_com_arduino_t6963_set_port_input(void) { uint8_t i; + U8G_ATOMIC_START(); for( i = 0; i < 8; i++ ) { #if defined(__PIC32MX) @@ -167,11 +179,14 @@ static void u8g_com_arduino_t6963_set_port_input(void) *u8g_output_data_port[i] &= ~u8g_data_mask[i]; // no pullup #endif } + U8G_ATOMIC_END(); } static void u8g_com_arduino_t6963_write(u8g_t *u8g, uint8_t val) { + U8G_ATOMIC_START(); + u8g_com_arduino_t6963_write_data_pin( 0, val&1 ); val >>= 1; u8g_com_arduino_t6963_write_data_pin( 1, val&1 ); @@ -189,6 +204,7 @@ static void u8g_com_arduino_t6963_write(u8g_t *u8g, uint8_t val) val >>= 1; u8g_com_arduino_t6963_write_data_pin( 7, val&1 ); val >>= 1; + U8G_ATOMIC_END(); u8g_com_arduino_digital_write(u8g, U8G_PI_WR, 0); u8g_MicroDelay(); /* 80ns, reference: t6963 datasheet */ @@ -203,6 +219,7 @@ static uint8_t u8g_com_arduino_t6963_read(u8g_t *u8g) u8g_com_arduino_digital_write(u8g, U8G_PI_RD, 0); u8g_MicroDelay(); /* 150ns, reference: t6963 datasheet */ + U8G_ATOMIC_START(); /* only read bits 0, 1 and 3 */ if ( (*u8g_input_data_port[3] & u8g_data_mask[3]) != 0 ) val++; @@ -213,7 +230,8 @@ static uint8_t u8g_com_arduino_t6963_read(u8g_t *u8g) val <<= 1; if ( (*u8g_input_data_port[0] & u8g_data_mask[0]) != 0 ) val++; - + U8G_ATOMIC_END(); + u8g_com_arduino_digital_write(u8g, U8G_PI_RD, 1); u8g_MicroDelay(); /* 10ns, reference: t6963 datasheet */ diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_uc_i2c.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_uc_i2c.c new file mode 100644 index 0000000000..263766818f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_uc_i2c.c @@ -0,0 +1,206 @@ +/* + + u8g_com_arduino_uc_i2c.c + + com interface for arduino (AND atmega) and the SSDxxxx chip (SOLOMON) variant + I2C protocol + + ToDo: Rename this to u8g_com_avr_ssd_i2c.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Special pin usage: + U8G_PI_I2C_OPTION additional options + U8G_PI_A0_STATE used to store the last value of the command/data register selection + U8G_PI_SET_A0 1: Signal request to update I2C device with new A0_STATE, 0: Do nothing, A0_STATE matches I2C device + U8G_PI_SCL clock line (NOT USED) + U8G_PI_SDA data line (NOT USED) + + U8G_PI_RESET reset line (currently disabled, see below) + + Protocol: + SLA, Cmd/Data Selection, Arguments + The command/data register is selected by a special instruction byte, which is sent after SLA + + The continue bit is always 0 so that a (re)start is equired for the change from cmd to/data mode +*/ + +#include "u8g.h" + +#if defined(U8G_WITH_PINLIST) + +#define DOGM240_SLA_CMD (0x38*2) +#define DOGM240_SLA_DATA (0x39*2) + +uint8_t u8g_com_arduino_uc_start_sequence(u8g_t *u8g) +{ + /* are we requested to set the a0 state? */ + if ( u8g->pin_list[U8G_PI_SET_A0] == 0 ) + return 1; + + if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) + { + if ( u8g_i2c_start(DOGM240_SLA_CMD) == 0 ) + return 0; + } + else + { + if ( u8g_i2c_start(DOGM240_SLA_DATA) == 0 ) + return 0; + } + + u8g->pin_list[U8G_PI_SET_A0] = 0; + return 1; +} + +uint8_t u8g_com_arduino_uc_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCL, HIGH); + //u8g_com_arduino_digital_write(u8g, U8G_PI_SDA, HIGH); + //u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: unknown mode */ + + u8g_i2c_init(u8g->pin_list[U8G_PI_I2C_OPTION]); + + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + /* Currently disabled, but it could be enable. Previous restrictions have been removed */ + /* u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); */ + break; + + case U8G_COM_MSG_CHIP_SELECT: + u8g->pin_list[U8G_PI_A0_STATE] = 0; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again, also forces start condition */ + if ( arg_val == 0 ) + { + /* disable chip, send stop condition */ + u8g_i2c_stop(); + } + else + { + /* enable, do nothing: any byte writing will trigger the i2c start */ + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_uc_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + if ( u8g_i2c_send_byte(arg_val) == 0 ) + return u8g_i2c_stop(), 0; + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_uc_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(*ptr++) == 0 ) + return u8g_i2c_stop(), 0; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_uc_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(u8g_pgm_read(ptr)) == 0 ) + return 0; + ptr++; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again */ + +#ifdef OLD_CODE + if ( i2c_state != 0 ) + { + u8g_i2c_stop(); + i2c_state = 0; + } + + if ( u8g_com_arduino_uc_start_sequence(arg_val) == 0 ) + return 0; + + /* setup bus, might be a repeated start */ + /* + if ( u8g_i2c_start(I2C_SLA) == 0 ) + return 0; + if ( arg_val == 0 ) + { + i2c_state = 1; + + if ( u8g_i2c_send_byte(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + i2c_state = 2; + if ( u8g_i2c_send_byte(I2C_DATA_MODE) == 0 ) + return 0; + } + */ +#endif + break; + } + return 1; +} + +#else /* defined(U8G_WITH_PINLIST) */ + +uint8_t u8g_com_arduino_uc_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* defined(U8G_WITH_PINLIST) */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c index 30ee808ea8..71e378b55c 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c @@ -37,6 +37,14 @@ and SCK is at PORTB, Pin 5 + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START() + U8G_ATOMIC_END() + + + */ #include "u8g.h" @@ -85,6 +93,9 @@ uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void u8g_SetPIOutput(u8g, U8G_PI_CS); u8g_SetPIOutput(u8g, U8G_PI_A0); + u8g_SetPIOutput(u8g, U8G_PI_RESET); + + U8G_ATOMIC_START(); DDRB |= _BV(3); /* D0, MOSI */ DDRB |= _BV(5); /* SCK */ @@ -92,6 +103,9 @@ uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void PORTB &= ~_BV(3); /* D0, MOSI = 0 */ PORTB &= ~_BV(5); /* SCK = 0 */ + + U8G_ATOMIC_END(); + u8g_SetPILevel(u8g, U8G_PI_CS, 1); /* diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_parallel.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_parallel.c index 603082da27..2b49b04fd0 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_parallel.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_parallel.c @@ -1,6 +1,6 @@ /* - u8g_atmega_parallel.c + u8g_com_atmega_parallel.c Universal 8bit Graphics Library diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c index 52858a61ea..dd0fd4e15a 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c @@ -38,6 +38,12 @@ and SCK is at PORTB, Pin 5 + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START() + U8G_ATOMIC_END() + */ @@ -106,12 +112,16 @@ uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val u8g_SetPIOutput(u8g, U8G_PI_CS); //u8g_SetPIOutput(u8g, U8G_PI_A0); + U8G_ATOMIC_START(); + DDRB |= _BV(3); /* D0, MOSI */ DDRB |= _BV(5); /* SCK */ DDRB |= _BV(2); /* slave select */ PORTB &= ~_BV(3); /* D0, MOSI = 0 */ PORTB &= ~_BV(5); /* SCK = 0 */ + U8G_ATOMIC_END(); + u8g_SetPILevel(u8g, U8G_PI_CS, 1); /* @@ -125,7 +135,8 @@ uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val /* maybe set CPOL and CPHA to 1 */ /* 20 Dez 2012: did set CPOL and CPHA to 1 in Arduino variant! */ - SPCR = (1< 100KHz + TWBR = 12; + TWSR = 0; + --> 400KHz + F_CPU/(2*100000)-8 --> calculate TWBR value for 100KHz */ + u8g_i2c_opt = options; TWSR = 0; - TWBR = F_CPU/(2*100000)-8; + if ( options & U8G_I2C_OPT_FAST ) + { + TWBR = F_CPU/(2*400000)-8; + } + else + { + TWBR = F_CPU/(2*100000)-8; + } u8g_i2c_clear_error(); } @@ -129,8 +144,15 @@ uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) { if ( cnt == 0 ) { - u8g_i2c_set_error(U8G_I2C_ERR_TIMEOUT, pos); - return 0; /* error */ + if ( u8g_i2c_opt & U8G_I2C_OPT_NO_ACK ) + { + return 1; /* all ok */ + } + else + { + u8g_i2c_set_error(U8G_I2C_ERR_TIMEOUT, pos); + return 0; /* error */ + } } cnt--; } @@ -167,13 +189,20 @@ uint8_t u8g_i2c_start(uint8_t sla) /* wait */ if ( u8g_i2c_wait(_BV(TWINT), 2) == 0 ) return 0; - status = TW_STATUS; - /* check status after sla */ - if ( status != TW_MT_SLA_ACK ) + if ( u8g_i2c_opt & U8G_I2C_OPT_NO_ACK ) { - u8g_i2c_set_error(U8G_I2C_ERR_BUS, 2); - return 0; + /* do not check for ACK */ + } + else + { + status = TW_STATUS; + /* check status after sla */ + if ( status != TW_MT_SLA_ACK ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 2); + return 0; + } } return 1; @@ -186,14 +215,21 @@ uint8_t u8g_i2c_send_byte(uint8_t data) TWCR = _BV(TWINT) | _BV(TWEN); if ( u8g_i2c_wait(_BV(TWINT), 3) == 0 ) return 0; - status = TW_STATUS; - - if ( status != TW_MT_DATA_ACK ) + + if ( u8g_i2c_opt & U8G_I2C_OPT_NO_ACK ) { - u8g_i2c_set_error(U8G_I2C_ERR_BUS, 3); - return 0; + /* do not check for ACK */ } - + else + { + status = TW_STATUS; + if ( status != TW_MT_DATA_ACK ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 3); + return 0; + } + } + return 1; } @@ -217,6 +253,363 @@ void twi_send(uint8_t adr, uint8_t data1, uint8_t data2) } */ +#elif defined(ARDUINO) && defined(__SAM3X8E__) +/* Arduino Due */ +#include "Arduino.h" +#include "sam.h" + +/* + +Controller + +TWI0 TWCK0 PA18 A DUE PCB: SCL1 +TWI0 TWD0 PA17 A DUE PCB: SDA1 +TWI1 TWCK1 PB13 A DUE PCB: SCL 21 +TWI1 TWD1 PB12 A DUE PCB: SDA 20 + +Arduino definitions + +#define PIN_WIRE_SDA (20u) +#define PIN_WIRE_SCL (21u) +#define WIRE_INTERFACE TWI1 +#define WIRE_INTERFACE_ID ID_TWI1 +#define WIRE_ISR_HANDLER TWI1_Handler + +#define PIN_WIRE1_SDA (70u) +#define PIN_WIRE1_SCL (71u) +#define WIRE1_INTERFACE TWI0 +#define WIRE1_INTERFACE_ID ID_TWI0 +#define WIRE1_ISR_HANDLER TWI0_Handler + + +*/ + +static void i2c_400KHz_delay(void) +{ + /* should be at least 4 */ + /* should be 5 for 100KHz transfer speed */ + + + /* + Arduino Due + 0x NOP: 470KHz + 4x NOP: 450KHz + 8x NOP: 430KHz + 16x NOP: 400KHz + */ + + __NOP(); + __NOP(); + __NOP(); + __NOP(); + + __NOP(); + __NOP(); + __NOP(); + __NOP(); + + __NOP(); + __NOP(); + __NOP(); + __NOP(); + + __NOP(); + __NOP(); + __NOP(); + __NOP(); +} + +static void i2c_100KHz_delay(void) +{ + /* + 1x u8g_MicroDelay() ca. 130KHz + 2x u8g_MicroDelay() ca. 80KHz + */ + u8g_MicroDelay(); + u8g_MicroDelay(); +} + + +uint32_t i2c_started = 0; +uint32_t i2c_scl_pin = 0; +uint32_t i2c_sda_pin = 0; +void (*i2c_delay)(void) = i2c_100KHz_delay; + +const PinDescription *i2c_scl_pin_desc; +const PinDescription *i2c_sda_pin_desc; + + +/* maybe this can be optimized */ +static void i2c_init(void) +{ + i2c_sda_pin_desc = &(g_APinDescription[i2c_sda_pin]); + i2c_scl_pin_desc = &(g_APinDescription[i2c_scl_pin]); + pinMode(i2c_sda_pin, OUTPUT); + digitalWrite(i2c_sda_pin, HIGH); + pinMode(i2c_scl_pin, OUTPUT); + digitalWrite(i2c_scl_pin, HIGH); + PIO_Configure( i2c_sda_pin_desc->pPort, PIO_OUTPUT_0, i2c_sda_pin_desc->ulPin, PIO_OPENDRAIN ); + PIO_Configure( i2c_scl_pin_desc->pPort, PIO_OUTPUT_0, i2c_scl_pin_desc->ulPin, PIO_OPENDRAIN ); + PIO_Clear( i2c_sda_pin_desc->pPort, i2c_sda_pin_desc->ulPin) ; + PIO_Clear( i2c_scl_pin_desc->pPort, i2c_scl_pin_desc->ulPin) ; + PIO_Configure( i2c_sda_pin_desc->pPort, PIO_INPUT, i2c_sda_pin_desc->ulPin, PIO_DEFAULT ) ; + PIO_Configure( i2c_scl_pin_desc->pPort, PIO_INPUT, i2c_scl_pin_desc->ulPin, PIO_DEFAULT ) ; + i2c_delay(); +} + +/* actually, the scl line is not observed, so this procedure does not return a value */ +static void i2c_read_scl_and_delay(void) +{ + uint32_t dwMask = i2c_scl_pin_desc->ulPin; + //PIO_Configure( i2c_scl_pin_desc->pPort, PIO_INPUT, i2c_scl_pin_desc->ulPin, PIO_DEFAULT ) ; + //PIO_SetInput( i2c_scl_pin_desc->pPort, i2c_scl_pin_desc->ulPin, PIO_DEFAULT ) ; + + /* set as input */ + i2c_scl_pin_desc->pPort->PIO_ODR = dwMask ; + i2c_scl_pin_desc->pPort->PIO_PER = dwMask ; + + i2c_delay(); +} + +static void i2c_clear_scl(void) +{ + uint32_t dwMask = i2c_scl_pin_desc->ulPin; + + /* set open collector and drive low */ + //PIO_Configure( i2c_scl_pin_desc->pPort, PIO_OUTPUT_0, i2c_scl_pin_desc->ulPin, PIO_OPENDRAIN ); + //PIO_SetOutput( i2c_scl_pin_desc->pPort, i2c_scl_pin_desc->ulPin, 0, 1, 0); + + /* open drain, zero default output */ + i2c_scl_pin_desc->pPort->PIO_MDER = dwMask; + i2c_scl_pin_desc->pPort->PIO_CODR = dwMask; + i2c_scl_pin_desc->pPort->PIO_OER = dwMask; + i2c_scl_pin_desc->pPort->PIO_PER = dwMask; + + //PIO_Clear( i2c_scl_pin_desc->pPort, i2c_scl_pin_desc->ulPin) ; +} + +static uint8_t i2c_read_sda(void) +{ + uint32_t dwMask = i2c_sda_pin_desc->ulPin; + //PIO_Configure( i2c_sda_pin_desc->pPort, PIO_INPUT, i2c_sda_pin_desc->ulPin, PIO_DEFAULT ) ; + //PIO_SetInput( i2c_sda_pin_desc->pPort, i2c_sda_pin_desc->ulPin, PIO_DEFAULT ) ; + + /* set as input */ + i2c_sda_pin_desc->pPort->PIO_ODR = dwMask ; + i2c_sda_pin_desc->pPort->PIO_PER = dwMask ; + + + return 1; +} + +static void i2c_clear_sda(void) +{ + uint32_t dwMask = i2c_sda_pin_desc->ulPin; + + /* set open collector and drive low */ + //PIO_Configure( i2c_sda_pin_desc->pPort, PIO_OUTPUT_0, i2c_sda_pin_desc->ulPin, PIO_OPENDRAIN ); + //PIO_SetOutput( i2c_sda_pin_desc->pPort, i2c_sda_pin_desc->ulPin, 0, 1, 0); + + /* open drain, zero default output */ + i2c_sda_pin_desc->pPort->PIO_MDER = dwMask ; + i2c_sda_pin_desc->pPort->PIO_CODR = dwMask ; + i2c_sda_pin_desc->pPort->PIO_OER = dwMask ; + i2c_sda_pin_desc->pPort->PIO_PER = dwMask ; + + //PIO_Clear( i2c_sda_pin_desc->pPort, i2c_sda_pin_desc->ulPin) ; +} + +static void i2c_start(void) +{ + if ( i2c_started != 0 ) + { + /* if already started: do restart */ + i2c_read_sda(); /* SDA = 1 */ + i2c_delay(); + i2c_read_scl_and_delay(); + } + i2c_read_sda(); + /* + if (i2c_read_sda() == 0) + { + // do something because arbitration is lost + } + */ + /* send the start condition, both lines go from 1 to 0 */ + i2c_clear_sda(); + i2c_delay(); + i2c_clear_scl(); + i2c_started = 1; +} + + +static void i2c_stop(void) +{ + /* set SDA to 0 */ + i2c_clear_sda(); + i2c_delay(); + + /* now release all lines */ + i2c_read_scl_and_delay(); + + /* set SDA to 1 */ + i2c_read_sda(); + i2c_delay(); + i2c_started = 0; +} + +static void i2c_write_bit(uint8_t val) +{ + if (val) + i2c_read_sda(); + else + i2c_clear_sda(); + + i2c_delay(); + i2c_read_scl_and_delay(); + i2c_clear_scl(); +} + +static uint8_t i2c_read_bit(void) +{ + uint8_t val; + /* do not drive SDA */ + i2c_read_sda(); + i2c_delay(); + i2c_read_scl_and_delay(); + val = i2c_read_sda(); + i2c_delay(); + i2c_clear_scl(); + return val; +} + +static uint8_t i2c_write_byte(uint8_t b) +{ + i2c_write_bit(b & 128); + i2c_write_bit(b & 64); + i2c_write_bit(b & 32); + i2c_write_bit(b & 16); + i2c_write_bit(b & 8); + i2c_write_bit(b & 4); + i2c_write_bit(b & 2); + i2c_write_bit(b & 1); + + /* read ack from client */ + /* 0: ack was given by client */ + /* 1: nothing happend during ack cycle */ + return i2c_read_bit(); +} + + + +void u8g_i2c_init(uint8_t options) +{ + u8g_i2c_opt = options; + u8g_i2c_clear_error(); + + if ( u8g_i2c_opt & U8G_I2C_OPT_FAST ) + { + i2c_delay = i2c_400KHz_delay; + } + else + { + i2c_delay = i2c_100KHz_delay; + } + + + if ( u8g_i2c_opt & U8G_I2C_OPT_DEV_1 ) + { + i2c_scl_pin = PIN_WIRE1_SCL; + i2c_sda_pin = PIN_WIRE1_SDA; + + //REG_PIOA_PDR = PIO_PB12A_TWD1 | PIO_PB13A_TWCK1; + } + else + { + + i2c_scl_pin = PIN_WIRE_SCL; + i2c_sda_pin = PIN_WIRE_SDA; + + //REG_PIOA_PDR = PIO_PA17A_TWD0 | PIO_PA18A_TWCK0; + } + + i2c_init(); + +} + +/* sla includes also the r/w bit */ +uint8_t u8g_i2c_start(uint8_t sla) +{ + i2c_start(); + i2c_write_byte(sla); + return 1; +} + +uint8_t u8g_i2c_send_byte(uint8_t data) +{ + return i2c_write_byte(data); +} + +void u8g_i2c_stop(void) +{ + i2c_stop(); +} + + +#elif defined(U8G_RASPBERRY_PI) + +#include +#include +#include +#include +#include + +#define I2C_SLA 0x3c + +static int fd=-1; +static uint8_t i2cMode = 0; + +void u8g_i2c_init(uint8_t options) { + u8g_i2c_clear_error(); + u8g_i2c_opt = options; + + if (wiringPiSetup() == -1) { + printf("wiringPi-Error\n"); + exit(1); + } + + fd = wiringPiI2CSetup(I2C_SLA); + if (fd < 0) { + printf ("Unable to open I2C device 0: %s\n", strerror (errno)) ; + exit (1) ; + } + //u8g_SetPIOutput(u8g, U8G_PI_RESET); + //u8g_SetPIOutput(u8g, U8G_PI_A0); +} +uint8_t u8g_i2c_start(uint8_t sla) { + u8g_i2c_send_mode(0); + + return 1; +} + +void u8g_i2c_stop(void) { +} + +uint8_t u8g_i2c_send_mode(uint8_t mode) { + i2cMode = mode; +} + +uint8_t u8g_i2c_send_byte(uint8_t data) { + wiringPiI2CWriteReg8(fd, i2cMode, data); + + return 1; +} + +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) +{ + return 1; +} + #else /* empty interface */ diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_io.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_io.c index 50d26c93d5..38a88a0fab 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_io.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_io.c @@ -32,7 +32,19 @@ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + + uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) Convert to internal number: AVR: port*8+bitpos, ARM: port*16+bitpos + void u8g_SetPinOutput(uint8_t internal_pin_number) + void u8g_SetPinInput(uint8_t internal_pin_number) + void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) + uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) + */ @@ -159,9 +171,16 @@ void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) volatile uint8_t * tmp = u8g_get_avr_io_ptr(u8g_avr_port_P, internal_pin_number>>3); if ( level == 0 ) - *tmp &= ~_BV(internal_pin_number&7); + { + U8G_ATOMIC_AND(tmp, ~_BV(internal_pin_number&7)); + // *tmp &= ~_BV(internal_pin_number&7); + } else - *tmp |= _BV(internal_pin_number&7); + { + U8G_ATOMIC_OR(tmp, _BV(internal_pin_number&7)); + //*tmp |= _BV(internal_pin_number&7); + } + } uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) @@ -172,8 +191,31 @@ uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) return 0; } +#elif defined(U8G_RASPBERRY_PI) + +#include +//#include "/usr/local/include/wiringPi.h" + +void u8g_SetPinOutput(uint8_t internal_pin_number) { + pinMode(internal_pin_number, OUTPUT); +} + +void u8g_SetPinInput(uint8_t internal_pin_number) { + pinMode(internal_pin_number, INPUT); +} + +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) { + digitalWrite(internal_pin_number, level); +} + +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) { + return digitalRead(internal_pin_number); +} + + #else +/* convert "port" and "bitpos" to internal pin number */ uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) { port <<= 3; @@ -201,6 +243,8 @@ uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) #endif +#if defined(U8G_WITH_PINLIST) + void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi) { uint8_t pin; @@ -216,3 +260,14 @@ void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level) if ( pin != U8G_PIN_NONE ) u8g_SetPinLevel(pin, level); } + +#else /* defined(U8G_WITH_PINLIST) */ +void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi) +{ +} + +void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level) +{ +} + +#endif /* defined(U8G_WITH_PINLIST) */ diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_raspberrypi_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_raspberrypi_hw_spi.c new file mode 100644 index 0000000000..611391f54b --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_raspberrypi_hw_spi.c @@ -0,0 +1,124 @@ +/* + + u8g_com_raspberrypi_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Assumes, that + MOSI is at PORTB, Pin 3 + and + SCK is at PORTB, Pin 5 + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START() + U8G_ATOMIC_END() + + + +*/ + +#include "u8g.h" + + + +#if defined(U8G_RASPBERRY_PI) + +#include +#include +#include +#include +#include + +uint8_t u8g_com_raspberrypi_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_INIT: + // check wiringPi setup + if (wiringPiSetup() == -1) + { + printf("wiringPi-Error\n"); + exit(1); + } + + if (wiringPiSPISetup (0, 100000) < 0) + { + printf ("Unable to open SPI device 0: %s\n", strerror (errno)) ; + exit (1) ; + } + + u8g_SetPIOutput(u8g, U8G_PI_RESET); + u8g_SetPIOutput(u8g, U8G_PI_A0); + + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_SetPILevel(u8g, U8G_PI_A0, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + /* Done by the SPI hardware */ + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_WRITE_BYTE: + wiringPiSPIDataRW (0, &arg_val, 1) ; + break; + + case U8G_COM_MSG_WRITE_SEQ: + wiringPiSPIDataRW (0, arg_ptr, arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + wiringPiSPIDataRW (0, arg_ptr, arg_val); + break; + } + return 1; +} + +#else + +uint8_t u8g_com_raspberrypi_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_raspberrypi_ssd_i2c.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_raspberrypi_ssd_i2c.c new file mode 100644 index 0000000000..88d85ded21 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_raspberrypi_ssd_i2c.c @@ -0,0 +1,176 @@ +/* + Special pin usage: + U8G_PI_I2C_OPTION additional options + U8G_PI_A0_STATE used to store the last value of the command/data register selection + U8G_PI_SET_A0 1: Signal request to update I2C device with new A0_STATE, 0: Do nothing, A0_STATE matches I2C device + U8G_PI_SCL clock line (NOT USED) + U8G_PI_SDA data line (NOT USED) + + U8G_PI_RESET reset line (currently disabled, see below) + + Protocol: + SLA, Cmd/Data Selection, Arguments + The command/data register is selected by a special instruction byte, which is sent after SLA + + The continue bit is always 0 so that a (re)start is equired for the change from cmd to/data mode +*/ + +#include "u8g.h" + +#if defined(U8G_RASPBERRY_PI) + +#include +#include +#include +#include +#include + +#define I2C_SLA 0x3c +#define I2C_CMD_MODE 0x000 +#define I2C_DATA_MODE 0x040 + +#if defined(U8G_WITH_PINLIST) + +uint8_t u8g_com_raspberrypi_ssd_start_sequence(u8g_t *u8g) +{ + /* are we requested to set the a0 state? */ + if ( u8g->pin_list[U8G_PI_SET_A0] == 0 ) + return 1; + + /* setup bus, might be a repeated start */ + if ( u8g_i2c_start(I2C_SLA) == 0 ) + return 0; + if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) + { + if ( u8g_i2c_send_mode(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + if ( u8g_i2c_send_mode(I2C_DATA_MODE) == 0 ) + return 0; + } + + + u8g->pin_list[U8G_PI_SET_A0] = 0; + return 1; +} + +uint8_t u8g_com_raspberrypi_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_i2c_init(u8g->pin_list[U8G_PI_I2C_OPTION]); + u8g_SetPIOutput(u8g, U8G_PI_RESET); + u8g_SetPIOutput(u8g, U8G_PI_A0); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + break; + + case U8G_COM_MSG_CHIP_SELECT: + u8g->pin_list[U8G_PI_A0_STATE] = 0; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again, also forces start condition */ + if ( arg_val == 0 ) + { + /* disable chip, send stop condition */ + u8g_i2c_stop(); + } + else + { + /* enable, do nothing: any byte writing will trigger the i2c start */ + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_raspberrypi_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + if ( u8g_i2c_send_byte(arg_val) == 0 ) + return u8g_i2c_stop(), 0; + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_raspberrypi_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = (uint8_t *)arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(*ptr++) == 0 ) + return u8g_i2c_stop(), 0; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_raspberrypi_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = (uint8_t *)arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(u8g_pgm_read(ptr)) == 0 ) + return 0; + ptr++; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again */ + +#ifdef OLD_CODE + if ( i2c_state != 0 ) + { + u8g_i2c_stop(); + i2c_state = 0; + } + + if ( u8g_com_raspberrypi_ssd_start_sequence(arg_val) == 0 ) + return 0; + + /* setup bus, might be a repeated start */ + /* + if ( u8g_i2c_start(I2C_SLA) == 0 ) + return 0; + if ( arg_val == 0 ) + { + i2c_state = 1; + + if ( u8g_i2c_send_byte(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + i2c_state = 2; + if ( u8g_i2c_send_byte(I2C_DATA_MODE) == 0 ) + return 0; + } + */ +#endif + break; + } + return 1; +} + +#else /* defined(U8G_WITH_PINLIST) */ + +uint8_t u8g_com_raspberrypi_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) { + return 1; +} + +#endif /* defined(U8G_WITH_PINLIST) */ +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_delay.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_delay.c index e6a0661b3c..a1329da1dd 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_delay.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_delay.c @@ -30,7 +30,12 @@ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + + + void u8g_Delay(uint16_t val) Delay by "val" milliseconds + void u8g_MicroDelay(void) Delay be one microsecond + void u8g_10MicroDelay(void) Delay by 10 microseconds + */ @@ -40,19 +45,37 @@ /*==== Part 1: Derive suitable delay procedure ====*/ #if defined(ARDUINO) + +# if ARDUINO < 100 +# include +# else +# include +# endif + # if defined(__AVR__) # define USE_AVR_DELAY # elif defined(__PIC32MX) # define USE_PIC32_DELAY -# elif defined(__arm__) /* Arduino Due */ +# elif defined(__arm__) /* Arduino Due & Teensy */ # define USE_ARDUINO_DELAY # else # define USE_ARDUINO_DELAY # endif +#elif defined(U8G_RASPBERRY_PI) +# define USE_RASPBERRYPI_DELAY #elif defined(__AVR__) # define USE_AVR_DELAY #elif defined(__18CXX) # define USE_PIC18_DELAY +#elif defined(__arm__) +/* do not define anything, all procedures are expected to be defined outside u8glib */ + +/* +void u8g_Delay(uint16_t val); +void u8g_MicroDelay(void); +void u8g_10MicroDelay(void); +*/ + #else # define USE_DUMMY_DELAY #endif @@ -61,6 +84,26 @@ /*==== Part 2: Definition of the delay procedures ====*/ +/*== Raspberry Pi Delay ==*/ +#if defined (USE_RASPBERRYPI_DELAY) +#include +//#include "/usr/local/include/wiringPi.h" +void u8g_Delay(uint16_t val) { + //delay(val); + //usleep((uint32_t)val*(uint32_t)1000); + delayMicroseconds((uint32_t)val*(uint32_t)1000); +} +void u8g_MicroDelay(void) +{ + usleep(1); +} +void u8g_10MicroDelay(void) +{ + usleep(10); +} +#endif + + /*== AVR Delay ==*/ #if defined(USE_AVR_DELAY) @@ -144,7 +187,11 @@ void u8g_10MicroDelay(void) #if defined(USE_ARDUINO_DELAY) void u8g_Delay(uint16_t val) { +#if defined(__arm__) + delayMicroseconds((uint32_t)val*(uint32_t)1000); +#else delay(val); +#endif } void u8g_MicroDelay(void) { diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_a2_micro_printer.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_a2_micro_printer.c new file mode 100644 index 0000000000..8968a26da5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_a2_micro_printer.c @@ -0,0 +1,199 @@ +/* + + u8g_dev_a2_micro_printer_ds.c + + Use DC2 bitmap command of the A2 Micro panel termal printer + double stroke + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define LINE_DELAY 40 + + +uint8_t u8g_dev_a2_micro_printer_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i, j; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + y = pb->p.page_y0; + ptr = pb->buf; + + u8g_WriteByte(u8g, dev, 27); /* ESC */ + u8g_WriteByte(u8g, dev, 55 ); /* parameter command */ + u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/ + u8g_WriteByte(u8g, dev, 160); /* 3-255 Heating time,Unit(10us),Default:80(800us) */ + u8g_WriteByte(u8g, dev, 20); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/ + + u8g_WriteByte(u8g, dev, 18); /* DC2 */ + u8g_WriteByte(u8g, dev, 42 ); /* * */ + u8g_WriteByte(u8g, dev, pb->p.page_height ); + u8g_WriteByte(u8g, dev, pb->width/8 ); + + for( i = 0; i < pb->p.page_height; i ++ ) + { + for( j = 0; j < pb->width/8; j++ ) + { + u8g_WriteByte(u8g, dev, *ptr); + ptr++; + } + u8g_Delay(LINE_DELAY); + y++; + } + + /* set parameters back to their default values */ + u8g_WriteByte(u8g, dev, 27); /* ESC */ + u8g_WriteByte(u8g, dev, 55 ); /* parameter command */ + u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/ + u8g_WriteByte(u8g, dev, 80); /* 3-255 Heating time,Unit(10us),Default:80(800us) */ + u8g_WriteByte(u8g, dev, 2); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/ + + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_expand4(uint8_t val) +{ + uint8_t a,b,c,d; + a = val&1; + b = (val&2)<<1; + c = (val&4)<<2; + d = (val&8)<<3; + a |=b; + a |=c; + a |=d; + a |= a<<1; + return a; +} + +uint8_t u8g_dev_a2_micro_printer_double_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + { + //u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + //u8g_WriteByte(u8g, dev, 18); /* DC2 */ + //u8g_WriteByte(u8g, dev, 42 ); /* * */ + //u8g_WriteByte(u8g, dev, pb->p.total_height*2 ); + //u8g_WriteByte(u8g, dev, pb->width/8*2 ); + } + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i, j; + uint8_t *ptr; + uint8_t *p2; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + y = pb->p.page_y0; + ptr = pb->buf; + //u8g_WriteByte(u8g, dev, 18); /* DC2 */ + //u8g_WriteByte(u8g, dev, 35 ); /* # */ + //u8g_WriteByte(u8g, dev, 0x0ff ); /* max */ + + u8g_WriteByte(u8g, dev, 27); /* ESC */ + u8g_WriteByte(u8g, dev, 55 ); /* parameter command */ + u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/ + u8g_WriteByte(u8g, dev, 160); /* 3-255 Heating time,Unit(10us),Default:80(800us) */ + u8g_WriteByte(u8g, dev, 20); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/ + + u8g_WriteByte(u8g, dev, 18); /* DC2 */ + u8g_WriteByte(u8g, dev, 42 ); /* * */ + u8g_WriteByte(u8g, dev, pb->p.page_height*2 ); + u8g_WriteByte(u8g, dev, pb->width/8*2 ); + + for( i = 0; i < pb->p.page_height; i ++ ) + { + p2 = ptr; + for( j = 0; j < pb->width/8; j++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 >> 4)); + u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 & 15)); + p2++; + } + u8g_Delay(LINE_DELAY); + p2 = ptr; + for( j = 0; j < pb->width/8; j++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 >> 4)); + u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 & 15)); + p2++; + } + u8g_Delay(LINE_DELAY); + ptr += pb->width/8; + y++; + } + + /* set parameters back to their default values */ + u8g_WriteByte(u8g, dev, 27); /* ESC */ + u8g_WriteByte(u8g, dev, 55 ); /* parameter command */ + u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/ + u8g_WriteByte(u8g, dev, 80); /* 3-255 Heating time,Unit(10us),Default:80(800us) */ + u8g_WriteByte(u8g, dev, 2); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/ + + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +#if defined(U8G_16BIT) +U8G_PB_DEV(u8g_dev_a2_micro_printer_384x240, 384, 240, 8, u8g_dev_a2_micro_printer_fn, u8g_com_null_fn); +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x360_ds, 192, 360, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x720_ds, 192, 720, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); +#else +U8G_PB_DEV(u8g_dev_a2_micro_printer_384x240, 240, 240, 8, u8g_dev_a2_micro_printer_fn, u8g_com_null_fn); +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x360_ds, 192, 240, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x720_ds, 192, 240, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); +#endif + +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x120_ds, 192, 120, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c index bb368de438..d86d08e050 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c @@ -78,7 +78,7 @@ uint8_t u8g_dev_flipdisc_2x7_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void /* current page: pb->p.page */ /* ptr to the buffer: pb->buf */ - (*u8g_write_flip_disc_matrix)(0, pb->p.page, WIDTH, pb->buf, pb->buf+WIDTH); + (*u8g_write_flip_disc_matrix)(0, pb->p.page, WIDTH, pb->buf, (uint8_t *)(pb->buf)+WIDTH); } break; case U8G_DEV_MSG_CONTRAST: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_gprof.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_gprof.c index a486a21433..cb2342ac4a 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_gprof.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_gprof.c @@ -121,7 +121,7 @@ uint8_t u8g_dev_gprof_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) case U8G_DEV_MSG_GET_PAGE_BOX: u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ht1632.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ht1632.c new file mode 100644 index 0000000000..4977793f1e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ht1632.c @@ -0,0 +1,281 @@ +/* + + u8g_dev_ht1632.c + + 1-Bit (BW) Driver for HT1632 controller + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + U8G_PIN_NONE can be used as argument + + uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) + { + ... + u8g->pin_list[U8G_PI_SCK] = sck; + u8g->pin_list[U8G_PI_MOSI] = mosi; + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_RESET] = reset; + +mapping + +#define DATA_PIN --> U8G_PI_MOSI +#define WR_PIN --> U8G_PI_SCK +#define CS_PIN --> U8G_PI_CS + U8G_PI_A0 --> not used + U8G_PI_RESET --> not used + +Usage: + + u8g_InitSPI(&u8g, &u8g_dev_ht1632_24x16, WR_PIN, DATA_IN, CS_PIN, U8G_PIN_NONE, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#define WIDTH 24 +#define HEIGHT 16 +#define PAGE_HEIGHT 16 + +/* http://forum.arduino.cc/index.php?topic=168537.0 */ + +#define HT1632_CMD_SYSDIS 0x00 // CMD= 0000-0000-x Turn off oscil +#define HT1632_CMD_SYSON 0x01 // CMD= 0000-0001-x Enable system oscil +#define HT1632_CMD_LEDOFF 0x02 // CMD= 0000-0010-x LED duty cycle gen off +#define HT1632_CMD_LEDON 0x03 // CMD= 0000-0011-x LEDs ON +#define HT1632_CMD_BLOFF 0x08 // CMD= 0000-1000-x Blink OFF +#define HT1632_CMD_BLON 0x09 // CMD= 0000-1001-x Blink On +#define HT1632_CMD_SLVMD 0x10 // CMD= 0001-00xx-x Slave Mode +#define HT1632_CMD_MSTMD 0x14 // CMD= 0001-01xx-x Master Mode +#define HT1632_CMD_RCCLK 0x18 // CMD= 0001-10xx-x Use on-chip clock +#define HT1632_CMD_EXTCLK 0x1C // CMD= 0001-11xx-x Use external clock +#define HT1632_CMD_COMS00 0x20 // CMD= 0010-ABxx-x commons options +#define HT1632_CMD_COMS01 0x24 // CMD= 0010-ABxx-x commons options +#define HT1632_CMD_COMS10 0x28 // CMD= 0010-ABxx-x commons options +#define HT1632_CMD_COMS11 0x2C // P-MOS OUTPUT AND 16COMMON OPTION +#define HT1632_CMD_PWM 0xA0 // CMD= 101x-PPPP-x PWM duty cycle + +#define HT1632_ID_CMD 4 /* ID = 100 - Commands */ +#define HT1632_ID_RD 6 /* ID = 110 - Read RAM */ +#define HT1632_ID_WR 5 /* ID = 101 - Write RAM */ + +#define HT1632_ID_LEN 3 // IDs are 3 bits +#define HT1632_CMD_LEN 8 // CMDs are 8 bits +#define HT1632_DATA_LEN 8 // Data are 4*2 bits +#define HT1632_ADDR_LEN 7 // Address are 7 bits + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +//#define WR_PIN 3 +//#define DATA_PIN 2 +//#define CS_PIN 4 + +void ht1632_write_data_MSB(u8g_t *u8g, uint8_t cnt, uint8_t data, uint8_t extra) +{ + int8_t i; + uint8_t data_pin = u8g->pin_list[U8G_PI_MOSI]; + uint8_t wr_pin = u8g->pin_list[U8G_PI_SCK]; + + for(i = cnt - 1; i >= 0; i--) + { + if ((data >> i) & 1) + { + digitalWrite(data_pin, HIGH); + } + else + { + digitalWrite(data_pin, LOW); + } + + digitalWrite(wr_pin, LOW); + u8g_MicroDelay(); + digitalWrite(wr_pin, HIGH); + u8g_MicroDelay(); + } + + // Send an extra bit + if (extra) + { + digitalWrite(data_pin, HIGH); + digitalWrite(wr_pin, LOW); + u8g_MicroDelay(); + digitalWrite(wr_pin, HIGH); + u8g_MicroDelay(); + } +} + +void ht1632_write_data(u8g_t *u8g, uint8_t cnt, uint8_t data) +{ + uint8_t i; + uint8_t data_pin = u8g->pin_list[U8G_PI_MOSI]; + uint8_t wr_pin = u8g->pin_list[U8G_PI_SCK]; + for (i = 0; i < cnt; i++) + { + + if ((data >> i) & 1) { + digitalWrite(data_pin, HIGH); + } + else { + digitalWrite(data_pin, LOW); + } + + digitalWrite(wr_pin, LOW); + u8g_MicroDelay(); + digitalWrite(wr_pin, HIGH); + u8g_MicroDelay(); + } +} + + +void ht1632_init(u8g_t *u8g) +{ + //uint8_t i; + uint8_t data_pin = u8g->pin_list[U8G_PI_MOSI]; + uint8_t wr_pin = u8g->pin_list[U8G_PI_SCK]; + uint8_t cs_pin = u8g->pin_list[U8G_PI_CS]; + pinMode(data_pin, OUTPUT); + pinMode(wr_pin, OUTPUT); + pinMode(cs_pin, OUTPUT); + + digitalWrite(data_pin, HIGH); + digitalWrite(wr_pin, HIGH); + digitalWrite(cs_pin, HIGH); + + digitalWrite(cs_pin, LOW); + /* init display once after startup */ + ht1632_write_data_MSB(u8g, 3, HT1632_ID_CMD, false); // IDs are 3 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_SYSDIS, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_SYSON, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_COMS11, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_LEDON, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_BLOFF, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_PWM+15, true); // 8 bits + digitalWrite(cs_pin, HIGH); + + /* removed following (debug) code */ + /* + digitalWrite(cs_pin, LOW); + ht1632_write_data_MSB(u8g, 3, HT1632_ID_WR, false); // Send "write to display" command + ht1632_write_data_MSB(u8g, 7, 0, false); + for(i = 0; i<48; ++i) + { + ht1632_write_data(u8g, 8, 0xFF); + } + digitalWrite(cs_pin, HIGH); + */ +} + +/* + page: 0=data contain lines 0..16, 1=data contain lines 16..32 (a 24x16 display will only have page 0) + cnt: width of the display + data: pointer to a buffer with 2*cnt bytes. +*/ +void ht1632_transfer_data(u8g_t *u8g, uint8_t page, uint8_t cnt, uint8_t *data) +{ + uint8_t addr; + uint8_t cs_pin = u8g->pin_list[U8G_PI_CS]; + /* send data to the ht1632 */ + digitalWrite(cs_pin, LOW); + ht1632_write_data_MSB(u8g, 3, HT1632_ID_WR, false); // Send "write to display" command + ht1632_write_data_MSB(u8g, 7, page*2*cnt, false); + + // Operating in progressive addressing mode + for (addr = 0; addr < cnt; addr++) + { + ht1632_write_data(u8g, 8, data[addr]); + ht1632_write_data(u8g, 8, data[addr+cnt]); + } + digitalWrite(cs_pin, HIGH); +} + +/* value is between 0...15 */ +void ht1632_set_contrast(u8g_t *u8g, uint8_t value) +{ + uint8_t cs_pin = u8g->pin_list[U8G_PI_CS]; + digitalWrite(cs_pin, LOW); + ht1632_write_data_MSB(u8g, 3, HT1632_ID_CMD, false); + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_PWM + value, false); + digitalWrite(cs_pin, HIGH); +} + +#else +void ht1632_init(u8g_t *u8g) +{ +} + +void ht1632_transfer_data(u8g_t *u8g, uint8_t page, uint8_t cnt, uint8_t *data) +{ +} + +void ht1632_set_contrast(u8g_t *u8g, uint8_t value) +{ +} + +#endif /* ARDUINO */ + + +uint8_t u8g_dev_ht1632_24x16_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + ht1632_init(u8g); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + /* current page: pb->p.page */ + /* ptr to the buffer: pb->buf */ + ht1632_transfer_data(u8g, pb->p.page, WIDTH, pb->buf); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* values passed to SetContrast() are between 0 and 255, scale down to 0...15 */ + ht1632_set_contrast(u8g, (*(uint8_t *)arg) >> 4); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ht1632_24x16_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ht1632_24x16_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ht1632_24x16_buf}; +u8g_dev_t u8g_dev_ht1632_24x16 = { u8g_dev_ht1632_24x16_fn, &u8g_dev_ht1632_24x16_pb, u8g_com_null_fn }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c index e30ae6a71d..35db466b27 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c @@ -272,7 +272,7 @@ uint8_t u8g_dev_ili9325d_320x240_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); //for(;;) u8g_WriteEscSeqP(u8g, dev, u8g_dev_ili9325d_320x240_init_seq); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c index 47ba18d4e7..f30f8a38ce 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c @@ -73,7 +73,7 @@ uint8_t u8g_dev_ks0108_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ks0108_128x64_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c index b7bf6755ed..e05fa03a9a 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c @@ -98,7 +98,7 @@ uint8_t u8g_dev_lc7981_160x80_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_160x80_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c index 272b7c4cbd..f0b9c31485 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c @@ -96,7 +96,7 @@ uint8_t u8g_dev_lc7981_240x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_240x128_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c index 781f1d90a7..9464b52aec 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c @@ -96,7 +96,7 @@ uint8_t u8g_dev_lc7981_240x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_240x64_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c index d9ae9369fc..fe28f942e8 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c @@ -40,7 +40,12 @@ #include "u8g.h" +#ifdef U8G_16BIT #define WIDTH 320 +#else +#define WIDTH 240 +#endif + #define HEIGHT 64 #define PAGE_HEIGHT 8 @@ -98,7 +103,7 @@ uint8_t u8g_dev_lc7981_320x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_320x64_init_seq); break; case U8G_DEV_MSG_STOP: @@ -143,3 +148,4 @@ uint8_t u8g_dev_lc7981_320x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * } U8G_PB_DEV(u8g_dev_lc7981_320x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_320x64_fn, U8G_COM_FAST_PARALLEL); + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ld7032_60x32.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ld7032_60x32.c new file mode 100644 index 0000000000..596d95898b --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ld7032_60x32.c @@ -0,0 +1,232 @@ +/* + + u8g_dev_ld7032_60x32.c + + 60x32 OLED display + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* define width as 64, so that it is a multiple of 8 */ +#define WIDTH 64 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_ld7032_60x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(1), /* delay 1 ms */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + + U8G_ESC_ADR(0), /* instruction mode */ + 0x002, /* Dot Matrix Display ON/OFF */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* ON */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x014, /* Dot Matrix Display Stand-by ON/OFF */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* ON */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x01a, /* Dot Matrix Frame Rate */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, /* special value for this OLED from manual */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x01d, /* Graphics Memory Writing Direction */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* reset default (right down, horizontal) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x009, /* Display Direction */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* reset default (x,y: min --> max) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x030, /* Display Size X */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* Column Start Output */ + 0x03b, /* Column End Output */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x032, /* Display Size Y */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* Row Start Output */ + 0x01f, /* Row End Output */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x010, /* Peak Pulse Width Set */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* 0 SCLK */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x016, /* Peak Pulse Delay Set */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* 0 SCLK */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x012, /* Dot Matrix Current Level Set */ + U8G_ESC_ADR(1), /* data mode */ + 0x050, /* 0x050 * 1 uA = 80 uA */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x018, /* Pre-Charge Pulse Width */ + U8G_ESC_ADR(1), /* data mode */ + 0x003, /* 3 SCLK */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x044, /* Pre-Charge Mode */ + U8G_ESC_ADR(1), /* data mode */ + 0x002, /* Every Time */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x048, /* Row overlap timing */ + U8G_ESC_ADR(1), /* data mode */ + 0x003, /* Pre-Charge + Peak Delay + Peak boot Timing */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x03f, /* VCC_R_SEL */ + U8G_ESC_ADR(1), /* data mode */ + 0x011, /* ??? */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x03d, /* VSS selection */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* 2.8V */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x002, /* Dot Matrix Display ON/OFF */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* ON */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x008, /* write data */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* use box commands to set start adr */ +static const uint8_t u8g_dev_ld7032_60x32_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + + + U8G_ESC_ADR(0), /* instruction mode */ + 0x034, /* box x start */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* 0 */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x035, /* box x end */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, /* */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x037, /* box y end */ + U8G_ESC_ADR(1), /* data mode */ + 0x01f, /* */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x036, /* box y start */ + U8G_ESC_ADR(1), /* data mode */ + + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ld7032_60x32_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + /* ... */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ld7032_60x32_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + /* ... */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ld7032_60x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ld7032_60x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ld7032_60x32_data_start); + u8g_WriteByte(u8g, dev, pb->p.page_y0); /* y start */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x008); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ld7032_60x32_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ld7032_60x32_sleep_off); + return 1; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ld7032_60x32_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ld7032_60x32_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ld7032_60x32_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ld7032_60x32_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ld7032_60x32_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ld7032_60x32_fn, U8G_COM_PARALLEL); +U8G_PB_DEV(u8g_dev_ld7032_60x32_hw_usart_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ld7032_60x32_fn, U8G_COM_HW_USART_SPI); + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_null.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_null.c index 0e3907749c..c41380e8c5 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_null.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_null.c @@ -58,7 +58,7 @@ uint8_t u8g_dev_null(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) #endif case U8G_DEV_MSG_GET_PAGE_BOX: break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c index 4cc0113797..dbebd7cd02 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c @@ -69,12 +69,36 @@ static const uint8_t u8g_dev_pcd8544_init_seq[] PROGMEM = { U8G_ESC_END /* end of sequence */ }; + +static const uint8_t u8g_dev_pcd8544_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_pcd8544_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x008, /* display blank */ + 0x024, /* power down (PD=1), horizontal increment (V=0), enter normal command set (H=0) */ + + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ + U8G_ESC_END /* end of sequence */ +}; + + uint8_t u8g_dev_pcd8544_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) { switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcd8544_init_seq); break; case U8G_DEV_MSG_STOP: @@ -101,10 +125,17 @@ uint8_t u8g_dev_pcd8544_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); u8g_SetChipSelect(u8g, dev, 0); return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcd8544_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcd8544_sleep_off); + return 1; } return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } U8G_PB_DEV(u8g_dev_pcd8544_84x48_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcd8544_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_pcd8544_84x48_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcd8544_fn, U8G_COM_HW_SPI); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c index 3ac57884f8..3801284468 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c @@ -88,7 +88,7 @@ uint8_t u8g_dev_pcf8812_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcf8812_init_seq); break; case U8G_DEV_MSG_STOP: @@ -104,6 +104,20 @@ uint8_t u8g_dev_pcf8812_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) u8g_SetAddress(u8g, dev, 1); /* data mode */ if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) return 0; + + /* mirrored output, not tested*/ + /* + { + uint8_t i = pb->width; + while( i > 0 ) + { + i--; + u8g_WriteByte(u8g, dev, ((unsigned char *)pb->buf)[i] ); + } + } + */ + + u8g_SetChipSelect(u8g, dev, 0); } break; @@ -121,3 +135,4 @@ uint8_t u8g_dev_pcf8812_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) /* u8g_com_arduino_sw_spi_fn does not work, too fast??? */ U8G_PB_DEV(u8g_dev_pcf8812_96x65_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcf8812_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_pcf8812_96x65_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcf8812_fn, U8G_COM_HW_SPI); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c index 3b0bcd6253..a8552cb40e 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c @@ -70,7 +70,7 @@ uint8_t u8g_dev_sbn1661_122x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); u8g_WriteEscSeqP(u8g, dev, u8g_dev_sbn1661_122x32_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c index 8f294374b1..3052d6bcaf 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c @@ -123,7 +123,7 @@ static const uint8_t u8g_dev_ssd1306_128x32_adafruit3_init_seq[] PROGMEM = { 0x0ae, /* display off, sleep mode */ 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ - 0x0a8, 0x01f, /* Feb 23, 2013: 128x32 OLED: 0x01f, 128x64 OLED 0x03f */ + 0x0a8, 0x01f, /* Feb 23, 2013: 128x32 OLED: 0x01f, 128x32 OLED 0x03f */ 0x0d3, 0x000, /* */ @@ -131,7 +131,7 @@ static const uint8_t u8g_dev_ssd1306_128x32_adafruit3_init_seq[] PROGMEM = { 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ - 0x020, 0x002, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5), Feb 23, 2013: 128x32 OLED: 0x002, 128x64 OLED 0x012 */ + 0x020, 0x002, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5), Feb 23, 2013: 128x32 OLED: 0x002, 128x32 OLED 0x012 */ 0x0a1, /* segment remap a0/a1*/ 0x0c8, /* c0: scan dir normal, c8: reverse */ 0x0da, 0x002, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ @@ -196,7 +196,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { U8G_ESC_ADR(0), /* instruction mode */ U8G_ESC_CS(1), /* enable chip */ 0x0ae, /* display off */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -205,7 +205,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { U8G_ESC_CS(1), /* enable chip */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -214,7 +214,7 @@ uint8_t u8g_dev_ssd1306_128x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_init_seq); break; case U8G_DEV_MSG_STOP: @@ -241,7 +241,49 @@ uint8_t u8g_dev_ssd1306_128x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } +uint8_t u8g_dev_ssd1306_128x32_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2+1)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + U8G_PB_DEV(u8g_dev_ssd1306_128x32_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_ssd1306_128x32_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_HW_SPI); U8G_PB_DEV(u8g_dev_ssd1306_128x32_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_SSD_I2C); +uint8_t u8g_dev_ssd1306_128x32_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1306_128x32_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1306_128x32_2x_buf}; +u8g_dev_t u8g_dev_ssd1306_128x32_2x_sw_spi = { u8g_dev_ssd1306_128x32_2x_fn, &u8g_dev_ssd1306_128x32_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1306_128x32_2x_hw_spi = { u8g_dev_ssd1306_128x32_2x_fn, &u8g_dev_ssd1306_128x32_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1306_128x32_2x_i2c = { u8g_dev_ssd1306_128x32_2x_fn, &u8g_dev_ssd1306_128x32_2x_pb, U8G_COM_SSD_I2C }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c index a49b2d8064..bd55e90e82 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c @@ -172,7 +172,10 @@ static const uint8_t u8g_dev_ssd1306_128x64_univision_init_seq[] PROGMEM = { /* select one init sequence here */ //#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_univision_init_seq //#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit1_init_seq +// 26. Apr 2014: in this thead: http://forum.arduino.cc/index.php?topic=234930.msg1696754;topicseen#msg1696754 +// it is mentiond, that adafruit2_init_seq works better --> this will be used by the ssd1306_adafruit device //#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit2_init_seq + #define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit3_init_seq @@ -180,7 +183,16 @@ static const uint8_t u8g_dev_ssd1306_128x64_data_start[] PROGMEM = { U8G_ESC_ADR(0), /* instruction mode */ U8G_ESC_CS(1), /* enable chip */ 0x010, /* set upper 4 bit of the col adr to 0 */ - 0x000, /* set lower 4 bit of the col adr to 4 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +/* the sh1106 is compatible to the ssd1306, but is 132x64. display seems to be centered */ +static const uint8_t u8g_dev_sh1106_128x64_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x002, /* set lower 4 bit of the col adr to 2 (centered display with sh1106) */ U8G_ESC_END /* end of sequence */ }; @@ -188,7 +200,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { U8G_ESC_ADR(0), /* instruction mode */ U8G_ESC_CS(1), /* enable chip */ 0x0ae, /* display off */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -197,7 +209,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { U8G_ESC_CS(1), /* enable chip */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -206,7 +218,38 @@ uint8_t u8g_dev_ssd1306_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_adafruit2_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1306_adafruit_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_init_seq); break; case U8G_DEV_MSG_STOP: @@ -232,6 +275,138 @@ uint8_t u8g_dev_ssd1306_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } +uint8_t u8g_dev_sh1106_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_sh1106_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_dev_ssd1306_128x64_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2+1)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_sh1106_128x64_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_sh1106_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_sh1106_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2+1)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + + + + U8G_PB_DEV(u8g_dev_ssd1306_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_ssd1306_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_HW_SPI); U8G_PB_DEV(u8g_dev_ssd1306_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_SSD_I2C); + +U8G_PB_DEV(u8g_dev_ssd1306_adafruit_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_adafruit_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_adafruit_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_adafruit_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_adafruit_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_adafruit_128x64_fn, U8G_COM_SSD_I2C); + + +uint8_t u8g_dev_ssd1306_128x64_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1306_128x64_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1306_128x64_2x_buf}; +u8g_dev_t u8g_dev_ssd1306_128x64_2x_sw_spi = { u8g_dev_ssd1306_128x64_2x_fn, &u8g_dev_ssd1306_128x64_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1306_128x64_2x_hw_spi = { u8g_dev_ssd1306_128x64_2x_fn, &u8g_dev_ssd1306_128x64_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c = { u8g_dev_ssd1306_128x64_2x_fn, &u8g_dev_ssd1306_128x64_2x_pb, U8G_COM_SSD_I2C }; + + +U8G_PB_DEV(u8g_dev_sh1106_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_sh1106_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_sh1106_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_sh1106_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_sh1106_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_sh1106_128x64_fn, U8G_COM_SSD_I2C); + +uint8_t u8g_dev_sh1106_128x64_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_sh1106_128x64_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_sh1106_128x64_2x_buf}; +u8g_dev_t u8g_dev_sh1106_128x64_2x_sw_spi = { u8g_dev_sh1106_128x64_2x_fn, &u8g_dev_sh1106_128x64_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_sh1106_128x64_2x_hw_spi = { u8g_dev_sh1106_128x64_2x_fn, &u8g_dev_sh1106_128x64_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_sh1106_128x64_2x_i2c = { u8g_dev_sh1106_128x64_2x_fn, &u8g_dev_sh1106_128x64_2x_pb, U8G_COM_SSD_I2C }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c index d16013fb7c..4a6411e607 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c @@ -86,7 +86,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { U8G_ESC_ADR(0), /* instruction mode */ U8G_ESC_CS(1), /* enable chip */ 0x0ae, /* display off */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip */ U8G_ESC_END /* end of sequence */ }; @@ -95,7 +95,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { U8G_ESC_CS(1), /* enable chip */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip */ U8G_ESC_END /* end of sequence */ }; @@ -104,7 +104,7 @@ uint8_t u8g_dev_ssd1309_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c index 24b94ffc7e..4db96270d2 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c @@ -199,7 +199,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { U8G_ESC_ADR(0), /* instruction mode */ U8G_ESC_CS(1), /* enable chip */ 0x0ae, /* display off */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -208,7 +208,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { U8G_ESC_CS(1), /* enable chip */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -218,7 +218,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_init_seq); break; case U8G_DEV_MSG_STOP: @@ -244,6 +244,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, u8g_WriteByte(u8g, dev, 0x0ff); u8g_WriteByte(u8g, dev, 0x0ff); #endif + u8g_MicroDelay(); // for DUE? u8g_SetChipSelect(u8g, dev, 0); p+=cnt; } @@ -255,6 +256,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, u8g_WriteByte(u8g, dev, 0x081); u8g_SetAddress(u8g, dev, 1); /* data mode */ u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_MicroDelay(); // for DUE? u8g_SetChipSelect(u8g, dev, 0); break; case U8G_DEV_MSG_SLEEP_ON: @@ -273,7 +275,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_init_seq); break; case U8G_DEV_MSG_STOP: @@ -299,6 +301,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m u8g_WriteByte(u8g, dev, 0x0ff); u8g_WriteByte(u8g, dev, 0x0ff); #endif + u8g_MicroDelay(); // for DUE? u8g_SetChipSelect(u8g, dev, 0); p+=cnt; } @@ -307,7 +310,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m case U8G_DEV_MSG_CONTRAST: u8g_SetChipSelect(u8g, dev, 1); u8g_SetAddress(u8g, dev, 0); /* instruction mode */ - u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, 0x0c1); /* 21 May 2013, fixed contrast command */ u8g_SetAddress(u8g, dev, 1); /* data mode */ u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); u8g_SetChipSelect(u8g, dev, 0); @@ -325,6 +328,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_parallel , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_FAST_PARALLEL); #define DWIDTH (WIDTH*2) uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_buf[DWIDTH] U8G_NOCOMMON ; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c index 5b509641c6..61f0b1922f 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c @@ -50,7 +50,7 @@ #define WIDTH 248 #endif #define HEIGHT 64 -#define PAGE_HEIGHT 8 +//#define PAGE_HEIGHT 8 /* http://www.newhavendisplay.com/app_notes/OLED_25664.txt @@ -199,7 +199,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { U8G_ESC_ADR(0), /* instruction mode */ U8G_ESC_CS(1), /* enable chip */ 0x0ae, /* display off */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -208,7 +208,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { U8G_ESC_CS(1), /* enable chip */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -217,7 +217,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_init_seq); break; case U8G_DEV_MSG_STOP: @@ -243,6 +243,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, u8g_WriteByte(u8g, dev, 0x00); u8g_WriteByte(u8g, dev, 0x00); #endif + u8g_MicroDelay(); // for DUE? u8g_SetChipSelect(u8g, dev, 0); p+=cnt; } @@ -254,6 +255,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, u8g_WriteByte(u8g, dev, 0x081); u8g_SetAddress(u8g, dev, 1); /* data mode */ u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_MicroDelay(); // for DUE? u8g_SetChipSelect(u8g, dev, 0); break; case U8G_DEV_MSG_SLEEP_ON: @@ -272,7 +274,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_init_seq); break; case U8G_DEV_MSG_STOP: @@ -284,7 +286,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m uint8_t *p = pb->buf; u8g_uint_t cnt; cnt = pb->width; - cnt >>= 3; + cnt >>= 2; /* 23 Oct 2013, changed to 2 */ for( i = 0; i < pb->p.page_height; i++ ) { @@ -298,6 +300,7 @@ uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m u8g_WriteByte(u8g, dev, 0x00); u8g_WriteByte(u8g, dev, 0x00); #endif + u8g_MicroDelay(); // for DUE? u8g_SetChipSelect(u8g, dev, 0); p+=cnt; } @@ -322,12 +325,14 @@ uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m } -U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_SW_SPI); -U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_parallel , WIDTH, HEIGHT, 4, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_FAST_PARALLEL); + #define DWIDTH (WIDTH*2) uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_buf[DWIDTH] U8G_NOCOMMON ; -u8g_pb_t u8g_dev_ssd1322_nhd31oled_2x_gr_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1322_nhd31oled_2x_gr_buf}; +u8g_pb_t u8g_dev_ssd1322_nhd31oled_2x_gr_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1322_nhd31oled_2x_gr_buf}; u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi = { u8g_dev_ssd1322_nhd31oled_2x_gr_fn, &u8g_dev_ssd1322_nhd31oled_2x_gr_pb, U8G_COM_SW_SPI }; u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi = { u8g_dev_ssd1322_nhd31oled_2x_gr_fn, &u8g_dev_ssd1322_nhd31oled_2x_gr_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c index 95853bdf25..d8895391e9 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c @@ -191,7 +191,7 @@ uint8_t u8g_dev_ssd1325_nhd27oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq); break; case U8G_DEV_MSG_STOP: @@ -219,7 +219,7 @@ uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c index c9f4a51ad8..7d26b2fee3 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c @@ -112,7 +112,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { U8G_ESC_ADR(0), /* instruction mode */ U8G_ESC_CS(1), /* enable chip */ 0x0ae, /* display off */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -121,7 +121,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { U8G_ESC_CS(1), /* enable chip */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -133,7 +133,7 @@ static uint8_t u8g_dev_ssd1325_nhd27oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8 //case U8G_DEV_MSG_IS_BBX_INTERSECTION: // return u8g_pb_IsIntersection((u8g_pb_t *)(dev->dev_mem), (u8g_dev_arg_bbx_t *)arg); case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_nhd_27_12864_init_seq); break; case U8G_DEV_MSG_STOP: @@ -178,7 +178,7 @@ static uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, ui switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_nhd_27_12864_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c index d00d18ec4f..6ab48135f7 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c @@ -190,7 +190,7 @@ static uint8_t u8g_dev_ssd1325_nhd27oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8 switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); break; case U8G_DEV_MSG_STOP: @@ -218,7 +218,7 @@ static uint8_t u8g_dev_ssd1325_nhd27oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, ui switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c index 2e61d9a57c..9ac51f2ff0 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c @@ -111,7 +111,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { U8G_ESC_ADR(0), /* instruction mode */ U8G_ESC_CS(1), /* enable chip */ 0x0ae, /* display off */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -120,7 +120,7 @@ static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { U8G_ESC_CS(1), /* enable chip */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -131,7 +131,7 @@ static uint8_t u8g_dev_ssd1325_nhd27oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8 switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); break; case U8G_DEV_MSG_STOP: @@ -178,7 +178,7 @@ static uint8_t u8g_dev_ssd1325_nhd27oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, ui switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c index 5e3b446749..3a11e29425 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c @@ -233,7 +233,7 @@ uint8_t u8g_dev_ssd1327_96x96_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_init_seq); break; case U8G_DEV_MSG_STOP: @@ -261,7 +261,7 @@ uint8_t u8g_dev_ssd1327_96x96_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1351_128x128.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1351_128x128.c new file mode 100644 index 0000000000..5c82b9b30a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1351_128x128.c @@ -0,0 +1,787 @@ +/* + + u8g_dev_ssd1351_128x128.c + + Universal 8bit Graphics Library + + Copyright (c) 2013, jamjardavies@gmail.com + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + History: + Initial version 20 May 2013 jamjardavies@gmail.com + indexed device 22 May 2013 olikraus@gmail.com + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_ssd1351_128x128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_DLY(50), + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), + + 0xfd, /* Command Lock */ + U8G_ESC_ADR(1), + 0x12, + + U8G_ESC_ADR(0), /* instruction mode */ + 0xfd, + U8G_ESC_ADR(1), + 0xb1, /* Command Lock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xae, /* Set Display Off */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb3, + U8G_ESC_ADR(1), + 0xf1, /* Front Clock Div */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xca, + U8G_ESC_ADR(1), + 0x7f, /* Set Multiplex Ratio */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa0, + U8G_ESC_ADR(1), + 0xb4, /* Set Colour Depth */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x15, + U8G_ESC_ADR(1), + 0x00, 0x7f, /* Set Column Address */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x75, + U8G_ESC_ADR(1), + 0x00, 0x7f, /* Set Row Address */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa1, + U8G_ESC_ADR(1), + 0x00, /* Set Display Start Line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa2, + U8G_ESC_ADR(1), + 0x00, /* Set Display Offset */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb5, + U8G_ESC_ADR(1), + 0x00, /* Set GPIO */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xab, + U8G_ESC_ADR(1), + 0x01, /* Set Function Selection */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb1, + U8G_ESC_ADR(1), + 0x32, /* Set Phase Length */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb4, + U8G_ESC_ADR(1), + 0xa0, 0xb5, 0x55, /* Set Segment Low Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xbb, + U8G_ESC_ADR(1), + 0x17, /* Set Precharge Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xbe, + U8G_ESC_ADR(1), + 0x05, /* Set VComH Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xc1, + U8G_ESC_ADR(1), + 0xc8, 0x80, 0xc8, /* Set Contrast */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xc7, + U8G_ESC_ADR(1), + 0x0f, /* Set Master Contrast */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb6, + U8G_ESC_ADR(1), + 0x01, /* Set Second Precharge Period */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa6, /* Set Display Mode Reset */ + + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb8, /* Set CMD Grayscale Lookup */ + U8G_ESC_ADR(1), + 0x05, + 0x06, + 0x07, + 0x08, + 0x09, + 0x0a, + 0x0b, + 0x0c, + 0x0D, + 0x0E, + 0x0F, + 0x10, + 0x11, + 0x12, + 0x13, + 0x14, + 0x15, + 0x16, + 0x18, + 0x1a, + 0x1b, + 0x1C, + 0x1D, + 0x1F, + 0x21, + 0x23, + 0x25, + 0x27, + 0x2A, + 0x2D, + 0x30, + 0x33, + 0x36, + 0x39, + 0x3C, + 0x3F, + 0x42, + 0x45, + 0x48, + 0x4C, + 0x50, + 0x54, + 0x58, + 0x5C, + 0x60, + 0x64, + 0x68, + 0x6C, + 0x70, + 0x74, + 0x78, + 0x7D, + 0x82, + 0x87, + 0x8C, + 0x91, + 0x96, + 0x9B, + 0xA0, + 0xA5, + 0xAA, + 0xAF, + 0xB4, + + U8G_ESC_ADR(0), + 0xaf, /* Set Display On */ + 0x5c, + U8G_ESC_DLY(50), + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), + U8G_ESC_END /* end of sequence */ +}; + + +/* set gpio to high */ +static const uint8_t u8g_dev_ssd1351_128x128gh_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_DLY(50), + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), + + 0xfd, /* Command Lock */ + U8G_ESC_ADR(1), + 0x12, + + U8G_ESC_ADR(0), /* instruction mode */ + 0xfd, + U8G_ESC_ADR(1), + 0xb1, /* Command Lock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xae, /* Set Display Off */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb3, + U8G_ESC_ADR(1), + 0xf1, /* Front Clock Div */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xca, + U8G_ESC_ADR(1), + 0x7f, /* Set Multiplex Ratio */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa0, + U8G_ESC_ADR(1), + 0xb4, /* Set Colour Depth */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x15, + U8G_ESC_ADR(1), + 0x00, 0x7f, /* Set Column Address */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x75, + U8G_ESC_ADR(1), + 0x00, 0x7f, /* Set Row Address */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa1, + U8G_ESC_ADR(1), + 0x00, /* Set Display Start Line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa2, + U8G_ESC_ADR(1), + 0x00, /* Set Display Offset */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb5, + U8G_ESC_ADR(1), + 0x03, /* Set GPIO to High Level */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xab, + U8G_ESC_ADR(1), + 0x01, /* Set Function Selection */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb1, + U8G_ESC_ADR(1), + 0x32, /* Set Phase Length */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb4, + U8G_ESC_ADR(1), + 0xa0, 0xb5, 0x55, /* Set Segment Low Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xbb, + U8G_ESC_ADR(1), + 0x17, /* Set Precharge Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xbe, + U8G_ESC_ADR(1), + 0x05, /* Set VComH Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xc1, + U8G_ESC_ADR(1), + 0xc8, 0x80, 0xc8, /* Set Contrast */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xc7, + U8G_ESC_ADR(1), + 0x0f, /* Set Master Contrast */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb6, + U8G_ESC_ADR(1), + 0x01, /* Set Second Precharge Period */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa6, /* Set Display Mode Reset */ + + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb8, /* Set CMD Grayscale Lookup */ + U8G_ESC_ADR(1), + 0x05, + 0x06, + 0x07, + 0x08, + 0x09, + 0x0a, + 0x0b, + 0x0c, + 0x0D, + 0x0E, + 0x0F, + 0x10, + 0x11, + 0x12, + 0x13, + 0x14, + 0x15, + 0x16, + 0x18, + 0x1a, + 0x1b, + 0x1C, + 0x1D, + 0x1F, + 0x21, + 0x23, + 0x25, + 0x27, + 0x2A, + 0x2D, + 0x30, + 0x33, + 0x36, + 0x39, + 0x3C, + 0x3F, + 0x42, + 0x45, + 0x48, + 0x4C, + 0x50, + 0x54, + 0x58, + 0x5C, + 0x60, + 0x64, + 0x68, + 0x6C, + 0x70, + 0x74, + 0x78, + 0x7D, + 0x82, + 0x87, + 0x8C, + 0x91, + 0x96, + 0x9B, + 0xA0, + 0xA5, + 0xAA, + 0xAF, + 0xB4, + + U8G_ESC_ADR(0), + 0xaf, /* Set Display On */ + 0x5c, + U8G_ESC_DLY(50), + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), + U8G_ESC_END /* end of sequence */ +}; + +#define u8g_dev_ssd1351_128x128_init_seq u8g_dev_ssd1351_128x128_init_seq + +static const uint8_t u8g_dev_ssd1351_128x128_column_seq[] PROGMEM = { + U8G_ESC_CS(1), + U8G_ESC_ADR(0), 0x15, + U8G_ESC_ADR(1), 0x00, 0x7f, + U8G_ESC_ADR(0), 0x75, + U8G_ESC_ADR(1), 0x00, 0x7f, + U8G_ESC_ADR(0), 0x5c, + U8G_ESC_ADR(1), + U8G_ESC_CS(0), + U8G_ESC_END +}; + +#define RGB332_STREAM_BYTES 8 +static uint8_t u8g_ssd1351_stream_bytes[RGB332_STREAM_BYTES*3]; + +void u8g_ssd1351_to_stream(uint8_t *ptr) +{ + uint8_t cnt = RGB332_STREAM_BYTES; + uint8_t val; + uint8_t *dest = u8g_ssd1351_stream_bytes; + for( cnt = 0; cnt < RGB332_STREAM_BYTES; cnt++ ) + { + val = *ptr++; + *dest++ = ((val & 0xe0) >> 2); + *dest++ = ((val & 0x1c) << 1); + *dest++ = ((val & 0x03) << 4); + } +} + + +#ifdef OBSOLETE +// Convert the internal RGB 332 to R +static uint8_t u8g_ssd1351_get_r(uint8_t colour) +{ + //return ((colour & 0xe0) >> 5) * 9; + //return ((colour & 0xe0) >> 5) * 8; + return ((colour & 0xe0) >> 2) ; +} + +// Convert the internal RGB 332 to G +static uint8_t u8g_ssd1351_get_g(uint8_t colour) +{ + //return ((colour & 0x1c) >> 2) * 9; + //return ((colour & 0x1c) >> 2) * 8; + return ((colour & 0x1c) << 1); +} + +// Convert the internal RGB 332 to B +static uint8_t u8g_ssd1351_get_b(uint8_t colour) +{ + //return (colour & 0x03) * 21; + return (colour & 0x03) * 16; +} +#endif + + +uint8_t u8g_dev_ssd1351_128x128_332_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ +// u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_init_seq); + break; + + case U8G_DEV_MSG_STOP: + break; + + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_uint_t x; + uint8_t page_height; + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( i = 0; i < page_height; i++ ) + { + + for (x = 0; x < pb->width; x+=RGB332_STREAM_BYTES) + { + u8g_ssd1351_to_stream(ptr); + u8g_WriteSequence(u8g, dev, RGB332_STREAM_BYTES*3, u8g_ssd1351_stream_bytes); + ptr += RGB332_STREAM_BYTES; + } + } + u8g_SetChipSelect(u8g, dev, 0); + } + + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_R3G3B2; + } + + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1351_128x128gh_332_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ +// u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128gh_init_seq); + break; + + case U8G_DEV_MSG_STOP: + break; + + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_uint_t x; + uint8_t page_height; + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( i = 0; i < page_height; i++ ) + { + + for (x = 0; x < pb->width; x+=RGB332_STREAM_BYTES) + { + u8g_ssd1351_to_stream(ptr); + u8g_WriteSequence(u8g, dev, RGB332_STREAM_BYTES*3, u8g_ssd1351_stream_bytes); + ptr += RGB332_STREAM_BYTES; + } + } + u8g_SetChipSelect(u8g, dev, 0); + } + + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_R3G3B2; + } + + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_ssd1351_128x128_r[256]; +static uint8_t u8g_dev_ssd1351_128x128_g[256]; +static uint8_t u8g_dev_ssd1351_128x128_b[256]; + +uint8_t u8g_dev_ssd1351_128x128_idx_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ +// u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_init_seq); + break; + + case U8G_DEV_MSG_STOP: + break; + + case U8G_DEV_MSG_SET_COLOR_ENTRY: + u8g_dev_ssd1351_128x128_r[ ((u8g_dev_arg_irgb_t *)arg)->idx ] = ((u8g_dev_arg_irgb_t *)arg)->r; + u8g_dev_ssd1351_128x128_g[ ((u8g_dev_arg_irgb_t *)arg)->idx ] = ((u8g_dev_arg_irgb_t *)arg)->g; + u8g_dev_ssd1351_128x128_b[ ((u8g_dev_arg_irgb_t *)arg)->idx ] = ((u8g_dev_arg_irgb_t *)arg)->b; + break; + + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + + case U8G_DEV_MSG_PAGE_NEXT: + { + int x; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + for (x = 0; x < pb->width; x++) + { + u8g_WriteByte(u8g, dev, u8g_dev_ssd1351_128x128_r[(*ptr)>>2]); + u8g_WriteByte(u8g, dev, u8g_dev_ssd1351_128x128_g[(*ptr)>>2]); + u8g_WriteByte(u8g, dev, u8g_dev_ssd1351_128x128_b[(*ptr)>>2]); + + ptr++; + } + + u8g_SetChipSelect(u8g, dev, 0); + } + + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_INDEX; + } + + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + +void u8g_ssd1351_hicolor_to_stream(uint8_t *ptr) +{ + register uint8_t cnt = RGB332_STREAM_BYTES; + register uint8_t low, high, r, g, b; + uint8_t *dest = u8g_ssd1351_stream_bytes; + for( cnt = 0; cnt < RGB332_STREAM_BYTES; cnt++ ) + { + low = *ptr++; + high = *ptr++; + + r = high & ~7; + r >>= 2; + b = low & 31; + b <<= 1; + g = high & 7; + g <<= 3; + g |= (low>>5)&7; + + *dest++ = r; + *dest++ = g; + *dest++ = b; + } +} + + +uint8_t u8g_dev_ssd1351_128x128_hicolor_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t i, j; + uint8_t page_height; + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( j = 0; j < page_height; j++ ) + { + for (i = 0; i < pb->width; i+=RGB332_STREAM_BYTES) + { + u8g_ssd1351_hicolor_to_stream(ptr); + u8g_WriteSequence(u8g, dev, RGB332_STREAM_BYTES*3, u8g_ssd1351_stream_bytes); + ptr += RGB332_STREAM_BYTES*2; + } + + } + + u8g_SetChipSelect(u8g, dev, 0); + + } + break; /* continue to base fn */ + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_HICOLOR; + } + return u8g_dev_pbxh16_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1351_128x128gh_hicolor_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128gh_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t i, j; + uint8_t page_height; + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( j = 0; j < page_height; j++ ) + { + for (i = 0; i < pb->width; i+=RGB332_STREAM_BYTES) + { + u8g_ssd1351_hicolor_to_stream(ptr); + u8g_WriteSequence(u8g, dev, RGB332_STREAM_BYTES*3, u8g_ssd1351_stream_bytes); + ptr += RGB332_STREAM_BYTES*2; + } + + } + + u8g_SetChipSelect(u8g, dev, 0); + + } + break; /* continue to base fn */ + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_HICOLOR; + } + return u8g_dev_pbxh16_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_dev_ssd1351_128x128_byte_buf[WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; + +u8g_pb_t u8g_dev_ssd1351_128x128_byte_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1351_128x128_byte_buf}; +u8g_dev_t u8g_dev_ssd1351_128x128_332_sw_spi = { u8g_dev_ssd1351_128x128_332_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128_332_hw_spi = { u8g_dev_ssd1351_128x128_332_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_332_sw_spi = { u8g_dev_ssd1351_128x128gh_332_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_332_hw_spi = { u8g_dev_ssd1351_128x128gh_332_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_HW_SPI }; + +//u8g_dev_t u8g_dev_ssd1351_128x128_idx_sw_spi = { u8g_dev_ssd1351_128x128_idx_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_SW_SPI }; +//u8g_dev_t u8g_dev_ssd1351_128x128_idx_hw_spi = { u8g_dev_ssd1351_128x128_idx_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_HW_SPI }; + + +/* only half of the height, because two bytes are needed for one pixel */ +u8g_pb_t u8g_dev_ssd1351_128x128_hicolor_byte_pb = { {PAGE_HEIGHT/2, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1351_128x128_byte_buf}; +u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_sw_spi = { u8g_dev_ssd1351_128x128_hicolor_fn, &u8g_dev_ssd1351_128x128_hicolor_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_hw_spi = { u8g_dev_ssd1351_128x128_hicolor_fn, &u8g_dev_ssd1351_128x128_hicolor_byte_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_sw_spi = { u8g_dev_ssd1351_128x128gh_hicolor_fn, &u8g_dev_ssd1351_128x128_hicolor_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_hw_spi = { u8g_dev_ssd1351_128x128gh_hicolor_fn, &u8g_dev_ssd1351_128x128_hicolor_byte_pb, U8G_COM_HW_SPI }; + + +uint8_t u8g_dev_ssd1351_128x128_4x_byte_buf[WIDTH*PAGE_HEIGHT*4] U8G_NOCOMMON ; + +u8g_pb_t u8g_dev_ssd1351_128x128_4x_332_byte_pb = { {PAGE_HEIGHT*4, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1351_128x128_4x_byte_buf}; +u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_sw_spi = { u8g_dev_ssd1351_128x128_332_fn, &u8g_dev_ssd1351_128x128_4x_332_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_hw_spi = { u8g_dev_ssd1351_128x128_332_fn, &u8g_dev_ssd1351_128x128_4x_332_byte_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_sw_spi = { u8g_dev_ssd1351_128x128gh_332_fn, &u8g_dev_ssd1351_128x128_4x_332_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_hw_spi = { u8g_dev_ssd1351_128x128gh_332_fn, &u8g_dev_ssd1351_128x128_4x_332_byte_pb, U8G_COM_HW_SPI }; + +u8g_pb_t u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb = { {PAGE_HEIGHT/2*4, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1351_128x128_4x_byte_buf}; +u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi = { u8g_dev_ssd1351_128x128_hicolor_fn, &u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi = { u8g_dev_ssd1351_128x128_hicolor_fn, &u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi = { u8g_dev_ssd1351_128x128gh_hicolor_fn, &u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi = { u8g_dev_ssd1351_128x128gh_hicolor_fn, &u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb, U8G_COM_HW_SPI }; + + +/* +U8G_PB_DEV(u8g_dev_ssd1351_128x128_332_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1351_128x128_332_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1351_128x128_332_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1351_128x128_332_fn, U8G_COM_HW_SPI); + +U8G_PB_DEV(u8g_dev_ssd1351_128x128_idx_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1351_128x128_idx_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1351_128x128_idx_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1351_128x128_idx_fn, U8G_COM_HW_SPI); +*/ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_64128n.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_64128n.c index 01fc9fc0cb..ff909c5e9b 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_64128n.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_64128n.c @@ -96,7 +96,7 @@ static const uint8_t u8g_dev_st7565_64128n_sleep_on[] PROGMEM = { 0x000, /* indicator register set (not sure if this is required) */ 0x0ae, /* display off */ 0x0a5, /* all points on */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -106,7 +106,7 @@ static const uint8_t u8g_dev_st7565_64128n_sleep_off[] PROGMEM = { 0x0a4, /* all points off */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -115,7 +115,7 @@ uint8_t u8g_dev_st7565_64128n_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_init_seq); break; case U8G_DEV_MSG_STOP: @@ -148,6 +148,56 @@ uint8_t u8g_dev_st7565_64128n_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } +uint8_t u8g_dev_st7565_64128n_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + U8G_PB_DEV(u8g_dev_st7565_64128n_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_st7565_64128n_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_st7565_64128n_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_PARALLEL); +uint8_t u8g_dev_st7565_64128n_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_64128n_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_64128n_2x_buf}; +u8g_dev_t u8g_dev_st7565_64128n_2x_sw_spi = { u8g_dev_st7565_64128n_2x_fn, &u8g_dev_st7565_64128n_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_64128n_2x_hw_spi = { u8g_dev_st7565_64128n_2x_fn, &u8g_dev_st7565_64128n_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_st7565_64128n_2x_hw_parallel = { u8g_dev_st7565_64128n_2x_fn, &u8g_dev_st7565_64128n_2x_pb, U8G_COM_PARALLEL }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c index 095ef369c1..e73f061537 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c @@ -82,7 +82,7 @@ static const uint8_t u8g_dev_st7565_dogm128_sleep_on[] PROGMEM = { 0x000, /* indicator register set (not sure if this is required) */ 0x0ae, /* display off */ 0x0a5, /* all points on */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -92,7 +92,7 @@ static const uint8_t u8g_dev_st7565_dogm128_sleep_off[] PROGMEM = { 0x0a4, /* all points off */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -101,7 +101,7 @@ uint8_t u8g_dev_st7565_dogm128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_init_seq); break; case U8G_DEV_MSG_STOP: @@ -134,7 +134,57 @@ uint8_t u8g_dev_st7565_dogm128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } +uint8_t u8g_dev_st7565_dogm128_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + U8G_PB_DEV(u8g_dev_st7565_dogm128_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_st7565_dogm128_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_st7565_dogm128_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_PARALLEL); +uint8_t u8g_dev_st7565_dogm128_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_dogm128_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_dogm128_2x_buf}; +u8g_dev_t u8g_dev_st7565_dogm128_2x_sw_spi = { u8g_dev_st7565_dogm128_2x_fn, &u8g_dev_st7565_dogm128_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_dogm128_2x_hw_spi = { u8g_dev_st7565_dogm128_2x_fn, &u8g_dev_st7565_dogm128_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_st7565_dogm128_2x_parallel = { u8g_dev_st7565_dogm128_2x_fn, &u8g_dev_st7565_dogm128_2x_pb, U8G_COM_PARALLEL }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c index a76d54b3fd..26de539247 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c @@ -101,7 +101,7 @@ static const uint8_t u8g_dev_st7565_dogm132_sleep_on[] PROGMEM = { 0x000, /* indicator register set (not sure if this is required) */ 0x0ae, /* display off */ 0x0a5, /* all points on */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -111,7 +111,7 @@ static const uint8_t u8g_dev_st7565_dogm132_sleep_off[] PROGMEM = { 0x0a4, /* all points off */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -120,7 +120,7 @@ uint8_t u8g_dev_st7565_dogm132_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c index ab8ed39b64..165c390978 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c @@ -98,7 +98,7 @@ static const uint8_t u8g_dev_st7565_lm6059_sleep_on[] PROGMEM = { 0x000, /* indicator register set (not sure if this is required) */ 0x0ae, /* display off */ 0x0a5, /* all points on */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -108,7 +108,7 @@ static const uint8_t u8g_dev_st7565_lm6059_sleep_off[] PROGMEM = { 0x0a4, /* all points off */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -118,7 +118,7 @@ uint8_t u8g_dev_st7565_lm6059_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_init_seq); break; case U8G_DEV_MSG_STOP: @@ -151,7 +151,55 @@ uint8_t u8g_dev_st7565_lm6059_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } +uint8_t u8g_dev_st7565_lm6059_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + U8G_PB_DEV(u8g_dev_st7565_lm6059_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6059_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_st7565_lm6059_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6059_fn, U8G_COM_HW_SPI); +uint8_t u8g_dev_st7565_lm6059_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_lm6059_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_lm6059_2x_buf}; +u8g_dev_t u8g_dev_st7565_lm6059_2x_sw_spi = { u8g_dev_st7565_lm6059_2x_fn, &u8g_dev_st7565_lm6059_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_lm6059_2x_hw_spi = { u8g_dev_st7565_lm6059_2x_fn, &u8g_dev_st7565_lm6059_2x_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c index 47ccb1ec70..d0b8c816df 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c @@ -129,7 +129,7 @@ static const uint8_t u8g_dev_st7565_st7565_sleep_on[] PROGMEM = { 0x000, /* indicator register set (not sure if this is required) */ 0x0ae, /* display off */ 0x0a5, /* all points on */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -139,7 +139,7 @@ static const uint8_t u8g_dev_st7565_st7565_sleep_off[] PROGMEM = { 0x0a4, /* all points off */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -149,7 +149,7 @@ uint8_t u8g_dev_st7565_lm6063_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_init_seq); break; case U8G_DEV_MSG_STOP: @@ -182,7 +182,55 @@ uint8_t u8g_dev_st7565_lm6063_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } +uint8_t u8g_dev_st7565_lm6063_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_st7565_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_st7565_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + U8G_PB_DEV(u8g_dev_st7565_lm6063_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6063_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_st7565_lm6063_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6063_fn, U8G_COM_HW_SPI); +uint8_t u8g_dev_st7565_lm6063_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_lm6063_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_lm6063_2x_buf}; +u8g_dev_t u8g_dev_st7565_lm6063_2x_sw_spi = { u8g_dev_st7565_lm6063_2x_fn, &u8g_dev_st7565_lm6063_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_lm6063_2x_hw_spi = { u8g_dev_st7565_lm6063_2x_fn, &u8g_dev_st7565_lm6063_2x_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c index ed80a06931..ed8dca2e03 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c @@ -86,7 +86,7 @@ static const uint8_t u8g_dev_st7565_c12832_sleep_on[] PROGMEM = { 0x000, /* indicator register set (not sure if this is required) */ 0x0ae, /* display off */ 0x0a5, /* all points on */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -96,7 +96,7 @@ static const uint8_t u8g_dev_st7565_c12832_sleep_off[] PROGMEM = { 0x0a4, /* all points off */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -105,7 +105,7 @@ uint8_t u8g_dev_st7565_c12832_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_init_seq); break; case U8G_DEV_MSG_STOP: @@ -141,3 +141,5 @@ uint8_t u8g_dev_st7565_c12832_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_HW_SPI); U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_PARALLEL); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_hw_usart_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_HW_USART_SPI); + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c index 5e3f8b9fe8..eeb5c09876 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c @@ -87,7 +87,7 @@ static const uint8_t u8g_dev_st7565_c12864_sleep_on[] PROGMEM = { 0x000, /* indicator register set (not sure if this is required) */ 0x0ae, /* display off */ 0x0a5, /* all points on */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -97,7 +97,7 @@ static const uint8_t u8g_dev_st7565_c12864_sleep_off[] PROGMEM = { 0x0a4, /* all points off */ 0x0af, /* display on */ U8G_ESC_DLY(50), /* delay 50 ms */ - U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ U8G_ESC_END /* end of sequence */ }; @@ -106,7 +106,7 @@ uint8_t u8g_dev_st7565_nhd_c12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_init_seq); break; case U8G_DEV_MSG_STOP: @@ -139,7 +139,56 @@ uint8_t u8g_dev_st7565_nhd_c12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } +uint8_t u8g_dev_st7565_nhd_c12864_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12864_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12864_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + U8G_PB_DEV(u8g_dev_st7565_nhd_c12864_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_nhd_c12864_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_st7565_nhd_c12864_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_nhd_c12864_fn, U8G_COM_HW_SPI); +uint8_t u8g_dev_st7565_nhd_c12864_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_nhd_c12864_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_nhd_c12864_2x_buf}; +u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_sw_spi = { u8g_dev_st7565_nhd_c12864_2x_fn, &u8g_dev_st7565_nhd_c12864_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_hw_spi = { u8g_dev_st7565_nhd_c12864_2x_fn, &u8g_dev_st7565_nhd_c12864_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c index 4851017aa6..a11d3bc7d0 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c @@ -363,7 +363,7 @@ uint8_t u8g_dev_st7687_c144mvgd_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7687_c144mvgd_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_128x64.c index b0b18d34d2..29e63134c0 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_128x64.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_128x64.c @@ -1,6 +1,6 @@ /* - u8g_dev_st7565_128x64.c + u8g_dev_st7920_128x64.c Universal 8bit Graphics Library @@ -66,7 +66,7 @@ uint8_t u8g_dev_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_init_seq); break; case U8G_DEV_MSG_STOP: @@ -114,7 +114,7 @@ uint8_t u8g_dev_st7920_128x64_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_init_seq); break; case U8G_DEV_MSG_STOP: @@ -160,6 +160,9 @@ uint8_t u8g_dev_st7920_128x64_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi U8G_PB_DEV(u8g_dev_st7920_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_ST7920_SW_SPI); U8G_PB_DEV(u8g_dev_st7920_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_ST7920_HW_SPI); U8G_PB_DEV(u8g_dev_st7920_128x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_FAST_PARALLEL); +U8G_PB_DEV(u8g_dev_st7920_128x64_custom, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, u8g_com_arduino_st7920_custom_fn); + + #define QWIDTH (WIDTH*4) uint8_t u8g_dev_st7920_128x64_4x_buf[QWIDTH] U8G_NOCOMMON ; @@ -167,5 +170,6 @@ u8g_pb_t u8g_dev_st7920_128x64_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_ST7920_SW_SPI }; u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_ST7920_HW_SPI }; u8g_dev_t u8g_dev_st7920_128x64_4x_8bit = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_FAST_PARALLEL }; +u8g_dev_t u8g_dev_st7920_128x64_4x_custom = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, u8g_com_arduino_st7920_custom_fn }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_192x32.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_192x32.c index 28535e0cd2..736b082895 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_192x32.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_192x32.c @@ -65,7 +65,7 @@ uint8_t u8g_dev_st7920_192x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_192x32_init_seq); break; case U8G_DEV_MSG_STOP: @@ -103,7 +103,7 @@ uint8_t u8g_dev_st7920_192x32_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_192x32_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_202x32.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_202x32.c index 129fc748fb..b36b7abca5 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_202x32.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_202x32.c @@ -68,7 +68,7 @@ uint8_t u8g_dev_st7920_202x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_202x32_init_seq); break; case U8G_DEV_MSG_STOP: @@ -106,7 +106,7 @@ uint8_t u8g_dev_st7920_202x32_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_202x32_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x128.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x128.c new file mode 100644 index 0000000000..15f618c5f8 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x128.c @@ -0,0 +1,193 @@ +/* + + u8g_dev_t6963_128x128.c + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 128x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 128 +#define PAGE_HEIGHT 16 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_128x128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_128x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_128x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_128x128_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_128x128_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_128x128_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_128x128_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_128x128_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_128x128_8bit = { u8g_dev_t6963_128x128_fn, &u8g_dev_t6963_128x128_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x64.c index c1626ccc18..97e1583320 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x64.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x64.c @@ -142,7 +142,7 @@ uint8_t u8g_dev_t6963_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *a switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_128x64_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x128.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x128.c index 4a28edbcfe..7373f38884 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x128.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x128.c @@ -146,7 +146,7 @@ uint8_t u8g_dev_t6963_240x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void * switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_240x128_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x64.c index 6d209d2120..d0c4fd2307 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x64.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x64.c @@ -146,7 +146,7 @@ uint8_t u8g_dev_t6963_240x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *a switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE); u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_240x64_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c index 17689dc4a4..d8f423666f 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c @@ -78,7 +78,7 @@ uint8_t u8g_dev_tls8204_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_tls8204_init_seq); break; case U8G_DEV_MSG_STOP: diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1601_c128032.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1601_c128032.c new file mode 100644 index 0000000000..0151566760 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1601_c128032.c @@ -0,0 +1,201 @@ +/* + + u8g_dev_uc1601_c128032.c + + LCD-AG-C128032R-DIW W/KK E6 PBF from http://www.artronic.pl/o_produkcie.php?id=1343 + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +/* init sequence */ +static const uint8_t u8g_dev_uc1601_c128032_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0a3, /* 0x0a3: LCD bias 1/7 , 0x0a2: LCD bias 1/9 */ + 0x0a0, /* 0x0a0: ADC set to normal, 0x0a1 ADC set to inverted */ + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x0c2, /* 22 May 2013: mirror x */ + + 0x040, /* set display start line */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(10), /* delay 10 ms */ + + 0x020| 0x06, /* set V0 voltage resistor ratio to 6 */ + + 0x0af, /* display on */ + + //0x081, /* set contrast */ + //0x018, /* contrast value*/ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1601_c128032_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x004, /* set lower 4 bit of the col adr */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1601_c128032_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1601_c128032_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_uc1601_c128032_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (UC1601) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1601_c128032_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (UC1601) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (UC1601) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1601_c128032_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1601_c128032_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1601_c128032_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1601_c128032_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1601_c128032_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1601_c128032_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1601_c128032_2x_buf}; +u8g_dev_t u8g_dev_uc1601_c128032_2x_sw_spi = { u8g_dev_uc1601_c128032_2x_fn, &u8g_dev_uc1601_c128032_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1601_c128032_2x_hw_spi = { u8g_dev_uc1601_c128032_2x_fn, &u8g_dev_uc1601_c128032_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1608_240x128.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1608_240x128.c new file mode 100644 index 0000000000..d43d78e112 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1608_240x128.c @@ -0,0 +1,200 @@ +/* + + + + u8g_dev_uc1608_240x128.c + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com (original 240x64 library) + Modified by thieringpeti@gmail.com for Raystar rx240128 family displays + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +/* +Display: http://www.tme.eu/en/details/rx240128a-ghw/lcd-graphic-displays/raystar-optronics/ +Connection: HW / SW SPI. +To get this display working, You need some extra capacitors: + +connect 4.7uF caps between: + PIN1 & PIN2 VB1 +- + PIN3 & PIN4 VB0 -+ +connect 0.1uF caps between: + VLCD and VSS + VBIAS and VSS +You can find some schematics with a 10M resistor parallellized with the VLCD capacitor. + +Select 4-bit SPI mode. + +Connect D7 (PIN9) To VDD (+3.3V) +Connect D1, D2, D4, D5, D6 to GND (PINS 10,11,12,14,15) +Connect WR0, WR1, BM0, BM1 to GND (PINS 17,18,22,23) + +D0: (PIN16) AVR's SCK pin (HW SPI) +D3: (PIN13) AVR's MOSI pin (HW SPI) +CD: (PIN19) used as A0 in the library +CS: (PIN21) Connect to the defined CS pin, and You can re-use the HW SPI in different routines. +RST: (PIN20) optional reset, can be defined in the function, resets on initialization. + +Adjust contrast if necessary. Default: 0x072. + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + +/* see also ERC24064-1 for init sequence example */ +static const uint8_t u8g_dev_uc1608_240x128_init_seq[] PROGMEM = { + U8G_ESC_CS(1), /* disable chip (UC1608 has positive logic for CS) */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (15*16)+2 milliseconds */ + + + U8G_ESC_CS(0), /* enable chip */ + 0x0e2, /* soft reset */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x026, /* MUX rate and temperature compensation */ + + 0x0c8, /* Map control, Bit 3: MY=1, Bit 2: MX=0, Bit 0: MSF =0 */ + + 0x0eb, /* LCD bias Bits 0/1: 00=10.7 01=10.3, 10=12.0, 11=12.7*/ + /* default 0x0ea for 240x128 */ + 0x081, /* set contrast (bits 0..5) and gain (bits 6/7) */ + 0x072, /* default for 240x128 displays: 0x072*/ + + 0x02f, /* power on, Bit 2 PC2=1 (internal charge pump), Bits 0/1: cap of panel */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x040, /* set display start line to 0 */ + 0x090, /* no fixed lines */ + 0x089, /* RAM access control */ + + 0x0af, /* disable sleep mode */ + 0x0a4, /* normal display */ + 0x0a5, /* display all points, ST7565, UC1610 */ + // 0x0a7, /* inverse display */ + 0x0a6, /* normal display */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1608_240x128_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(0), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 (UC1608) */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_uc1608_240x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (UC1608) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 1); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 0); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); /* set contrast from, keep gain at 0 */ + u8g_SetChipSelect(u8g, dev, 1); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1608_240x128_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1608_240x128_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1608_240x128_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1608_240x128_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1608_240x128_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1608_240x128_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1608_240x128_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1608_240x128_2x_buf}; +u8g_dev_t u8g_dev_uc1608_240x128_2x_sw_spi = { u8g_dev_uc1608_240x128_2x_fn, &u8g_dev_uc1608_240x128_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1608_240x128_2x_hw_spi = { u8g_dev_uc1608_240x128_2x_fn, &u8g_dev_uc1608_240x128_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1608_240x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1608_240x64.c new file mode 100644 index 0000000000..6a99c6ba88 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1608_240x64.c @@ -0,0 +1,168 @@ +/* + + u8g_dev_uc1608_240x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* see also ERC24064-1 for init sequence example */ +static const uint8_t u8g_dev_uc1608_240x64_init_seq[] PROGMEM = { + U8G_ESC_CS(1), /* disable chip (UC1608 has positive logic for CS) */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (15*16)+2 milliseconds */ + + + U8G_ESC_CS(0), /* enable chip */ + 0x0e2, /* soft reset */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ +#if HEIGHT <= 96 + 0x023, /* Bit 0/1: Temp compenstation, Bit 2: Multiplex Rate 0=96, 1=128 */ +#else + /* 30 Nov 2013: not tested */ + 0x027, /* Bit 0/1: Temp compenstation, Bit 2: Multiplex Rate 0=96, 1=128 */ +#endif + 0x0c8, /* Map control, Bit 3: MY=1, Bit 2: MX=0, Bit 0: MSF =0 */ + 0x0e8, /* LCD bias Bits 0/1: 00=10.7 01=10.3, 10=12.0, 11=12.7*/ + + 0x081, /* set contrast (bits 0..5) and gain (bits 6/7) */ + 0x014, /* ECR24064-1 default: 0x040*/ + + 0x02f, /* power on, Bit 2 PC2=1 (internal charge pump), Bits 0/1: cap of panel */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x040, /* set display start line to 0 */ + 0x090, /* no fixed lines */ + 0x089, /* RAM access control */ + + 0x0af, /* disable sleep mode */ + 0x0a4, /* normal display */ + 0x0a5, /* display all points, ST7565, UC1610 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1608_240x64_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(0), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 (UC1608) */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_uc1608_240x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (UC1608) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 1); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 0); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); /* set contrast from, keep gain at 0 */ + u8g_SetChipSelect(u8g, dev, 1); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1608_240x64_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1608_240x64_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1608_240x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1608_240x64_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1608_240x64_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1608_240x64_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1608_240x64_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1608_240x64_2x_buf}; +u8g_dev_t u8g_dev_uc1608_240x64_2x_sw_spi = { u8g_dev_uc1608_240x64_2x_fn, &u8g_dev_uc1608_240x64_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1608_240x64_2x_hw_spi = { u8g_dev_uc1608_240x64_2x_fn, &u8g_dev_uc1608_240x64_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c index b7111d5c89..4f361664dd 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c @@ -101,7 +101,7 @@ uint8_t u8g_dev_uc1610_dogxl160_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, v switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); break; case U8G_DEV_MSG_STOP: @@ -145,7 +145,7 @@ uint8_t u8g_dev_uc1610_dogxl160_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, v switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); break; case U8G_DEV_MSG_STOP: @@ -177,7 +177,7 @@ uint8_t u8g_dev_uc1610_dogxl160_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); break; case U8G_DEV_MSG_STOP: @@ -208,7 +208,7 @@ uint8_t u8g_dev_uc1610_dogxl160_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg u8g_SetAddress(u8g, dev, 1); /* data mode */ for( i = 0; i < WIDTH; i++ ) { - u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf+WIDTH))[i] ) ); + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)((uint8_t *)(pb->buf)+WIDTH))[i] ) ); } u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); @@ -216,7 +216,7 @@ uint8_t u8g_dev_uc1610_dogxl160_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg u8g_SetAddress(u8g, dev, 1); /* data mode */ for( i = 0; i < WIDTH; i++ ) { - u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf+WIDTH))[i] >> 4 ) ); + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)((uint8_t *)(pb->buf)+WIDTH))[i] >> 4 ) ); } u8g_SetChipSelect(u8g, dev, 0); @@ -238,7 +238,7 @@ uint8_t u8g_dev_uc1610_dogxl160_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); break; case U8G_DEV_MSG_STOP: @@ -256,7 +256,7 @@ uint8_t u8g_dev_uc1610_dogxl160_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2+1) ); /* select current page (UC1610) */ u8g_SetAddress(u8g, dev, 1); /* data mode */ - if ( u8g_WriteSequence(u8g, dev, WIDTH, pb->buf+WIDTH) == 0 ) + if ( u8g_WriteSequence(u8g, dev, WIDTH, (uint8_t *)(pb->buf)+WIDTH) == 0 ) return 0; u8g_SetChipSelect(u8g, dev, 0); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1611_dogm240.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1611_dogm240.c new file mode 100644 index 0000000000..52bf451d94 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1611_dogm240.c @@ -0,0 +1,116 @@ +/* + + u8g_dev_uc1611_dogm240.c + + Universal 8bit Graphics Library + + Copyright (c) 2014, dev.menges.jonas@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + + +#define WIDTH 240 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_uc1611_dogm240_init_seq[] PROGMEM = { + U8G_ESC_CS(1), // enable chip + U8G_ESC_ADR(0), // instruction mode + 0xF1, // set last COM electrode + 0x3F, // 64-1=63 + 0xF2, // set display start line + 0x00, // 0 + 0xF3, // set display end line + 0x3F, // 64-1=63 + 0x81, // set contrast (0-255) + 0xB7, // 183 + 0xC0, // set view + //0x04, // topview + 0x02, // bottomview + 0xA3, // set line rate (9.4k) + 0xE9, // set bias ratio (10) + 0xA9, // enable display + 0xD1, // set black and white mode + U8G_ESC_CS(0), // disable chip + U8G_ESC_END // end of sequence +}; + +static void setPage(u8g_t *u8g, u8g_dev_t *dev, unsigned char page) +{ + u8g_WriteByte(u8g, dev, 0x70); + u8g_WriteByte(u8g, dev, 0x60 + (page&0x0F)); +} + +static const uint8_t u8g_dev_uc1611_dogm240_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x10, /* set upper 4 bit of the col adr to 0 */ + 0x00, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_uc1611_dogm240_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1611_dogm240_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1611_dogm240_data_start); + setPage(u8g, dev, pb->p.page); /* select current page (uc1611) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 1); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 0); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x81); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); /* set contrast from, keep gain at 0 */ + u8g_SetChipSelect(u8g, dev, 1); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1611_dogm240_i2c , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogm240_fn, U8G_COM_UC_I2C); +U8G_PB_DEV(u8g_dev_uc1611_dogm240_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogm240_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1611_dogm240_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogm240_fn, U8G_COM_HW_SPI); + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1611_dogxl240.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1611_dogxl240.c new file mode 100644 index 0000000000..44242ecdfb --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1611_dogxl240.c @@ -0,0 +1,116 @@ +/* + + u8g_dev_uc1611_dogxl240.c + + Universal 8bit Graphics Library + + Copyright (c) 2014, dev.menges.jonas@gmail.com, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + + +#define WIDTH 240 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_uc1611_dogxl240_init_seq[] PROGMEM = { + U8G_ESC_CS(1), // enable chip + U8G_ESC_ADR(0), // instruction mode + 0xF1, // set last COM electrode + 0x7F, // DOGXL240 + 0xF2, // set display start line + 0x00, // 0 + 0xF3, // set display end line + 0x7F, // DOGXL240 + 0x81, // set contrast (0-255) + 0xAA, // DOGXL240 + 0xC0, // set view + //0x04, // topview + 0x02, // bottomview + 0xA3, // set line rate (9.4k) + 0xE9, // set bias ratio (10) + 0xA9, // enable display + 0xD1, // set black and white mode + U8G_ESC_CS(0), // disable chip + U8G_ESC_END // end of sequence +}; + +static void u8g_dev_dogxl240_set_page(u8g_t *u8g, u8g_dev_t *dev, unsigned char page) +{ + u8g_WriteByte(u8g, dev, 0x70); + u8g_WriteByte(u8g, dev, 0x60 + (page&0x0F)); +} + +static const uint8_t u8g_dev_uc1611_dogxl240_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x10, /* set upper 4 bit of the col adr to 0 */ + 0x00, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static uint8_t u8g_dev_uc1611_dogxl240_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1611_dogxl240_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1611_dogxl240_data_start); + u8g_dev_dogxl240_set_page(u8g, dev, pb->p.page); /* select current page (uc1611) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 1); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 0); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x81); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); /* set contrast from, keep gain at 0 */ + u8g_SetChipSelect(u8g, dev, 1); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1611_dogxl240_i2c , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogxl240_fn, U8G_COM_UC_I2C); +U8G_PB_DEV(u8g_dev_uc1611_dogxl240_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogxl240_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1611_dogxl240_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogxl240_fn, U8G_COM_HW_SPI); + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c index 853d8c0344..5161ef95f2 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c @@ -45,6 +45,8 @@ static const uint8_t u8g_dev_dogs102_init_seq[] PROGMEM = { U8G_ESC_ADR(0), /* instruction mode */ U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ U8G_ESC_CS(1), /* enable chip */ + + 0x0e2, /* soft reset */ 0x040, /* set display start line to 0 */ 0x0a1, /* ADC set to reverse */ 0x0c0, /* common output mode */ @@ -80,7 +82,7 @@ uint8_t u8g_dev_dogs102_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_init_seq); break; case U8G_DEV_MSG_STOP: @@ -107,7 +109,49 @@ uint8_t u8g_dev_dogs102_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } +uint8_t u8g_dev_uc1701_dogs102_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + U8G_PB_DEV(u8g_dev_uc1701_dogs102_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_dogs102_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_uc1701_dogs102_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_dogs102_fn, U8G_COM_HW_SPI); +uint8_t u8g_dev_uc1701_dogs102_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1701_dogs102_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1701_dogs102_2x_buf}; +u8g_dev_t u8g_dev_uc1701_dogs102_2x_sw_spi = { u8g_dev_uc1701_dogs102_2x_fn, &u8g_dev_uc1701_dogs102_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1701_dogs102_2x_hw_spi = { u8g_dev_uc1701_dogs102_2x_fn, &u8g_dev_uc1701_dogs102_2x_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c index 55b2f9b71f..209a7b930d 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c @@ -46,6 +46,7 @@ static const uint8_t u8g_dev_uc1701_mini12864_init_seq[] PROGMEM = { U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ U8G_ESC_CS(1), /* enable chip */ + 0x0e2, /* soft reset */ 0x040, /* set display start line to 0 */ 0x0a0, /* ADC set to reverse */ 0x0c8, /* common output mode */ @@ -83,7 +84,7 @@ uint8_t u8g_dev_uc1701_mini12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi switch(msg) { case U8G_DEV_MSG_INIT: - u8g_InitCom(u8g, dev); + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_init_seq); break; case U8G_DEV_MSG_STOP: @@ -110,5 +111,48 @@ uint8_t u8g_dev_uc1701_mini12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, voi return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); } +uint8_t u8g_dev_uc1701_mini12864_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + U8G_PB_DEV(u8g_dev_uc1701_mini12864_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_fn, U8G_COM_SW_SPI); U8G_PB_DEV(u8g_dev_uc1701_mini12864_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1701_mini12864_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1701_mini12864_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1701_mini12864_2x_buf}; +u8g_dev_t u8g_dev_uc1701_mini12864_2x_sw_spi = { u8g_dev_uc1701_mini12864_2x_fn, &u8g_dev_uc1701_mini12864_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1701_mini12864_2x_hw_spi = { u8g_dev_uc1701_mini12864_2x_fn, &u8g_dev_uc1701_mini12864_2x_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ellipse.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ellipse.c index 6c35fdf237..57ff4675bc 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ellipse.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ellipse.c @@ -98,3 +98,296 @@ void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t xr, u8 #endif +#if defined(U8G_16BIT) +typedef int32_t u8g_long_t; +#else +typedef int16_t u8g_long_t; +#endif + + +/* + Source: + ftp://pc.fk0.name/pub/books/programming/bezier-ellipse.pdf + Foley, Computer Graphics, p 90 +*/ +static void u8g_draw_ellipse_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) U8G_NOINLINE; +static void u8g_draw_ellipse_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) +{ + /* upper right */ + if ( option & U8G_DRAW_UPPER_RIGHT ) + { + u8g_DrawPixel(u8g, x0 + x, y0 - y); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 - y); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawPixel(u8g, x0 + x, y0 + y); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 + y); + } +} + +void u8g_draw_ellipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option) +{ + u8g_uint_t x, y; + u8g_long_t xchg, ychg; + u8g_long_t err; + u8g_long_t rxrx2; + u8g_long_t ryry2; + u8g_long_t stopx, stopy; + + rxrx2 = rx; + rxrx2 *= rx; + rxrx2 *= 2; + + ryry2 = ry; + ryry2 *= ry; + ryry2 *= 2; + + x = rx; + y = 0; + + xchg = 1; + xchg -= rx; + xchg -= rx; + xchg *= ry; + xchg *= ry; + + ychg = rx; + ychg *= rx; + + err = 0; + + stopx = ryry2; + stopx *= rx; + stopy = 0; + + while( stopx >= stopy ) + { + u8g_draw_ellipse_section(u8g, x, y, x0, y0, option); + y++; + stopy += rxrx2; + err += ychg; + ychg += rxrx2; + if ( 2*err+xchg > 0 ) + { + x--; + stopx -= ryry2; + err += xchg; + xchg += ryry2; + } + } + + x = 0; + y = ry; + + xchg = ry; + xchg *= ry; + + ychg = 1; + ychg -= ry; + ychg -= ry; + ychg *= rx; + ychg *= rx; + + err = 0; + + stopx = 0; + + stopy = rxrx2; + stopy *= ry; + + + while( stopx <= stopy ) + { + u8g_draw_ellipse_section(u8g, x, y, x0, y0, option); + x++; + stopx += ryry2; + err += xchg; + xchg += ryry2; + if ( 2*err+ychg > 0 ) + { + y--; + stopy -= rxrx2; + err += ychg; + ychg += rxrx2; + } + } + +} + +void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t rxp, rxp2; + u8g_uint_t ryp, ryp2; + + rxp = rx; + rxp++; + rxp2 = rxp; + rxp2 *= 2; + + ryp = ry; + ryp++; + ryp2 = ryp; + ryp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-rxp, y0-ryp, rxp2, ryp2) == 0) + return; + } + + u8g_draw_ellipse(u8g, x0, y0, rx, ry, option); +} + +static void u8g_draw_filled_ellipse_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) U8G_NOINLINE; +static void u8g_draw_filled_ellipse_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) +{ + /* upper right */ + if ( option & U8G_DRAW_UPPER_RIGHT ) + { + u8g_DrawVLine(u8g, x0+x, y0-y, y+1); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0-y, y+1); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawVLine(u8g, x0+x, y0, y+1); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0, y+1); + } +} + +void u8g_draw_filled_ellipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option) +{ + u8g_uint_t x, y; + u8g_long_t xchg, ychg; + u8g_long_t err; + u8g_long_t rxrx2; + u8g_long_t ryry2; + u8g_long_t stopx, stopy; + + rxrx2 = rx; + rxrx2 *= rx; + rxrx2 *= 2; + + ryry2 = ry; + ryry2 *= ry; + ryry2 *= 2; + + x = rx; + y = 0; + + xchg = 1; + xchg -= rx; + xchg -= rx; + xchg *= ry; + xchg *= ry; + + ychg = rx; + ychg *= rx; + + err = 0; + + stopx = ryry2; + stopx *= rx; + stopy = 0; + + while( stopx >= stopy ) + { + u8g_draw_filled_ellipse_section(u8g, x, y, x0, y0, option); + y++; + stopy += rxrx2; + err += ychg; + ychg += rxrx2; + if ( 2*err+xchg > 0 ) + { + x--; + stopx -= ryry2; + err += xchg; + xchg += ryry2; + } + } + + x = 0; + y = ry; + + xchg = ry; + xchg *= ry; + + ychg = 1; + ychg -= ry; + ychg -= ry; + ychg *= rx; + ychg *= rx; + + err = 0; + + stopx = 0; + + stopy = rxrx2; + stopy *= ry; + + + while( stopx <= stopy ) + { + u8g_draw_filled_ellipse_section(u8g, x, y, x0, y0, option); + x++; + stopx += ryry2; + err += xchg; + xchg += ryry2; + if ( 2*err+ychg > 0 ) + { + y--; + stopy -= rxrx2; + err += ychg; + ychg += rxrx2; + } + } + +} + +void u8g_DrawFilledEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t rxp, rxp2; + u8g_uint_t ryp, ryp2; + + rxp = rx; + rxp++; + rxp2 = rxp; + rxp2 *= 2; + + ryp = ry; + ryp++; + ryp2 = ryp; + ryp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-rxp, y0-ryp, rxp2, ryp2) == 0) + return; + } + + u8g_draw_filled_ellipse(u8g, x0, y0, rx, ry, option); +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font.c index bfdc0b28a3..f3c1eda4c1 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font.c @@ -33,7 +33,6 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ #include "u8g.h" @@ -120,6 +119,7 @@ static uint8_t u8g_font_GetFontGlyphStructureSize(const u8g_fntpgm_uint8_t *font { case 0: return 6; case 1: return 3; + case 2: return 6; } return 3; } @@ -281,6 +281,7 @@ static void u8g_CopyGlyphDataToCache(u8g_t *u8g, u8g_glyph_t g) switch( u8g_font_GetFormat(u8g->font) ) { case 0: + case 2: /* format 0 glyph information @@ -961,6 +962,7 @@ int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, x -= u8g_GetFontBBXOffX(u8g); y += u8g_GetFontBBXOffY(u8g); u8g_draw_glyph(u8g, x, y, encoding); + return 0; } @@ -1420,3 +1422,79 @@ void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font) } } +/*========================================================================*/ +/* anti aliasing fonts */ + +int8_t u8g_draw_aa_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x += u8g->glyph_x; + y -= u8g->glyph_y; + y--; + + if ( u8g_IsBBXIntersection(u8g, x, y-h+1, w, h) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 3; + w /= 4; + + iy = y; + iy -= h; + iy++; + + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < w; i++ ) + { + u8g_Draw4TPixel(u8g, ix, iy, 0, u8g_pgm_read(data)); + data++; + ix+=4; + } + iy++; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawAAGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + y += u8g->font_calc_vref(u8g); + return u8g_draw_aa_glyph(u8g, x, y, encoding); +} + +u8g_uint_t u8g_DrawAAStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + if ( u8g_font_GetFormat(u8g->font) != 2 ) + return 0; + //u8g_uint_t u8g_GetStrWidth(u8g, s); + //u8g_font_GetFontAscent(u8g->font)-u8g_font_GetFontDescent(u8g->font); + + y += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_aa_glyph(u8g, x, y, *s); + x += d; + t += d; + s++; + } + return t; +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font_data.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font_data.c index dca21c5a3f..0910808979 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font_data.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font_data.c @@ -10,7 +10,7 @@ Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_04b_03b[826] U8G_SECTION(".progmem.u8g_font_04b_03b") = { +const u8g_fntpgm_uint8_t u8g_font_04b_03b[826] U8G_FONT_SECTION("u8g_font_04b_03b") = { 1,5,6,0,255,5,0,250,1,240,32,255,255,5,255,5, 255,2,0,48,2,21,37,128,128,128,0,128,5,50,66,160, 160,2,85,101,80,248,80,248,80,2,69,85,112,160,240,80, @@ -75,8 +75,8 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03b[826] U8G_SECTION(".progmem.u8g_font_04 Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_04b_03bn[130] U8G_SECTION(".progmem.u8g_font_04b_03bn") = { - 1,5,6,0,255,5,0,0,0,0,42,57,0,5,255,5, +const u8g_fntpgm_uint8_t u8g_font_04b_03bn[136] U8G_FONT_SECTION("u8g_font_04b_03bn") = { + 1,5,6,0,255,5,0,0,0,0,42,58,0,5,255,5, 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, 64,128,4,49,65,224,2,17,33,128,2,85,101,8,16,32, 64,128,2,69,85,240,144,144,144,240,2,37,53,192,64,64, @@ -84,7 +84,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03bn[130] U8G_SECTION(".progmem.u8g_font_0 16,240,2,69,85,144,144,144,240,16,2,69,85,240,128,240, 16,240,2,69,85,224,128,240,144,240,2,69,85,240,16,32, 64,64,2,69,85,240,144,240,144,240,2,69,85,240,144,240, - 16,112}; + 16,112,3,19,35,128,0,128}; /* Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org @@ -97,7 +97,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03bn[130] U8G_SECTION(".progmem.u8g_font_0 Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_04b_03br[696] U8G_SECTION(".progmem.u8g_font_04b_03br") = { +const u8g_fntpgm_uint8_t u8g_font_04b_03br[696] U8G_FONT_SECTION("u8g_font_04b_03br") = { 1,5,6,0,255,5,0,250,1,240,32,127,255,5,255,5, 255,2,0,48,2,21,37,128,128,128,0,128,5,50,66,160, 160,2,85,101,80,248,80,248,80,2,69,85,112,160,240,80, @@ -154,7 +154,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03br[696] U8G_SECTION(".progmem.u8g_font_0 Max Font ascent = 5 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_04b_03[859] U8G_SECTION(".progmem.u8g_font_04b_03") = { +const u8g_fntpgm_uint8_t u8g_font_04b_03[859] U8G_FONT_SECTION("u8g_font_04b_03") = { 1,5,7,0,254,5,0,251,1,242,32,255,254,5,254,5, 254,2,0,64,2,21,37,128,128,128,0,128,5,50,66,160, 160,2,85,101,80,248,80,248,80,1,70,86,32,112,192,48, @@ -221,8 +221,8 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03[859] U8G_SECTION(".progmem.u8g_font_04b Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_04b_03n[130] U8G_SECTION(".progmem.u8g_font_04b_03n") = { - 1,5,7,0,254,5,0,0,0,0,42,57,0,5,255,5, +const u8g_fntpgm_uint8_t u8g_font_04b_03n[136] U8G_FONT_SECTION("u8g_font_04b_03n") = { + 1,5,7,0,254,5,0,0,0,0,42,58,0,5,255,5, 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, 64,128,4,49,65,224,2,17,33,128,2,85,101,8,16,32, 64,128,2,69,85,96,144,144,144,96,2,37,53,192,64,64, @@ -230,7 +230,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03n[130] U8G_SECTION(".progmem.u8g_font_04 16,224,2,69,85,32,96,160,240,32,2,69,85,240,128,224, 16,224,2,69,85,96,128,224,144,96,2,69,85,240,16,32, 64,64,2,69,85,96,144,96,144,96,2,69,85,96,144,112, - 16,96}; + 16,96,3,19,35,128,0,128}; /* Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org @@ -243,7 +243,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03n[130] U8G_SECTION(".progmem.u8g_font_04 Max Font ascent = 5 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_04b_03r[729] U8G_SECTION(".progmem.u8g_font_04b_03r") = { +const u8g_fntpgm_uint8_t u8g_font_04b_03r[729] U8G_FONT_SECTION("u8g_font_04b_03r") = { 1,5,7,0,254,5,0,251,1,242,32,127,254,5,254,5, 254,2,0,64,2,21,37,128,128,128,0,128,5,50,66,160, 160,2,85,101,80,248,80,248,80,1,70,86,32,112,192,48, @@ -302,7 +302,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_03r[729] U8G_SECTION(".progmem.u8g_font_04 Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_04b_24[912] U8G_SECTION(".progmem.u8g_font_04b_24") = { +const u8g_fntpgm_uint8_t u8g_font_04b_24[912] U8G_FONT_SECTION("u8g_font_04b_24") = { 1,5,6,0,255,5,0,250,1,241,32,255,0,5,255,5, 0,2,0,32,2,21,37,128,128,128,0,128,5,50,66,160, 160,2,53,69,64,224,64,224,64,2,53,69,96,192,64,96, @@ -373,8 +373,8 @@ const u8g_fntpgm_uint8_t u8g_font_04b_24[912] U8G_SECTION(".progmem.u8g_font_04b Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_04b_24n[130] U8G_SECTION(".progmem.u8g_font_04b_24n") = { - 1,5,6,0,255,5,0,0,0,0,42,57,0,5,255,5, +const u8g_fntpgm_uint8_t u8g_font_04b_24n[136] U8G_FONT_SECTION("u8g_font_04b_24n") = { + 1,5,6,0,255,5,0,0,0,0,42,58,0,5,255,5, 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, 64,128,4,49,65,224,2,17,33,128,2,53,69,32,32,64, 128,128,2,53,69,224,160,160,160,224,2,37,53,192,64,64, @@ -382,7 +382,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_24n[130] U8G_SECTION(".progmem.u8g_font_04 32,224,2,53,69,160,160,160,224,32,2,53,69,224,128,224, 32,224,2,53,69,128,224,160,160,224,2,53,69,224,32,32, 64,128,2,53,69,224,160,224,160,224,2,53,69,224,160,160, - 224,32}; + 224,32,3,19,35,128,0,128}; /* Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org @@ -395,7 +395,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_24n[130] U8G_SECTION(".progmem.u8g_font_04 Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_04b_24r[735] U8G_SECTION(".progmem.u8g_font_04b_24r") = { +const u8g_fntpgm_uint8_t u8g_font_04b_24r[735] U8G_FONT_SECTION("u8g_font_04b_24r") = { 1,5,6,0,255,5,0,250,1,241,32,127,0,5,255,5, 0,2,0,32,2,21,37,128,128,128,0,128,5,50,66,160, 160,2,53,69,64,224,64,224,64,2,53,69,96,192,64,96, @@ -454,7 +454,7 @@ const u8g_fntpgm_uint8_t u8g_font_04b_24r[735] U8G_SECTION(".progmem.u8g_font_04 Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[4734] U8G_SECTION(".progmem.u8g_font_10x20_67_75") = { +const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[4734] U8G_FONT_SECTION("u8g_font_10x20_67_75") = { 0,10,20,0,252,5,2,211,5,193,32,255,0,16,252,13, 0,9,6,12,10,0,3,54,0,27,0,255,128,255,128,27, 0,54,0,8,13,13,10,1,0,24,24,24,24,153,219,126, @@ -763,7 +763,7 @@ const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[4734] U8G_SECTION(".progmem.u8g_fo Max Font ascent =14 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_10x20_75r[693] U8G_SECTION(".progmem.u8g_font_10x20_75r") = { +const u8g_fntpgm_uint8_t u8g_font_10x20_75r[693] U8G_FONT_SECTION("u8g_font_10x20_75r") = { 0,10,20,0,252,8,1,219,0,0,32,79,0,14,255,9, 0,8,8,8,10,1,1,255,255,255,255,255,255,255,255,8, 8,8,10,1,1,255,129,129,129,129,129,129,255,8,8,8, @@ -820,7 +820,7 @@ const u8g_fntpgm_uint8_t u8g_font_10x20_75r[693] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =13 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[2638] U8G_SECTION(".progmem.u8g_font_10x20_78_79") = { +const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[2638] U8G_FONT_SECTION("u8g_font_10x20_78_79") = { 0,10,20,0,252,9,1,212,2,205,32,255,0,13,0,11, 0,9,9,18,10,0,0,54,0,28,0,136,128,201,128,119, 0,201,128,136,128,28,0,54,0,9,9,18,10,0,0,8, @@ -998,7 +998,7 @@ const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[2638] U8G_SECTION(".progmem.u8g_fo Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_10x20[3453] U8G_SECTION(".progmem.u8g_font_10x20") = { +const u8g_fntpgm_uint8_t u8g_font_10x20[3453] U8G_FONT_SECTION("u8g_font_10x20") = { 0,10,20,0,252,13,2,74,4,153,32,255,252,16,252,13, 252,0,0,0,10,0,16,2,13,13,10,4,0,192,192,192, 192,192,192,192,192,192,192,0,192,192,6,4,4,10,2,9, @@ -1227,7 +1227,7 @@ const u8g_fntpgm_uint8_t u8g_font_10x20[3453] U8G_SECTION(".progmem.u8g_font_10x Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_10x20r[1667] U8G_SECTION(".progmem.u8g_font_10x20r") = { +const u8g_fntpgm_uint8_t u8g_font_10x20r[1667] U8G_FONT_SECTION("u8g_font_10x20r") = { 0,10,20,0,252,13,2,74,4,153,32,127,252,16,252,13, 252,0,0,0,10,0,16,2,13,13,10,4,0,192,192,192, 192,192,192,192,192,192,192,0,192,192,6,4,4,10,2,9, @@ -1345,7 +1345,7 @@ const u8g_fntpgm_uint8_t u8g_font_10x20r[1667] U8G_SECTION(".progmem.u8g_font_10 Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_4x6[1500] U8G_SECTION(".progmem.u8g_font_4x6") = { +const u8g_fntpgm_uint8_t u8g_font_4x6[1500] U8G_FONT_SECTION("u8g_font_4x6") = { 1,4,6,0,255,5,1,3,1,250,32,255,255,5,255,5, 255,7,0,64,18,21,69,128,128,128,0,128,5,50,66,160, 160,2,69,69,160,240,160,240,160,1,54,70,64,224,192,32, @@ -1452,7 +1452,7 @@ const u8g_fntpgm_uint8_t u8g_font_4x6[1500] U8G_SECTION(".progmem.u8g_font_4x6") Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_4x6r[734] U8G_SECTION(".progmem.u8g_font_4x6r") = { +const u8g_fntpgm_uint8_t u8g_font_4x6r[734] U8G_FONT_SECTION("u8g_font_4x6r") = { 1,4,6,0,255,5,1,3,1,250,32,127,255,5,255,5, 255,7,0,64,18,21,69,128,128,128,0,128,5,50,66,160, 160,2,69,69,160,240,160,240,160,1,54,70,64,224,192,32, @@ -1511,7 +1511,7 @@ const u8g_fntpgm_uint8_t u8g_font_4x6r[734] U8G_SECTION(".progmem.u8g_font_4x6r" Max Font ascent = 6 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_5x7[1624] U8G_SECTION(".progmem.u8g_font_5x7") = { +const u8g_fntpgm_uint8_t u8g_font_5x7[1624] U8G_FONT_SECTION("u8g_font_5x7") = { 1,5,7,0,255,6,1,21,2,39,32,255,255,6,255,6, 255,8,0,80,34,22,86,128,128,128,128,0,128,21,51,83, 160,160,160,2,85,85,80,248,80,248,80,2,85,85,112,160, @@ -1626,7 +1626,7 @@ const u8g_fntpgm_uint8_t u8g_font_5x7[1624] U8G_SECTION(".progmem.u8g_font_5x7") Max Font ascent = 6 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_5x7r[789] U8G_SECTION(".progmem.u8g_font_5x7r") = { +const u8g_fntpgm_uint8_t u8g_font_5x7r[789] U8G_FONT_SECTION("u8g_font_5x7r") = { 1,5,7,0,255,6,1,21,2,39,32,127,255,6,255,6, 255,8,0,80,34,22,86,128,128,128,128,0,128,21,51,83, 160,160,160,2,85,85,80,248,80,248,80,2,85,85,112,160, @@ -1689,7 +1689,7 @@ const u8g_fntpgm_uint8_t u8g_font_5x7r[789] U8G_SECTION(".progmem.u8g_font_5x7r" Max Font ascent = 7 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_5x8[1693] U8G_SECTION(".progmem.u8g_font_5x8") = { +const u8g_fntpgm_uint8_t u8g_font_5x8[1693] U8G_FONT_SECTION("u8g_font_5x8") = { 1,5,8,0,255,6,1,33,2,53,32,255,255,7,255,6, 255,9,0,80,34,22,86,128,128,128,128,0,128,21,51,83, 160,160,160,2,87,87,80,80,248,80,248,80,80,2,87,87, @@ -1808,7 +1808,7 @@ const u8g_fntpgm_uint8_t u8g_font_5x8[1693] U8G_SECTION(".progmem.u8g_font_5x8") Max Font ascent = 7 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_5x8r[805] U8G_SECTION(".progmem.u8g_font_5x8r") = { +const u8g_fntpgm_uint8_t u8g_font_5x8r[805] U8G_FONT_SECTION("u8g_font_5x8r") = { 1,5,8,0,255,6,1,33,2,53,32,127,255,7,255,6, 255,9,0,80,34,22,86,128,128,128,128,0,128,21,51,83, 160,160,160,2,87,87,80,80,248,80,248,80,80,2,87,87, @@ -1872,7 +1872,7 @@ const u8g_fntpgm_uint8_t u8g_font_5x8r[805] U8G_SECTION(".progmem.u8g_font_5x8r" Max Font ascent = 8 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x10[1866] U8G_SECTION(".progmem.u8g_font_6x10") = { +const u8g_fntpgm_uint8_t u8g_font_6x10[1866] U8G_FONT_SECTION("u8g_font_6x10") = { 1,6,10,0,254,7,1,54,2,104,32,255,254,8,254,7, 254,10,0,96,34,23,103,128,128,128,128,128,0,128,22,51, 99,160,160,160,2,87,103,80,80,248,80,248,80,80,2,87, @@ -2002,7 +2002,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x10[1866] U8G_SECTION(".progmem.u8g_font_6x10 Max Font ascent = 8 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x10r[889] U8G_SECTION(".progmem.u8g_font_6x10r") = { +const u8g_fntpgm_uint8_t u8g_font_6x10r[889] U8G_FONT_SECTION("u8g_font_6x10r") = { 1,6,10,0,254,7,1,54,2,104,32,127,254,8,254,7, 254,10,0,96,34,23,103,128,128,128,128,128,0,128,22,51, 99,160,160,160,2,87,103,80,80,248,80,248,80,80,2,87, @@ -2071,7 +2071,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x10r[889] U8G_SECTION(".progmem.u8g_font_6x10 Max Font ascent =10 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[2382] U8G_SECTION(".progmem.u8g_font_6x12_67_75") = { +const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[2382] U8G_FONT_SECTION("u8g_font_6x12_67_75") = { 1,6,12,0,254,3,2,41,3,99,0,255,0,10,254,8, 0,2,87,103,168,0,136,0,136,0,168,2,87,103,240,136, 232,168,232,136,240,2,87,103,112,168,248,168,248,168,112,2, @@ -2233,7 +2233,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[2382] U8G_SECTION(".progmem.u8g_fon Max Font ascent = 9 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x12_75r[427] U8G_SECTION(".progmem.u8g_font_6x12_75r") = { +const u8g_fntpgm_uint8_t u8g_font_6x12_75r[427] U8G_FONT_SECTION("u8g_font_6x12_75r") = { 1,6,12,0,254,7,1,41,0,0,32,79,0,9,255,7, 0,2,85,101,248,248,248,248,248,2,85,101,248,136,136,136, 248,2,85,101,112,136,136,136,112,2,85,101,248,136,168,136, @@ -2273,7 +2273,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x12_75r[427] U8G_SECTION(".progmem.u8g_font_6 Max Font ascent =10 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[2316] U8G_SECTION(".progmem.u8g_font_6x12_78_79") = { +const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[2316] U8G_FONT_SECTION("u8g_font_6x12_78_79") = { 1,6,12,0,254,6,2,80,3,53,0,255,0,10,254,9, 0,2,87,103,168,0,136,0,136,0,168,3,101,101,144,252, 32,64,96,3,101,101,196,200,48,200,196,3,101,101,96,64, @@ -2431,7 +2431,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[2316] U8G_SECTION(".progmem.u8g_fon Max Font ascent =10 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x12[1933] U8G_SECTION(".progmem.u8g_font_6x12") = { +const u8g_fntpgm_uint8_t u8g_font_6x12[1933] U8G_FONT_SECTION("u8g_font_6x12") = { 1,6,12,0,254,7,1,53,2,107,32,255,254,10,254,8, 254,12,0,96,34,23,103,128,128,128,128,128,0,128,23,51, 99,160,160,160,2,86,102,80,248,80,80,248,80,1,89,105, @@ -2565,7 +2565,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x12[1933] U8G_SECTION(".progmem.u8g_font_6x12 Max Font ascent =10 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x12r[898] U8G_SECTION(".progmem.u8g_font_6x12r") = { +const u8g_fntpgm_uint8_t u8g_font_6x12r[898] U8G_FONT_SECTION("u8g_font_6x12r") = { 1,6,12,0,254,7,1,53,2,107,32,127,254,10,254,8, 254,12,0,96,34,23,103,128,128,128,128,128,0,128,23,51, 99,160,160,160,2,86,102,80,248,80,80,248,80,1,89,105, @@ -2635,7 +2635,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x12r[898] U8G_SECTION(".progmem.u8g_font_6x12 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[2236] U8G_SECTION(".progmem.u8g_font_6x13_67_75") = { +const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[2236] U8G_FONT_SECTION("u8g_font_6x13_67_75") = { 1,6,13,0,254,3,1,73,2,147,32,255,0,11,254,9, 0,3,101,101,80,40,252,40,80,2,89,105,32,32,32,32, 168,112,168,112,32,3,101,101,36,72,240,72,36,3,101,101, @@ -2788,7 +2788,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[2236] U8G_SECTION(".progmem.u8g_fon Max Font ascent =10 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x13_75r[447] U8G_SECTION(".progmem.u8g_font_6x13_75r") = { +const u8g_fntpgm_uint8_t u8g_font_6x13_75r[447] U8G_FONT_SECTION("u8g_font_6x13_75r") = { 1,6,13,0,254,9,1,57,0,0,32,79,0,10,255,9, 0,3,85,101,248,248,248,248,248,3,85,101,248,136,136,136, 248,3,85,101,112,136,136,136,112,3,85,101,248,136,168,136, @@ -2829,7 +2829,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x13_75r[447] U8G_SECTION(".progmem.u8g_font_6 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[1470] U8G_SECTION(".progmem.u8g_font_6x13_78_79") = { +const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[1470] U8G_FONT_SECTION("u8g_font_6x13_78_79") = { 1,6,13,0,254,7,1,42,2,11,32,255,0,11,254,10, 0,2,87,103,112,32,168,248,168,32,112,255,2,104,104,48, 48,48,252,252,48,48,48,2,89,105,32,112,32,168,248,168, @@ -2934,7 +2934,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[1470] U8G_SECTION(".progmem.u8g_fon Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x13B[2171] U8G_SECTION(".progmem.u8g_font_6x13B") = { +const u8g_fntpgm_uint8_t u8g_font_6x13B[2171] U8G_FONT_SECTION("u8g_font_6x13B") = { 1,6,13,0,254,9,1,99,2,211,32,255,254,11,254,10, 254,13,0,96,34,41,105,192,192,192,192,192,192,192,0,192, 8,83,99,216,216,216,3,103,103,120,120,252,120,252,120,120, @@ -3083,7 +3083,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x13B[2171] U8G_SECTION(".progmem.u8g_font_6x1 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x13Br[1040] U8G_SECTION(".progmem.u8g_font_6x13Br") = { +const u8g_fntpgm_uint8_t u8g_font_6x13Br[1040] U8G_FONT_SECTION("u8g_font_6x13Br") = { 1,6,13,0,254,9,1,99,2,211,32,127,254,11,254,10, 254,13,0,96,34,41,105,192,192,192,192,192,192,192,0,192, 8,83,99,216,216,216,3,103,103,120,120,252,120,252,120,120, @@ -3162,7 +3162,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x13Br[1040] U8G_SECTION(".progmem.u8g_font_6x Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x13[2160] U8G_SECTION(".progmem.u8g_font_6x13") = { +const u8g_fntpgm_uint8_t u8g_font_6x13[2160] U8G_FONT_SECTION("u8g_font_6x13") = { 1,6,13,0,254,9,1,102,2,214,32,255,254,11,254,10, 254,13,0,96,34,25,105,128,128,128,128,128,128,128,0,128, 24,51,99,160,160,160,3,87,103,80,80,248,80,248,80,80, @@ -3311,7 +3311,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x13[2160] U8G_SECTION(".progmem.u8g_font_6x13 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x13O[2162] U8G_SECTION(".progmem.u8g_font_6x13O") = { +const u8g_fntpgm_uint8_t u8g_font_6x13O[2162] U8G_FONT_SECTION("u8g_font_6x13O") = { 1,6,13,0,254,9,1,104,2,216,32,255,254,11,254,10, 254,13,0,96,34,41,105,64,64,64,64,128,128,128,0,128, 40,67,99,80,80,160,3,103,103,40,40,124,40,248,80,80, @@ -3460,7 +3460,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x13O[2162] U8G_SECTION(".progmem.u8g_font_6x1 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x13Or[1043] U8G_SECTION(".progmem.u8g_font_6x13Or") = { +const u8g_fntpgm_uint8_t u8g_font_6x13Or[1043] U8G_FONT_SECTION("u8g_font_6x13Or") = { 1,6,13,0,254,9,1,104,2,216,32,127,254,11,254,10, 254,13,0,96,34,41,105,64,64,64,64,128,128,128,0,128, 40,67,99,80,80,160,3,103,103,40,40,124,40,248,80,80, @@ -3539,7 +3539,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x13Or[1043] U8G_SECTION(".progmem.u8g_font_6x Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_6x13r[1041] U8G_SECTION(".progmem.u8g_font_6x13r") = { +const u8g_fntpgm_uint8_t u8g_font_6x13r[1041] U8G_FONT_SECTION("u8g_font_6x13r") = { 1,6,13,0,254,9,1,102,2,214,32,127,254,11,254,10, 254,13,0,96,34,25,105,128,128,128,128,128,128,128,0,128, 24,51,99,160,160,160,3,87,103,80,80,248,80,248,80,80, @@ -3618,7 +3618,7 @@ const u8g_fntpgm_uint8_t u8g_font_6x13r[1041] U8G_SECTION(".progmem.u8g_font_6x1 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[2197] U8G_SECTION(".progmem.u8g_font_7x13_67_75") = { +const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[2197] U8G_FONT_SECTION("u8g_font_7x13_67_75") = { 1,7,13,0,254,3,1,91,2,178,32,255,0,11,254,10, 0,4,117,117,72,36,254,36,72,18,89,121,32,32,32,168, 112,32,168,112,32,4,101,117,36,72,248,72,36,4,101,117, @@ -3769,7 +3769,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[2197] U8G_SECTION(".progmem.u8g_fon Max Font ascent = 9 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x13_75r[471] U8G_SECTION(".progmem.u8g_font_7x13_75r") = { +const u8g_fntpgm_uint8_t u8g_font_7x13_75r[471] U8G_FONT_SECTION("u8g_font_7x13_75r") = { 1,7,13,0,254,7,1,71,0,0,32,79,0,9,0,8, 0,3,119,119,254,254,254,254,254,254,254,3,119,119,254,130, 130,130,130,130,254,3,119,119,124,130,130,130,130,130,124,3, @@ -3812,7 +3812,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x13_75r[471] U8G_SECTION(".progmem.u8g_font_7 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x13B[2172] U8G_SECTION(".progmem.u8g_font_7x13B") = { +const u8g_fntpgm_uint8_t u8g_font_7x13B[2172] U8G_FONT_SECTION("u8g_font_7x13B") = { 1,7,13,0,254,9,1,105,2,216,32,255,254,11,254,9, 254,13,0,112,34,41,121,192,192,192,192,192,192,0,192,192, 24,83,115,216,216,216,18,89,121,80,80,248,248,80,248,248, @@ -3961,7 +3961,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x13B[2172] U8G_SECTION(".progmem.u8g_font_7x1 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x13Br[1041] U8G_SECTION(".progmem.u8g_font_7x13Br") = { +const u8g_fntpgm_uint8_t u8g_font_7x13Br[1041] U8G_FONT_SECTION("u8g_font_7x13Br") = { 1,7,13,0,254,9,1,105,2,216,32,127,254,11,254,9, 254,13,0,112,34,41,121,192,192,192,192,192,192,0,192,192, 24,83,115,216,216,216,18,89,121,80,80,248,248,80,248,248, @@ -4040,7 +4040,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x13Br[1041] U8G_SECTION(".progmem.u8g_font_7x Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x13[2157] U8G_SECTION(".progmem.u8g_font_7x13") = { +const u8g_fntpgm_uint8_t u8g_font_7x13[2157] U8G_FONT_SECTION("u8g_font_7x13") = { 1,7,13,0,254,9,1,95,2,207,32,255,254,11,254,10, 254,13,0,112,50,25,121,128,128,128,128,128,128,128,0,128, 40,51,115,160,160,160,19,87,119,80,80,248,80,248,80,80, @@ -4188,7 +4188,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x13[2157] U8G_SECTION(".progmem.u8g_font_7x13 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x13O[2158] U8G_SECTION(".progmem.u8g_font_7x13O") = { +const u8g_fntpgm_uint8_t u8g_font_7x13O[2158] U8G_FONT_SECTION("u8g_font_7x13O") = { 1,7,13,0,254,9,1,96,2,208,32,255,254,11,254,10, 254,13,0,112,34,41,121,64,64,64,64,128,128,128,0,128, 40,51,115,160,160,160,3,103,119,40,40,124,40,248,80,80, @@ -4336,7 +4336,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x13O[2158] U8G_SECTION(".progmem.u8g_font_7x1 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x13Or[1035] U8G_SECTION(".progmem.u8g_font_7x13Or") = { +const u8g_fntpgm_uint8_t u8g_font_7x13Or[1035] U8G_FONT_SECTION("u8g_font_7x13Or") = { 1,7,13,0,254,9,1,96,2,208,32,127,254,11,254,10, 254,13,0,112,34,41,121,64,64,64,64,128,128,128,0,128, 40,51,115,160,160,160,3,103,119,40,40,124,40,248,80,80, @@ -4414,7 +4414,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x13Or[1035] U8G_SECTION(".progmem.u8g_font_7x Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x13r[1034] U8G_SECTION(".progmem.u8g_font_7x13r") = { +const u8g_fntpgm_uint8_t u8g_font_7x13r[1034] U8G_FONT_SECTION("u8g_font_7x13r") = { 1,7,13,0,254,9,1,95,2,207,32,127,254,11,254,10, 254,13,0,112,50,25,121,128,128,128,128,128,128,128,0,128, 40,51,115,160,160,160,19,87,119,80,80,248,80,248,80,80, @@ -4492,7 +4492,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x13r[1034] U8G_SECTION(".progmem.u8g_font_7x1 Max Font ascent =12 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x14B[2390] U8G_SECTION(".progmem.u8g_font_7x14B") = { +const u8g_fntpgm_uint8_t u8g_font_7x14B[2390] U8G_FONT_SECTION("u8g_font_7x14B") = { 1,7,14,0,254,10,1,137,3,30,32,255,254,12,254,11, 254,14,0,112,34,42,122,192,192,192,192,192,192,192,0,192, 192,25,84,116,216,216,216,216,2,106,122,120,120,120,252,120, @@ -4655,7 +4655,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x14B[2390] U8G_SECTION(".progmem.u8g_font_7x1 Max Font ascent =12 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x14Br[1151] U8G_SECTION(".progmem.u8g_font_7x14Br") = { +const u8g_fntpgm_uint8_t u8g_font_7x14Br[1151] U8G_FONT_SECTION("u8g_font_7x14Br") = { 1,7,14,0,254,10,1,137,3,30,32,127,254,12,254,11, 254,14,0,112,34,42,122,192,192,192,192,192,192,192,0,192, 192,25,84,116,216,216,216,216,2,106,122,120,120,120,252,120, @@ -4740,7 +4740,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x14Br[1151] U8G_SECTION(".progmem.u8g_font_7x Max Font ascent =12 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x14[2374] U8G_SECTION(".progmem.u8g_font_7x14") = { +const u8g_fntpgm_uint8_t u8g_font_7x14[2374] U8G_FONT_SECTION("u8g_font_7x14") = { 1,7,14,0,254,10,1,138,3,30,32,255,254,12,254,11, 254,14,0,112,50,26,122,128,128,128,128,128,128,128,0,128, 128,41,52,116,160,160,160,160,18,90,122,80,80,80,248,80, @@ -4902,7 +4902,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x14[2374] U8G_SECTION(".progmem.u8g_font_7x14 Max Font ascent =12 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_7x14r[1151] U8G_SECTION(".progmem.u8g_font_7x14r") = { +const u8g_fntpgm_uint8_t u8g_font_7x14r[1151] U8G_FONT_SECTION("u8g_font_7x14r") = { 1,7,14,0,254,10,1,138,3,30,32,127,254,12,254,11, 254,14,0,112,50,26,122,128,128,128,128,128,128,128,0,128, 128,41,52,116,160,160,160,160,18,90,122,80,80,80,248,80, @@ -4987,7 +4987,7 @@ const u8g_fntpgm_uint8_t u8g_font_7x14r[1151] U8G_SECTION(".progmem.u8g_font_7x1 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[2420] U8G_SECTION(".progmem.u8g_font_8x13_67_75") = { +const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[2420] U8G_FONT_SECTION("u8g_font_8x13_67_75") = { 1,8,13,0,254,3,1,94,2,193,32,255,0,11,254,10, 0,3,133,133,36,18,255,18,36,18,88,136,32,32,168,112, 32,168,112,32,2,119,135,16,34,68,248,68,34,16,18,119, @@ -5152,7 +5152,7 @@ const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[2420] U8G_SECTION(".progmem.u8g_fon Max Font ascent =11 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_8x13_75r[496] U8G_SECTION(".progmem.u8g_font_8x13_75r") = { +const u8g_fntpgm_uint8_t u8g_font_8x13_75r[496] U8G_FONT_SECTION("u8g_font_8x13_75r") = { 1,8,13,0,254,11,1,83,0,0,32,79,0,11,0,11, 0,2,119,135,254,254,254,254,254,254,254,2,119,135,254,130, 130,130,130,130,254,2,119,135,124,130,130,130,130,130,124,2, @@ -5197,7 +5197,7 @@ const u8g_fntpgm_uint8_t u8g_font_8x13_75r[496] U8G_SECTION(".progmem.u8g_font_8 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_8x13B[2302] U8G_SECTION(".progmem.u8g_font_8x13B") = { +const u8g_fntpgm_uint8_t u8g_font_8x13B[2302] U8G_FONT_SECTION("u8g_font_8x13B") = { 1,8,13,0,254,10,1,127,3,12,32,255,254,11,254,10, 254,13,0,128,50,42,138,192,192,192,192,192,192,192,0,192, 192,24,84,132,216,216,216,216,2,121,137,108,108,254,254,108, @@ -5354,7 +5354,7 @@ const u8g_fntpgm_uint8_t u8g_font_8x13B[2302] U8G_SECTION(".progmem.u8g_font_8x1 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_8x13Br[1123] U8G_SECTION(".progmem.u8g_font_8x13Br") = { +const u8g_fntpgm_uint8_t u8g_font_8x13Br[1123] U8G_FONT_SECTION("u8g_font_8x13Br") = { 1,8,13,0,254,10,1,127,3,12,32,127,254,11,254,10, 254,13,0,128,50,42,138,192,192,192,192,192,192,192,0,192, 192,24,84,132,216,216,216,216,2,121,137,108,108,254,254,108, @@ -5438,7 +5438,7 @@ const u8g_fntpgm_uint8_t u8g_font_8x13Br[1123] U8G_SECTION(".progmem.u8g_font_8x Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_8x13[2152] U8G_SECTION(".progmem.u8g_font_8x13") = { +const u8g_fntpgm_uint8_t u8g_font_8x13[2152] U8G_FONT_SECTION("u8g_font_8x13") = { 1,8,13,0,254,9,1,97,2,205,32,255,254,11,254,9, 254,13,0,128,50,25,137,128,128,128,128,128,128,128,0,128, 40,67,131,144,144,144,19,103,135,72,72,252,72,252,72,72, @@ -5586,7 +5586,7 @@ const u8g_fntpgm_uint8_t u8g_font_8x13[2152] U8G_SECTION(".progmem.u8g_font_8x13 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_8x13O[2153] U8G_SECTION(".progmem.u8g_font_8x13O") = { +const u8g_fntpgm_uint8_t u8g_font_8x13O[2153] U8G_FONT_SECTION("u8g_font_8x13O") = { 1,8,13,0,254,9,1,98,2,206,32,255,254,11,254,9, 254,13,0,128,50,41,137,64,64,64,64,128,128,128,0,128, 40,67,131,144,144,144,3,119,135,36,36,126,36,252,72,72, @@ -5734,7 +5734,7 @@ const u8g_fntpgm_uint8_t u8g_font_8x13O[2153] U8G_SECTION(".progmem.u8g_font_8x1 Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_8x13Or[1029] U8G_SECTION(".progmem.u8g_font_8x13Or") = { +const u8g_fntpgm_uint8_t u8g_font_8x13Or[1029] U8G_FONT_SECTION("u8g_font_8x13Or") = { 1,8,13,0,254,9,1,98,2,206,32,127,254,11,254,9, 254,13,0,128,50,41,137,64,64,64,64,128,128,128,0,128, 40,67,131,144,144,144,3,119,135,36,36,126,36,252,72,72, @@ -5812,7 +5812,7 @@ const u8g_fntpgm_uint8_t u8g_font_8x13Or[1029] U8G_SECTION(".progmem.u8g_font_8x Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_8x13r[1028] U8G_SECTION(".progmem.u8g_font_8x13r") = { +const u8g_fntpgm_uint8_t u8g_font_8x13r[1028] U8G_FONT_SECTION("u8g_font_8x13r") = { 1,8,13,0,254,9,1,97,2,205,32,127,254,11,254,9, 254,13,0,128,50,25,137,128,128,128,128,128,128,128,0,128, 40,67,131,144,144,144,19,103,135,72,72,252,72,252,72,72, @@ -5890,7 +5890,7 @@ const u8g_fntpgm_uint8_t u8g_font_8x13r[1028] U8G_SECTION(".progmem.u8g_font_8x1 Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[3804] U8G_SECTION(".progmem.u8g_font_9x15_67_75") = { +const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[3804] U8G_FONT_SECTION("u8g_font_9x15_67_75") = { 0,9,15,0,253,4,1,255,4,34,32,255,0,12,253,10, 0,8,7,7,9,0,1,72,36,18,255,18,36,72,7,10, 10,9,1,0,16,16,16,146,84,56,146,84,56,16,7,7, @@ -6141,7 +6141,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[3804] U8G_SECTION(".progmem.u8g_fon Max Font ascent =10 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x15_75r[792] U8G_SECTION(".progmem.u8g_font_9x15_75r") = { +const u8g_fntpgm_uint8_t u8g_font_9x15_75r[792] U8G_FONT_SECTION("u8g_font_9x15_75r") = { 0,9,15,0,253,9,2,33,0,0,32,79,0,10,0,9, 0,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, @@ -6204,7 +6204,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x15_75r[792] U8G_SECTION(".progmem.u8g_font_9 Max Font ascent =12 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[3795] U8G_SECTION(".progmem.u8g_font_9x15_78_79") = { +const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[3795] U8G_FONT_SECTION("u8g_font_9x15_78_79") = { 0,9,15,0,253,9,2,231,4,175,32,255,0,12,254,11, 0,9,9,18,9,0,0,62,0,28,0,136,128,201,128,247, 128,201,128,136,128,28,0,62,0,9,9,18,9,0,0,8, @@ -6455,7 +6455,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[3795] U8G_SECTION(".progmem.u8g_fon Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x15B[2990] U8G_SECTION(".progmem.u8g_font_9x15B") = { +const u8g_fntpgm_uint8_t u8g_font_9x15B[2990] U8G_FONT_SECTION("u8g_font_9x15B") = { 0,9,15,0,253,10,1,232,3,214,32,255,253,12,253,11, 253,0,0,0,9,0,12,2,10,10,9,3,0,192,192,192, 192,192,192,192,192,0,192,5,3,3,9,2,7,216,216,216, @@ -6655,7 +6655,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x15B[2990] U8G_SECTION(".progmem.u8g_font_9x1 Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x15Br[1423] U8G_SECTION(".progmem.u8g_font_9x15Br") = { +const u8g_fntpgm_uint8_t u8g_font_9x15Br[1423] U8G_FONT_SECTION("u8g_font_9x15Br") = { 0,9,15,0,253,10,1,232,3,214,32,127,253,12,253,11, 253,0,0,0,9,0,12,2,10,10,9,3,0,192,192,192, 192,192,192,192,192,0,192,5,3,3,9,2,7,216,216,216, @@ -6757,7 +6757,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x15Br[1423] U8G_SECTION(".progmem.u8g_font_9x Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x15[2959] U8G_SECTION(".progmem.u8g_font_9x15") = { +const u8g_fntpgm_uint8_t u8g_font_9x15[2959] U8G_FONT_SECTION("u8g_font_9x15") = { 0,9,15,0,253,10,1,232,3,216,32,255,253,12,253,11, 253,0,0,0,9,0,12,1,11,11,9,4,0,128,128,128, 128,128,128,128,0,0,128,128,4,3,3,9,3,7,144,144, @@ -6955,7 +6955,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x15[2959] U8G_SECTION(".progmem.u8g_font_9x15 Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x15r[1427] U8G_SECTION(".progmem.u8g_font_9x15r") = { +const u8g_fntpgm_uint8_t u8g_font_9x15r[1427] U8G_FONT_SECTION("u8g_font_9x15r") = { 0,9,15,0,253,10,1,232,3,216,32,127,253,12,253,11, 253,0,0,0,9,0,12,1,11,11,9,4,0,128,128,128, 128,128,128,128,0,0,128,128,4,3,3,9,3,7,144,144, @@ -7058,7 +7058,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x15r[1427] U8G_SECTION(".progmem.u8g_font_9x1 Max Font ascent =14 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[3936] U8G_SECTION(".progmem.u8g_font_9x18_67_75") = { +const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[3936] U8G_FONT_SECTION("u8g_font_9x18_67_75") = { 0,9,18,0,252,4,1,255,4,34,32,255,0,14,252,10, 0,8,7,7,9,0,1,72,36,18,255,18,36,72,7,10, 10,9,1,0,16,16,16,146,84,56,146,84,56,16,7,7, @@ -7318,7 +7318,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[3936] U8G_SECTION(".progmem.u8g_fon Max Font ascent =10 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x18_75r[792] U8G_SECTION(".progmem.u8g_font_9x18_75r") = { +const u8g_fntpgm_uint8_t u8g_font_9x18_75r[792] U8G_FONT_SECTION("u8g_font_9x18_75r") = { 0,9,18,0,252,9,2,33,0,0,32,79,0,10,0,9, 0,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, @@ -7381,7 +7381,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x18_75r[792] U8G_SECTION(".progmem.u8g_font_9 Max Font ascent =12 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[3336] U8G_SECTION(".progmem.u8g_font_9x18_78_79") = { +const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[3336] U8G_FONT_SECTION("u8g_font_9x18_78_79") = { 0,9,18,0,252,9,2,231,4,175,32,255,0,12,255,11, 0,9,9,18,9,0,0,62,0,28,0,136,128,201,128,247, 128,201,128,136,128,28,0,62,0,9,9,18,9,0,0,8, @@ -7603,7 +7603,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[3336] U8G_SECTION(".progmem.u8g_fon Max Font ascent =14 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x18B[3026] U8G_SECTION(".progmem.u8g_font_9x18B") = { +const u8g_fntpgm_uint8_t u8g_font_9x18B[3026] U8G_FONT_SECTION("u8g_font_9x18B") = { 0,9,18,0,252,10,1,242,3,225,32,255,253,14,252,11, 253,0,0,0,9,0,14,2,11,11,9,3,0,192,192,192, 192,192,192,192,0,0,192,192,5,4,4,9,2,7,216,216, @@ -7806,7 +7806,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x18B[3026] U8G_SECTION(".progmem.u8g_font_9x1 Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x18Br[1434] U8G_SECTION(".progmem.u8g_font_9x18Br") = { +const u8g_fntpgm_uint8_t u8g_font_9x18Br[1434] U8G_FONT_SECTION("u8g_font_9x18Br") = { 0,9,18,0,252,10,1,242,3,225,32,127,253,14,253,11, 253,0,0,0,9,0,14,2,11,11,9,3,0,192,192,192, 192,192,192,192,0,0,192,192,5,4,4,9,2,7,216,216, @@ -7909,7 +7909,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x18Br[1434] U8G_SECTION(".progmem.u8g_font_9x Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x18[3011] U8G_SECTION(".progmem.u8g_font_9x18") = { +const u8g_fntpgm_uint8_t u8g_font_9x18[3011] U8G_FONT_SECTION("u8g_font_9x18") = { 0,9,18,0,252,10,1,232,3,215,32,255,253,14,253,11, 253,0,0,0,9,0,14,1,11,11,9,4,0,128,128,128, 128,128,128,128,0,0,128,128,4,4,4,9,3,7,144,144, @@ -8111,7 +8111,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x18[3011] U8G_SECTION(".progmem.u8g_font_9x18 Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_9x18r[1424] U8G_SECTION(".progmem.u8g_font_9x18r") = { +const u8g_fntpgm_uint8_t u8g_font_9x18r[1424] U8G_FONT_SECTION("u8g_font_9x18r") = { 0,9,18,0,252,10,1,232,3,215,32,127,253,14,253,11, 253,0,0,0,9,0,14,1,11,11,9,4,0,128,128,128, 128,128,128,128,0,0,128,128,4,4,4,9,3,7,144,144, @@ -8214,7 +8214,7 @@ const u8g_fntpgm_uint8_t u8g_font_9x18r[1424] U8G_SECTION(".progmem.u8g_font_9x1 Max Font ascent = 8 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_baby[2227] U8G_SECTION(".progmem.u8g_font_baby") = { +const u8g_fntpgm_uint8_t u8g_font_baby[2227] U8G_FONT_SECTION("u8g_font_baby") = { 0,10,10,255,254,5,1,108,2,200,32,255,254,8,254,6, 254,0,0,0,2,0,0,1,6,6,3,1,0,128,128,128, 128,0,128,3,3,3,4,0,4,160,160,160,5,5,5,6, @@ -8367,8 +8367,8 @@ const u8g_fntpgm_uint8_t u8g_font_baby[2227] U8G_SECTION(".progmem.u8g_font_baby Max Font ascent = 6 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_babyn[180] U8G_SECTION(".progmem.u8g_font_babyn") = { - 0,10,10,255,254,5,0,0,0,0,42,57,0,6,254,5, +const u8g_fntpgm_uint8_t u8g_font_babyn[189] U8G_FONT_SECTION("u8g_font_babyn") = { + 0,10,10,255,254,5,0,0,0,0,42,58,0,6,254,5, 0,3,3,3,4,0,3,160,64,160,3,3,3,5,1,1, 64,224,64,2,3,3,3,0,254,192,64,128,3,1,1,4, 0,2,224,1,1,1,2,0,0,128,3,6,6,4,0,255, @@ -8379,7 +8379,7 @@ const u8g_fntpgm_uint8_t u8g_font_babyn[180] U8G_SECTION(".progmem.u8g_font_baby 5,0,0,240,128,224,16,224,4,5,5,5,0,0,96,128, 224,144,96,4,5,5,5,0,0,240,16,32,64,128,4,5, 5,5,0,0,96,144,96,144,96,4,5,5,5,0,0,96, - 144,112,16,96}; + 144,112,16,96,1,3,3,3,1,0,128,0,128}; /* Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 Copyright: Copyright mrsbarrett 2008 @@ -8392,7 +8392,7 @@ const u8g_fntpgm_uint8_t u8g_font_babyn[180] U8G_SECTION(".progmem.u8g_font_baby Max Font ascent = 7 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_babyr[1040] U8G_SECTION(".progmem.u8g_font_babyr") = { +const u8g_fntpgm_uint8_t u8g_font_babyr[1040] U8G_FONT_SECTION("u8g_font_babyr") = { 0,10,10,255,254,5,1,108,2,200,32,127,254,7,254,6, 254,0,0,0,2,0,0,1,6,6,3,1,0,128,128,128, 128,0,128,3,3,3,4,0,4,160,160,160,5,5,5,6, @@ -8471,7 +8471,7 @@ const u8g_fntpgm_uint8_t u8g_font_babyr[1040] U8G_SECTION(".progmem.u8g_font_bab Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_blipfest_07[948] U8G_SECTION(".progmem.u8g_font_blipfest_07") = { +const u8g_fntpgm_uint8_t u8g_font_blipfest_07[948] U8G_FONT_SECTION("u8g_font_blipfest_07") = { 0,5,6,0,255,5,1,5,2,47,32,255,255,5,255,5, 255,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, 0,128,3,2,2,4,0,3,160,160,255,255,255,4,5,5, @@ -8544,8 +8544,8 @@ const u8g_fntpgm_uint8_t u8g_font_blipfest_07[948] U8G_SECTION(".progmem.u8g_fon Max Font ascent = 5 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[160] U8G_SECTION(".progmem.u8g_font_blipfest_07n") = { - 0,5,6,0,255,5,0,0,0,0,42,57,0,5,0,5, +const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[169] U8G_FONT_SECTION("u8g_font_blipfest_07n") = { + 0,5,6,0,255,5,0,0,0,0,42,58,0,5,0,5, 0,255,3,3,3,4,0,1,64,224,64,1,2,2,2,0, 0,128,128,3,1,1,4,0,2,224,1,1,1,2,0,0, 128,255,3,5,5,4,0,0,224,160,160,160,224,2,5,5, @@ -8554,8 +8554,8 @@ const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[160] U8G_SECTION(".progmem.u8g_fo 5,4,0,0,160,160,224,32,32,3,5,5,4,0,0,224, 128,224,32,224,3,5,5,4,0,0,224,128,224,160,224,3, 5,5,4,0,0,224,32,32,32,32,3,5,5,4,0,0, - 224,160,224,160,224,3,5,5,4,0,0,224,160,224,32,224 - }; + 224,160,224,160,224,3,5,5,4,0,0,224,160,224,32,224, + 1,3,3,2,0,0,128,0,128}; /* Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 Copyright: Copyright cwillmor 2008 @@ -8568,7 +8568,7 @@ const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[160] U8G_SECTION(".progmem.u8g_fo Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[820] U8G_SECTION(".progmem.u8g_font_blipfest_07r") = { +const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[820] U8G_FONT_SECTION("u8g_font_blipfest_07r") = { 0,5,6,0,255,5,1,5,2,47,32,127,255,5,255,5, 255,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, 0,128,3,2,2,4,0,3,160,160,255,255,255,4,5,5, @@ -8633,7 +8633,7 @@ const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[820] U8G_SECTION(".progmem.u8g_fo Max Font ascent = 8 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_chikita[2236] U8G_SECTION(".progmem.u8g_font_chikita") = { +const u8g_fntpgm_uint8_t u8g_font_chikita[2236] U8G_FONT_SECTION("u8g_font_chikita") = { 0,9,10,0,254,5,1,107,2,195,32,255,254,8,254,6, 254,0,0,0,2,0,0,1,7,7,2,0,255,128,128,128, 128,128,0,128,3,2,2,4,0,4,160,160,5,5,5,6, @@ -8786,8 +8786,8 @@ const u8g_fntpgm_uint8_t u8g_font_chikita[2236] U8G_SECTION(".progmem.u8g_font_c Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_chikitan[180] U8G_SECTION(".progmem.u8g_font_chikitan") = { - 0,9,10,0,254,5,0,0,0,0,42,57,0,5,255,5, +const u8g_fntpgm_uint8_t u8g_font_chikitan[189] U8G_FONT_SECTION("u8g_font_chikitan") = { + 0,9,10,0,254,5,0,0,0,0,42,58,0,5,255,5, 0,3,3,3,5,1,1,160,64,160,5,5,5,6,0,0, 32,32,248,32,32,2,2,2,3,0,255,64,128,5,1,1, 6,0,2,248,1,1,1,2,0,0,128,3,5,5,5,1, @@ -8798,7 +8798,7 @@ const u8g_fntpgm_uint8_t u8g_font_chikitan[180] U8G_SECTION(".progmem.u8g_font_c 6,0,0,248,128,240,8,240,5,5,5,6,0,0,120,128, 240,136,112,5,5,5,6,0,0,248,8,16,32,64,5,5, 5,6,0,0,112,136,112,136,112,5,5,5,6,0,0,112, - 136,120,8,240}; + 136,120,8,240,1,3,3,2,0,1,128,0,128}; /* Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) @@ -8811,7 +8811,7 @@ const u8g_fntpgm_uint8_t u8g_font_chikitan[180] U8G_SECTION(".progmem.u8g_font_c Max Font ascent = 6 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_chikitar[1032] U8G_SECTION(".progmem.u8g_font_chikitar") = { +const u8g_fntpgm_uint8_t u8g_font_chikitar[1032] U8G_FONT_SECTION("u8g_font_chikitar") = { 0,9,10,0,254,5,1,107,2,195,32,127,254,6,254,6, 254,0,0,0,2,0,0,1,7,7,2,0,255,128,128,128, 128,128,0,128,3,2,2,4,0,4,160,160,5,5,5,6, @@ -8889,7 +8889,7 @@ const u8g_fntpgm_uint8_t u8g_font_chikitar[1032] U8G_SECTION(".progmem.u8g_font_ Max Font ascent = 9 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB08[2425] U8G_SECTION(".progmem.u8g_font_courB08") = { +const u8g_fntpgm_uint8_t u8g_font_courB08[2425] U8G_FONT_SECTION("u8g_font_courB08") = { 0,12,16,253,252,6,1,146,3,13,32,255,254,9,254,7, 254,0,0,0,6,0,1,2,6,6,6,1,0,192,192,192, 192,0,192,3,3,3,6,1,3,160,160,160,5,8,8,6, @@ -9054,7 +9054,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB08[2425] U8G_SECTION(".progmem.u8g_font_c Max Font ascent = 8 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB08r[1145] U8G_SECTION(".progmem.u8g_font_courB08r") = { +const u8g_fntpgm_uint8_t u8g_font_courB08r[1145] U8G_FONT_SECTION("u8g_font_courB08r") = { 0,12,16,253,252,6,1,146,3,13,32,127,254,8,254,7, 254,0,0,0,6,0,1,2,6,6,6,1,0,192,192,192, 192,0,192,3,3,3,6,1,3,160,160,160,5,8,8,6, @@ -9139,7 +9139,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB08r[1145] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =12 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB10[3355] U8G_SECTION(".progmem.u8g_font_courB10") = { +const u8g_fntpgm_uint8_t u8g_font_courB10[3355] U8G_FONT_SECTION("u8g_font_courB10") = { 0,13,21,254,250,9,1,222,4,32,32,255,253,12,252,10, 253,0,0,0,9,0,1,2,9,9,9,3,0,192,192,192, 192,192,128,0,192,192,5,4,4,9,2,6,216,216,216,72, @@ -9362,7 +9362,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB10[3355] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =11 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB10r[1551] U8G_SECTION(".progmem.u8g_font_courB10r") = { +const u8g_fntpgm_uint8_t u8g_font_courB10r[1551] U8G_FONT_SECTION("u8g_font_courB10r") = { 0,13,21,254,250,9,1,222,4,32,32,127,253,11,253,10, 253,0,0,0,9,0,1,2,9,9,9,3,0,192,192,192, 192,192,128,0,192,192,5,4,4,9,2,6,216,216,216,72, @@ -9472,7 +9472,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB10r[1551] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB12[3959] U8G_SECTION(".progmem.u8g_font_courB12") = { +const u8g_fntpgm_uint8_t u8g_font_courB12[3959] U8G_FONT_SECTION("u8g_font_courB12") = { 0,16,24,253,250,10,2,51,4,246,32,255,253,14,253,11, 253,0,0,0,10,0,1,2,11,11,10,3,0,192,192,192, 192,192,192,192,192,0,192,192,6,5,5,10,2,6,204,204, @@ -9733,7 +9733,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB12[3959] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB12r[1857] U8G_SECTION(".progmem.u8g_font_courB12r") = { +const u8g_fntpgm_uint8_t u8g_font_courB12r[1857] U8G_FONT_SECTION("u8g_font_courB12r") = { 0,16,24,253,250,10,2,51,4,246,32,127,253,12,253,11, 253,0,0,0,10,0,1,2,11,11,10,3,0,192,192,192, 192,192,192,192,192,0,192,192,6,5,5,10,2,6,204,204, @@ -9863,7 +9863,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB12r[1857] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =15 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB14[4784] U8G_SECTION(".progmem.u8g_font_courB14") = { +const u8g_fntpgm_uint8_t u8g_font_courB14[4784] U8G_FONT_SECTION("u8g_font_courB14") = { 0,17,26,252,249,11,2,101,5,155,32,255,252,15,251,12, 252,0,0,0,11,0,1,3,12,12,11,4,0,224,224,224, 224,224,224,192,192,192,0,192,192,6,6,6,11,2,6,204, @@ -10176,7 +10176,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB14[4784] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB14r[2167] U8G_SECTION(".progmem.u8g_font_courB14r") = { +const u8g_fntpgm_uint8_t u8g_font_courB14r[2167] U8G_FONT_SECTION("u8g_font_courB14r") = { 0,17,26,252,249,11,2,101,5,155,32,127,252,13,252,12, 252,0,0,0,11,0,1,3,12,12,11,4,0,224,224,224, 224,224,224,192,192,192,0,192,192,6,6,6,11,2,6,204, @@ -10325,7 +10325,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB14r[2167] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =21 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB18[6429] U8G_SECTION(".progmem.u8g_font_courB18") = { +const u8g_fntpgm_uint8_t u8g_font_courB18[6429] U8G_FONT_SECTION("u8g_font_courB18") = { 0,22,35,252,247,15,3,223,8,17,32,255,251,21,251,16, 251,0,0,0,15,0,1,4,16,16,15,5,0,96,240,240, 240,240,240,240,96,96,96,96,96,0,96,96,96,7,7,7, @@ -10740,7 +10740,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB18[6429] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =17 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB18r[3001] U8G_SECTION(".progmem.u8g_font_courB18r") = { +const u8g_fntpgm_uint8_t u8g_font_courB18r[3001] U8G_FONT_SECTION("u8g_font_courB18r") = { 0,22,35,252,247,15,3,223,8,17,32,127,251,17,251,16, 251,0,0,0,15,0,1,4,16,16,15,5,0,96,240,240, 240,240,240,240,96,96,96,96,96,0,96,96,96,7,7,7, @@ -10941,7 +10941,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB18r[3001] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =26 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB24[10502] U8G_SECTION(".progmem.u8g_font_courB24") = { +const u8g_fntpgm_uint8_t u8g_font_courB24[10502] U8G_FONT_SECTION("u8g_font_courB24") = { 0,30,44,249,245,20,5,57,12,115,32,255,249,26,249,21, 249,0,0,0,20,0,1,5,21,21,20,7,0,112,248,248, 248,248,248,112,112,112,112,112,112,112,112,112,32,0,0,112, @@ -11611,7 +11611,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB24[10502] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =23 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB24r[4775] U8G_SECTION(".progmem.u8g_font_courB24r") = { +const u8g_fntpgm_uint8_t u8g_font_courB24r[4775] U8G_FONT_SECTION("u8g_font_courB24r") = { 0,30,44,249,245,20,5,57,12,115,32,127,249,23,249,21, 249,0,0,0,20,0,1,5,21,21,20,7,0,112,248,248, 248,248,248,112,112,112,112,112,112,112,112,112,32,0,0,112, @@ -11923,8 +11923,8 @@ const u8g_fntpgm_uint8_t u8g_font_courB24r[4775] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =23 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courB24n[686] U8G_SECTION(".progmem.u8g_font_courB24n") = { - 0,30,44,249,245,21,0,0,0,0,42,57,0,23,251,21, +const u8g_fntpgm_uint8_t u8g_font_courB24n[707] U8G_FONT_SECTION("u8g_font_courB24n") = { + 0,30,44,249,245,21,0,0,0,0,42,58,0,23,251,21, 0,15,14,28,20,3,7,3,128,3,128,3,128,3,128,99, 140,251,190,127,252,31,240,15,224,15,224,30,240,60,120,120, 60,48,24,17,17,51,20,1,1,1,192,0,1,192,0,1, @@ -11966,7 +11966,9 @@ const u8g_fntpgm_uint8_t u8g_font_courB24n[686] U8G_SECTION(".progmem.u8g_font_c 224,28,224,28,224,28,248,124,127,248,63,240,15,192,14,21, 42,20,3,0,15,128,63,224,127,240,120,240,240,120,224,56, 224,60,224,60,224,60,240,124,120,252,63,220,63,156,15,60, - 0,56,0,120,0,112,97,240,255,224,255,128,126,0}; + 0,56,0,120,0,112,97,240,255,224,255,128,126,0,5,15, + 15,20,7,0,112,248,248,112,0,0,0,0,0,0,0,112, + 248,248,112}; /* Fontname: -Adobe-Courier-Medium-R-Normal--11-80-100-100-M-60-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -11979,7 +11981,7 @@ const u8g_fntpgm_uint8_t u8g_font_courB24n[686] U8G_SECTION(".progmem.u8g_font_c Max Font ascent = 9 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR08[2433] U8G_SECTION(".progmem.u8g_font_courR08") = { +const u8g_fntpgm_uint8_t u8g_font_courR08[2433] U8G_FONT_SECTION("u8g_font_courR08") = { 0,10,16,254,252,6,1,151,3,21,32,255,254,9,254,7, 254,0,0,0,6,0,1,1,7,7,6,2,0,128,128,128, 128,128,0,128,3,3,3,6,1,4,160,160,160,5,8,8, @@ -12145,7 +12147,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR08[2433] U8G_SECTION(".progmem.u8g_font_c Max Font ascent = 8 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR08r[1157] U8G_SECTION(".progmem.u8g_font_courR08r") = { +const u8g_fntpgm_uint8_t u8g_font_courR08r[1157] U8G_FONT_SECTION("u8g_font_courR08r") = { 0,10,16,254,252,6,1,151,3,21,32,127,254,8,254,7, 254,0,0,0,6,0,1,1,7,7,6,2,0,128,128,128, 128,128,0,128,3,3,3,6,1,4,160,160,160,5,8,8, @@ -12231,7 +12233,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR08r[1157] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR10[3052] U8G_SECTION(".progmem.u8g_font_courR10") = { +const u8g_fntpgm_uint8_t u8g_font_courR10[3052] U8G_FONT_SECTION("u8g_font_courR10") = { 0,14,20,253,251,9,1,224,3,220,32,255,253,12,253,10, 253,0,0,0,9,0,1,1,9,9,9,3,0,128,128,128, 128,128,128,0,128,128,4,4,4,9,2,6,144,144,144,144, @@ -12435,7 +12437,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR10[3052] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =11 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR10r[1443] U8G_SECTION(".progmem.u8g_font_courR10r") = { +const u8g_fntpgm_uint8_t u8g_font_courR10r[1443] U8G_FONT_SECTION("u8g_font_courR10r") = { 0,14,20,253,251,9,1,224,3,220,32,127,253,11,253,10, 253,0,0,0,9,0,1,1,9,9,9,3,0,128,128,128, 128,128,128,0,128,128,4,4,4,9,2,6,144,144,144,144, @@ -12539,7 +12541,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR10r[1443] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR12[3471] U8G_SECTION(".progmem.u8g_font_courR12") = { +const u8g_fntpgm_uint8_t u8g_font_courR12[3471] U8G_FONT_SECTION("u8g_font_courR12") = { 0,15,24,253,250,10,2,12,4,92,32,255,253,14,253,11, 253,0,0,0,10,0,1,1,11,11,10,4,0,128,128,128, 128,128,128,128,128,0,128,128,4,5,5,10,3,6,144,144, @@ -12769,7 +12771,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR12[3471] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR12r[1592] U8G_SECTION(".progmem.u8g_font_courR12r") = { +const u8g_fntpgm_uint8_t u8g_font_courR12r[1592] U8G_FONT_SECTION("u8g_font_courR12r") = { 0,15,24,253,250,10,2,12,4,92,32,127,253,12,253,11, 253,0,0,0,10,0,1,1,11,11,10,4,0,128,128,128, 128,128,128,128,128,0,128,128,4,5,5,10,3,6,144,144, @@ -12882,7 +12884,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR12r[1592] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =15 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR14[4276] U8G_SECTION(".progmem.u8g_font_courR14") = { +const u8g_fntpgm_uint8_t u8g_font_courR14[4276] U8G_FONT_SECTION("u8g_font_courR14") = { 0,16,26,253,249,11,2,74,5,74,32,255,252,15,252,12, 252,0,0,0,11,0,1,2,12,12,11,4,0,192,192,192, 192,192,192,64,64,0,0,192,192,6,5,5,11,3,7,204, @@ -13163,7 +13165,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR14[4276] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR14r[1988] U8G_SECTION(".progmem.u8g_font_courR14r") = { +const u8g_fntpgm_uint8_t u8g_font_courR14r[1988] U8G_FONT_SECTION("u8g_font_courR14r") = { 0,16,26,253,249,11,2,74,5,74,32,127,252,13,252,12, 252,0,0,0,11,0,1,2,12,12,11,4,0,192,192,192, 192,192,192,64,64,0,0,192,192,6,5,5,11,3,7,204, @@ -13301,7 +13303,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR14r[1988] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =19 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR18[6152] U8G_SECTION(".progmem.u8g_font_courR18") = { +const u8g_fntpgm_uint8_t u8g_font_courR18[6152] U8G_FONT_SECTION("u8g_font_courR18") = { 0,23,32,251,248,14,3,161,7,151,32,255,251,19,251,16, 251,0,0,0,15,0,1,2,16,16,15,6,0,192,192,192, 192,192,192,192,192,128,128,128,0,0,0,192,192,8,7,7, @@ -13699,7 +13701,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR18[6152] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =17 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR18r[2862] U8G_SECTION(".progmem.u8g_font_courR18r") = { +const u8g_fntpgm_uint8_t u8g_font_courR18r[2862] U8G_FONT_SECTION("u8g_font_courR18r") = { 0,23,32,251,248,14,3,161,7,151,32,127,251,17,251,16, 251,0,0,0,15,0,1,2,16,16,15,6,0,192,192,192, 192,192,192,192,192,128,128,128,0,0,0,192,192,8,7,7, @@ -13891,7 +13893,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR18r[2862] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =26 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR24[8729] U8G_SECTION(".progmem.u8g_font_courR24") = { +const u8g_fntpgm_uint8_t u8g_font_courR24[8729] U8G_FONT_SECTION("u8g_font_courR24") = { 0,28,42,250,246,19,4,184,10,129,32,255,250,26,250,21, 250,0,0,0,20,0,1,5,21,21,20,8,0,32,112,112, 112,112,112,32,32,32,32,32,32,32,32,0,0,0,0,112, @@ -14450,8 +14452,8 @@ const u8g_fntpgm_uint8_t u8g_font_courR24[8729] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =22 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR24n[638] U8G_SECTION(".progmem.u8g_font_courR24n") = { - 0,28,42,250,246,20,0,0,0,0,42,57,0,22,252,20, +const u8g_fntpgm_uint8_t u8g_font_courR24n[658] U8G_FONT_SECTION("u8g_font_courR24n") = { + 0,28,42,250,246,20,0,0,0,0,42,58,0,22,252,20, 0,11,13,26,20,4,8,4,0,4,0,4,0,4,0,132, 32,245,224,31,0,14,0,10,0,27,0,49,128,32,128,96, 192,15,17,34,20,2,1,1,0,1,0,1,0,1,0,1, @@ -14490,7 +14492,9 @@ const u8g_fntpgm_uint8_t u8g_font_courR24n[638] U8G_SECTION(".progmem.u8g_font_c 192,96,128,32,128,32,128,32,192,96,64,64,113,192,31,0, 12,20,40,20,4,0,31,0,112,192,64,96,192,32,128,48, 128,48,128,48,128,48,192,80,64,208,115,144,30,16,0,32, - 0,32,0,32,0,64,0,192,1,128,14,0,120,0}; + 0,32,0,32,0,64,0,192,1,128,14,0,120,0,5,14, + 14,20,7,0,112,248,248,112,0,0,0,0,0,0,112,248, + 248,112}; /* Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -14503,7 +14507,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR24n[638] U8G_SECTION(".progmem.u8g_font_c Max Font ascent =22 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_courR24r[3991] U8G_SECTION(".progmem.u8g_font_courR24r") = { +const u8g_fntpgm_uint8_t u8g_font_courR24r[3991] U8G_FONT_SECTION("u8g_font_courR24r") = { 0,28,42,250,246,19,4,184,10,129,32,127,250,22,250,21, 250,0,0,0,20,0,1,5,21,21,20,8,0,32,112,112, 112,112,112,32,32,32,32,32,32,32,32,0,0,0,0,112, @@ -14766,7 +14770,7 @@ const u8g_fntpgm_uint8_t u8g_font_courR24r[3991] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =17 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[3981] U8G_SECTION(".progmem.u8g_font_cu12_67_75") = { +const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[3981] U8G_FONT_SECTION("u8g_font_cu12_67_75") = { 0,40,30,247,246,3,2,98,5,14,32,255,1,17,254,12, 0,11,5,10,12,1,4,2,128,1,64,255,224,1,64,2, 128,5,11,11,6,1,1,32,32,32,32,32,32,168,112,168, @@ -15028,7 +15032,7 @@ const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[3981] U8G_SECTION(".progmem.u8g_fon Max Font ascent =13 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_cu12_75r[1123] U8G_SECTION(".progmem.u8g_font_cu12_75r") = { +const u8g_fntpgm_uint8_t u8g_font_cu12_75r[1123] U8G_FONT_SECTION("u8g_font_cu12_75r") = { 0,40,30,247,246,11,2,247,0,0,32,79,0,13,254,12, 0,11,11,22,14,2,1,255,224,255,224,255,224,255,224,255, 224,255,224,255,224,255,224,255,224,255,224,255,224,11,11,22, @@ -15112,7 +15116,7 @@ const u8g_fntpgm_uint8_t u8g_font_cu12_75r[1123] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_cu12[3993] U8G_SECTION(".progmem.u8g_font_cu12") = { +const u8g_fntpgm_uint8_t u8g_font_cu12[3993] U8G_FONT_SECTION("u8g_font_cu12") = { 0,40,30,247,246,11,2,90,5,94,32,255,252,16,252,12, 252,0,0,0,5,0,0,2,12,12,5,1,0,192,192,192, 192,192,192,192,0,0,0,192,192,4,5,5,7,2,7,144, @@ -15375,7 +15379,7 @@ const u8g_fntpgm_uint8_t u8g_font_cu12[3993] U8G_SECTION(".progmem.u8g_font_cu12 Max Font ascent =15 descent=-16 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_cursor[5286] U8G_SECTION(".progmem.u8g_font_cursor") = { +const u8g_fntpgm_uint8_t u8g_font_cursor[5286] U8G_FONT_SECTION("u8g_font_cursor") = { 0,31,31,241,240,15,4,101,8,211,32,255,248,15,240,16, 240,14,14,28,17,250,248,224,28,240,60,248,124,124,248,63, 240,31,224,15,192,15,192,31,224,63,240,124,248,248,124,240, @@ -15719,7 +15723,7 @@ const u8g_fntpgm_uint8_t u8g_font_cursor[5286] U8G_SECTION(".progmem.u8g_font_cu Max Font ascent = 7 descent=-16 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_cursorr[492] U8G_SECTION(".progmem.u8g_font_cursorr") = { +const u8g_fntpgm_uint8_t u8g_font_cursorr[492] U8G_FONT_SECTION("u8g_font_cursorr") = { 0,31,31,241,240,0,1,6,0,0,32,80,0,7,240,0, 0,255,255,14,14,28,17,243,242,0,12,0,60,0,248,3, 248,15,240,63,240,3,224,7,224,14,192,28,192,56,128,112, @@ -15763,7 +15767,7 @@ const u8g_fntpgm_uint8_t u8g_font_cursorr[492] U8G_SECTION(".progmem.u8g_font_cu Max Font ascent = 7 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fixed_v0[1702] U8G_SECTION(".progmem.u8g_font_fixed_v0") = { +const u8g_fntpgm_uint8_t u8g_font_fixed_v0[1702] U8G_FONT_SECTION("u8g_font_fixed_v0") = { 1,7,9,0,254,7,1,46,2,94,32,255,254,7,254,7, 254,2,0,64,34,23,103,128,128,128,128,0,128,128,23,50, 98,160,160,3,85,101,80,248,80,248,80,2,87,103,112,168, @@ -15883,8 +15887,8 @@ const u8g_fntpgm_uint8_t u8g_font_fixed_v0[1702] U8G_SECTION(".progmem.u8g_font_ Max Font ascent = 7 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[159] U8G_SECTION(".progmem.u8g_font_fixed_v0n") = { - 1,7,9,0,254,7,0,0,0,0,42,57,0,7,0,7, +const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[167] U8G_FONT_SECTION("u8g_font_fixed_v0n") = { + 1,7,9,0,254,7,0,0,0,0,42,58,0,7,0,7, 0,2,87,103,32,168,112,32,112,168,32,3,85,101,32,32, 248,32,32,18,34,98,64,128,5,81,97,248,18,18,98,128, 128,2,87,103,8,16,16,32,64,64,128,2,87,103,112,136, @@ -15893,7 +15897,8 @@ const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[159] U8G_SECTION(".progmem.u8g_font_ 8,8,240,2,87,103,16,144,144,248,16,16,16,2,87,103, 248,128,128,240,8,8,240,2,87,103,112,128,128,240,136,136, 112,2,87,103,248,8,8,8,8,8,8,2,87,103,112,136, - 136,112,136,136,112,2,87,103,112,136,136,248,8,8,112}; + 136,112,136,136,112,2,87,103,112,136,136,248,8,8,112,18, + 21,101,128,128,0,128,128}; /* Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 Copyright: © www.orgdot.com @@ -15906,7 +15911,7 @@ const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[159] U8G_SECTION(".progmem.u8g_font_ Max Font ascent = 7 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[878] U8G_SECTION(".progmem.u8g_font_fixed_v0r") = { +const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[878] U8G_FONT_SECTION("u8g_font_fixed_v0r") = { 1,7,9,0,254,7,1,46,2,94,32,127,254,7,254,7, 254,2,0,64,34,23,103,128,128,128,128,0,128,128,23,50, 98,160,160,3,85,101,80,248,80,248,80,2,87,103,112,168, @@ -15974,7 +15979,7 @@ const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[878] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =12 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[1042] U8G_SECTION(".progmem.u8g_font_freedoomr10r") = { +const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[1042] U8G_FONT_SECTION("u8g_font_freedoomr10r") = { 0,7,12,0,0,10,1,113,3,88,32,127,1,12,0,12, 0,0,0,0,7,0,1,0,0,0,7,0,1,0,0,0, 7,0,1,0,0,0,7,0,1,0,0,0,7,0,1,0, @@ -16053,7 +16058,7 @@ const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[1042] U8G_SECTION(".progmem.u8g_f Max Font ascent =26 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[943] U8G_SECTION(".progmem.u8g_font_freedoomr25n") = { +const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[943] U8G_FONT_SECTION("u8g_font_freedoomr25n") = { 0,18,26,0,0,24,3,112,3,144,32,127,0,26,0,24, 0,0,0,0,11,0,0,255,255,255,255,255,255,255,255,255, 255,17,16,48,19,1,6,1,192,0,1,192,0,1,192,0, @@ -16125,7 +16130,7 @@ const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[943] U8G_SECTION(".progmem.u8g_fo Max Font ascent =17 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub11[3948] U8G_SECTION(".progmem.u8g_font_fub11") = { +const u8g_fntpgm_uint8_t u8g_font_fub11[3948] U8G_FONT_SECTION("u8g_font_fub11") = { 0,24,21,255,252,11,2,82,5,55,32,255,253,17,252,11, 253,0,0,0,5,0,0,2,11,11,6,2,0,192,192,192, 192,192,192,192,192,0,0,192,6,5,5,8,1,6,204,204, @@ -16385,8 +16390,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub11[3948] U8G_SECTION(".progmem.u8g_font_fub Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub11n[266] U8G_SECTION(".progmem.u8g_font_fub11n") = { - 0,24,21,255,252,11,0,0,0,0,42,57,0,11,254,11, +const u8g_fntpgm_uint8_t u8g_font_fub11n[280] U8G_FONT_SECTION("u8g_font_fub11n") = { + 0,24,21,255,252,11,0,0,0,0,42,58,0,11,254,11, 0,6,5,5,10,2,5,120,48,252,48,120,9,9,18,16, 3,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, 8,0,8,0,3,4,4,5,1,254,96,96,192,192,4,2, @@ -16402,7 +16407,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub11n[266] U8G_SECTION(".progmem.u8g_font_fub 222,231,195,195,195,102,60,8,11,11,9,1,0,255,3,7, 6,14,12,28,24,56,56,112,8,11,11,9,1,0,126,231, 195,231,60,102,195,195,195,231,60,8,11,11,9,1,0,60, - 102,195,195,231,127,3,3,198,110,60}; + 102,195,195,231,127,3,3,198,110,60,2,8,8,5,2,0, + 192,192,0,0,0,0,192,192}; /* Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. @@ -16415,7 +16421,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub11n[266] U8G_SECTION(".progmem.u8g_font_fub Max Font ascent =12 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub11r[1829] U8G_SECTION(".progmem.u8g_font_fub11r") = { +const u8g_fntpgm_uint8_t u8g_font_fub11r[1829] U8G_FONT_SECTION("u8g_font_fub11r") = { 0,24,21,255,252,11,2,82,5,55,32,127,253,12,252,11, 253,0,0,0,5,0,0,2,11,11,6,2,0,192,192,192, 192,192,192,192,192,0,0,192,6,5,5,8,1,6,204,204, @@ -16543,7 +16549,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub11r[1829] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =21 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub14[5788] U8G_SECTION(".progmem.u8g_font_fub14") = { +const u8g_fntpgm_uint8_t u8g_font_fub14[5788] U8G_FONT_SECTION("u8g_font_fub14") = { 0,31,26,254,251,14,3,116,7,95,32,255,252,21,251,14, 252,0,0,0,6,0,0,3,14,14,8,3,0,224,224,224, 224,224,224,224,224,224,224,0,0,224,224,8,6,6,10,1, @@ -16918,8 +16924,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub14[5788] U8G_SECTION(".progmem.u8g_font_fub Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub14n[436] U8G_SECTION(".progmem.u8g_font_fub14n") = { - 0,31,26,254,251,14,0,0,0,0,42,57,0,14,254,14, +const u8g_fntpgm_uint8_t u8g_font_fub14n[452] U8G_FONT_SECTION("u8g_font_fub14n") = { + 0,31,26,254,251,14,0,0,0,0,42,58,0,14,254,14, 0,8,7,7,12,2,7,102,60,24,255,24,60,102,12,12, 24,20,4,0,2,0,2,0,2,0,2,0,2,0,255,240, 255,240,2,0,2,0,2,0,2,0,2,0,4,5,5,6, @@ -16946,7 +16952,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub14n[436] U8G_SECTION(".progmem.u8g_font_fub 127,0,63,0,115,128,225,192,225,192,225,192,225,192,127,128, 63,0,10,14,28,11,1,0,30,0,127,0,225,128,225,128, 225,192,225,192,243,192,127,192,25,192,1,128,225,128,99,128, - 127,0,62,0}; + 127,0,62,0,3,10,10,7,3,0,224,224,224,0,0,0, + 0,224,224,224}; /* Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. @@ -16959,7 +16966,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub14n[436] U8G_SECTION(".progmem.u8g_font_fub Max Font ascent =16 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub14r[2680] U8G_SECTION(".progmem.u8g_font_fub14r") = { +const u8g_fntpgm_uint8_t u8g_font_fub14r[2680] U8G_FONT_SECTION("u8g_font_fub14r") = { 0,31,26,254,251,14,3,116,7,95,32,127,252,16,251,14, 252,0,0,0,6,0,0,3,14,14,8,3,0,224,224,224, 224,224,224,224,224,224,224,0,0,224,224,8,6,6,10,1, @@ -17140,7 +17147,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub14r[2680] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =25 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub17[6938] U8G_SECTION(".progmem.u8g_font_fub17") = { +const u8g_fntpgm_uint8_t u8g_font_fub17[6938] U8G_FONT_SECTION("u8g_font_fub17") = { 0,34,31,254,250,17,4,8,8,209,32,255,251,25,250,17, 251,0,0,0,7,0,0,3,17,17,9,3,0,224,224,224, 224,224,224,224,224,224,224,224,224,0,0,224,224,224,8,7, @@ -17587,8 +17594,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub17[6938] U8G_SECTION(".progmem.u8g_font_fub Max Font ascent =17 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub17n[512] U8G_SECTION(".progmem.u8g_font_fub17n") = { - 0,34,31,254,250,17,0,0,0,0,42,57,0,17,253,17, +const u8g_fntpgm_uint8_t u8g_font_fub17n[530] U8G_FONT_SECTION("u8g_font_fub17n") = { + 0,34,31,254,250,17,0,0,0,0,42,58,0,17,253,17, 0,9,9,18,15,3,8,54,0,54,0,54,0,156,128,255, 128,156,128,54,0,54,0,54,0,14,14,28,24,5,0,2, 0,2,0,2,0,2,0,2,0,2,0,255,252,255,252,2, @@ -17619,8 +17626,9 @@ const u8g_fntpgm_uint8_t u8g_font_fub17n[512] U8G_SECTION(".progmem.u8g_font_fub 224,224,113,192,63,128,63,128,113,192,224,224,224,224,224,224, 224,224,241,224,127,192,31,0,11,17,34,13,1,0,31,0, 63,128,113,192,224,192,224,224,224,224,224,224,241,224,127,224, - 62,224,0,224,0,224,224,224,225,192,113,192,127,128,30,0 - }; + 62,224,0,224,0,224,224,224,225,192,113,192,127,128,30,0, + 3,12,12,7,3,0,224,224,224,0,0,0,0,0,0,224, + 224,224}; /* Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. @@ -17633,7 +17641,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub17n[512] U8G_SECTION(".progmem.u8g_font_fub Max Font ascent =19 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub17r[3222] U8G_SECTION(".progmem.u8g_font_fub17r") = { +const u8g_fntpgm_uint8_t u8g_font_fub17r[3222] U8G_FONT_SECTION("u8g_font_fub17r") = { 0,34,31,254,250,17,4,8,8,209,32,127,251,19,250,17, 251,0,0,0,7,0,0,3,17,17,9,3,0,224,224,224, 224,224,224,224,224,224,224,224,224,0,0,224,224,224,8,7, @@ -17848,7 +17856,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub17r[3222] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =29 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub20[8916] U8G_SECTION(".progmem.u8g_font_fub20") = { +const u8g_fntpgm_uint8_t u8g_font_fub20[8916] U8G_FONT_SECTION("u8g_font_fub20") = { 0,40,36,254,249,20,4,242,11,37,32,255,251,29,249,20, 251,0,0,0,8,0,0,4,20,20,11,4,0,240,240,240, 240,240,240,240,240,240,240,240,240,240,240,0,0,0,240,240, @@ -18419,8 +18427,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub20[8916] U8G_SECTION(".progmem.u8g_font_fub Max Font ascent =20 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub20n[583] U8G_SECTION(".progmem.u8g_font_fub20n") = { - 0,40,36,254,249,20,0,0,0,0,42,57,0,20,252,20, +const u8g_fntpgm_uint8_t u8g_font_fub20n[603] U8G_FONT_SECTION("u8g_font_fub20n") = { + 0,40,36,254,249,20,0,0,0,0,42,58,0,20,252,20, 0,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, @@ -18456,7 +18464,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub20n[583] U8G_SECTION(".progmem.u8g_font_fub 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, - 240,127,224,63,192,15,128}; + 240,127,224,63,192,15,128,4,14,14,9,4,0,240,240,240, + 240,0,0,0,0,0,0,240,240,240,240}; /* Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. @@ -18469,7 +18478,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub20n[583] U8G_SECTION(".progmem.u8g_font_fub Max Font ascent =22 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub20r[4022] U8G_SECTION(".progmem.u8g_font_fub20r") = { +const u8g_fntpgm_uint8_t u8g_font_fub20r[4022] U8G_FONT_SECTION("u8g_font_fub20r") = { 0,40,36,254,249,20,4,242,11,37,32,127,251,22,249,20, 251,0,0,0,8,0,0,4,20,20,11,4,0,240,240,240, 240,240,240,240,240,240,240,240,240,240,240,0,0,0,240,240, @@ -18722,6 +18731,49 @@ const u8g_fntpgm_uint8_t u8g_font_fub20r[4022] U8G_SECTION(".progmem.u8g_font_fu 192,15,0,30,0,30,0,30,0,30,0,30,0,30,0,30, 0,30,0,124,0,252,0,240,0,14,3,6,14,0,5,63, 156,127,248,225,240,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=14 h=20 x= 4 y= 0 dx=15 dy= 0 ascent=20 len=40 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =20 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20t[477] U8G_SECTION(".progmem.u8g_font_fub20t") = { + 0,40,36,254,249,20,0,0,0,0,48,58,0,20,0,20, + 0,14,20,40,15,1,0,15,128,31,224,60,240,120,112,112, + 56,240,56,240,56,240,60,240,60,240,60,240,60,240,60,240, + 60,240,56,240,56,112,56,120,120,60,240,31,224,15,128,8, + 20,20,15,3,0,15,63,127,255,239,207,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,14,20,40,15,1,0,7, + 192,31,240,63,248,124,120,120,60,120,60,0,60,0,120,0, + 120,0,240,1,240,3,224,7,192,15,128,31,0,124,0,248, + 0,255,252,255,252,255,252,13,20,40,15,1,0,15,128,63, + 224,127,240,248,240,240,120,0,120,0,120,0,240,15,224,15, + 128,15,224,0,240,0,120,0,120,240,120,240,120,248,240,127, + 240,63,224,31,128,14,20,40,15,1,0,1,240,3,240,3, + 240,7,240,7,240,14,240,30,240,28,240,60,240,56,240,120, + 240,112,240,240,240,255,252,255,252,255,252,0,240,0,240,0, + 240,0,240,13,20,40,15,1,0,255,240,255,240,255,240,240, + 0,240,0,240,0,240,0,247,192,255,224,253,240,240,120,240, + 120,0,120,0,120,0,120,240,120,240,240,127,240,63,224,31, + 128,13,20,40,15,1,0,15,192,31,224,63,240,120,120,120, + 120,112,0,240,0,247,192,239,224,253,240,248,120,240,120,240, + 120,240,120,240,120,112,120,120,240,63,240,63,224,15,128,13, + 20,40,15,1,0,255,248,255,248,255,248,0,120,0,120,0, + 240,0,240,1,224,1,224,1,224,3,192,3,192,7,128,7, + 128,15,128,15,0,31,0,30,0,30,0,62,0,14,20,40, + 15,1,0,31,192,63,240,127,240,120,248,240,120,240,120,240, + 120,120,240,63,224,31,192,63,240,120,120,240,56,240,60,240, + 60,240,60,248,120,127,248,63,240,31,192,13,20,40,15,1, + 0,15,128,63,192,127,224,120,240,240,112,240,120,240,120,240, + 120,240,120,120,248,127,184,63,56,0,120,0,120,0,112,240, + 240,120,240,127,224,63,192,15,128,4,14,14,9,4,0,240, + 240,240,240,0,0,0,0,0,0,240,240,240,240}; /* Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. @@ -18734,7 +18786,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub20r[4022] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =37 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub25[12908] U8G_SECTION(".progmem.u8g_font_fub25") = { +const u8g_fntpgm_uint8_t u8g_font_fub25[12908] U8G_FONT_SECTION("u8g_font_fub25") = { 0,50,46,254,247,25,7,111,16,148,32,255,249,37,247,25, 249,0,0,0,10,0,0,5,25,25,14,5,0,248,248,248, 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, @@ -19554,8 +19606,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub25[12908] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =26 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub25n[957] U8G_SECTION(".progmem.u8g_font_fub25n") = { - 0,50,46,254,247,25,0,0,0,0,42,57,0,26,251,25, +const u8g_fntpgm_uint8_t u8g_font_fub25n[981] U8G_FONT_SECTION("u8g_font_fub25n") = { + 0,50,46,254,247,25,0,0,0,0,42,58,0,26,251,25, 0,14,13,26,22,4,13,28,224,60,240,28,224,15,192,135, 132,255,252,255,252,231,156,15,192,30,224,28,224,60,240,8, 64,20,21,63,34,7,0,0,96,0,0,96,0,0,96,0, @@ -19614,7 +19666,9 @@ const u8g_fntpgm_uint8_t u8g_font_fub25n[957] U8G_SECTION(".progmem.u8g_font_fub 0,248,31,0,248,31,0,248,31,128,248,31,128,248,31,128, 248,63,128,124,63,128,127,255,128,63,239,128,15,207,128,0, 15,128,0,31,0,0,31,0,248,31,0,120,63,0,124,126, - 0,63,254,0,63,252,0,31,248,0,7,224,0}; + 0,63,254,0,63,252,0,31,248,0,7,224,0,5,18,18, + 11,5,0,248,248,248,248,248,0,0,0,0,0,0,0,0, + 248,248,248,248,248}; /* Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. @@ -19627,7 +19681,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub25n[957] U8G_SECTION(".progmem.u8g_font_fub Max Font ascent =28 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub25r[5936] U8G_SECTION(".progmem.u8g_font_fub25r") = { +const u8g_fntpgm_uint8_t u8g_font_fub25r[5936] U8G_FONT_SECTION("u8g_font_fub25r") = { 0,50,46,254,247,25,7,111,16,148,32,127,249,28,247,25, 249,0,0,0,10,0,0,5,25,25,14,5,0,248,248,248, 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, @@ -20012,7 +20066,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub25r[5936] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =43 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub30[16953] U8G_SECTION(".progmem.u8g_font_fub30") = { +const u8g_fntpgm_uint8_t u8g_font_fub30[16953] U8G_FONT_SECTION("u8g_font_fub30") = { 0,59,54,253,245,30,9,163,21,182,32,255,249,43,245,31, 248,0,0,0,12,0,0,5,30,30,16,5,0,248,248,248, 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, @@ -21085,8 +21139,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub30[16953] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =31 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub30n[1179] U8G_SECTION(".progmem.u8g_font_fub30n") = { - 0,59,54,253,245,30,0,0,0,0,42,57,0,31,251,30, +const u8g_fntpgm_uint8_t u8g_font_fub30n[1205] U8G_FONT_SECTION("u8g_font_fub30n") = { + 0,59,54,253,245,30,0,0,0,0,42,58,0,31,251,30, 0,16,16,32,26,5,14,4,32,28,56,30,120,30,120,15, 240,7,224,227,199,255,255,255,255,243,207,7,224,15,240,30, 120,30,120,28,56,4,32,24,25,75,40,8,0,0,56,0, @@ -21159,7 +21213,9 @@ const u8g_fntpgm_uint8_t u8g_font_fub30n[1179] U8G_SECTION(".progmem.u8g_font_fu 3,240,252,3,240,252,7,240,124,7,240,127,15,240,63,255, 240,63,253,240,31,249,240,7,225,240,0,3,240,0,3,224, 0,3,224,0,3,224,124,7,224,124,7,192,126,15,192,63, - 255,128,31,255,0,15,254,0,7,252,0}; + 255,128,31,255,0,15,254,0,7,252,0,5,20,20,12,5, + 0,248,248,248,248,248,0,0,0,0,0,0,0,0,0,0, + 248,248,248,248,248}; /* Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. @@ -21172,7 +21228,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub30n[1179] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =33 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub30r[7686] U8G_SECTION(".progmem.u8g_font_fub30r") = { +const u8g_fntpgm_uint8_t u8g_font_fub30r[7686] U8G_FONT_SECTION("u8g_font_fub30r") = { 0,59,54,253,245,30,9,163,21,182,32,127,249,33,245,31, 248,0,0,0,12,0,0,5,30,30,16,5,0,248,248,248, 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, @@ -21666,8 +21722,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub30r[7686] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =36 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub35n[1667] U8G_SECTION(".progmem.u8g_font_fub35n") = { - 0,72,65,252,243,35,0,0,0,0,42,57,0,36,250,35, +const u8g_fntpgm_uint8_t u8g_font_fub35n[1697] U8G_FONT_SECTION("u8g_font_fub35n") = { + 0,72,65,252,243,35,0,0,0,0,42,58,0,36,250,35, 0,20,18,54,32,6,17,7,14,0,31,15,128,31,159,128, 15,159,0,7,158,0,3,252,0,129,248,16,254,247,240,255, 255,240,255,255,240,249,249,240,1,248,0,3,252,0,7,158, @@ -21771,7 +21827,9 @@ const u8g_fntpgm_uint8_t u8g_font_fub35n[1667] U8G_SECTION(".progmem.u8g_font_fu 0,63,0,0,0,127,0,0,0,127,0,0,0,127,0,127, 0,254,0,127,0,254,0,127,1,254,0,63,131,252,0,31, 255,252,0,31,255,248,0,15,255,240,0,7,255,224,0,1, - 255,128,0}; + 255,128,0,7,24,24,16,7,0,254,254,254,254,254,254,0, + 0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254, + 254}; /* Fontname: -FreeType-FreeUniversal-Bold-R-Normal--58-580-72-72-P-286-ISO10646-1 Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. @@ -21784,8 +21842,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub35n[1667] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =43 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub42n[2235] U8G_SECTION(".progmem.u8g_font_fub42n") = { - 0,87,77,251,241,42,0,0,0,0,42,57,0,43,248,42, +const u8g_fntpgm_uint8_t u8g_font_fub42n[2270] U8G_FONT_SECTION("u8g_font_fub42n") = { + 0,87,77,251,241,42,0,0,0,0,42,58,0,43,248,42, 0,23,23,69,37,7,20,0,130,0,3,131,128,15,131,224, 31,199,224,15,199,224,7,199,192,3,239,128,1,239,0,0, 254,0,248,254,62,255,255,254,255,255,254,255,255,254,254,124, @@ -21924,7 +21982,9 @@ const u8g_fntpgm_uint8_t u8g_font_fub42n[2235] U8G_SECTION(".progmem.u8g_font_fu 0,15,240,0,0,15,240,0,0,15,240,0,0,15,224,127, 128,31,224,127,128,31,224,63,128,63,192,63,192,127,192,63, 224,255,128,31,255,255,128,15,255,255,0,7,255,254,0,3, - 255,252,0,1,255,240,0,0,63,192,0}; + 255,252,0,1,255,240,0,0,63,192,0,8,29,29,19,8, + 0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,255,255,255,255,255,255,255}; /* Fontname: -FreeType-FreeUniversal-Bold-R-Normal--68-680-72-72-P-335-ISO10646-1 Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. @@ -21937,8 +21997,8 @@ const u8g_fntpgm_uint8_t u8g_font_fub42n[2235] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =50 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fub49n[3074] U8G_SECTION(".progmem.u8g_font_fub49n") = { - 0,100,91,251,238,49,0,0,0,0,42,57,0,50,247,49, +const u8g_fntpgm_uint8_t u8g_font_fub49n[3148] U8G_FONT_SECTION("u8g_font_fub49n") = { + 0,100,91,251,238,49,0,0,0,0,42,58,0,50,247,49, 0,27,27,108,43,8,23,0,64,64,0,1,192,112,0,7, 224,252,0,15,224,254,0,7,241,252,0,7,241,252,0,3, 241,248,0,1,251,240,0,0,251,224,0,0,127,192,0,224, @@ -22130,7 +22190,11 @@ const u8g_fntpgm_uint8_t u8g_font_fub49n[3074] U8G_SECTION(".progmem.u8g_font_fu 63,224,15,254,0,63,240,15,252,0,31,248,63,252,0,31, 255,255,248,0,15,255,255,240,0,7,255,255,224,0,3,255, 255,192,0,1,255,255,128,0,0,127,254,0,0,0,15,240, - 0,0}; + 0,0,9,34,68,21,9,0,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128}; /* Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. @@ -22143,7 +22207,7 @@ const u8g_fntpgm_uint8_t u8g_font_fub49n[3074] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur11[3712] U8G_SECTION(".progmem.u8g_font_fur11") = { +const u8g_fntpgm_uint8_t u8g_font_fur11[3712] U8G_FONT_SECTION("u8g_font_fur11") = { 0,20,20,255,252,11,2,81,4,211,32,255,253,16,252,11, 253,0,0,0,5,0,0,1,11,11,5,2,0,128,128,128, 128,128,128,128,128,128,0,128,5,5,5,7,1,6,216,216, @@ -22389,8 +22453,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur11[3712] U8G_SECTION(".progmem.u8g_font_fur Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur11n[265] U8G_SECTION(".progmem.u8g_font_fur11n") = { - 0,20,20,255,252,11,0,0,0,0,42,57,0,11,254,11, +const u8g_fntpgm_uint8_t u8g_font_fur11n[279] U8G_FONT_SECTION("u8g_font_fur11n") = { + 0,20,20,255,252,11,0,0,0,0,42,58,0,11,254,11, 0,6,5,5,10,2,5,72,48,252,48,120,9,9,18,15, 3,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, 8,0,8,0,2,4,4,4,1,254,192,192,128,128,4,1, @@ -22406,7 +22470,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur11n[265] U8G_SECTION(".progmem.u8g_font_fur 198,130,130,130,198,60,7,11,11,8,1,0,254,6,6,4, 12,8,24,24,16,48,48,6,11,11,8,1,0,120,204,132, 204,112,200,132,132,132,204,120,7,11,11,8,1,0,124,198, - 130,130,198,122,2,6,134,204,120}; + 130,130,198,122,2,6,134,204,120,1,8,8,4,2,0,128, + 128,0,0,0,0,128,128}; /* Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. @@ -22419,7 +22484,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur11n[265] U8G_SECTION(".progmem.u8g_font_fur Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur11r[1729] U8G_SECTION(".progmem.u8g_font_fur11r") = { +const u8g_fntpgm_uint8_t u8g_font_fur11r[1729] U8G_FONT_SECTION("u8g_font_fur11r") = { 0,20,20,255,252,11,2,81,4,211,32,127,253,13,252,11, 253,0,0,0,5,0,0,1,11,11,5,2,0,128,128,128, 128,128,128,128,128,128,0,128,5,5,5,7,1,6,216,216, @@ -22541,7 +22606,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur11r[1729] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =21 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur14[5349] U8G_SECTION(".progmem.u8g_font_fur14") = { +const u8g_fntpgm_uint8_t u8g_font_fur14[5349] U8G_FONT_SECTION("u8g_font_fur14") = { 0,26,26,255,251,14,3,59,6,250,32,255,252,21,251,14, 252,0,0,0,6,0,0,2,14,14,8,3,0,192,192,192, 192,192,192,192,192,192,192,192,0,0,192,6,6,6,9,1, @@ -22889,8 +22954,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur14[5349] U8G_SECTION(".progmem.u8g_font_fur Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur14n[405] U8G_SECTION(".progmem.u8g_font_fur14n") = { - 0,26,26,255,251,14,0,0,0,0,42,57,0,14,254,14, +const u8g_fntpgm_uint8_t u8g_font_fur14n[421] U8G_FONT_SECTION("u8g_font_fur14n") = { + 0,26,26,255,251,14,0,0,0,0,42,58,0,14,254,14, 0,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, @@ -22915,7 +22980,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur14n[405] U8G_SECTION(".progmem.u8g_font_fur 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, - 0,102,0,60,0}; + 0,102,0,60,0,2,10,10,5,2,0,192,192,0,0,0, + 0,0,0,192,192}; /* Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. @@ -22928,7 +22994,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur14n[405] U8G_SECTION(".progmem.u8g_font_fur Max Font ascent =16 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur14r[2489] U8G_SECTION(".progmem.u8g_font_fur14r") = { +const u8g_fntpgm_uint8_t u8g_font_fur14r[2489] U8G_FONT_SECTION("u8g_font_fur14r") = { 0,26,26,255,251,14,3,59,6,250,32,127,252,16,251,14, 252,0,0,0,6,0,0,2,14,14,8,3,0,192,192,192, 192,192,192,192,192,192,192,192,0,0,192,6,6,6,9,1, @@ -23097,7 +23163,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur14r[2489] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =24 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur17[6799] U8G_SECTION(".progmem.u8g_font_fur17") = { +const u8g_fntpgm_uint8_t u8g_font_fur17[6799] U8G_FONT_SECTION("u8g_font_fur17") = { 0,31,30,254,250,17,4,5,8,170,32,255,251,24,250,17, 251,0,0,0,7,0,0,2,17,17,8,3,0,192,192,192, 192,192,192,192,192,192,192,192,192,192,0,0,192,192,7,7, @@ -23535,8 +23601,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur17[6799] U8G_SECTION(".progmem.u8g_font_fur Max Font ascent =17 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur17n[510] U8G_SECTION(".progmem.u8g_font_fur17n") = { - 0,31,30,254,250,17,0,0,0,0,42,57,0,17,253,17, +const u8g_fntpgm_uint8_t u8g_font_fur17n[528] U8G_FONT_SECTION("u8g_font_fur17n") = { + 0,31,30,254,250,17,0,0,0,0,42,58,0,17,253,17, 0,9,9,18,15,3,8,34,0,54,0,22,0,28,0,255, 128,156,128,20,0,54,0,34,0,14,14,28,24,5,0,2, 0,2,0,2,0,2,0,2,0,2,0,255,252,2,0,2, @@ -23567,7 +23633,9 @@ const u8g_fntpgm_uint8_t u8g_font_fur17n[510] U8G_SECTION(".progmem.u8g_font_fur 49,128,31,0,59,128,96,192,192,96,192,96,192,96,192,96, 96,224,123,192,31,0,11,17,34,13,1,0,31,0,127,192, 96,192,192,224,192,96,192,96,192,224,224,224,113,224,63,96, - 0,96,0,96,0,224,96,192,97,192,127,128,31,0}; + 0,96,0,96,0,224,96,192,97,192,127,128,31,0,2,12, + 12,6,2,0,192,192,192,0,0,0,0,0,0,192,192,192 + }; /* Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. @@ -23580,7 +23648,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur17n[510] U8G_SECTION(".progmem.u8g_font_fur Max Font ascent =19 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur17r[3146] U8G_SECTION(".progmem.u8g_font_fur17r") = { +const u8g_fntpgm_uint8_t u8g_font_fur17r[3146] U8G_FONT_SECTION("u8g_font_fur17r") = { 0,31,30,254,250,17,4,5,8,170,32,127,251,19,250,17, 251,0,0,0,7,0,0,2,17,17,8,3,0,192,192,192, 192,192,192,192,192,192,192,192,192,192,0,0,192,192,7,7, @@ -23790,7 +23858,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur17r[3146] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =28 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur20[8654] U8G_SECTION(".progmem.u8g_font_fur20") = { +const u8g_fntpgm_uint8_t u8g_font_fur20[8654] U8G_FONT_SECTION("u8g_font_fur20") = { 0,38,35,254,249,20,5,12,11,23,32,255,251,28,249,20, 251,0,0,0,8,0,0,3,20,20,11,4,0,224,224,224, 224,224,224,224,224,224,224,224,224,224,224,224,0,0,224,224, @@ -24344,8 +24412,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur20[8654] U8G_SECTION(".progmem.u8g_font_fur Max Font ascent =20 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur20n[596] U8G_SECTION(".progmem.u8g_font_fur20n") = { - 0,38,35,254,249,20,0,0,0,0,42,57,0,20,253,20, +const u8g_fntpgm_uint8_t u8g_font_fur20n[616] U8G_FONT_SECTION("u8g_font_fur20n") = { + 0,38,35,254,249,20,0,0,0,0,42,58,0,20,253,20, 0,11,11,22,19,4,9,17,0,49,128,27,0,27,0,14, 0,255,224,142,32,27,0,27,0,49,128,17,0,17,16,48, 29,6,0,1,128,0,1,128,0,1,128,0,1,128,0,1, @@ -24382,7 +24450,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur20n[596] U8G_SECTION(".progmem.u8g_font_fur 112,112,63,224,15,128,13,20,40,16,1,0,31,192,63,224, 112,112,224,56,224,56,224,56,224,56,224,56,224,56,112,120, 63,248,31,56,0,56,0,56,0,56,96,48,96,112,112,224, - 63,192,31,128}; + 63,192,31,128,3,14,14,8,3,0,224,224,224,0,0,0, + 0,0,0,0,0,224,224,224}; /* Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. @@ -24395,7 +24464,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur20n[596] U8G_SECTION(".progmem.u8g_font_fur Max Font ascent =22 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur20r[3976] U8G_SECTION(".progmem.u8g_font_fur20r") = { +const u8g_fntpgm_uint8_t u8g_font_fur20r[3976] U8G_FONT_SECTION("u8g_font_fur20r") = { 0,38,35,254,249,20,5,12,11,23,32,127,251,22,249,20, 251,0,0,0,8,0,0,3,20,20,11,4,0,224,224,224, 224,224,224,224,224,224,224,224,224,224,224,224,0,0,224,224, @@ -24657,7 +24726,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur20r[3976] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =36 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur25[11949] U8G_SECTION(".progmem.u8g_font_fur25") = { +const u8g_fntpgm_uint8_t u8g_font_fur25[11949] U8G_FONT_SECTION("u8g_font_fur25") = { 0,46,45,254,247,25,6,119,15,27,32,255,249,36,247,25, 249,0,0,0,10,0,0,3,25,25,12,4,0,224,224,224, 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, @@ -25417,8 +25486,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur25[11949] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =26 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur25n[774] U8G_SECTION(".progmem.u8g_font_fur25n") = { - 0,46,45,254,247,25,0,0,0,0,42,57,0,26,252,25, +const u8g_fntpgm_uint8_t u8g_font_fur25n[798] U8G_FONT_SECTION("u8g_font_fur25n") = { + 0,46,45,254,247,25,0,0,0,0,42,58,0,26,252,25, 0,14,13,26,22,4,12,24,96,28,224,28,224,12,192,7, 128,243,60,255,252,231,156,7,128,12,192,28,224,60,224,24, 96,20,21,63,34,7,0,0,96,0,0,96,0,0,96,0, @@ -25466,7 +25535,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur25n[774] U8G_SECTION(".progmem.u8g_font_fur 50,19,2,1,31,248,63,252,120,30,112,14,240,15,224,15, 224,15,224,15,224,15,240,15,112,31,120,63,63,247,15,231, 0,7,0,7,0,7,0,14,112,14,112,14,112,30,112,60, - 60,120,31,240,15,224}; + 60,120,31,240,15,224,3,18,18,9,3,0,224,224,224,224, + 0,0,0,0,0,0,0,0,0,0,224,224,224,224}; /* Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. @@ -25479,7 +25549,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur25n[774] U8G_SECTION(".progmem.u8g_font_fur Max Font ascent =28 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur25r[5389] U8G_SECTION(".progmem.u8g_font_fur25r") = { +const u8g_fntpgm_uint8_t u8g_font_fur25r[5389] U8G_FONT_SECTION("u8g_font_fur25r") = { 0,46,45,254,247,25,6,119,15,27,32,127,249,28,247,25, 249,0,0,0,10,0,0,3,25,25,12,4,0,224,224,224, 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, @@ -25829,7 +25899,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur25r[5389] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =43 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur30[16505] U8G_SECTION(".progmem.u8g_font_fur30") = { +const u8g_fntpgm_uint8_t u8g_font_fur30[16505] U8G_FONT_SECTION("u8g_font_fur30") = { 0,54,54,253,245,30,9,94,20,223,32,255,249,43,245,31, 248,0,0,0,12,0,0,4,30,30,14,5,0,240,240,240, 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, @@ -26874,8 +26944,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur30[16505] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =31 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur30n[1175] U8G_SECTION(".progmem.u8g_font_fur30n") = { - 0,54,54,253,245,30,0,0,0,0,42,57,0,31,251,30, +const u8g_fntpgm_uint8_t u8g_font_fur30n[1201] U8G_FONT_SECTION("u8g_font_fur30n") = { + 0,54,54,253,245,30,0,0,0,0,42,58,0,31,251,30, 0,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, @@ -26948,7 +27018,9 @@ const u8g_fntpgm_uint8_t u8g_font_fur30n[1175] U8G_SECTION(".progmem.u8g_font_fu 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, - 0,31,254,0,15,248,0}; + 0,31,254,0,15,248,0,4,20,20,11,4,0,240,240,240, + 240,240,0,0,0,0,0,0,0,0,0,0,240,240,240,240, + 240}; /* Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. @@ -26961,7 +27033,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur30n[1175] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =33 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur30r[7380] U8G_SECTION(".progmem.u8g_font_fur30r") = { +const u8g_fntpgm_uint8_t u8g_font_fur30r[7380] U8G_FONT_SECTION("u8g_font_fur30r") = { 0,54,54,253,245,30,9,94,20,223,32,127,249,33,245,31, 248,0,0,0,12,0,0,4,30,30,14,5,0,240,240,240, 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, @@ -27436,8 +27508,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur30r[7380] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =36 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur35n[1417] U8G_SECTION(".progmem.u8g_font_fur35n") = { - 0,65,64,252,243,35,0,0,0,0,42,57,0,36,250,35, +const u8g_fntpgm_uint8_t u8g_font_fur35n[1447] U8G_FONT_SECTION("u8g_font_fur35n") = { + 0,65,64,252,243,35,0,0,0,0,42,58,0,36,250,35, 0,19,19,57,31,6,16,6,12,0,30,15,0,15,30,0, 15,30,0,7,28,0,3,184,0,1,176,0,193,240,96,255, 255,224,255,255,224,248,227,224,1,240,0,3,184,0,7,188, @@ -27525,7 +27597,9 @@ const u8g_fntpgm_uint8_t u8g_font_fur35n[1417] U8G_SECTION(".progmem.u8g_font_fu 124,1,252,127,3,252,63,255,252,31,255,124,15,254,124,3, 248,124,0,0,124,0,0,124,0,0,120,0,0,120,0,0, 248,120,0,248,120,1,240,124,1,240,62,3,224,63,255,224, - 31,255,192,15,255,128,7,254,0}; + 31,255,192,15,255,128,7,254,0,5,24,24,13,5,0,248, + 248,248,248,248,248,0,0,0,0,0,0,0,0,0,0,0, + 0,248,248,248,248,248,248}; /* Fontname: -FreeType-FreeUniversal-Medium-R-Normal--58-580-72-72-P-271-ISO10646-1 Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. @@ -27538,8 +27612,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur35n[1417] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =43 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur42n[2135] U8G_SECTION(".progmem.u8g_font_fur42n") = { - 0,78,76,252,241,42,0,0,0,0,42,57,0,43,249,42, +const u8g_fntpgm_uint8_t u8g_font_fur42n[2194] U8G_FONT_SECTION("u8g_font_fur42n") = { + 0,78,76,252,241,42,0,0,0,0,42,58,0,43,249,42, 0,23,22,66,37,7,20,3,1,128,7,131,192,15,131,224, 7,131,192,7,199,192,3,199,128,1,239,0,0,238,0,0, 254,0,254,124,254,255,255,254,255,255,254,254,124,254,0,124, @@ -27569,77 +27643,78 @@ const u8g_fntpgm_uint8_t u8g_font_fur42n[2135] U8G_SECTION(".progmem.u8g_font_fu 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, 0,62,0,0,60,0,0,60,0,0,60,0,0,120,0,0, 120,0,0,120,0,0,240,0,0,240,0,0,240,0,0,26, - 42,168,32,3,1,0,255,224,0,3,255,240,0,7,255,252, - 0,15,255,254,0,31,255,254,0,63,128,127,0,63,0,63, + 43,172,32,3,0,0,255,224,0,3,255,240,0,7,255,252, + 0,15,255,254,0,31,255,254,0,31,128,127,0,63,0,63, 0,62,0,31,128,126,0,31,128,124,0,15,128,124,0,15, 192,124,0,15,192,252,0,15,192,252,0,7,192,248,0,7, 192,248,0,7,192,248,0,7,192,248,0,7,192,248,0,7, 192,248,0,7,192,248,0,7,192,248,0,7,192,248,0,7, 192,248,0,7,192,252,0,7,192,252,0,7,192,252,0,7, - 192,252,0,7,192,252,0,15,192,124,0,15,192,124,0,15, - 192,126,0,15,192,126,0,15,128,62,0,31,128,63,0,31, - 128,63,0,63,0,31,192,127,0,31,255,254,0,15,255,252, - 0,7,255,252,0,3,255,240,0,0,255,192,0,14,42,84, - 32,8,0,0,252,1,252,3,252,7,252,15,252,63,252,127, - 252,255,124,254,124,248,124,224,124,128,124,0,124,0,124,0, + 192,252,0,7,192,252,0,7,192,124,0,15,192,124,0,15, + 192,124,0,15,192,126,0,15,128,126,0,31,128,62,0,31, + 128,63,0,63,0,31,128,127,0,31,224,254,0,15,255,254, + 0,7,255,252,0,3,255,248,0,1,255,224,0,0,63,128, + 0,14,42,84,32,8,0,0,252,1,252,3,252,7,252,15, + 252,63,252,127,252,255,124,254,124,248,124,224,124,128,124,0, 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, - 124,0,124,0,124,0,124,25,42,168,32,4,1,1,255,192, - 0,7,255,240,0,15,255,248,0,31,255,252,0,31,255,254, - 0,63,128,127,0,63,0,63,0,127,0,31,128,126,0,31, - 128,126,0,31,128,126,0,15,128,126,0,15,128,0,0,31, - 128,0,0,31,128,0,0,31,0,0,0,63,0,0,0,63, - 0,0,0,126,0,0,0,252,0,0,1,252,0,0,3,248, - 0,0,7,240,0,0,7,224,0,0,15,224,0,0,31,192, - 0,0,63,128,0,0,127,0,0,0,254,0,0,1,252,0, - 0,3,248,0,0,7,240,0,0,15,224,0,0,31,224,0, - 0,63,192,0,0,63,128,0,0,127,0,0,0,254,0,0, - 0,255,255,255,128,255,255,255,128,255,255,255,128,255,255,255, - 128,255,255,255,128,26,42,168,32,3,1,1,255,192,0,7, - 255,240,0,15,255,252,0,31,255,254,0,63,255,255,0,63, - 128,127,0,127,0,31,128,126,0,31,128,126,0,15,128,126, - 0,15,128,252,0,15,128,0,0,15,128,0,0,15,128,0, - 0,31,128,0,0,63,0,0,0,126,0,0,3,252,0,0, - 127,248,0,0,127,240,0,0,127,224,0,0,127,240,0,0, - 127,252,0,0,3,254,0,0,0,127,0,0,0,63,128,0, - 0,31,128,0,0,15,192,0,0,15,192,0,0,7,192,0, - 0,7,192,252,0,7,192,252,0,7,192,252,0,7,192,252, - 0,15,192,254,0,31,192,127,0,63,128,127,128,127,128,63, - 255,255,0,63,255,254,0,31,255,252,0,7,255,248,0,1, - 255,224,0,29,42,168,32,2,0,0,0,127,0,0,0,127, - 0,0,0,255,0,0,1,255,0,0,3,255,0,0,3,255, - 0,0,7,223,0,0,15,223,0,0,15,159,0,0,31,31, - 0,0,63,31,0,0,62,31,0,0,124,31,0,0,252,31, - 0,0,248,31,0,1,240,31,0,3,240,31,0,3,224,31, - 0,7,192,31,0,15,192,31,0,15,128,31,0,31,0,31, - 0,63,0,31,0,126,0,31,0,124,0,31,0,252,0,31, - 0,248,0,31,0,255,255,255,248,255,255,255,248,255,255,255, - 248,255,255,255,248,255,255,255,248,0,0,31,0,0,0,31, + 124,0,124,0,124,0,124,0,124,0,124,25,42,168,32,4, + 1,1,255,192,0,7,255,240,0,15,255,248,0,31,255,252, + 0,31,255,254,0,63,128,127,0,63,0,63,0,127,0,31, + 128,126,0,31,128,126,0,31,128,126,0,15,128,126,0,15, + 128,0,0,31,128,0,0,31,128,0,0,31,0,0,0,63, + 0,0,0,63,0,0,0,126,0,0,0,252,0,0,1,252, + 0,0,3,248,0,0,7,240,0,0,7,224,0,0,15,224, + 0,0,31,192,0,0,63,128,0,0,127,0,0,0,254,0, + 0,1,252,0,0,3,248,0,0,7,240,0,0,15,224,0, + 0,31,224,0,0,63,192,0,0,63,128,0,0,127,0,0, + 0,254,0,0,0,255,255,255,128,255,255,255,128,255,255,255, + 128,255,255,255,128,255,255,255,128,26,43,172,32,3,0,1, + 255,192,0,7,255,240,0,15,255,252,0,31,255,254,0,31, + 255,255,0,63,128,127,0,63,0,63,128,127,0,31,128,126, + 0,15,128,126,0,15,128,252,0,15,128,0,0,15,128,0, + 0,15,128,0,0,31,128,0,0,31,128,0,0,63,0,0, + 0,126,0,0,3,252,0,0,127,248,0,0,127,240,0,0, + 127,224,0,0,127,240,0,0,127,252,0,0,3,254,0,0, + 0,127,0,0,0,63,128,0,0,31,192,0,0,15,192,0, + 0,7,192,0,0,7,192,0,0,7,192,252,0,7,192,252, + 0,7,192,252,0,7,192,254,0,15,192,254,0,31,192,127, + 0,63,128,127,192,255,0,63,255,255,0,31,255,254,0,15, + 255,248,0,3,255,240,0,0,255,128,0,29,42,168,32,2, + 0,0,0,127,0,0,0,127,0,0,0,255,0,0,1,255, + 0,0,3,255,0,0,3,255,0,0,7,223,0,0,15,223, + 0,0,15,159,0,0,31,31,0,0,63,31,0,0,62,31, + 0,0,124,31,0,0,252,31,0,0,248,31,0,1,240,31, + 0,3,240,31,0,3,224,31,0,7,192,31,0,15,192,31, + 0,15,128,31,0,31,0,31,0,63,0,31,0,126,0,31, + 0,124,0,31,0,252,0,31,0,248,0,31,0,255,255,255, + 248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255, + 248,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31, 0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31, - 0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31, - 0,26,42,168,32,3,0,127,255,255,0,127,255,255,0,127, - 255,255,0,127,255,255,0,127,255,255,0,124,0,0,0,124, + 0,0,0,31,0,0,0,31,0,26,43,172,32,3,255,127, + 255,255,0,127,255,255,0,127,255,255,0,127,255,255,0,127, + 255,255,0,124,0,0,0,124,0,0,0,124,0,0,0,124, 0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,124, - 0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,124, - 31,192,0,124,127,240,0,124,255,252,0,125,255,254,0,127, - 224,254,0,127,128,63,0,127,0,31,0,126,0,31,128,126, - 0,15,128,124,0,15,128,0,0,15,192,0,0,15,192,0, - 0,7,192,0,0,7,192,0,0,7,192,0,0,15,192,0, - 0,15,192,252,0,15,192,252,0,15,128,252,0,31,128,254, - 0,31,128,126,0,63,0,127,128,126,0,63,255,254,0,63, - 255,252,0,15,255,248,0,7,255,224,0,1,255,192,0,27, - 42,168,32,3,1,0,127,240,0,1,255,252,0,3,255,254, - 0,15,240,127,0,15,192,63,128,31,128,31,128,63,0,15, - 192,63,0,15,192,62,0,15,192,126,0,0,0,126,0,0, + 0,0,0,124,0,0,0,124,31,192,0,124,127,240,0,124, + 255,252,0,125,255,252,0,127,224,254,0,127,128,63,0,127, + 0,31,0,126,0,31,128,126,0,15,128,124,0,15,128,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,7,192,0, + 0,7,192,0,0,15,192,0,0,15,192,0,0,15,192,252, + 0,15,128,252,0,31,128,254,0,31,128,126,0,63,0,127, + 0,127,0,127,192,254,0,63,255,252,0,31,255,248,0,15, + 255,240,0,3,255,224,0,0,127,0,0,27,43,172,32,3, + 0,0,127,240,0,1,255,252,0,3,255,254,0,7,255,255, + 0,15,240,63,0,31,192,31,128,31,128,15,128,63,0,15, + 192,63,0,15,192,126,0,7,192,126,0,0,0,126,0,0, 0,124,0,0,0,124,0,0,0,124,0,0,0,124,0,0, 0,124,15,224,0,124,63,248,0,124,255,254,0,124,255,255, 0,125,255,255,128,127,224,127,128,127,192,31,192,255,128,15, 192,255,0,7,192,255,0,7,224,254,0,7,224,254,0,7, 224,254,0,3,224,254,0,3,224,254,0,3,224,254,0,7, - 224,254,0,7,224,126,0,7,224,127,0,7,192,127,0,15, - 192,63,128,15,192,31,192,63,128,31,255,255,0,15,255,255, - 0,7,255,254,0,1,255,248,0,0,127,224,0,26,42,168, + 224,254,0,7,224,126,0,7,224,127,0,7,192,63,0,15, + 192,63,192,31,128,31,224,127,128,15,255,255,0,7,255,254, + 0,3,255,252,0,0,255,240,0,0,63,192,0,26,42,168, 32,3,0,255,255,255,192,255,255,255,192,255,255,255,192,255, 255,255,192,255,255,255,192,0,0,7,192,0,0,15,192,0, 0,15,128,0,0,31,128,0,0,31,128,0,0,31,0,0, @@ -27650,29 +27725,32 @@ const u8g_fntpgm_uint8_t u8g_font_fur42n[2135] U8G_SECTION(".progmem.u8g_font_fu 15,192,0,0,31,128,0,0,31,128,0,0,63,128,0,0, 63,0,0,0,63,0,0,0,127,0,0,0,126,0,0,0, 254,0,0,0,252,0,0,0,252,0,0,1,252,0,0,1, - 248,0,0,3,248,0,0,3,240,0,0,27,42,168,32,2, - 1,0,255,224,0,3,255,252,0,15,255,254,0,31,255,255, + 248,0,0,3,248,0,0,3,240,0,0,27,43,172,32,2, + 0,0,255,224,0,3,255,252,0,15,255,254,0,31,255,255, 0,63,255,255,128,63,128,63,192,127,0,31,192,126,0,15, 192,126,0,7,192,126,0,7,192,124,0,7,192,124,0,7, 192,126,0,7,192,62,0,15,192,63,0,15,128,31,128,31, 0,15,224,127,0,7,255,254,0,3,255,248,0,0,255,240, 0,3,255,248,0,15,255,254,0,31,224,127,0,63,128,31, - 128,62,0,15,192,126,0,7,192,124,0,7,224,252,0,3, + 128,62,0,15,128,126,0,7,192,124,0,7,224,124,0,3, 224,252,0,3,224,248,0,3,224,248,0,3,224,252,0,3, - 224,252,0,3,224,252,0,7,224,254,0,7,224,127,0,15, - 224,127,128,31,192,63,255,255,128,31,255,255,128,15,255,255, - 0,3,255,252,0,0,255,240,0,27,42,168,32,3,1,1, - 255,240,0,7,255,252,0,15,255,254,0,31,255,255,0,63, - 255,255,128,63,128,63,128,126,0,31,192,126,0,15,192,252, - 0,15,192,252,0,7,224,252,0,7,224,248,0,7,224,248, - 0,7,224,248,0,7,224,252,0,7,224,252,0,7,224,252, - 0,15,224,124,0,15,224,126,0,31,224,63,0,63,224,63, - 192,123,224,31,255,243,224,15,255,243,224,3,255,195,224,0, - 255,7,224,0,0,7,224,0,0,7,224,0,0,7,224,0, - 0,7,192,0,0,7,192,0,0,7,192,124,0,15,192,124, - 0,15,128,126,0,31,128,62,0,31,128,63,0,63,0,63, - 128,255,0,31,255,254,0,31,255,252,0,15,255,248,0,7, - 255,240,0,1,255,192,0}; + 224,252,0,3,224,252,0,7,224,254,0,7,224,126,0,15, + 224,127,0,31,192,63,192,127,192,63,255,255,128,31,255,255, + 0,7,255,254,0,1,255,248,0,0,63,192,0,27,43,172, + 32,3,0,1,255,240,0,7,255,252,0,15,255,254,0,31, + 255,255,0,63,255,255,128,63,128,63,128,126,0,31,192,126, + 0,15,192,124,0,15,192,252,0,15,224,252,0,7,224,252, + 0,7,224,248,0,7,224,248,0,7,224,248,0,7,224,252, + 0,7,224,252,0,7,224,124,0,15,224,124,0,15,224,126, + 0,31,224,63,0,63,224,63,192,251,224,31,255,243,224,15, + 255,243,224,3,255,195,224,0,255,7,224,0,0,7,224,0, + 0,7,224,0,0,7,192,0,0,7,192,0,0,7,192,0, + 0,15,192,124,0,15,192,124,0,15,128,62,0,31,128,62, + 0,63,128,63,0,127,0,31,193,254,0,31,255,254,0,15, + 255,252,0,7,255,248,0,3,255,224,0,0,127,128,0,6, + 29,29,16,6,0,252,252,252,252,252,252,252,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,252,252,252,252,252, + 252,252}; /* Fontname: -FreeType-FreeUniversal-Medium-R-Normal--68-680-72-72-P-317-ISO10646-1 Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. @@ -27685,8 +27763,8 @@ const u8g_fntpgm_uint8_t u8g_font_fur42n[2135] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =50 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_fur49n[2643] U8G_SECTION(".progmem.u8g_font_fur49n") = { - 0,92,89,251,238,49,0,0,0,0,42,57,0,50,247,49, +const u8g_fntpgm_uint8_t u8g_font_fur49n[2683] U8G_FONT_SECTION("u8g_font_fur49n") = { + 0,92,89,251,238,49,0,0,0,0,42,58,0,50,247,49, 0,27,26,104,45,9,23,0,192,96,0,3,192,120,0,15, 192,126,0,7,224,252,0,3,224,248,0,1,241,240,0,1, 241,240,0,0,251,224,0,0,123,192,0,0,59,128,0,224, @@ -27851,7 +27929,9 @@ const u8g_fntpgm_uint8_t u8g_font_fur49n[2643] U8G_SECTION(".progmem.u8g_font_fu 0,0,252,127,0,1,248,63,0,1,248,63,0,3,248,63, 0,7,240,63,128,7,240,31,192,31,224,31,224,63,224,15, 255,255,192,7,255,255,128,3,255,255,0,1,255,252,0,0, - 63,224,0}; + 63,224,0,7,34,34,19,7,0,254,254,254,254,254,254,254, + 254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,254,254,254,254,254,254,254,254}; /* Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -27864,7 +27944,7 @@ const u8g_fntpgm_uint8_t u8g_font_fur49n[2643] U8G_SECTION(".progmem.u8g_font_fu Max Font ascent =16 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb11[4313] U8G_SECTION(".progmem.u8g_font_gdb11") = { +const u8g_fntpgm_uint8_t u8g_font_gdb11[4313] U8G_FONT_SECTION("u8g_font_gdb11") = { 0,27,26,247,250,11,2,67,5,71,32,255,252,16,251,14, 252,0,0,0,4,0,0,3,14,14,6,1,255,96,224,96, 96,96,96,96,64,64,64,0,224,224,192,6,6,6,8,1, @@ -28147,8 +28227,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb11[4313] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb11n[263] U8G_SECTION(".progmem.u8g_font_gdb11n") = { - 0,27,26,247,250,11,0,0,0,0,42,57,0,14,253,11, +const u8g_fntpgm_uint8_t u8g_font_gdb11n[278] U8G_FONT_SECTION("u8g_font_gdb11n") = { + 0,27,26,247,250,11,0,0,0,0,42,58,0,14,253,11, 0,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, @@ -28164,7 +28244,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb11n[263] U8G_SECTION(".progmem.u8g_font_gdb 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, - 198,198,126,4,12,24,224}; + 198,198,126,4,12,24,224,3,9,9,5,1,255,224,224,192, + 0,0,0,224,224,192}; /* Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -28177,7 +28258,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb11n[263] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =15 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb11r[2001] U8G_SECTION(".progmem.u8g_font_gdb11r") = { +const u8g_fntpgm_uint8_t u8g_font_gdb11r[2001] U8G_FONT_SECTION("u8g_font_gdb11r") = { 0,27,26,247,250,11,2,67,5,71,32,127,252,15,252,14, 252,0,0,0,4,0,0,3,14,14,6,1,255,96,224,96, 96,96,96,96,64,64,64,0,224,224,192,6,6,6,8,1, @@ -28316,7 +28397,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb11r[2001] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =17 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb12[4626] U8G_SECTION(".progmem.u8g_font_gdb12") = { +const u8g_fntpgm_uint8_t u8g_font_gdb12[4626] U8G_FONT_SECTION("u8g_font_gdb12") = { 0,29,28,246,249,12,2,113,5,210,32,255,252,17,251,15, 252,0,0,0,5,0,0,3,14,14,6,1,0,32,96,96, 96,96,96,96,96,96,96,0,224,224,192,7,6,6,9,1, @@ -28619,8 +28700,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb12[4626] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =15 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb12n[286] U8G_SECTION(".progmem.u8g_font_gdb12n") = { - 0,29,28,246,249,12,0,0,0,0,42,57,0,15,252,12, +const u8g_fntpgm_uint8_t u8g_font_gdb12n[301] U8G_FONT_SECTION("u8g_font_gdb12n") = { + 0,29,28,246,249,12,0,0,0,0,42,58,0,15,252,12, 0,7,7,7,8,1,7,48,180,222,48,222,148,48,7,7, 7,8,1,2,16,16,16,254,16,16,16,3,6,6,5,1, 252,96,224,96,96,64,128,6,1,1,7,0,4,252,3,3, @@ -28637,7 +28718,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb12n[286] U8G_SECTION(".progmem.u8g_font_gdb 56,112,96,192,254,195,195,195,195,98,60,8,11,11,10,1, 0,255,254,130,6,4,12,8,24,24,48,96,8,11,11,10, 1,0,60,102,102,102,124,62,71,195,195,195,60,8,11,11, - 10,1,0,60,70,195,195,195,195,63,2,6,12,112}; + 10,1,0,60,70,195,195,195,195,63,2,6,12,112,3,9, + 9,5,1,0,224,224,192,0,0,0,224,224,192}; /* Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -28650,7 +28732,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb12n[286] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb12r[2190] U8G_SECTION(".progmem.u8g_font_gdb12r") = { +const u8g_fntpgm_uint8_t u8g_font_gdb12r[2190] U8G_FONT_SECTION("u8g_font_gdb12r") = { 0,29,28,246,249,12,2,113,5,210,32,127,252,16,252,15, 252,0,0,0,5,0,0,3,14,14,6,1,0,32,96,96, 96,96,96,96,96,96,96,0,224,224,192,7,6,6,9,1, @@ -28800,7 +28882,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb12r[2190] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =20 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb14[6044] U8G_SECTION(".progmem.u8g_font_gdb14") = { +const u8g_fntpgm_uint8_t u8g_font_gdb14[6044] U8G_FONT_SECTION("u8g_font_gdb14") = { 0,36,33,244,248,14,3,134,7,177,32,255,251,20,250,18, 251,0,0,0,6,0,0,4,17,17,7,2,0,96,224,224, 224,224,224,224,224,224,64,64,64,0,0,96,240,224,7,8, @@ -29191,8 +29273,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb14[6044] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =18 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb14n[448] U8G_SECTION(".progmem.u8g_font_gdb14n") = { - 0,36,33,244,248,14,0,0,0,0,42,57,0,18,252,14, +const u8g_fntpgm_uint8_t u8g_font_gdb14n[464] U8G_FONT_SECTION("u8g_font_gdb14n") = { + 0,36,33,244,248,14,0,0,0,0,42,58,0,18,252,14, 0,9,10,20,10,1,8,24,0,24,0,219,0,255,128,60, 0,62,0,255,0,219,0,24,0,24,0,8,8,8,10,1, 2,24,24,24,255,24,24,24,24,4,7,7,6,1,252,48, @@ -29219,7 +29301,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb14n[448] U8G_SECTION(".progmem.u8g_font_gdb 1,0,62,0,113,128,241,128,241,128,249,128,127,0,63,0, 63,128,99,128,193,128,193,128,193,128,99,0,62,0,10,14, 28,12,1,0,31,0,35,128,65,128,192,192,192,192,192,192, - 192,192,97,192,62,192,0,128,1,128,3,0,14,0,56,0 + 192,192,97,192,62,192,0,128,1,128,3,0,14,0,56,0, + 4,10,10,6,1,0,224,240,96,0,0,0,0,96,240,224 }; /* Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 @@ -29233,7 +29316,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb14n[448] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =19 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb14r[2842] U8G_SECTION(".progmem.u8g_font_gdb14r") = { +const u8g_fntpgm_uint8_t u8g_font_gdb14r[2842] U8G_FONT_SECTION("u8g_font_gdb14r") = { 0,36,33,244,248,14,3,134,7,177,32,127,251,19,251,18, 251,0,0,0,6,0,0,4,17,17,7,2,0,96,224,224, 224,224,224,224,224,224,64,64,64,0,0,96,240,224,7,8, @@ -29424,7 +29507,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb14r[2842] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =23 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb17[7600] U8G_SECTION(".progmem.u8g_font_gdb17") = { +const u8g_fntpgm_uint8_t u8g_font_gdb17[7600] U8G_FONT_SECTION("u8g_font_gdb17") = { 0,42,39,242,246,17,4,81,9,172,32,255,250,23,249,21, 250,0,0,0,7,0,0,4,21,21,8,2,255,48,240,240, 240,240,112,112,96,96,96,96,96,96,96,64,0,0,112,240, @@ -29913,8 +29996,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb17[7600] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =21 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb17n[542] U8G_SECTION(".progmem.u8g_font_gdb17n") = { - 0,42,39,242,246,16,0,0,0,0,42,57,0,21,251,16, +const u8g_fntpgm_uint8_t u8g_font_gdb17n[561] U8G_FONT_SECTION("u8g_font_gdb17n") = { + 0,42,39,242,246,16,0,0,0,0,42,58,0,21,251,16, 0,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, @@ -29947,7 +30030,9 @@ const u8g_fntpgm_uint8_t u8g_font_gdb17n[542] U8G_SECTION(".progmem.u8g_font_gdb 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, - 0,96,0,224,0,224,1,192,3,128,30,0,56,0}; + 0,96,0,224,0,224,1,192,3,128,30,0,56,0,4,13, + 13,7,2,255,112,240,240,224,0,0,0,0,0,112,240,240, + 224}; /* Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -29960,7 +30045,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb17n[542] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =22 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb17r[3540] U8G_SECTION(".progmem.u8g_font_gdb17r") = { +const u8g_fntpgm_uint8_t u8g_font_gdb17r[3540] U8G_FONT_SECTION("u8g_font_gdb17r") = { 0,42,39,242,246,17,4,81,9,172,32,127,250,22,250,21, 250,0,0,0,7,0,0,4,21,21,8,2,255,48,240,240, 240,240,112,112,96,96,96,96,96,96,96,64,0,0,112,240, @@ -30195,7 +30280,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb17r[3540] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =28 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb20[10077] U8G_SECTION(".progmem.u8g_font_gdb20") = { +const u8g_fntpgm_uint8_t u8g_font_gdb20[10077] U8G_FONT_SECTION("u8g_font_gdb20") = { 0,49,47,240,244,20,5,86,12,137,32,255,248,28,247,25, 248,0,0,0,8,0,0,5,24,24,10,2,255,24,120,120, 120,120,120,120,120,120,112,112,112,112,48,48,48,48,0,0, @@ -30838,8 +30923,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb20[10077] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =25 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb20n[624] U8G_SECTION(".progmem.u8g_font_gdb20n") = { - 0,49,47,240,244,19,0,0,0,0,42,57,0,25,250,19, +const u8g_fntpgm_uint8_t u8g_font_gdb20n[646] U8G_FONT_SECTION("u8g_font_gdb20n") = { + 0,49,47,240,244,19,0,0,0,0,42,58,0,25,250,19, 0,12,13,26,14,1,11,3,0,15,0,70,64,102,112,246, 240,63,192,15,0,63,224,254,240,230,112,70,32,7,0,14, 0,12,12,24,13,1,3,6,0,6,0,6,0,6,0,6, @@ -30877,8 +30962,9 @@ const u8g_fntpgm_uint8_t u8g_font_gdb20n[624] U8G_SECTION(".progmem.u8g_font_gdb 63,248,120,252,248,124,240,60,240,60,240,56,112,56,56,112, 31,192,14,20,40,16,1,255,7,192,24,240,56,120,112,120, 240,60,240,60,240,60,240,60,248,60,124,124,63,252,31,60, - 0,56,0,120,0,112,0,240,1,224,7,128,63,0,56,0 - }; + 0,56,0,120,0,112,0,240,1,224,7,128,63,0,56,0, + 5,16,16,9,2,255,112,248,248,248,112,0,0,0,0,0, + 0,112,248,248,248,112}; /* Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -30891,7 +30977,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb20n[624] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =26 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb20r[4680] U8G_SECTION(".progmem.u8g_font_gdb20r") = { +const u8g_fntpgm_uint8_t u8g_font_gdb20r[4680] U8G_FONT_SECTION("u8g_font_gdb20r") = { 0,49,47,240,244,20,5,86,12,137,32,127,248,26,248,25, 248,0,0,0,8,0,0,5,24,24,10,2,255,24,120,120, 120,120,120,120,120,120,112,112,112,112,48,48,48,48,0,0, @@ -31197,7 +31283,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb20r[4680] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =34 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb25[14643] U8G_SECTION(".progmem.u8g_font_gdb25") = { +const u8g_fntpgm_uint8_t u8g_font_gdb25[14643] U8G_FONT_SECTION("u8g_font_gdb25") = { 0,61,57,236,242,25,7,167,18,92,32,255,247,34,245,31, 247,0,0,0,10,0,0,6,30,30,12,3,255,12,60,252, 252,252,124,120,120,120,120,120,120,120,120,120,120,120,120,56, @@ -32126,8 +32212,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb25[14643] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =31 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb25n[960] U8G_SECTION(".progmem.u8g_font_gdb25n") = { - 0,61,57,236,242,24,0,0,0,0,42,57,0,31,249,24, +const u8g_fntpgm_uint8_t u8g_font_gdb25n[985] U8G_FONT_SECTION("u8g_font_gdb25n") = { + 0,61,57,236,242,24,0,0,0,0,42,58,0,31,249,24, 0,16,16,32,18,1,14,0,192,3,192,3,192,99,140,123, 158,125,191,127,252,15,224,7,224,63,252,253,190,249,158,51, 142,3,192,3,192,3,0,15,14,28,17,1,4,1,128,3, @@ -32186,8 +32272,9 @@ const u8g_fntpgm_uint8_t u8g_font_gdb25n[960] U8G_SECTION(".progmem.u8g_font_gdb 0,120,31,0,120,31,0,248,15,128,248,15,128,248,15,128, 248,15,128,248,15,128,124,31,128,126,63,128,63,255,128,15, 207,0,0,15,0,0,31,0,0,30,0,0,62,0,0,124, - 0,0,248,0,1,240,0,15,192,0,63,0,0,56,0,0 - }; + 0,0,248,0,1,240,0,15,192,0,63,0,0,56,0,0, + 6,19,19,11,3,255,56,124,252,252,252,120,0,0,0,0, + 0,0,0,56,124,252,252,252,120}; /* Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -32200,7 +32287,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb25n[960] U8G_SECTION(".progmem.u8g_font_gdb Max Font ascent =33 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb25r[6779] U8G_SECTION(".progmem.u8g_font_gdb25r") = { +const u8g_fntpgm_uint8_t u8g_font_gdb25r[6779] U8G_FONT_SECTION("u8g_font_gdb25r") = { 0,61,57,236,242,25,7,167,18,92,32,127,247,33,247,31, 247,0,0,0,10,0,0,6,30,30,12,3,255,12,60,252, 252,252,124,120,120,120,120,120,120,120,120,120,120,120,120,56, @@ -32637,7 +32724,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb25r[6779] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =42 descent=-13 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb30[19508] U8G_SECTION(".progmem.u8g_font_gdb30") = { +const u8g_fntpgm_uint8_t u8g_font_gdb30[19508] U8G_FONT_SECTION("u8g_font_gdb30") = { 0,74,69,232,239,30,10,50,24,78,32,255,245,42,243,38, 245,0,0,0,12,0,0,8,36,36,15,3,255,6,31,127, 126,126,126,126,126,126,126,62,62,62,62,62,62,62,60,60, @@ -33870,8 +33957,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdb30[19508] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =38 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb30n[1275] U8G_SECTION(".progmem.u8g_font_gdb30n") = { - 0,74,69,232,239,29,0,0,0,0,42,57,0,38,247,29, +const u8g_fntpgm_uint8_t u8g_font_gdb30n[1304] U8G_FONT_SECTION("u8g_font_gdb30n") = { + 0,74,69,232,239,29,0,0,0,0,42,58,0,38,247,29, 0,19,20,60,21,1,17,0,48,0,1,240,0,1,240,0, 32,240,0,112,225,128,120,227,192,126,231,224,127,255,224,31, 255,0,3,248,0,3,248,0,31,255,0,127,255,192,254,231, @@ -33950,7 +34037,9 @@ const u8g_fntpgm_uint8_t u8g_font_gdb30n[1275] U8G_SECTION(".progmem.u8g_font_gd 3,240,252,3,240,252,3,240,254,3,240,126,7,240,127,15, 240,63,255,240,31,251,224,7,227,224,0,7,224,0,7,192, 0,7,192,0,15,128,0,31,0,0,62,0,0,252,0,3, - 248,0,15,224,0,63,128,0,56,0,0}; + 248,0,15,224,0,63,128,0,56,0,0,8,23,23,13,3, + 255,62,127,255,255,255,254,124,0,0,0,0,0,0,0,0, + 0,62,127,255,255,255,254,124}; /* Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -33963,7 +34052,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb30n[1275] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =39 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdb30r[9112] U8G_SECTION(".progmem.u8g_font_gdb30r") = { +const u8g_fntpgm_uint8_t u8g_font_gdb30r[9112] U8G_FONT_SECTION("u8g_font_gdb30r") = { 0,74,69,232,239,30,10,50,24,78,32,127,245,39,245,38, 245,0,0,0,12,0,0,8,36,36,15,3,255,6,31,127, 126,126,126,126,126,126,126,62,62,62,62,62,62,62,60,60, @@ -34546,7 +34635,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdb30r[9112] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =15 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr10[3670] U8G_SECTION(".progmem.u8g_font_gdr10") = { +const u8g_fntpgm_uint8_t u8g_font_gdr10[3670] U8G_FONT_SECTION("u8g_font_gdr10") = { 0,25,24,247,250,10,2,30,4,177,32,255,252,15,251,13, 252,0,0,0,4,0,0,2,12,12,5,1,0,64,192,64, 64,64,64,64,64,64,0,64,64,5,5,5,7,1,7,216, @@ -34789,8 +34878,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr10[3670] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =13 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr10n[249] U8G_SECTION(".progmem.u8g_font_gdr10n") = { - 0,25,24,247,250,10,0,0,0,0,42,57,0,13,253,10, +const u8g_fntpgm_uint8_t u8g_font_gdr10n[263] U8G_FONT_SECTION("u8g_font_gdr10n") = { + 0,25,24,247,250,10,0,0,0,0,42,58,0,13,253,10, 0,6,7,7,8,1,6,32,168,236,48,252,164,32,6,6, 6,7,1,2,32,32,32,252,32,32,2,4,4,4,1,253, 192,64,64,128,4,1,1,6,1,4,240,1,2,2,4,2, @@ -34805,7 +34894,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr10n[249] U8G_SECTION(".progmem.u8g_font_gdr 32,64,128,248,132,132,132,72,56,6,10,10,8,1,0,252, 132,8,8,8,16,16,32,32,64,6,10,10,8,1,0,120, 196,196,200,56,204,132,132,132,120,6,10,10,8,1,0,56, - 200,132,132,132,124,4,8,16,96}; + 200,132,132,132,124,4,8,16,96,1,8,8,4,2,0,128, + 128,0,0,0,0,128,128}; /* Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -34818,7 +34908,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr10n[249] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =14 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr10r[1723] U8G_SECTION(".progmem.u8g_font_gdr10r") = { +const u8g_fntpgm_uint8_t u8g_font_gdr10r[1723] U8G_FONT_SECTION("u8g_font_gdr10r") = { 0,25,24,247,250,10,2,30,4,177,32,127,252,14,252,13, 252,0,0,0,4,0,0,2,12,12,5,1,0,64,192,64, 64,64,64,64,64,64,0,64,64,5,5,5,7,1,7,216, @@ -34939,7 +35029,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr10r[1723] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =16 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr11[3977] U8G_SECTION(".progmem.u8g_font_gdr11") = { +const u8g_fntpgm_uint8_t u8g_font_gdr11[3977] U8G_FONT_SECTION("u8g_font_gdr11") = { 0,26,25,247,250,11,2,61,5,21,32,255,252,16,251,14, 252,0,0,0,4,0,0,2,13,13,5,1,0,64,64,64, 64,64,64,64,64,64,64,0,192,128,5,6,6,8,1,7, @@ -35201,8 +35291,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr11[3977] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr11n[262] U8G_SECTION(".progmem.u8g_font_gdr11n") = { - 0,26,25,247,250,11,0,0,0,0,42,57,0,14,253,11, +const u8g_fntpgm_uint8_t u8g_font_gdr11n[276] U8G_FONT_SECTION("u8g_font_gdr11n") = { + 0,26,25,247,250,11,0,0,0,0,42,58,0,14,253,11, 0,6,8,8,8,1,6,48,16,164,120,120,164,16,48,7, 6,6,7,0,2,16,16,16,254,16,16,2,5,5,4,1, 253,64,192,64,64,128,5,1,1,6,1,4,248,2,2,2, @@ -35218,7 +35308,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr11n[262] U8G_SECTION(".progmem.u8g_font_gdr 132,72,56,7,11,11,8,1,0,254,132,4,8,8,8,16, 16,32,32,96,7,11,11,9,1,0,120,196,196,196,120,60, 194,130,130,130,124,6,11,11,8,1,0,56,200,132,132,132, - 132,124,4,8,16,224}; + 132,124,4,8,16,224,2,8,8,4,1,0,192,128,0,0, + 0,0,192,128}; /* Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -35231,7 +35322,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr11n[262] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =15 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr11r[1868] U8G_SECTION(".progmem.u8g_font_gdr11r") = { +const u8g_fntpgm_uint8_t u8g_font_gdr11r[1868] U8G_FONT_SECTION("u8g_font_gdr11r") = { 0,26,25,247,250,11,2,61,5,21,32,127,252,15,252,14, 252,0,0,0,4,0,0,2,13,13,5,1,0,64,64,64, 64,64,64,64,64,64,64,0,192,128,5,6,6,8,1,7, @@ -35361,7 +35452,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr11r[1868] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =17 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr12[4200] U8G_SECTION(".progmem.u8g_font_gdr12") = { +const u8g_fntpgm_uint8_t u8g_font_gdr12[4200] U8G_FONT_SECTION("u8g_font_gdr12") = { 0,28,28,246,249,12,2,80,5,85,32,255,252,17,251,15, 252,0,0,0,4,0,0,2,15,15,5,2,255,128,128,128, 128,128,128,128,128,128,128,0,0,192,192,128,6,6,6,8, @@ -35637,8 +35728,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr12[4200] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =15 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr12n[270] U8G_SECTION(".progmem.u8g_font_gdr12n") = { - 0,28,28,246,249,12,0,0,0,0,42,57,0,15,253,12, +const u8g_fntpgm_uint8_t u8g_font_gdr12n[286] U8G_FONT_SECTION("u8g_font_gdr12n") = { + 0,28,28,246,249,12,0,0,0,0,42,58,0,15,253,12, 0,7,7,7,8,1,7,16,148,222,48,252,146,16,7,7, 7,8,0,2,16,16,16,254,16,16,16,2,5,5,4,1, 253,64,192,64,64,128,5,1,1,6,1,4,248,2,3,3, @@ -35654,7 +35745,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr12n[270] U8G_SECTION(".progmem.u8g_font_gdr 64,64,128,252,198,130,130,130,68,56,7,11,11,9,1,0, 254,130,4,4,8,8,24,16,48,32,96,7,12,12,9,1, 0,120,196,196,196,232,60,78,130,130,130,194,124,7,11,11, - 9,1,0,56,68,130,130,130,198,122,2,4,8,112}; + 9,1,0,56,68,130,130,130,198,122,2,4,8,112,2,10, + 10,4,1,255,128,192,128,0,0,0,0,192,192,128}; /* Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -35667,7 +35759,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr12n[270] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr12r[1992] U8G_SECTION(".progmem.u8g_font_gdr12r") = { +const u8g_fntpgm_uint8_t u8g_font_gdr12r[1992] U8G_FONT_SECTION("u8g_font_gdr12r") = { 0,28,28,246,249,12,2,80,5,85,32,127,252,16,252,15, 252,0,0,0,4,0,0,2,15,15,5,2,255,128,128,128, 128,128,128,128,128,128,128,0,0,192,192,128,6,6,6,8, @@ -35805,7 +35897,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr12r[1992] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =20 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr14[5942] U8G_SECTION(".progmem.u8g_font_gdr14") = { +const u8g_fntpgm_uint8_t u8g_font_gdr14[5942] U8G_FONT_SECTION("u8g_font_gdr14") = { 0,35,33,244,248,14,3,95,7,136,32,255,251,20,250,18, 251,0,0,0,5,0,0,2,17,17,6,2,0,64,192,192, 192,192,192,192,192,192,192,192,192,128,0,192,192,192,6,8, @@ -36190,8 +36282,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr14[5942] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =18 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr14n[445] U8G_SECTION(".progmem.u8g_font_gdr14n") = { - 0,35,33,244,248,14,0,0,0,0,42,57,0,18,252,14, +const u8g_fntpgm_uint8_t u8g_font_gdr14n[462] U8G_FONT_SECTION("u8g_font_gdr14n") = { + 0,35,33,244,248,14,0,0,0,0,42,58,0,18,252,14, 0,9,10,20,10,1,8,24,0,24,0,137,0,235,128,60, 0,60,0,235,0,137,0,24,0,24,0,8,8,8,9,1, 2,24,24,24,255,24,24,24,24,4,6,6,5,0,253,112, @@ -36218,7 +36310,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr14n[445] U8G_SECTION(".progmem.u8g_font_gdr 0,71,0,195,0,195,0,195,0,118,0,30,0,39,0,99, 128,193,128,193,128,193,128,99,0,60,0,9,14,28,11,1, 0,30,0,99,0,67,0,193,128,193,128,193,128,193,128,99, - 128,61,128,1,0,3,0,6,0,8,0,112,0}; + 128,61,128,1,0,3,0,6,0,8,0,112,0,2,11,11, + 5,2,0,192,192,192,0,0,0,0,0,192,192,192}; /* Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -36231,7 +36324,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr14n[445] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =19 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr14r[2791] U8G_SECTION(".progmem.u8g_font_gdr14r") = { +const u8g_fntpgm_uint8_t u8g_font_gdr14r[2791] U8G_FONT_SECTION("u8g_font_gdr14r") = { 0,35,33,244,248,14,3,95,7,136,32,127,251,19,251,18, 251,0,0,0,5,0,0,2,17,17,6,2,0,64,192,192, 192,192,192,192,192,192,192,192,192,128,0,192,192,192,6,8, @@ -36419,7 +36512,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr14r[2791] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =23 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr17[7056] U8G_SECTION(".progmem.u8g_font_gdr17") = { +const u8g_fntpgm_uint8_t u8g_font_gdr17[7056] U8G_FONT_SECTION("u8g_font_gdr17") = { 0,40,38,242,247,17,4,64,9,46,32,255,250,23,249,21, 250,0,0,0,6,0,0,3,21,21,7,2,255,96,224,224, 224,224,96,96,96,96,96,64,64,64,64,64,0,0,96,224, @@ -36874,8 +36967,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr17[7056] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =21 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr17n[539] U8G_SECTION(".progmem.u8g_font_gdr17n") = { - 0,40,38,242,247,16,0,0,0,0,42,57,0,21,252,16, +const u8g_fntpgm_uint8_t u8g_font_gdr17n[559] U8G_FONT_SECTION("u8g_font_gdr17n") = { + 0,40,38,242,247,16,0,0,0,0,42,58,0,21,252,16, 0,10,12,24,12,1,9,12,0,12,0,140,0,204,192,119, 128,30,0,30,0,119,128,204,192,12,128,12,0,12,0,10, 9,18,11,1,3,12,0,12,0,12,0,12,0,255,192,12, @@ -36908,7 +37001,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr17n[539] U8G_SECTION(".progmem.u8g_font_gdr 0,15,128,51,192,96,224,192,96,192,96,192,96,192,64,96, 128,31,0,11,17,34,13,1,255,31,0,49,128,96,192,192, 192,192,96,192,96,192,96,224,96,113,224,30,96,0,224,0, - 192,0,192,1,128,3,0,14,0,48,0}; + 192,0,192,1,128,3,0,14,0,48,0,3,14,14,6,2, + 255,64,224,224,224,0,0,0,0,0,0,96,224,224,192}; /* Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -36921,7 +37015,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr17n[539] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =22 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr17r[3380] U8G_SECTION(".progmem.u8g_font_gdr17r") = { +const u8g_fntpgm_uint8_t u8g_font_gdr17r[3380] U8G_FONT_SECTION("u8g_font_gdr17r") = { 0,40,38,242,247,17,4,64,9,46,32,127,250,22,250,21, 250,0,0,0,6,0,0,3,21,21,7,2,255,96,224,224, 224,224,96,96,96,96,96,64,64,64,64,64,0,0,96,224, @@ -37146,7 +37240,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr17r[3380] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =27 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr20[9119] U8G_SECTION(".progmem.u8g_font_gdr20") = { +const u8g_fntpgm_uint8_t u8g_font_gdr20[9119] U8G_FONT_SECTION("u8g_font_gdr20") = { 0,47,44,240,246,20,4,220,11,144,32,255,248,27,247,25, 248,0,0,0,7,0,0,4,23,23,9,2,0,48,112,112, 112,112,112,112,112,112,96,96,96,96,96,96,96,96,64,0, @@ -37729,8 +37823,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr20[9119] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =25 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr20n[619] U8G_SECTION(".progmem.u8g_font_gdr20n") = { - 0,47,44,240,246,19,0,0,0,0,42,57,0,25,251,19, +const u8g_fntpgm_uint8_t u8g_font_gdr20n[640] U8G_FONT_SECTION("u8g_font_gdr20n") = { + 0,47,44,240,246,19,0,0,0,0,42,58,0,25,251,19, 0,12,13,26,14,1,11,6,0,6,0,134,0,102,48,242, 240,27,128,6,0,27,128,114,240,230,48,6,32,6,0,6, 0,12,11,22,13,1,3,6,0,6,0,6,0,6,0,6, @@ -37768,7 +37862,9 @@ const u8g_fntpgm_uint8_t u8g_font_gdr20n[619] U8G_SECTION(".progmem.u8g_font_gdr 112,192,48,192,48,192,32,96,32,112,64,31,128,12,20,40, 15,2,255,15,128,49,192,32,224,64,96,192,112,192,48,192, 48,192,48,192,48,96,112,48,176,31,48,0,96,0,96,0, - 96,0,192,1,128,7,0,30,0,48,0}; + 96,0,192,1,128,7,0,30,0,48,0,4,15,15,7,2, + 0,112,240,240,96,0,0,0,0,0,0,0,112,240,240,224 + }; /* Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -37781,7 +37877,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr20n[619] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =26 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr20r[4232] U8G_SECTION(".progmem.u8g_font_gdr20r") = { +const u8g_fntpgm_uint8_t u8g_font_gdr20r[4232] U8G_FONT_SECTION("u8g_font_gdr20r") = { 0,47,44,240,246,20,4,220,11,144,32,127,248,26,248,25, 248,0,0,0,7,0,0,4,23,23,9,2,0,48,112,112, 112,112,112,112,112,112,96,96,96,96,96,96,96,96,64,0, @@ -38059,7 +38155,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr20r[4232] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =34 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr25[13042] U8G_SECTION(".progmem.u8g_font_gdr25") = { +const u8g_fntpgm_uint8_t u8g_font_gdr25[13042] U8G_FONT_SECTION("u8g_font_gdr25") = { 0,59,57,236,242,25,6,209,16,163,32,255,247,34,245,31, 247,0,0,0,9,0,0,5,30,30,11,3,255,48,112,240, 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, @@ -38888,8 +38984,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr25[13042] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =31 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr25n[810] U8G_SECTION(".progmem.u8g_font_gdr25n") = { - 0,59,57,236,242,24,0,0,0,0,42,57,0,31,249,24, +const u8g_fntpgm_uint8_t u8g_font_gdr25n[835] U8G_FONT_SECTION("u8g_font_gdr25n") = { + 0,59,57,236,242,24,0,0,0,0,42,58,0,31,249,24, 0,16,16,32,18,1,14,1,128,1,128,1,128,97,132,113, 142,121,159,31,248,7,192,3,192,31,248,121,158,241,142,33, 134,1,128,1,128,1,128,15,14,28,16,1,4,3,128,3, @@ -38939,7 +39035,9 @@ const u8g_fntpgm_uint8_t u8g_font_gdr25n[810] U8G_SECTION(".progmem.u8g_font_gdr 15,192,15,25,50,19,2,255,7,192,15,240,56,120,48,60, 112,28,96,28,224,14,224,14,224,14,224,14,240,14,112,30, 120,62,63,238,15,140,0,28,0,28,0,24,0,56,0,112, - 0,224,1,192,7,128,30,0,48,0}; + 0,224,1,192,7,128,30,0,48,0,5,19,19,9,2,255, + 120,248,248,248,96,0,0,0,0,0,0,0,0,0,112,248, + 248,248,112}; /* Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -38952,7 +39050,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr25n[810] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =33 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr25r[6239] U8G_SECTION(".progmem.u8g_font_gdr25r") = { +const u8g_fntpgm_uint8_t u8g_font_gdr25r[6239] U8G_FONT_SECTION("u8g_font_gdr25r") = { 0,59,57,236,242,25,6,209,16,163,32,127,247,33,247,31, 247,0,0,0,9,0,0,5,30,30,11,3,255,48,112,240, 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, @@ -39355,7 +39453,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr25r[6239] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =42 descent=-13 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr30[18369] U8G_SECTION(".progmem.u8g_font_gdr30") = { +const u8g_fntpgm_uint8_t u8g_font_gdr30[18369] U8G_FONT_SECTION("u8g_font_gdr30") = { 0,71,68,232,239,30,9,231,23,124,32,255,245,42,243,38, 245,0,0,0,11,0,0,6,36,36,13,3,255,12,60,124, 124,124,124,124,120,120,120,56,56,56,56,56,56,56,56,56, @@ -40517,8 +40615,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr30[18369] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =38 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr30n[1252] U8G_SECTION(".progmem.u8g_font_gdr30n") = { - 0,71,68,232,239,29,0,0,0,0,42,57,0,38,248,29, +const u8g_fntpgm_uint8_t u8g_font_gdr30n[1281] U8G_FONT_SECTION("u8g_font_gdr30n") = { + 0,71,68,232,239,29,0,0,0,0,42,58,0,38,248,29, 0,18,20,60,21,2,17,0,192,0,1,192,0,1,192,0, 1,192,0,193,193,0,240,195,192,248,207,192,124,223,0,15, 252,0,3,224,0,3,224,0,15,252,0,60,223,0,248,207, @@ -40596,7 +40694,9 @@ const u8g_fntpgm_uint8_t u8g_font_gdr30n[1252] U8G_SECTION(".progmem.u8g_font_gd 224,120,3,224,124,7,224,62,13,224,31,249,224,7,225,192, 0,3,192,0,3,192,0,7,128,0,7,128,0,15,0,0, 30,0,0,60,0,0,120,0,0,240,0,3,224,0,31,128, - 0,56,0,0}; + 0,56,0,0,6,23,23,11,3,255,56,124,252,252,248,112, + 0,0,0,0,0,0,0,0,0,0,0,56,124,252,252,248, + 112}; /* Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -40609,7 +40709,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr30n[1252] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =39 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr30r[8588] U8G_SECTION(".progmem.u8g_font_gdr30r") = { +const u8g_fntpgm_uint8_t u8g_font_gdr30r[8588] U8G_FONT_SECTION("u8g_font_gdr30r") = { 0,71,68,232,239,30,9,231,23,124,32,127,245,39,245,38, 245,0,0,0,11,0,0,6,36,36,13,3,255,12,60,124, 124,124,124,124,120,120,120,56,56,56,56,56,56,56,56,56, @@ -41159,7 +41259,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr30r[8588] U8G_SECTION(".progmem.u8g_font_gd Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr9[3248] U8G_SECTION(".progmem.u8g_font_gdr9") = { +const u8g_fntpgm_uint8_t u8g_font_gdr9[3248] U8G_FONT_SECTION("u8g_font_gdr9") = { 0,23,21,248,251,9,1,255,4,54,32,255,252,13,252,12, 252,0,0,0,3,0,0,2,11,11,4,1,0,192,192,192, 192,192,64,128,128,0,128,128,4,5,5,6,1,6,208,144, @@ -41376,8 +41476,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr9[3248] U8G_SECTION(".progmem.u8g_font_gdr9 Max Font ascent =12 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr9n[235] U8G_SECTION(".progmem.u8g_font_gdr9n") = { - 0,23,21,248,251,9,0,0,0,0,42,57,0,12,254,9, +const u8g_fntpgm_uint8_t u8g_font_gdr9n[248] U8G_FONT_SECTION("u8g_font_gdr9n") = { + 0,23,21,248,251,9,0,0,0,0,42,58,0,12,254,9, 0,5,6,6,7,1,5,32,168,112,112,168,32,5,5,5, 6,1,2,32,32,248,32,32,2,4,4,3,1,254,64,192, 64,128,5,1,1,5,0,3,248,1,2,2,3,1,0,128, @@ -41391,7 +41491,8 @@ const u8g_fntpgm_uint8_t u8g_font_gdr9n[235] U8G_SECTION(".progmem.u8g_font_gdr9 9,9,7,1,0,24,96,64,176,200,136,136,136,112,5,9, 9,7,1,0,248,136,8,16,16,32,32,96,64,5,9,9, 7,1,0,112,200,136,208,112,136,136,136,112,5,9,9,7, - 1,0,112,152,136,136,136,120,16,16,224}; + 1,0,112,152,136,136,136,120,16,16,224,1,7,7,3,1, + 0,128,128,0,0,0,128,128}; /* Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 Copyright: Copyright (c) SIL International, 2003-2008. @@ -41404,7 +41505,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr9n[235] U8G_SECTION(".progmem.u8g_font_gdr9 Max Font ascent =12 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_gdr9r[1553] U8G_SECTION(".progmem.u8g_font_gdr9r") = { +const u8g_fntpgm_uint8_t u8g_font_gdr9r[1553] U8G_FONT_SECTION("u8g_font_gdr9r") = { 0,23,21,248,251,9,1,255,4,54,32,127,252,12,252,12, 252,0,0,0,3,0,0,2,11,11,4,1,0,192,192,192, 192,192,64,128,128,0,128,128,4,5,5,6,1,6,208,144, @@ -41515,7 +41616,7 @@ const u8g_fntpgm_uint8_t u8g_font_gdr9r[1553] U8G_SECTION(".progmem.u8g_font_gdr Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB08[2677] U8G_SECTION(".progmem.u8g_font_helvB08") = { +const u8g_fntpgm_uint8_t u8g_font_helvB08[2677] U8G_FONT_SECTION("u8g_font_helvB08") = { 0,12,19,255,251,8,1,182,3,122,32,255,254,11,254,8, 254,0,0,0,3,0,1,2,8,8,4,1,0,192,192,192, 192,128,128,0,192,3,3,3,5,1,5,160,160,160,7,7, @@ -41684,6 +41785,34 @@ const u8g_fntpgm_uint8_t u8g_font_helvB08[2677] U8G_SECTION(".progmem.u8g_font_h 216,120,48,48,96,5,10,10,6,0,254,192,192,240,216,200, 200,216,240,192,192,5,10,10,6,0,254,80,0,216,216,216, 216,120,48,48,96}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 8 + Calculated Max Values w= 6 h= 8 x= 1 y= 5 dx= 6 dy= 0 ascent= 8 len= 8 + Font Bounding box w=12 h=19 x=-1 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB08n[228] U8G_FONT_SECTION("u8g_font_helvB08n") = { + 0,12,19,255,251,8,0,0,0,0,42,58,0,8,254,8, + 0,3,3,3,4,0,5,160,64,160,6,5,5,6,0,1, + 48,48,252,48,48,2,4,4,3,0,254,192,192,64,128,4, + 1,1,5,0,3,240,2,2,2,3,0,0,192,192,4,8, + 8,4,0,0,16,16,32,32,64,64,128,128,5,8,8,6, + 0,0,112,216,216,216,216,216,216,112,3,8,8,6,1,0, + 96,224,96,96,96,96,96,96,5,8,8,6,0,0,112,216, + 24,24,48,96,192,248,5,8,8,6,0,0,112,216,24,48, + 24,24,216,112,6,8,8,6,0,0,8,24,56,88,152,252, + 24,24,5,8,8,6,0,0,248,192,192,240,24,152,216,112, + 5,8,8,6,0,0,112,216,192,240,216,216,216,112,5,8, + 8,6,0,0,248,24,24,48,48,96,96,96,5,8,8,6, + 0,0,112,216,216,112,216,216,216,112,5,8,8,6,0,0, + 112,216,216,216,120,24,216,112,2,6,6,3,0,0,192,192, + 0,0,192,192}; /* Fontname: -Adobe-Helvetica-Bold-R-Normal--11-80-100-100-P-60-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -41696,7 +41825,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB08[2677] U8G_SECTION(".progmem.u8g_font_h Max Font ascent = 9 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB08r[1287] U8G_SECTION(".progmem.u8g_font_helvB08r") = { +const u8g_fntpgm_uint8_t u8g_font_helvB08r[1287] U8G_FONT_SECTION("u8g_font_helvB08r") = { 0,12,19,255,251,8,1,182,3,122,32,127,254,9,254,8, 254,0,0,0,3,0,1,2,8,8,4,1,0,192,192,192, 192,128,128,0,192,3,3,3,5,1,5,160,160,160,7,7, @@ -41790,7 +41919,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB08r[1287] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB10[3692] U8G_SECTION(".progmem.u8g_font_helvB10") = { +const u8g_fntpgm_uint8_t u8g_font_helvB10[3692] U8G_FONT_SECTION("u8g_font_helvB10") = { 0,17,23,255,250,11,2,27,4,205,32,255,253,14,253,11, 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, 192,192,192,128,128,0,192,192,5,3,3,7,1,8,216,216, @@ -42022,6 +42151,36 @@ const u8g_fntpgm_uint8_t u8g_font_helvB10[3692] U8G_SECTION(".progmem.u8g_font_h 24,24,48,112,7,14,14,9,1,253,192,192,192,216,236,198, 198,198,198,236,216,192,192,192,8,14,14,8,0,253,54,54, 0,195,195,102,102,36,60,24,24,24,48,112}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 8 h=11 x= 2 y= 7 dx= 9 dy= 0 ascent=11 len=11 + Font Bounding box w=17 h=23 x=-1 y=-6 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB10n[265] U8G_FONT_SECTION("u8g_font_helvB10n") = { + 0,17,23,255,250,11,0,0,0,0,42,58,0,11,255,11, + 0,5,4,4,6,0,7,32,248,112,216,8,7,7,9,0, + 1,24,24,24,255,24,24,24,3,3,3,4,0,255,96,96, + 192,3,1,1,4,0,4,224,2,2,2,4,1,0,192,192, + 4,11,11,4,0,0,16,16,48,32,32,96,64,64,192,128, + 128,7,11,11,8,0,0,56,108,198,198,198,198,198,198,198, + 108,56,4,11,11,8,1,0,48,240,48,48,48,48,48,48, + 48,48,48,7,11,11,8,0,0,124,198,198,6,14,12,24, + 48,96,192,254,7,11,11,8,0,0,124,198,198,6,6,60, + 6,6,198,198,124,8,11,11,8,0,0,6,14,30,54,102, + 198,198,255,6,6,6,7,11,11,8,0,0,126,96,96,192, + 252,14,6,6,198,204,120,7,11,11,8,0,0,60,102,102, + 192,220,230,198,198,198,198,124,7,11,11,8,0,0,254,6, + 12,12,24,24,48,48,96,96,96,7,11,11,8,0,0,124, + 198,198,198,198,124,198,198,198,198,124,7,11,11,8,0,0, + 124,198,198,198,198,198,126,6,198,204,120,2,8,8,5,2, + 0,192,192,0,0,0,0,192,192}; /* Fontname: -Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -42034,7 +42193,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB10[3692] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB10r[1720] U8G_SECTION(".progmem.u8g_font_helvB10r") = { +const u8g_fntpgm_uint8_t u8g_font_helvB10r[1720] U8G_FONT_SECTION("u8g_font_helvB10r") = { 0,17,23,255,250,11,2,27,4,205,32,127,253,12,253,11, 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, 192,192,192,128,128,0,192,192,5,3,3,7,1,8,216,216, @@ -42155,7 +42314,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB10r[1720] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB12[4077] U8G_SECTION(".progmem.u8g_font_helvB12") = { +const u8g_fntpgm_uint8_t u8g_font_helvB12[4077] U8G_FONT_SECTION("u8g_font_helvB12") = { 0,20,27,254,249,12,2,74,5,106,32,255,252,16,252,12, 252,0,0,0,5,0,1,2,12,12,6,2,0,192,192,192, 192,192,192,128,128,128,0,192,192,5,4,4,8,1,8,216, @@ -42411,6 +42570,37 @@ const u8g_fntpgm_uint8_t u8g_font_helvB12[4077] U8G_SECTION(".progmem.u8g_font_h 96,8,16,16,10,1,252,192,192,192,220,254,231,195,195,195, 231,254,220,192,192,192,192,8,16,16,9,0,252,54,54,0, 195,195,99,102,54,54,60,28,24,24,24,112,96}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 12 + Calculated Max Values w= 8 h=12 x= 2 y= 7 dx=10 dy= 0 ascent=12 len=12 + Font Bounding box w=20 h=27 x=-2 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB12n[281] U8G_FONT_SECTION("u8g_font_helvB12n") = { + 0,20,27,254,249,12,0,0,0,0,42,58,0,12,253,12, + 0,5,5,5,6,0,7,32,168,112,112,136,8,8,8,10, + 1,0,24,24,24,255,255,24,24,24,2,5,5,4,1,253, + 192,192,64,64,128,4,2,2,5,0,3,240,240,2,2,2, + 4,1,0,192,192,4,12,12,5,0,0,16,16,48,32,32, + 96,64,64,192,128,128,128,8,12,12,9,0,0,60,126,231, + 195,195,195,195,195,195,231,126,60,5,12,12,9,1,0,8, + 24,248,248,24,24,24,24,24,24,24,24,8,12,12,9,0, + 0,60,126,231,195,195,7,14,28,56,112,255,255,8,12,12, + 9,0,0,60,126,231,195,7,30,30,7,195,231,126,60,8, + 12,12,9,0,0,14,30,54,54,102,102,198,255,255,6,6, + 6,8,12,12,9,0,0,63,63,48,48,124,126,71,3,3, + 231,126,60,8,12,12,9,0,0,60,126,231,192,220,254,231, + 195,195,231,126,60,8,12,12,9,0,0,255,255,6,6,12, + 12,24,24,24,48,48,48,8,12,12,9,0,0,60,126,231, + 195,102,60,126,231,195,231,126,60,8,12,12,9,0,0,60, + 126,231,195,195,231,127,59,3,231,126,60,2,8,8,5,2, + 0,192,192,0,0,0,0,192,192}; /* Fontname: -Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -42423,7 +42613,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB12[4077] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB12r[1914] U8G_SECTION(".progmem.u8g_font_helvB12r") = { +const u8g_fntpgm_uint8_t u8g_font_helvB12r[1914] U8G_FONT_SECTION("u8g_font_helvB12r") = { 0,20,27,254,249,12,2,74,5,106,32,127,252,13,252,12, 252,0,0,0,5,0,1,2,12,12,6,2,0,192,192,192, 192,192,192,128,128,128,0,192,192,5,4,4,8,1,8,216, @@ -42556,7 +42746,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB12r[1914] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =18 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB14[5489] U8G_SECTION(".progmem.u8g_font_helvB14") = { +const u8g_fntpgm_uint8_t u8g_font_helvB14[5489] U8G_FONT_SECTION("u8g_font_helvB14") = { 0,22,29,254,249,14,3,23,6,234,32,255,252,18,251,14, 252,0,0,0,5,0,1,3,14,14,5,1,0,224,224,224, 224,224,224,224,224,192,192,0,224,224,224,5,5,5,7,1, @@ -42901,6 +43091,46 @@ const u8g_fntpgm_uint8_t u8g_font_helvB14[5489] U8G_SECTION(".progmem.u8g_font_h 0,51,0,0,0,227,128,227,128,227,128,119,0,119,0,119, 0,62,0,62,0,28,0,28,0,28,0,24,0,120,0,112, 0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 13 + Calculated Max Values w= 9 h=14 x= 1 y= 8 dx=11 dy= 0 ascent=14 len=26 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =13 descent= 0 + X Font ascent =13 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB14n[416] U8G_FONT_SECTION("u8g_font_helvB14n") = { + 0,22,29,254,249,13,0,0,0,0,42,58,0,14,253,13, + 0,7,6,6,9,1,8,16,214,124,56,108,68,8,8,8, + 11,1,1,24,24,24,255,255,24,24,24,3,6,6,5,1, + 253,224,224,224,96,192,128,5,3,3,6,0,4,248,248,248, + 3,3,3,5,1,0,224,224,224,5,14,14,5,0,0,24, + 24,24,56,48,48,48,112,96,96,224,192,192,192,9,13,26, + 10,0,0,28,0,127,0,119,0,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,119,0,127,0,28,0,6,13,13, + 10,1,0,28,60,252,252,28,28,28,28,28,28,28,28,28, + 9,13,26,10,0,0,62,0,127,0,227,128,227,128,3,128, + 7,0,31,0,62,0,120,0,112,0,224,0,255,128,255,128, + 9,13,26,10,0,0,62,0,127,0,231,0,227,0,7,0, + 30,0,31,0,7,128,3,128,227,128,231,128,127,0,62,0, + 9,13,26,10,0,0,7,0,15,0,31,0,63,0,55,0, + 119,0,103,0,231,0,255,128,255,128,7,0,7,0,7,0, + 9,13,26,10,0,0,255,0,255,0,224,0,224,0,254,0, + 255,0,231,128,3,128,3,128,227,128,231,128,255,0,126,0, + 9,13,26,10,0,0,63,0,127,128,113,128,224,0,238,0, + 255,0,243,128,225,128,225,128,225,128,243,128,127,0,62,0, + 9,13,26,10,0,0,255,128,255,128,3,128,7,0,14,0, + 14,0,28,0,28,0,56,0,56,0,112,0,112,0,112,0, + 9,13,26,10,0,0,62,0,127,0,227,128,227,128,227,128, + 127,0,62,0,119,0,227,128,227,128,227,128,127,0,62,0, + 9,13,26,10,0,0,62,0,127,0,231,128,195,128,195,128, + 195,128,231,128,127,128,59,128,3,128,199,0,255,0,126,0, + 3,10,10,6,1,0,224,224,224,0,0,0,0,224,224,224 + }; /* Fontname: -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -42913,7 +43143,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB14[5489] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =14 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB14r[2548] U8G_SECTION(".progmem.u8g_font_helvB14r") = { +const u8g_fntpgm_uint8_t u8g_font_helvB14r[2548] U8G_FONT_SECTION("u8g_font_helvB14r") = { 0,22,29,254,249,14,3,23,6,234,32,127,252,14,252,14, 252,0,0,0,5,0,1,3,14,14,5,1,0,224,224,224, 224,224,224,224,224,192,192,0,224,224,224,5,5,5,7,1, @@ -43086,7 +43316,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB14r[2548] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =24 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB18[7527] U8G_SECTION(".progmem.u8g_font_helvB18") = { +const u8g_fntpgm_uint8_t u8g_font_helvB18[7527] U8G_FONT_SECTION("u8g_font_helvB18") = { 0,28,37,254,248,19,4,35,9,107,32,255,251,24,251,19, 251,0,0,0,6,0,1,3,19,19,7,2,0,224,224,224, 224,224,224,224,224,224,224,224,192,192,192,0,0,224,224,224, @@ -43558,6 +43788,53 @@ const u8g_fntpgm_uint8_t u8g_font_helvB18[7527] U8G_SECTION(".progmem.u8g_font_h 0,224,56,224,56,112,56,120,112,56,112,60,240,28,224,28, 224,15,192,15,192,7,192,7,128,3,128,3,128,7,0,7, 0,14,0,62,0,60,0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--25-180-100-100-P-138-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 18 + Calculated Max Values w=12 h=19 x= 2 y=12 dx=15 dy= 0 ascent=19 len=36 + Font Bounding box w=28 h=37 x=-2 y=-8 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =19 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB18n[537] U8G_FONT_SECTION("u8g_font_helvB18n") = { + 0,28,37,254,248,18,0,0,0,0,42,58,0,19,253,18, + 0,8,7,7,10,1,12,24,24,219,255,60,102,102,12,12, + 24,15,1,1,6,0,6,0,6,0,6,0,6,0,255,240, + 255,240,6,0,6,0,6,0,6,0,6,0,3,6,6,7, + 2,253,224,224,224,96,96,192,7,3,3,8,0,6,254,254, + 254,3,3,3,7,2,0,224,224,224,7,19,19,8,1,0, + 6,6,6,12,12,12,24,24,24,24,48,48,48,96,96,96, + 192,192,192,12,18,36,13,0,0,31,128,63,192,121,224,112, + 224,112,224,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,112,224,112,224,121,224,63,192,31,128,7,18,18, + 13,2,0,14,14,30,254,254,14,14,14,14,14,14,14,14, + 14,14,14,14,14,12,18,36,13,0,0,31,0,127,192,113, + 224,224,224,224,112,224,112,0,112,0,224,1,224,3,192,7, + 128,31,0,60,0,120,0,240,0,224,0,255,240,255,240,12, + 18,36,13,0,0,31,0,127,192,113,192,224,224,224,224,224, + 224,0,224,1,192,15,128,15,224,0,224,0,112,0,112,224, + 112,224,240,113,224,127,224,31,128,12,18,36,13,0,0,1, + 192,3,192,3,192,7,192,7,192,13,192,29,192,25,192,49, + 192,113,192,97,192,225,192,255,240,255,240,1,192,1,192,1, + 192,1,192,12,18,36,13,0,0,127,224,127,224,112,0,112, + 0,112,0,112,0,127,128,127,192,113,224,0,224,0,112,0, + 112,0,112,224,112,224,240,241,224,127,192,31,128,12,18,36, + 13,0,0,15,128,63,224,120,224,112,112,224,112,224,0,224, + 0,239,0,255,192,249,224,240,224,224,112,224,112,224,112,112, + 224,121,224,63,192,31,128,12,18,36,13,0,0,255,240,255, + 240,0,240,0,224,1,192,1,192,3,128,3,128,7,0,7, + 0,14,0,14,0,30,0,28,0,28,0,60,0,56,0,56, + 0,12,18,36,13,0,0,15,0,63,192,57,192,112,224,112, + 224,112,224,112,224,57,192,31,128,63,192,112,224,224,112,224, + 112,224,112,224,112,112,224,127,224,31,128,12,18,36,13,0, + 0,31,128,127,192,121,224,240,224,224,112,224,112,224,112,224, + 112,240,240,121,240,127,240,31,112,0,112,0,112,224,224,243, + 224,127,192,31,0,3,14,14,7,2,0,224,224,224,0,0, + 0,0,0,0,0,0,224,224,224}; /* Fontname: -Adobe-Helvetica-Bold-R-Normal--25-180-100-100-P-138-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -43570,7 +43847,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB18[7527] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =19 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB18r[3453] U8G_SECTION(".progmem.u8g_font_helvB18r") = { +const u8g_fntpgm_uint8_t u8g_font_helvB18r[3453] U8G_FONT_SECTION("u8g_font_helvB18r") = { 0,28,37,254,248,19,4,35,9,107,32,127,251,19,251,19, 251,0,0,0,6,0,1,3,19,19,7,2,0,224,224,224, 224,224,224,224,224,224,224,224,192,192,192,0,0,224,224,224, @@ -43799,7 +44076,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB18r[3453] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =31 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB24[11554] U8G_SECTION(".progmem.u8g_font_helvB24") = { +const u8g_fntpgm_uint8_t u8g_font_helvB24[11554] U8G_FONT_SECTION("u8g_font_helvB24") = { 0,40,49,250,244,25,5,252,14,144,32,255,249,31,249,25, 249,0,0,0,9,0,1,5,25,25,11,3,0,248,248,248, 248,248,248,248,248,248,248,248,112,112,112,112,112,112,112,0, @@ -44527,7 +44804,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB24[11554] U8G_SECTION(".progmem.u8g_font_ Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. Capital A Height: 0, '1' Height: 23 - Calculated Max Values w=17 h=25 x= 2 y=13 dx=19 dy= 0 ascent=25 len=72 + Calculated Max Values w=17 h=25 x= 3 y=13 dx=19 dy= 0 ascent=25 len=72 Font Bounding box w=40 h=49 x=-6 y=-12 Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 Pure Font ascent =23 descent= 0 @@ -44535,8 +44812,8 @@ const u8g_fntpgm_uint8_t u8g_font_helvB24[11554] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =25 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB24n[720] U8G_SECTION(".progmem.u8g_font_helvB24n") = { - 0,40,49,250,244,23,0,0,0,0,42,57,0,25,250,23, +const u8g_fntpgm_uint8_t u8g_font_helvB24n[743] U8G_FONT_SECTION("u8g_font_helvB24n") = { + 0,40,49,250,244,23,0,0,0,0,42,58,0,25,250,23, 0,10,11,22,13,1,13,12,0,12,0,76,128,237,192,255, 192,127,128,30,0,63,0,127,128,115,128,33,0,16,16,32, 19,1,0,3,192,3,192,3,192,3,192,3,192,3,192,255, @@ -44580,8 +44857,9 @@ const u8g_fntpgm_uint8_t u8g_font_helvB24n[720] U8G_SECTION(".progmem.u8g_font_h 0,63,254,0,31,252,0,7,240,0,15,24,48,18,1,0, 7,192,31,240,63,248,127,252,124,124,248,62,240,30,240,30, 240,30,240,30,248,62,252,126,127,254,127,254,63,222,7,158, - 0,30,0,30,240,60,248,124,127,248,127,248,31,240,7,192 - }; + 0,30,0,30,240,60,248,124,127,248,127,248,31,240,7,192, + 5,17,17,11,3,0,248,248,248,248,248,0,0,0,0,0, + 0,0,248,248,248,248,248}; /* Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -44594,7 +44872,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB24n[720] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =25 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvB24r[5214] U8G_SECTION(".progmem.u8g_font_helvB24r") = { +const u8g_fntpgm_uint8_t u8g_font_helvB24r[5214] U8G_FONT_SECTION("u8g_font_helvB24r") = { 0,40,49,250,244,25,5,252,14,144,32,127,249,25,249,25, 249,0,0,0,9,0,1,5,25,25,11,3,0,248,248,248, 248,248,248,248,248,248,248,248,112,112,112,112,112,112,112,0, @@ -44933,7 +45211,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvB24r[5214] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR08[2687] U8G_SECTION(".progmem.u8g_font_helvR08") = { +const u8g_fntpgm_uint8_t u8g_font_helvR08[2687] U8G_FONT_SECTION("u8g_font_helvR08") = { 0,13,18,254,252,8,1,178,3,111,32,255,254,11,254,8, 254,0,0,0,3,0,1,1,8,8,3,1,0,128,128,128, 128,128,128,0,128,3,2,2,4,1,6,160,160,6,7,7, @@ -45102,6 +45380,34 @@ const u8g_fntpgm_uint8_t u8g_font_helvR08[2687] U8G_SECTION(".progmem.u8g_font_h 11,5,255,254,8,16,0,72,72,80,80,48,32,32,192,5, 10,10,6,0,254,128,128,176,200,136,136,200,176,128,128,5, 10,10,5,255,254,80,0,72,72,80,80,48,32,32,192}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 8 + Calculated Max Values w= 5 h= 8 x= 1 y= 5 dx= 6 dy= 0 ascent= 8 len= 8 + Font Bounding box w=13 h=18 x=-2 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR08n[226] U8G_FONT_SECTION("u8g_font_helvR08n") = { + 0,13,18,254,252,8,0,0,0,0,42,58,0,8,254,8, + 0,3,3,3,4,0,5,160,64,160,5,5,5,6,0,1, + 32,32,248,32,32,2,3,3,3,0,254,64,64,128,3,1, + 1,4,0,3,224,1,1,1,3,1,0,128,3,8,8,3, + 0,0,32,32,64,64,64,64,128,128,5,8,8,6,0,0, + 112,136,136,136,136,136,136,112,2,8,8,6,1,0,64,192, + 64,64,64,64,64,64,5,8,8,6,0,0,112,136,8,8, + 48,64,128,248,5,8,8,6,0,0,112,136,8,48,8,8, + 136,112,5,8,8,6,0,0,16,48,80,80,144,248,16,16, + 5,8,8,6,0,0,120,64,64,112,8,8,136,112,5,8, + 8,6,0,0,112,136,128,240,136,136,136,112,5,8,8,6, + 0,0,248,8,16,32,32,64,64,64,5,8,8,6,0,0, + 112,136,136,112,136,136,136,112,5,8,8,6,0,0,112,136, + 136,136,120,8,136,112,1,6,6,3,1,0,128,0,0,0, + 0,128}; /* Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -45114,7 +45420,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR08[2687] U8G_SECTION(".progmem.u8g_font_h Max Font ascent = 9 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR08r[1276] U8G_SECTION(".progmem.u8g_font_helvR08r") = { +const u8g_fntpgm_uint8_t u8g_font_helvR08r[1276] U8G_FONT_SECTION("u8g_font_helvR08r") = { 0,13,18,254,252,8,1,178,3,111,32,127,254,9,254,8, 254,0,0,0,3,0,1,1,8,8,3,1,0,128,128,128, 128,128,128,0,128,3,2,2,4,1,6,160,160,6,7,7, @@ -45207,7 +45513,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR08r[1276] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR10[3527] U8G_SECTION(".progmem.u8g_font_helvR10") = { +const u8g_fntpgm_uint8_t u8g_font_helvR10[3527] U8G_FONT_SECTION("u8g_font_helvR10") = { 0,17,22,254,251,11,2,10,4,133,32,255,253,14,253,11, 253,0,0,0,4,0,1,1,11,11,4,2,0,128,128,128, 128,128,128,128,128,0,128,128,3,3,3,5,1,8,160,160, @@ -45429,6 +45735,36 @@ const u8g_fntpgm_uint8_t u8g_font_helvR10[3527] U8G_SECTION(".progmem.u8g_font_h 14,14,8,1,253,128,128,128,184,204,132,132,132,132,204,184, 128,128,128,7,14,14,7,0,253,36,36,0,130,194,68,68, 36,40,24,16,16,48,96}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 7 h=11 x= 2 y= 6 dx= 9 dy= 0 ascent=11 len=11 + Font Bounding box w=17 h=22 x=-2 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR10n[267] U8G_FONT_SECTION("u8g_font_helvR10n") = { + 0,17,22,254,251,11,0,0,0,0,42,58,0,11,254,11, + 0,5,5,5,7,1,6,32,168,112,168,32,7,7,7,9, + 1,1,16,16,16,254,16,16,16,2,4,4,3,0,254,64, + 64,64,128,3,1,1,4,0,4,224,1,2,2,3,1,0, + 128,128,4,11,11,4,0,0,16,16,32,32,32,64,64,64, + 128,128,128,6,11,11,8,1,0,120,132,132,132,132,132,132, + 132,132,132,120,3,11,11,8,2,0,32,224,32,32,32,32, + 32,32,32,32,32,6,11,11,8,1,0,120,132,132,4,8, + 16,32,64,128,128,252,6,11,11,8,1,0,120,132,132,4, + 4,56,4,4,132,132,120,7,11,11,8,1,0,4,12,20, + 36,68,132,132,254,4,4,4,6,11,11,8,1,0,252,128, + 128,128,248,4,4,4,132,132,120,6,11,11,8,1,0,120, + 132,128,128,184,196,132,132,132,132,120,6,11,11,8,1,0, + 252,4,8,8,16,16,32,32,64,64,64,6,11,11,8,1, + 0,120,132,132,132,132,120,132,132,132,132,120,6,11,11,8, + 1,0,120,132,132,132,132,124,4,4,132,132,120,1,8,8, + 3,1,0,128,128,0,0,0,0,128,128}; /* Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -45441,7 +45777,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR10[3527] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR10r[1648] U8G_SECTION(".progmem.u8g_font_helvR10r") = { +const u8g_fntpgm_uint8_t u8g_font_helvR10r[1648] U8G_FONT_SECTION("u8g_font_helvR10r") = { 0,17,22,254,251,11,2,10,4,133,32,127,253,12,253,11, 253,0,0,0,4,0,1,1,11,11,4,2,0,128,128,128, 128,128,128,128,128,0,128,128,3,3,3,5,1,8,160,160, @@ -45558,7 +45894,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR10r[1648] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR12[4077] U8G_SECTION(".progmem.u8g_font_helvR12") = { +const u8g_fntpgm_uint8_t u8g_font_helvR12[4077] U8G_FONT_SECTION("u8g_font_helvR12") = { 0,20,26,254,250,12,2,91,5,99,32,255,252,16,252,12, 252,0,0,0,5,0,1,1,12,12,5,2,0,128,128,128, 128,128,128,128,128,128,0,128,128,4,4,4,6,1,8,144, @@ -45814,6 +46150,38 @@ const u8g_fntpgm_uint8_t u8g_font_helvR12[4077] U8G_SECTION(".progmem.u8g_font_h 32,192,7,16,16,9,1,252,128,128,128,184,196,130,130,130, 130,130,196,184,128,128,128,128,7,15,15,8,0,253,40,40, 0,130,130,68,68,40,40,56,16,16,32,32,192}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 12 + Calculated Max Values w= 9 h=12 x= 3 y= 7 dx=10 dy= 0 ascent=12 len=18 + Font Bounding box w=20 h=26 x=-2 y=-6 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =12 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR12n[290] U8G_FONT_SECTION("u8g_font_helvR12n") = { + 0,20,26,254,250,12,0,0,0,0,42,58,0,12,254,12, + 0,5,5,5,6,0,7,32,168,112,80,136,9,9,18,10, + 0,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,2,4,4,4,1,254,64,64,64,128,4,1, + 1,5,0,4,240,1,2,2,4,2,0,128,128,4,12,12, + 5,0,0,16,16,32,32,32,32,64,64,64,128,128,128,7, + 12,12,9,1,0,56,68,68,130,130,130,130,130,130,68,68, + 56,3,12,12,9,3,0,32,32,96,160,32,32,32,32,32, + 32,32,32,7,12,12,9,1,0,56,68,130,130,2,4,8, + 48,64,128,128,254,7,12,12,9,1,0,56,68,130,130,4, + 56,4,2,130,130,68,56,8,12,12,9,0,0,12,20,20, + 36,36,68,68,132,255,4,4,4,7,12,12,9,1,0,62, + 32,32,64,120,68,2,2,2,130,68,56,7,12,12,9,1, + 0,60,66,130,128,184,196,130,130,130,130,68,56,8,12,12, + 9,0,0,255,1,2,4,4,8,8,16,16,16,32,32,7, + 12,12,9,1,0,56,68,130,130,68,56,68,130,130,130,68, + 56,7,12,12,9,1,0,56,68,130,130,130,130,70,58,2, + 130,132,120,1,9,9,4,2,0,128,128,0,0,0,0,0, + 128,128}; /* Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -45826,7 +46194,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR12[4077] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR12r[1907] U8G_SECTION(".progmem.u8g_font_helvR12r") = { +const u8g_fntpgm_uint8_t u8g_font_helvR12r[1907] U8G_FONT_SECTION("u8g_font_helvR12r") = { 0,20,26,254,250,12,2,91,5,99,32,127,252,13,252,12, 252,0,0,0,5,0,1,1,12,12,5,2,0,128,128,128, 128,128,128,128,128,128,0,128,128,4,4,4,6,1,8,144, @@ -45959,7 +46327,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR12r[1907] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =18 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR14[4920] U8G_SECTION(".progmem.u8g_font_helvR14") = { +const u8g_fntpgm_uint8_t u8g_font_helvR14[4920] U8G_FONT_SECTION("u8g_font_helvR14") = { 0,22,29,254,249,14,2,149,6,82,32,255,252,18,252,14, 252,0,0,0,5,0,1,2,14,14,6,2,0,192,192,192, 192,192,192,192,192,128,128,0,0,192,192,5,5,5,5,0, @@ -46268,6 +46636,39 @@ const u8g_fntpgm_uint8_t u8g_font_helvR14[4920] U8G_SECTION(".progmem.u8g_font_h 193,128,227,0,255,0,222,0,192,0,192,0,192,0,192,0, 8,18,18,10,1,252,102,102,0,0,195,195,195,102,102,102, 36,60,24,24,24,24,112,112}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 13 + Calculated Max Values w= 9 h=14 x= 2 y= 7 dx=10 dy= 0 ascent=14 len=26 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =13 descent= 0 + X Font ascent =13 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR14n[311] U8G_FONT_SECTION("u8g_font_helvR14n") = { + 0,22,29,254,249,13,0,0,0,0,42,58,0,14,253,13, + 0,5,7,7,7,1,7,32,168,248,32,248,168,32,8,10, + 10,10,1,0,24,24,24,24,255,255,24,24,24,24,2,5, + 5,5,1,253,192,192,64,64,128,5,1,1,6,0,5,248, + 2,2,2,5,1,0,192,192,5,14,14,5,0,0,24,24, + 24,24,48,48,48,96,96,96,192,192,192,192,8,13,13,10, + 1,0,60,126,102,195,195,195,195,195,195,195,102,126,60,5, + 13,13,10,2,0,24,248,248,24,24,24,24,24,24,24,24, + 24,24,8,13,13,10,1,0,60,254,195,3,7,14,28,56, + 112,224,192,255,255,8,13,13,10,1,0,62,127,195,195,6, + 28,30,7,3,195,199,126,60,9,13,26,10,0,0,3,0, + 7,0,15,0,27,0,51,0,51,0,99,0,195,0,255,128, + 255,128,3,0,3,0,3,0,8,13,13,10,1,0,254,254, + 192,192,252,254,199,3,3,195,199,254,124,8,13,13,10,1, + 0,60,127,99,192,192,220,254,195,195,195,227,126,60,8,13, + 13,10,1,0,255,255,3,6,12,12,24,24,48,48,96,96, + 96,8,13,13,10,1,0,60,126,231,195,195,102,126,231,195, + 195,231,126,60,8,13,13,10,1,0,60,126,199,195,195,195, + 127,59,3,3,198,254,124,2,10,10,5,1,0,192,192,0, + 0,0,0,0,0,192,192}; /* Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -46280,7 +46681,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR14[4920] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =14 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR14r[2281] U8G_SECTION(".progmem.u8g_font_helvR14r") = { +const u8g_fntpgm_uint8_t u8g_font_helvR14r[2281] U8G_FONT_SECTION("u8g_font_helvR14r") = { 0,22,29,254,249,14,2,149,6,82,32,127,252,14,252,14, 252,0,0,0,5,0,1,2,14,14,6,2,0,192,192,192, 192,192,192,192,192,128,128,0,0,192,192,5,5,5,5,0, @@ -46436,7 +46837,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR14r[2281] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =24 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR18[7307] U8G_SECTION(".progmem.u8g_font_helvR18") = { +const u8g_fntpgm_uint8_t u8g_font_helvR18[7307] U8G_FONT_SECTION("u8g_font_helvR18") = { 0,28,37,253,248,19,4,37,9,49,32,255,251,24,251,19, 251,0,0,0,6,0,1,2,19,19,6,2,0,192,192,192, 192,192,192,192,192,192,192,192,192,128,128,0,0,192,192,192, @@ -46894,6 +47295,53 @@ const u8g_fntpgm_uint8_t u8g_font_helvR18[7307] U8G_SECTION(".progmem.u8g_font_h 128,0,0,0,0,192,48,192,48,96,48,112,96,48,96,56, 224,24,192,24,192,13,128,13,128,7,128,7,0,3,0,3, 0,6,0,6,0,12,0,60,0,56,0}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 18 + Calculated Max Values w=12 h=19 x= 2 y=12 dx=14 dy= 0 ascent=19 len=36 + Font Bounding box w=28 h=37 x=-3 y=-8 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =19 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR18n[536] U8G_FONT_SECTION("u8g_font_helvR18n") = { + 0,28,37,253,248,18,0,0,0,0,42,58,0,19,253,18, + 0,7,7,7,10,1,12,16,16,214,124,56,108,68,12,12, + 24,14,1,1,6,0,6,0,6,0,6,0,6,0,255,240, + 255,240,6,0,6,0,6,0,6,0,6,0,2,6,6,6, + 2,253,192,192,192,64,64,128,6,2,2,8,1,6,252,252, + 2,3,3,6,2,0,192,192,192,7,19,19,7,0,0,6, + 4,12,12,8,24,24,16,16,48,48,32,96,96,64,192,192, + 128,128,11,18,36,13,1,0,31,0,63,128,113,192,96,192, + 96,192,224,224,192,96,192,96,192,96,192,96,192,96,192,96, + 224,224,96,192,96,192,113,192,63,128,31,0,6,18,18,13, + 2,0,12,12,28,252,252,12,12,12,12,12,12,12,12,12, + 12,12,12,12,11,18,36,13,1,0,30,0,127,128,97,192, + 192,192,192,96,192,96,0,224,0,192,1,192,3,128,15,0, + 28,0,56,0,112,0,224,0,192,0,255,224,255,224,11,18, + 36,13,1,0,31,0,127,128,97,128,192,192,192,192,192,192, + 0,192,1,128,15,0,15,192,0,192,0,96,0,96,192,96, + 192,192,97,192,127,128,31,0,11,18,36,13,1,0,1,128, + 3,128,3,128,7,128,15,128,13,128,25,128,57,128,49,128, + 97,128,225,128,193,128,255,224,255,224,1,128,1,128,1,128, + 1,128,11,18,36,13,1,0,127,192,127,192,96,0,96,0, + 96,0,96,0,126,0,127,128,113,192,0,192,0,224,0,96, + 0,96,192,224,192,192,225,192,127,128,30,0,11,18,36,13, + 1,0,15,0,63,192,112,192,96,96,224,96,192,0,192,0, + 207,0,223,128,241,192,224,192,192,96,192,96,192,96,224,224, + 113,192,127,192,31,0,11,18,36,13,1,0,255,224,255,224, + 0,224,0,192,1,128,1,128,3,0,3,0,6,0,6,0, + 12,0,12,0,28,0,24,0,24,0,56,0,48,0,48,0, + 11,18,36,13,1,0,14,0,63,128,49,128,96,192,96,192, + 96,192,49,128,31,0,63,128,113,192,96,192,192,96,192,96, + 192,96,192,96,96,192,127,192,31,0,11,18,36,13,1,0, + 31,0,127,192,113,192,224,192,192,96,192,96,192,96,192,96, + 224,224,113,224,127,96,30,96,0,96,0,224,192,192,225,192, + 127,128,30,0,2,14,14,6,2,0,192,192,192,0,0,0, + 0,0,0,0,0,192,192,192}; /* Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -46906,7 +47354,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR18[7307] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =20 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR18r[3381] U8G_SECTION(".progmem.u8g_font_helvR18r") = { +const u8g_fntpgm_uint8_t u8g_font_helvR18r[3381] U8G_FONT_SECTION("u8g_font_helvR18r") = { 0,28,37,253,248,19,4,37,9,49,32,127,251,20,251,19, 251,0,0,0,6,0,1,2,19,19,6,2,0,192,192,192, 192,192,192,192,192,192,192,192,192,128,128,0,0,192,192,192, @@ -47131,7 +47579,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR18r[3381] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =31 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR24[10931] U8G_SECTION(".progmem.u8g_font_helvR24") = { +const u8g_fntpgm_uint8_t u8g_font_helvR24[10931] U8G_FONT_SECTION("u8g_font_helvR24") = { 0,39,48,251,245,25,5,215,14,105,32,255,249,31,249,25, 249,0,0,0,9,0,1,3,25,25,9,4,0,224,224,224, 224,224,224,224,224,224,224,224,224,224,224,224,224,224,64,64, @@ -47820,7 +48268,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR24[10931] U8G_SECTION(".progmem.u8g_font_ Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. Capital A Height: 0, '1' Height: 24 - Calculated Max Values w=17 h=24 x= 3 y=15 dx=19 dy= 0 ascent=26 len=48 + Calculated Max Values w=17 h=24 x= 4 y=15 dx=19 dy= 0 ascent=26 len=48 Font Bounding box w=39 h=48 x=-5 y=-11 Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 Pure Font ascent =24 descent= 0 @@ -47828,8 +48276,8 @@ const u8g_fntpgm_uint8_t u8g_font_helvR24[10931] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =26 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR24n[702] U8G_SECTION(".progmem.u8g_font_helvR24n") = { - 0,39,48,251,245,24,0,0,0,0,42,57,0,26,251,24, +const u8g_fntpgm_uint8_t u8g_font_helvR24n[726] U8G_FONT_SECTION("u8g_font_helvR24n") = { + 0,39,48,251,245,24,0,0,0,0,42,58,0,26,251,24, 0,10,11,22,13,1,15,12,0,12,0,76,128,237,192,127, 128,63,0,30,0,63,0,115,128,225,192,64,128,17,16,48, 19,1,1,1,192,0,1,192,0,1,192,0,1,192,0,1, @@ -47872,7 +48320,9 @@ const u8g_fntpgm_uint8_t u8g_font_helvR24n[702] U8G_SECTION(".progmem.u8g_font_h 120,60,63,248,31,240,7,192,15,24,48,18,1,0,7,192, 31,240,63,248,120,124,112,60,240,28,224,30,224,14,224,14, 224,14,224,30,224,30,112,62,127,254,63,238,15,206,0,14, - 0,28,224,28,240,60,120,120,63,240,63,224,15,128}; + 0,28,224,28,240,60,120,120,63,240,63,224,15,128,3,18, + 18,9,4,0,224,224,224,224,0,0,0,0,0,0,0,0, + 0,0,224,224,224,224}; /* Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -47885,7 +48335,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR24n[702] U8G_SECTION(".progmem.u8g_font_h Max Font ascent =27 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_helvR24r[4992] U8G_SECTION(".progmem.u8g_font_helvR24r") = { +const u8g_fntpgm_uint8_t u8g_font_helvR24r[4992] U8G_FONT_SECTION("u8g_font_helvR24r") = { 0,39,48,251,245,25,5,215,14,105,32,127,249,27,249,25, 249,0,0,0,9,0,1,3,25,25,9,4,0,224,224,224, 224,224,224,224,224,224,224,224,224,224,224,224,224,224,64,64, @@ -48211,7 +48661,7 @@ const u8g_fntpgm_uint8_t u8g_font_helvR24r[4992] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =10 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[2193] U8G_SECTION(".progmem.u8g_font_lucasfont_alternate") = { +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[2193] U8G_FONT_SECTION("u8g_font_lucasfont_alternate") = { 0,9,11,0,255,7,1,148,3,22,32,255,255,10,255,7, 255,0,0,0,4,0,0,1,7,7,2,0,0,128,128,128, 128,0,0,128,3,3,3,4,0,4,160,160,160,5,7,7, @@ -48362,8 +48812,8 @@ const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[2193] U8G_SECTION(".progme Max Font ascent = 7 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[206] U8G_SECTION(".progmem.u8g_font_lucasfont_alternaten") = { - 0,9,11,0,255,7,0,0,0,0,42,57,0,7,255,7, +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[216] U8G_FONT_SECTION("u8g_font_lucasfont_alternaten") = { + 0,9,11,0,255,7,0,0,0,0,42,58,0,7,255,7, 0,7,5,5,8,0,1,68,40,254,40,68,5,5,5,6, 0,1,32,32,248,32,32,2,3,3,3,0,255,64,64,128, 6,1,1,7,0,3,252,1,2,2,2,0,0,128,128,7, @@ -48375,7 +48825,8 @@ const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[206] U8G_SECTION(".progme 6,0,0,248,128,112,8,8,136,112,5,7,7,6,0,0, 112,136,128,240,136,136,112,5,7,7,6,0,0,248,8,16, 32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136, - 112,5,7,7,6,0,0,112,136,136,120,8,136,112}; + 112,5,7,7,6,0,0,112,136,136,120,8,136,112,1,4, + 4,2,0,1,128,0,0,128}; /* Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) @@ -48388,7 +48839,7 @@ const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[206] U8G_SECTION(".progme Max Font ascent = 7 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[1138] U8G_SECTION(".progmem.u8g_font_lucasfont_alternater") = { +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[1138] U8G_FONT_SECTION("u8g_font_lucasfont_alternater") = { 0,9,11,0,255,7,1,148,3,22,32,127,255,7,255,7, 255,0,0,0,4,0,0,1,7,7,2,0,0,128,128,128, 128,0,0,128,3,3,3,4,0,4,160,160,160,5,7,7, @@ -48473,7 +48924,7 @@ const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[1138] U8G_SECTION(".progm Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_m2icon_5[221] U8G_SECTION(".progmem.u8g_font_m2icon_5") = { +const u8g_fntpgm_uint8_t u8g_font_m2icon_5[221] U8G_FONT_SECTION("u8g_font_m2icon_5") = { 1,9,6,0,255,5,0,17,0,172,65,104,255,5,255,5, 255,2,117,149,28,254,130,130,254,2,69,133,112,208,144,144, 240,2,84,100,216,112,112,216,2,117,133,6,12,216,112,32, @@ -48500,7 +48951,7 @@ const u8g_fntpgm_uint8_t u8g_font_m2icon_5[221] U8G_SECTION(".progmem.u8g_font_m Max Font ascent = 7 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_m2icon_7[275] U8G_SECTION(".progmem.u8g_font_m2icon_7") = { +const u8g_fntpgm_uint8_t u8g_font_m2icon_7[275] U8G_FONT_SECTION("u8g_font_m2icon_7") = { 1,12,8,0,255,7,0,17,0,214,65,104,255,7,255,7, 255,2,151,174,15,0,255,128,128,128,128,128,128,128,128,128, 255,128,2,87,103,56,104,232,136,136,136,248,3,84,100,216, @@ -48531,7 +48982,7 @@ const u8g_fntpgm_uint8_t u8g_font_m2icon_7[275] U8G_SECTION(".progmem.u8g_font_m Max Font ascent = 9 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_m2icon_9[471] U8G_SECTION(".progmem.u8g_font_m2icon_9") = { +const u8g_fntpgm_uint8_t u8g_font_m2icon_9[471] U8G_FONT_SECTION("u8g_font_m2icon_9") = { 0,13,11,0,254,8,0,17,1,111,65,105,254,9,254,8, 254,10,8,16,11,0,0,15,128,255,192,128,64,128,64,128, 64,128,64,128,64,255,192,6,8,8,7,0,0,60,84,148, @@ -48574,7 +49025,7 @@ const u8g_fntpgm_uint8_t u8g_font_m2icon_9[471] U8G_SECTION(".progmem.u8g_font_m Max Font ascent = 5 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_micro[855] U8G_SECTION(".progmem.u8g_font_micro") = { +const u8g_fntpgm_uint8_t u8g_font_micro[855] U8G_FONT_SECTION("u8g_font_micro") = { 1,4,5,0,0,5,0,255,1,245,32,255,0,5,0,5, 0,7,0,64,2,37,69,192,192,192,0,192,5,50,66,160, 160,2,53,69,160,224,160,224,160,2,53,69,64,224,192,96, @@ -48641,7 +49092,7 @@ const u8g_fntpgm_uint8_t u8g_font_micro[855] U8G_SECTION(".progmem.u8g_font_micr Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB08[2760] U8G_SECTION(".progmem.u8g_font_ncenB08") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB08[2760] U8G_FONT_SECTION("u8g_font_ncenB08") = { 0,17,19,254,251,8,1,193,3,159,32,255,254,11,254,8, 254,0,0,0,3,0,1,2,8,8,3,0,0,192,192,192, 128,128,0,192,192,3,3,3,6,1,5,160,160,160,7,8, @@ -48827,7 +49278,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB08[2760] U8G_SECTION(".progmem.u8g_font_n Max Font ascent = 9 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB08r[1315] U8G_SECTION(".progmem.u8g_font_ncenB08r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB08r[1315] U8G_FONT_SECTION("u8g_font_ncenB08r") = { 0,17,19,254,251,8,1,193,3,159,32,127,254,9,254,8, 254,0,0,0,3,0,1,2,8,8,3,0,0,192,192,192, 128,128,0,192,192,3,3,3,6,1,5,160,160,160,7,8, @@ -48923,7 +49374,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB08r[1315] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =15 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB10[4003] U8G_SECTION(".progmem.u8g_font_ncenB10") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB10[4003] U8G_FONT_SECTION("u8g_font_ncenB10") = { 0,20,25,254,250,11,2,24,5,41,32,255,253,15,253,11, 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, 192,192,128,128,0,192,192,192,3,4,4,5,1,7,160,160, @@ -49187,7 +49638,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB10[4003] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB10r[1853] U8G_SECTION(".progmem.u8g_font_ncenB10r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB10r[1853] U8G_FONT_SECTION("u8g_font_ncenB10r") = { 0,20,25,254,250,11,2,24,5,41,32,127,253,12,253,11, 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, 192,192,128,128,0,192,192,192,3,4,4,5,1,7,160,160, @@ -49316,7 +49767,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB10r[1853] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =16 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB12[4735] U8G_SECTION(".progmem.u8g_font_ncenB12") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB12[4735] U8G_FONT_SECTION("u8g_font_ncenB12") = { 0,22,27,253,249,12,2,152,5,246,32,255,253,16,253,12, 253,0,0,0,4,1,1,3,12,12,5,1,0,64,224,224, 224,224,64,64,0,64,224,224,64,5,5,5,6,0,7,216, @@ -49625,7 +50076,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB12[4735] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB12r[2194] U8G_SECTION(".progmem.u8g_font_ncenB12r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB12r[2194] U8G_FONT_SECTION("u8g_font_ncenB12r") = { 0,22,27,253,249,12,2,152,5,246,32,127,253,14,253,12, 253,0,0,0,4,1,1,3,12,12,5,1,0,64,224,224, 224,224,64,64,0,64,224,224,64,5,5,5,6,0,7,216, @@ -49776,7 +50227,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB12r[2194] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =19 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB14[5558] U8G_SECTION(".progmem.u8g_font_ncenB14") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB14[5558] U8G_FONT_SECTION("u8g_font_ncenB14") = { 0,24,32,253,248,14,3,71,7,51,32,255,252,19,252,14, 252,0,0,0,5,0,1,4,14,14,6,1,0,96,240,240, 240,240,240,96,96,96,0,96,240,240,96,5,5,5,8,1, @@ -50137,7 +50588,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB14[5558] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB14r[2603] U8G_SECTION(".progmem.u8g_font_ncenB14r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB14r[2603] U8G_FONT_SECTION("u8g_font_ncenB14r") = { 0,24,32,253,248,14,3,71,7,51,32,127,252,16,252,14, 252,0,0,0,5,0,1,4,14,14,6,1,0,96,240,240, 240,240,240,96,96,96,0,96,240,240,96,5,5,5,8,1, @@ -50313,7 +50764,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB14r[2603] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =24 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB18[8114] U8G_SECTION(".progmem.u8g_font_ncenB18") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB18[8114] U8G_FONT_SECTION("u8g_font_ncenB18") = { 0,33,40,252,246,18,4,68,10,106,32,255,251,24,251,18, 251,0,0,0,7,0,1,5,18,18,7,1,0,112,248,248, 248,112,112,112,112,112,112,32,32,0,0,112,248,248,112,6, @@ -50834,7 +51285,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB18[8114] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =20 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB18r[3736] U8G_SECTION(".progmem.u8g_font_ncenB18r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB18r[3736] U8G_FONT_SECTION("u8g_font_ncenB18r") = { 0,33,40,252,246,18,4,68,10,106,32,127,251,20,251,18, 251,0,0,0,7,0,1,5,18,18,7,1,0,112,248,248, 248,112,112,112,112,112,112,32,32,0,0,112,248,248,112,6, @@ -51081,7 +51532,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB18r[3736] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =33 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB24[12964] U8G_SECTION(".progmem.u8g_font_ncenB24") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB24[12964] U8G_FONT_SECTION("u8g_font_ncenB24") = { 0,39,53,252,243,25,6,143,16,147,32,255,249,33,249,25, 249,0,0,0,9,1,1,6,25,25,10,2,0,120,252,252, 252,252,252,252,120,120,120,120,48,48,48,48,48,48,0,0, @@ -51905,8 +52356,8 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB24[12964] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =25 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB24n[846] U8G_SECTION(".progmem.u8g_font_ncenB24n") = { - 0,39,53,252,243,24,0,0,0,0,42,57,0,25,251,24, +const u8g_fntpgm_uint8_t u8g_font_ncenB24n[868] U8G_FONT_SECTION("u8g_font_ncenB24n") = { + 0,39,53,252,243,24,0,0,0,0,42,58,0,25,251,24, 0,12,15,30,17,2,10,6,0,14,0,14,0,230,112,230, 112,246,240,63,192,15,0,127,224,246,240,230,112,230,112,7, 0,7,0,6,0,16,16,32,20,2,1,3,192,3,192,3, @@ -51958,7 +52409,9 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB24n[846] U8G_SECTION(".progmem.u8g_font_n 62,0,252,31,0,248,31,0,248,15,128,248,15,128,248,15, 128,252,31,128,252,63,128,127,111,128,63,207,128,31,143,128, 0,15,128,0,15,128,112,15,0,248,31,0,252,31,0,248, - 30,0,248,62,0,112,252,0,63,240,0,15,192,0}; + 30,0,248,62,0,112,252,0,63,240,0,15,192,0,6,16, + 16,9,2,0,120,252,252,252,252,120,0,0,0,0,120,252, + 252,252,252,120}; /* Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -51971,7 +52424,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB24n[846] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =26 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenB24r[5937] U8G_SECTION(".progmem.u8g_font_ncenB24r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenB24r[5937] U8G_FONT_SECTION("u8g_font_ncenB24r") = { 0,39,53,252,243,25,6,143,16,147,32,127,249,26,249,25, 249,0,0,0,9,1,1,6,25,25,10,2,0,120,252,252, 252,252,252,252,120,120,120,120,48,48,48,48,48,48,0,0, @@ -52356,7 +52809,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenB24r[5937] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =11 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR08[2642] U8G_SECTION(".progmem.u8g_font_ncenR08") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR08[2642] U8G_FONT_SECTION("u8g_font_ncenR08") = { 0,14,18,254,252,8,1,180,3,120,32,255,254,11,254,8, 254,0,0,0,3,0,1,1,8,8,4,1,0,128,128,128, 128,128,0,128,128,3,3,3,6,1,5,160,160,160,7,8, @@ -52535,7 +52988,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR08[2642] U8G_SECTION(".progmem.u8g_font_n Max Font ascent = 9 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR08r[1266] U8G_SECTION(".progmem.u8g_font_ncenR08r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR08r[1266] U8G_FONT_SECTION("u8g_font_ncenR08r") = { 0,14,18,254,252,8,1,180,3,120,32,127,254,9,254,8, 254,0,0,0,3,0,1,1,8,8,4,1,0,128,128,128, 128,128,0,128,128,3,3,3,6,1,5,160,160,160,7,8, @@ -52628,7 +53081,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR08r[1266] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR10[3813] U8G_SECTION(".progmem.u8g_font_ncenR10") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR10[3813] U8G_FONT_SECTION("u8g_font_ncenR10") = { 0,18,24,254,250,11,2,24,5,38,32,255,253,14,253,11, 253,0,0,0,4,0,1,1,11,11,3,1,0,128,128,128, 128,128,128,128,128,0,128,128,3,4,4,5,1,7,160,160, @@ -52880,7 +53333,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR10[3813] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR10r[1781] U8G_SECTION(".progmem.u8g_font_ncenR10r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR10r[1781] U8G_FONT_SECTION("u8g_font_ncenR10r") = { 0,18,24,254,250,11,2,24,5,38,32,127,253,12,253,11, 253,0,0,0,4,0,1,1,11,11,3,1,0,128,128,128, 128,128,128,128,128,0,128,128,3,4,4,5,1,7,160,160, @@ -53005,7 +53458,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR10r[1781] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =16 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR12[4247] U8G_SECTION(".progmem.u8g_font_ncenR12") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR12[4247] U8G_FONT_SECTION("u8g_font_ncenR12") = { 0,21,26,253,250,12,2,59,5,140,32,255,253,16,253,12, 253,0,0,0,4,1,1,2,12,12,5,1,0,192,192,192, 192,192,128,128,128,128,0,192,192,4,4,4,6,1,8,144, @@ -53284,7 +53737,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR12[4247] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =13 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR12r[1976] U8G_SECTION(".progmem.u8g_font_ncenR12r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR12r[1976] U8G_FONT_SECTION("u8g_font_ncenR12r") = { 0,21,26,253,250,12,2,59,5,140,32,127,253,13,253,12, 253,0,0,0,4,1,1,2,12,12,5,1,0,192,192,192, 192,192,128,128,128,128,0,192,192,4,4,4,6,1,8,144, @@ -53421,7 +53874,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR12r[1976] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =19 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR14[5319] U8G_SECTION(".progmem.u8g_font_ncenR14") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR14[5319] U8G_FONT_SECTION("u8g_font_ncenR14") = { 0,27,30,252,249,14,3,41,7,30,32,255,252,19,252,14, 252,0,0,0,5,0,1,2,14,14,5,1,0,192,192,192, 192,192,192,192,128,128,128,0,0,192,192,4,5,5,7,1, @@ -53767,7 +54220,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR14[5319] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =15 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR14r[2534] U8G_SECTION(".progmem.u8g_font_ncenR14r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR14r[2534] U8G_FONT_SECTION("u8g_font_ncenR14r") = { 0,27,30,252,249,14,3,41,7,30,32,127,252,15,252,14, 252,0,0,0,5,0,1,2,14,14,5,1,0,192,192,192, 192,192,192,192,128,128,128,0,0,192,192,4,5,5,7,1, @@ -53939,7 +54392,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR14r[2534] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =24 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR18[7488] U8G_SECTION(".progmem.u8g_font_ncenR18") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR18[7488] U8G_FONT_SECTION("u8g_font_ncenR18") = { 0,31,37,253,248,18,4,33,9,197,32,255,251,24,251,18, 251,0,0,0,7,0,1,3,18,18,7,2,0,64,224,224, 224,224,224,224,224,224,224,224,64,64,64,0,224,224,224,6, @@ -54421,7 +54874,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR18[7488] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =20 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR18r[3477] U8G_SECTION(".progmem.u8g_font_ncenR18r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR18r[3477] U8G_FONT_SECTION("u8g_font_ncenR18r") = { 0,31,37,253,248,18,4,33,9,197,32,127,251,20,251,18, 251,0,0,0,7,0,1,3,18,18,7,2,0,64,224,224, 224,224,224,224,224,224,224,224,64,64,64,0,224,224,224,6, @@ -54652,7 +55105,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR18r[3477] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =32 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR24[11729] U8G_SECTION(".progmem.u8g_font_ncenR24") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR24[11729] U8G_FONT_SECTION("u8g_font_ncenR24") = { 0,39,50,250,245,25,5,159,15,28,32,255,249,32,249,25, 249,0,0,0,9,1,1,4,25,25,10,3,0,96,240,240, 240,240,240,240,96,96,96,96,96,96,96,96,96,96,96,0, @@ -55399,8 +55852,8 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR24[11729] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =25 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR24n[722] U8G_SECTION(".progmem.u8g_font_ncenR24n") = { - 0,39,50,250,245,24,0,0,0,0,42,57,0,25,250,24, +const u8g_fntpgm_uint8_t u8g_font_ncenR24n[744] U8G_FONT_SECTION("u8g_font_ncenR24n") = { + 0,39,50,250,245,24,0,0,0,0,42,58,0,25,250,24, 0,12,14,28,17,2,11,6,0,6,0,6,0,198,112,230, 112,127,224,31,128,31,0,127,192,230,112,198,112,6,0,6, 0,6,0,16,17,34,20,2,255,1,128,1,128,1,128,1, @@ -55445,7 +55898,8 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR24n[722] U8G_SECTION(".progmem.u8g_font_n 1,0,15,192,63,240,120,120,112,56,240,60,224,28,224,28, 224,30,224,30,240,30,240,62,120,126,120,126,63,222,31,158, 0,30,0,28,0,28,96,56,240,56,240,112,241,224,127,192, - 63,0}; + 63,0,4,16,16,9,3,0,96,240,240,96,0,0,0,0, + 0,0,0,0,96,240,240,96}; /* Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -55458,7 +55912,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR24n[722] U8G_SECTION(".progmem.u8g_font_n Max Font ascent =27 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_ncenR24r[5367] U8G_SECTION(".progmem.u8g_font_ncenR24r") = { +const u8g_fntpgm_uint8_t u8g_font_ncenR24r[5367] U8G_FONT_SECTION("u8g_font_ncenR24r") = { 0,39,50,250,245,25,5,159,15,28,32,127,249,27,249,25, 249,0,0,0,9,1,1,4,25,25,10,3,0,96,240,240, 240,240,240,240,96,96,96,96,96,96,96,96,96,96,96,0, @@ -55807,7 +56261,7 @@ const u8g_fntpgm_uint8_t u8g_font_ncenR24r[5367] U8G_SECTION(".progmem.u8g_font_ Max Font ascent = 9 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_orgv01[1535] U8G_SECTION(".progmem.u8g_font_orgv01") = { +const u8g_fntpgm_uint8_t u8g_font_orgv01[1535] U8G_FONT_SECTION("u8g_font_orgv01") = { 1,11,11,0,254,5,0,249,1,238,32,255,255,9,254,5, 255,2,0,64,2,21,37,128,128,128,0,128,6,49,65,160, 2,85,101,80,248,80,248,80,2,85,101,248,160,248,40,248, @@ -55916,8 +56370,8 @@ const u8g_fntpgm_uint8_t u8g_font_orgv01[1535] U8G_SECTION(".progmem.u8g_font_or Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_orgv01n[130] U8G_SECTION(".progmem.u8g_font_orgv01n") = { - 1,11,11,0,254,5,0,0,0,0,42,57,0,5,255,5, +const u8g_fntpgm_uint8_t u8g_font_orgv01n[137] U8G_FONT_SECTION("u8g_font_orgv01n") = { + 1,11,11,0,254,5,0,0,0,0,42,58,0,5,255,5, 0,3,51,67,160,64,160,3,51,67,64,224,64,1,18,34, 128,128,4,65,81,240,2,17,33,128,2,85,101,8,16,32, 64,128,2,85,101,248,136,136,136,248,2,21,37,128,128,128, @@ -55925,7 +56379,7 @@ const u8g_fntpgm_uint8_t u8g_font_orgv01n[130] U8G_SECTION(".progmem.u8g_font_or 8,248,2,85,101,136,136,248,8,8,2,85,101,248,128,248, 8,248,2,85,101,248,128,248,136,248,2,85,101,248,8,8, 8,8,2,85,101,248,136,248,136,248,2,85,101,248,136,248, - 8,248}; + 8,248,2,20,36,128,0,0,128}; /* Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 Copyright: © www.orgdot.com @@ -55938,7 +56392,7 @@ const u8g_fntpgm_uint8_t u8g_font_orgv01n[130] U8G_SECTION(".progmem.u8g_font_or Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_orgv01r[719] U8G_SECTION(".progmem.u8g_font_orgv01r") = { +const u8g_fntpgm_uint8_t u8g_font_orgv01r[719] U8G_FONT_SECTION("u8g_font_orgv01r") = { 1,11,11,0,254,5,0,249,1,238,32,127,255,5,255,5, 255,2,0,64,2,21,37,128,128,128,0,128,6,49,65,160, 2,85,101,80,248,80,248,80,2,85,101,248,160,248,40,248, @@ -55996,7 +56450,7 @@ const u8g_fntpgm_uint8_t u8g_font_orgv01r[719] U8G_SECTION(".progmem.u8g_font_or Max Font ascent =24 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb18[7637] U8G_SECTION(".progmem.u8g_font_osb18") = { +const u8g_fntpgm_uint8_t u8g_font_osb18[7637] U8G_FONT_SECTION("u8g_font_osb18") = { 0,70,31,234,249,18,4,190,10,54,32,255,250,24,250,18, 250,0,0,0,7,0,0,4,18,18,6,1,0,96,240,240, 240,240,240,96,96,96,96,96,64,0,0,96,240,240,96,6, @@ -56487,8 +56941,8 @@ const u8g_fntpgm_uint8_t u8g_font_osb18[7637] U8G_SECTION(".progmem.u8g_font_osb Max Font ascent =18 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb18n[600] U8G_SECTION(".progmem.u8g_font_osb18n") = { - 0,70,31,234,249,18,0,0,0,0,42,57,0,18,251,18, +const u8g_fntpgm_uint8_t u8g_font_osb18n[618] U8G_FONT_SECTION("u8g_font_osb18n") = { + 0,70,31,234,249,18,0,0,0,0,42,58,0,18,251,18, 0,9,10,20,13,2,8,24,0,24,0,201,128,235,128,28, 0,44,0,235,128,217,128,24,0,24,0,21,21,63,23,1, 253,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, @@ -56525,7 +56979,8 @@ const u8g_fntpgm_uint8_t u8g_font_osb18n[600] U8G_SECTION(".progmem.u8g_font_osb 193,240,192,112,192,48,192,48,96,32,112,64,31,128,12,18, 36,15,2,0,31,0,113,128,96,192,224,224,224,224,224,240, 224,240,96,240,113,240,30,240,0,240,0,240,56,224,120,224, - 120,224,97,192,33,128,30,0}; + 120,224,97,192,33,128,30,0,4,12,12,8,2,0,96,240, + 240,96,0,0,0,0,96,240,240,96}; /* Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -56538,7 +56993,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb18n[600] U8G_SECTION(".progmem.u8g_font_osb Max Font ascent =20 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb18r[3611] U8G_SECTION(".progmem.u8g_font_osb18r") = { +const u8g_fntpgm_uint8_t u8g_font_osb18r[3611] U8G_FONT_SECTION("u8g_font_osb18r") = { 0,70,31,234,249,18,4,190,10,54,32,127,250,20,250,18, 250,0,0,0,7,0,0,4,18,18,6,1,0,96,240,240, 240,240,240,96,96,96,96,96,64,0,0,96,240,240,96,6, @@ -56777,7 +57232,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb18r[3611] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =28 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb21[9612] U8G_SECTION(".progmem.u8g_font_osb21") = { +const u8g_fntpgm_uint8_t u8g_font_osb21[9612] U8G_FONT_SECTION("u8g_font_osb21") = { 0,77,36,232,248,21,5,141,12,241,32,255,249,28,248,21, 249,0,0,0,8,0,0,5,21,21,9,2,1,240,248,248, 248,248,112,112,112,112,32,32,32,32,32,32,0,0,112,248, @@ -56847,7 +57302,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb21[9612] U8G_SECTION(".progmem.u8g_font_osb 0,120,56,112,120,112,120,96,112,224,96,192,63,128,4,14, 14,8,2,0,96,240,240,240,96,0,0,0,0,0,96,240, 240,96,5,19,19,8,2,251,96,240,240,240,96,0,0,0, - 0,112,240,248,248,248,8,16,16,32,192,21,24,72,26,2, + 0,112,248,248,248,248,8,16,16,32,192,21,24,72,26,2, 252,0,0,24,0,0,56,0,0,240,0,3,192,0,15,0, 0,28,0,0,120,0,1,224,0,7,128,0,14,0,0,60, 0,0,240,0,0,224,0,0,120,0,0,30,0,0,7,128, @@ -57391,8 +57846,8 @@ const u8g_fntpgm_uint8_t u8g_font_osb21[9612] U8G_SECTION(".progmem.u8g_font_osb Max Font ascent =22 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb21n[703] U8G_SECTION(".progmem.u8g_font_osb21n") = { - 0,77,36,232,248,21,0,0,0,0,42,57,0,22,250,21, +const u8g_fntpgm_uint8_t u8g_font_osb21n[723] U8G_FONT_SECTION("u8g_font_osb21n") = { + 0,77,36,232,248,21,0,0,0,0,42,58,0,22,250,21, 0,11,12,24,14,2,9,14,0,14,0,78,192,228,224,245, 192,14,0,14,0,245,192,228,192,78,192,14,0,14,0,24, 25,75,26,1,252,0,24,0,0,24,0,0,24,0,0,24, @@ -57435,7 +57890,9 @@ const u8g_fntpgm_uint8_t u8g_font_osb21n[703] U8G_SECTION(".progmem.u8g_font_osb 248,192,60,192,24,192,24,192,24,96,16,112,48,31,192,13, 21,42,16,2,1,31,128,48,192,112,96,112,112,240,112,240, 112,240,120,240,120,240,120,112,120,112,120,56,248,15,120,0, - 120,0,120,56,112,120,112,120,96,112,224,96,192,63,128}; + 120,0,120,56,112,120,112,120,96,112,224,96,192,63,128,4, + 14,14,8,2,0,96,240,240,240,96,0,0,0,0,0,96, + 240,240,96}; /* Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -57448,7 +57905,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb21n[703] U8G_SECTION(".progmem.u8g_font_osb Max Font ascent =23 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb21r[4521] U8G_SECTION(".progmem.u8g_font_osb21r") = { +const u8g_fntpgm_uint8_t u8g_font_osb21r[4521] U8G_FONT_SECTION("u8g_font_osb21r") = { 0,77,36,232,248,21,5,141,12,241,32,127,249,23,249,21, 249,0,0,0,8,0,0,5,21,21,9,2,1,240,248,248, 248,248,112,112,112,112,32,32,32,32,32,32,0,0,112,248, @@ -57518,7 +57975,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb21r[4521] U8G_SECTION(".progmem.u8g_font_os 0,120,56,112,120,112,120,96,112,224,96,192,63,128,4,14, 14,8,2,0,96,240,240,240,96,0,0,0,0,0,96,240, 240,96,5,19,19,8,2,251,96,240,240,240,96,0,0,0, - 0,112,240,248,248,248,8,16,16,32,192,21,24,72,26,2, + 0,112,248,248,248,248,8,16,16,32,192,21,24,72,26,2, 252,0,0,24,0,0,56,0,0,240,0,3,192,0,15,0, 0,28,0,0,120,0,1,224,0,7,128,0,14,0,0,60, 0,0,240,0,0,224,0,0,120,0,0,30,0,0,7,128, @@ -57744,7 +58201,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb21r[4521] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =34 descent=-10 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb26[12640] U8G_SECTION(".progmem.u8g_font_osb26") = { +const u8g_fntpgm_uint8_t u8g_font_osb26[12640] U8G_FONT_SECTION("u8g_font_osb26") = { 0,95,44,227,246,26,7,105,16,163,32,255,248,34,246,26, 248,0,0,0,10,0,0,6,25,25,10,2,1,120,252,252, 252,252,252,120,120,120,120,48,48,48,48,48,48,48,0,0, @@ -58548,8 +59005,8 @@ const u8g_fntpgm_uint8_t u8g_font_osb26[12640] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =26 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb26n[880] U8G_SECTION(".progmem.u8g_font_osb26n") = { - 0,95,44,227,246,25,0,0,0,0,42,57,0,26,249,25, +const u8g_fntpgm_uint8_t u8g_font_osb26n[903] U8G_FONT_SECTION("u8g_font_osb26n") = { + 0,95,44,227,246,25,0,0,0,0,42,58,0,26,249,25, 0,12,14,28,17,3,11,14,0,14,0,14,0,196,112,228, 240,245,224,14,0,14,0,245,224,228,240,196,112,14,0,14, 0,14,0,29,30,120,31,1,251,0,3,0,0,0,3,0, @@ -58603,8 +59060,9 @@ const u8g_fntpgm_uint8_t u8g_font_osb26n[880] U8G_SECTION(".progmem.u8g_font_osb 6,0,56,12,0,14,240,0,15,25,50,20,2,1,31,192, 60,112,120,48,120,56,248,60,248,60,248,60,248,62,248,62, 248,62,248,62,120,62,124,126,60,126,15,190,0,62,0,62, - 12,60,30,60,62,60,62,56,60,56,48,112,16,96,15,192 - }; + 12,60,30,60,62,60,62,56,60,56,48,112,16,96,15,192, + 5,17,17,9,2,0,112,248,248,248,112,0,0,0,0,0, + 0,0,112,248,248,248,112}; /* Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -58617,7 +59075,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb26n[880] U8G_SECTION(".progmem.u8g_font_osb Max Font ascent =28 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb26r[5950] U8G_SECTION(".progmem.u8g_font_osb26r") = { +const u8g_fntpgm_uint8_t u8g_font_osb26r[5950] U8G_FONT_SECTION("u8g_font_osb26r") = { 0,95,44,227,246,26,7,105,16,163,32,127,248,28,248,26, 248,0,0,0,10,0,0,6,25,25,10,2,1,120,252,252, 252,252,252,120,120,120,120,48,48,48,48,48,48,48,0,0, @@ -59002,7 +59460,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb26r[5950] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =38 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb29[15818] U8G_SECTION(".progmem.u8g_font_osb29") = { +const u8g_fntpgm_uint8_t u8g_font_osb29[15818] U8G_FONT_SECTION("u8g_font_osb29") = { 0,107,49,223,245,29,9,166,21,115,32,255,247,38,245,29, 247,0,0,0,11,0,0,6,28,28,10,2,1,120,252,252, 252,252,252,252,120,120,120,120,120,48,48,48,48,48,48,48, @@ -59095,7 +59553,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb29[15818] U8G_SECTION(".progmem.u8g_font_os 252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252, 0,15,255,192,17,29,87,22,3,0,0,6,0,112,28,0, 127,252,0,127,248,0,127,224,0,127,192,0,126,0,0,96, - 0,0,96,0,0,96,0,0,96,0,0,103,224,0,104,120, + 0,0,96,0,0,96,0,0,96,0,0,103,224,0,120,120, 0,112,62,0,96,62,0,96,31,0,0,31,0,0,31,128, 0,31,128,56,31,128,124,31,128,252,31,128,252,31,128,248, 31,0,240,31,0,224,30,0,96,62,0,48,124,0,31,240, @@ -60004,8 +60462,8 @@ const u8g_fntpgm_uint8_t u8g_font_osb29[15818] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =29 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb29n[1232] U8G_SECTION(".progmem.u8g_font_osb29n") = { - 0,107,49,223,245,28,0,0,0,0,42,57,0,29,248,28, +const u8g_fntpgm_uint8_t u8g_font_osb29n[1257] U8G_FONT_SECTION("u8g_font_osb29n") = { + 0,107,49,223,245,28,0,0,0,0,42,58,0,29,248,28, 0,14,16,32,19,3,12,3,0,7,128,7,128,199,24,227, 60,242,124,122,248,7,128,7,128,250,248,242,124,227,60,199, 24,7,128,7,128,3,0,33,33,165,37,2,251,0,1,192, @@ -60055,7 +60513,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb29n[1232] U8G_SECTION(".progmem.u8g_font_os 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0, 252,0,15,255,192,17,29,87,22,3,0,0,6,0,112,28, 0,127,252,0,127,248,0,127,224,0,127,192,0,126,0,0, - 96,0,0,96,0,0,96,0,0,96,0,0,103,224,0,104, + 96,0,0,96,0,0,96,0,0,96,0,0,103,224,0,120, 120,0,112,62,0,96,62,0,96,31,0,0,31,0,0,31, 128,0,31,128,56,31,128,124,31,128,252,31,128,252,31,128, 248,31,0,240,31,0,224,30,0,96,62,0,48,124,0,31, @@ -60081,8 +60539,9 @@ const u8g_fntpgm_uint8_t u8g_font_osb29n[1232] U8G_SECTION(".progmem.u8g_font_os 128,252,15,128,252,15,128,252,15,192,252,15,192,124,15,192, 124,15,192,62,31,192,30,63,192,7,239,192,0,15,192,0, 15,192,0,15,192,30,15,128,31,15,128,63,15,128,63,15, - 0,62,15,0,56,30,0,24,28,0,24,56,0,15,240,0 - }; + 0,62,15,0,56,30,0,24,28,0,24,56,0,15,240,0, + 6,19,19,10,2,0,120,252,252,252,252,120,0,0,0,0, + 0,0,0,120,252,252,252,252,120}; /* Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -60095,7 +60554,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb29n[1232] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =31 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb29r[7481] U8G_SECTION(".progmem.u8g_font_osb29r") = { +const u8g_fntpgm_uint8_t u8g_font_osb29r[7481] U8G_FONT_SECTION("u8g_font_osb29r") = { 0,107,49,223,245,29,9,166,21,115,32,127,247,31,247,29, 247,0,0,0,11,0,0,6,28,28,10,2,1,120,252,252, 252,252,252,252,120,120,120,120,120,48,48,48,48,48,48,48, @@ -60188,7 +60647,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb29r[7481] U8G_SECTION(".progmem.u8g_font_os 252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252, 0,15,255,192,17,29,87,22,3,0,0,6,0,112,28,0, 127,252,0,127,248,0,127,224,0,127,192,0,126,0,0,96, - 0,0,96,0,0,96,0,0,96,0,0,103,224,0,104,120, + 0,0,96,0,0,96,0,0,96,0,0,103,224,0,120,120, 0,112,62,0,96,62,0,96,31,0,0,31,0,0,31,128, 0,31,128,56,31,128,124,31,128,252,31,128,252,31,128,248, 31,0,240,31,0,224,30,0,96,62,0,48,124,0,31,240, @@ -60576,8 +61035,8 @@ const u8g_fntpgm_uint8_t u8g_font_osb29r[7481] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =45 descent=-12 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb35[22095] U8G_SECTION(".progmem.u8g_font_osb35") = { - 0,133,60,215,242,35,12,218,29,222,32,255,246,45,244,35, +const u8g_fntpgm_uint8_t u8g_font_osb35[22097] U8G_FONT_SECTION("u8g_font_osb35") = { + 0,133,60,215,242,35,12,220,29,224,32,255,246,45,244,35, 246,0,0,0,13,0,0,8,34,34,14,3,1,126,126,255, 255,255,255,255,255,126,126,126,126,60,60,60,60,60,24,24, 24,24,24,24,24,24,0,0,0,126,255,255,255,255,126,12, @@ -60731,691 +61190,677 @@ const u8g_fntpgm_uint8_t u8g_font_osb35[22095] U8G_SECTION(".progmem.u8g_font_os 3,248,31,131,248,31,195,248,63,195,240,63,195,240,63,131, 224,62,7,224,60,7,192,28,15,128,14,31,0,7,252,0, 8,22,22,14,3,1,126,255,255,255,255,126,0,0,0,0, - 0,0,0,0,0,0,126,255,255,255,255,126,9,31,62,13, - 2,248,63,0,127,128,127,128,127,128,127,128,63,0,0,0, + 0,0,0,0,0,0,126,255,255,255,255,126,9,32,64,13, + 2,247,63,0,127,128,127,128,127,128,127,128,63,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,126,0,255,0,255,128,255,128,255,128,127,128,1,128, - 1,128,1,128,3,0,3,0,6,0,28,0,56,0,96,0, - 37,40,200,45,4,249,0,0,0,0,48,0,0,0,0,240, + 0,0,60,0,127,0,255,0,255,128,255,128,255,128,57,128, + 1,128,1,128,3,0,3,0,6,0,12,0,56,0,240,0, + 64,0,37,40,200,45,4,249,0,0,0,0,48,0,0,0, + 0,240,0,0,0,1,248,0,0,0,7,224,0,0,0,31, + 128,0,0,0,126,0,0,0,1,252,0,0,0,7,240,0, + 0,0,15,192,0,0,0,63,0,0,0,0,252,0,0,0, + 3,240,0,0,0,15,224,0,0,0,63,128,0,0,0,126, 0,0,0,1,248,0,0,0,7,224,0,0,0,31,128,0, - 0,0,126,0,0,0,1,252,0,0,0,7,240,0,0,0, - 15,192,0,0,0,63,0,0,0,0,252,0,0,0,3,240, - 0,0,0,15,224,0,0,0,63,128,0,0,0,126,0,0, - 0,1,248,0,0,0,7,224,0,0,0,31,128,0,0,0, - 127,0,0,0,0,252,0,0,0,0,248,0,0,0,0,126, - 0,0,0,0,31,128,0,0,0,15,224,0,0,0,3,248, + 0,0,127,0,0,0,0,252,0,0,0,0,248,0,0,0, + 0,126,0,0,0,0,31,128,0,0,0,15,224,0,0,0, + 3,248,0,0,0,0,252,0,0,0,0,63,0,0,0,0, + 15,192,0,0,0,3,240,0,0,0,1,252,0,0,0,0, + 127,0,0,0,0,31,192,0,0,0,7,224,0,0,0,1, + 248,0,0,0,0,126,0,0,0,0,63,128,0,0,0,15, + 224,0,0,0,3,248,0,0,0,0,248,0,0,0,0,48, + 41,13,78,45,2,6,255,255,255,255,255,128,255,255,255,255, + 255,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,255,255,255,128,255,255,255,255,255,128,255,255, + 255,255,255,128,37,40,200,45,4,249,96,0,0,0,0,120, 0,0,0,0,252,0,0,0,0,63,0,0,0,0,15,192, 0,0,0,3,240,0,0,0,1,252,0,0,0,0,127,0, - 0,0,0,31,192,0,0,0,7,224,0,0,0,1,248,0, + 0,0,0,31,128,0,0,0,7,224,0,0,0,1,248,0, 0,0,0,126,0,0,0,0,63,128,0,0,0,15,224,0, - 0,0,3,248,0,0,0,0,248,0,0,0,0,48,41,13, - 78,45,2,6,255,255,255,255,255,128,255,255,255,255,255,128, - 255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, - 255,128,37,40,200,45,4,249,96,0,0,0,0,120,0,0, - 0,0,252,0,0,0,0,63,0,0,0,0,15,192,0,0, - 0,3,240,0,0,0,1,252,0,0,0,0,127,0,0,0, - 0,31,128,0,0,0,7,224,0,0,0,1,248,0,0,0, - 0,126,0,0,0,0,63,128,0,0,0,15,224,0,0,0, - 3,240,0,0,0,0,252,0,0,0,0,63,0,0,0,0, - 15,192,0,0,0,7,240,0,0,0,1,248,0,0,0,0, - 248,0,0,0,3,240,0,0,0,15,192,0,0,0,63,128, - 0,0,0,254,0,0,0,1,248,0,0,0,7,224,0,0, - 0,31,128,0,0,0,126,0,0,0,1,252,0,0,0,7, - 240,0,0,0,31,192,0,0,0,63,0,0,0,0,252,0, - 0,0,3,240,0,0,0,15,224,0,0,0,63,128,0,0, - 0,254,0,0,0,0,248,0,0,0,0,96,0,0,0,0, - 15,34,68,22,3,1,31,240,59,248,96,252,96,252,192,126, - 192,126,192,126,192,126,192,126,64,252,96,252,48,248,1,240, - 1,224,3,192,3,128,7,0,7,0,14,0,12,16,12,16, - 12,16,12,16,6,32,3,192,0,0,0,0,0,128,3,224, - 7,240,7,240,7,240,7,240,3,224,35,34,170,39,2,1, - 0,15,255,0,0,0,56,1,224,0,0,224,0,112,0,1, - 128,0,28,0,7,0,0,14,0,14,0,0,7,0,12,0, - 248,3,0,28,3,205,243,128,56,7,135,241,128,56,15,7, - 225,192,112,31,7,225,192,112,62,7,224,224,112,62,7,224, - 224,224,124,7,192,224,224,124,7,192,224,224,124,7,192,224, - 224,252,15,192,224,224,248,15,128,224,224,248,15,128,224,224, - 248,15,129,192,224,248,31,129,192,224,248,31,129,128,112,248, - 31,3,128,112,248,63,3,0,112,120,111,6,0,56,60,199, - 140,0,56,31,3,240,0,28,0,0,0,0,14,0,0,0, - 0,7,0,0,0,0,3,128,0,0,0,1,192,0,96,0, - 0,120,1,192,0,0,31,255,0,0,33,35,175,36,2,0, - 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, - 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, - 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, - 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, - 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, - 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, - 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, - 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, - 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, - 0,3,0,15,240,0,2,0,15,240,0,6,0,7,240,0, - 15,0,7,248,0,31,0,15,252,0,255,240,255,255,128,28, - 34,136,33,3,0,255,255,240,0,15,224,126,0,15,224,31, - 0,15,224,31,128,15,224,15,192,15,224,15,192,15,224,15, + 0,0,3,240,0,0,0,0,252,0,0,0,0,63,0,0, + 0,0,15,192,0,0,0,7,240,0,0,0,1,248,0,0, + 0,0,248,0,0,0,3,240,0,0,0,15,192,0,0,0, + 63,128,0,0,0,254,0,0,0,1,248,0,0,0,7,224, + 0,0,0,31,128,0,0,0,126,0,0,0,1,252,0,0, + 0,7,240,0,0,0,31,192,0,0,0,63,0,0,0,0, + 252,0,0,0,3,240,0,0,0,15,224,0,0,0,63,128, + 0,0,0,254,0,0,0,0,248,0,0,0,0,96,0,0, + 0,0,15,34,68,22,3,1,31,240,59,248,96,252,96,252, + 192,126,192,126,192,126,192,126,192,126,64,252,96,252,48,248, + 1,240,1,224,3,192,3,128,7,0,7,0,14,0,12,16, + 12,16,12,16,12,16,6,32,3,192,0,0,0,0,0,128, + 3,224,7,240,7,240,7,240,7,240,3,224,35,34,170,39, + 2,1,0,15,255,0,0,0,56,1,224,0,0,224,0,112, + 0,1,128,0,28,0,7,0,0,14,0,14,0,0,7,0, + 12,0,248,3,0,28,3,205,243,128,56,7,135,241,128,56, + 15,7,225,192,112,31,7,225,192,112,62,7,224,224,112,62, + 7,224,224,224,124,7,192,224,224,124,7,192,224,224,124,7, + 192,224,224,252,15,192,224,224,248,15,128,224,224,248,15,128, + 224,224,248,15,129,192,224,248,31,129,192,224,248,31,129,128, + 112,248,31,3,128,112,248,63,3,0,112,120,111,6,0,56, + 60,199,140,0,56,31,3,240,0,28,0,0,0,0,14,0, + 0,0,0,7,0,0,0,0,3,128,0,0,0,1,192,0, + 96,0,0,120,1,192,0,0,31,255,0,0,33,35,175,36, + 2,0,0,0,192,0,0,0,1,192,0,0,0,1,224,0, + 0,0,1,224,0,0,0,3,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,7,240,0,0,0,7,248,0,0,0, + 7,248,0,0,0,15,248,0,0,0,15,252,0,0,0,15, + 252,0,0,0,25,252,0,0,0,25,254,0,0,0,25,254, + 0,0,0,48,254,0,0,0,48,255,0,0,0,32,255,0, + 0,0,96,127,0,0,0,96,127,128,0,0,64,127,128,0, + 0,192,63,128,0,0,192,63,192,0,0,255,255,192,0,1, + 255,255,192,0,1,128,31,224,0,1,0,31,224,0,3,0, + 15,224,0,3,0,15,240,0,2,0,15,240,0,6,0,7, + 240,0,15,0,7,248,0,31,0,15,252,0,255,240,255,255, + 128,28,34,136,33,3,0,255,255,240,0,15,224,126,0,15, + 224,31,0,15,224,31,128,15,224,15,192,15,224,15,192,15, 224,15,224,15,224,15,224,15,224,15,224,15,224,15,224,15, - 224,15,224,15,192,15,224,15,192,15,224,31,128,15,224,30, - 0,15,224,60,0,15,255,224,0,15,224,124,0,15,224,63, - 0,15,224,31,128,15,224,15,192,15,224,15,224,15,224,15, - 240,15,224,15,240,15,224,15,240,15,224,15,240,15,224,15, - 240,15,224,15,240,15,224,15,224,15,224,15,224,15,224,31, - 192,15,224,31,128,15,224,126,0,255,255,248,0,26,34,136, - 31,3,1,0,127,193,128,1,224,241,128,3,192,63,128,15, - 128,31,128,15,128,15,128,31,0,15,128,63,0,7,128,63, - 0,7,128,127,0,3,128,127,0,3,128,127,0,3,128,127, - 0,1,128,255,0,1,128,255,0,1,128,255,0,1,128,255, - 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, - 0,0,0,255,0,0,0,255,0,0,192,127,0,0,192,127, - 0,0,192,127,0,0,128,63,0,1,128,63,0,1,128,63, - 0,1,128,31,128,3,0,15,128,3,0,7,128,6,0,3, - 192,12,0,1,224,56,0,0,127,224,0,32,34,136,37,3, - 0,255,255,248,0,15,224,31,0,15,224,7,128,15,224,3, - 224,15,224,1,240,15,224,1,240,15,224,0,248,15,224,0, - 252,15,224,0,252,15,224,0,254,15,224,0,254,15,224,0, - 254,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, - 255,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, - 255,15,224,0,255,15,224,0,254,15,224,0,254,15,224,0, - 254,15,224,0,254,15,224,0,252,15,224,0,252,15,224,0, - 248,15,224,1,240,15,224,1,224,15,224,3,192,15,224,7, - 128,15,224,30,0,255,255,248,0,27,34,136,33,3,0,255, - 255,255,224,15,224,31,224,15,224,7,224,15,224,3,224,15, - 224,1,224,15,224,1,224,15,224,0,224,15,224,0,224,15, - 224,0,96,15,224,48,96,15,224,48,96,15,224,48,0,15, - 224,112,0,15,224,112,0,15,224,240,0,15,225,240,0,15, - 255,240,0,15,225,240,0,15,224,240,0,15,224,112,0,15, - 224,112,32,15,224,48,96,15,224,48,96,15,224,48,96,15, - 224,0,96,15,224,0,96,15,224,0,224,15,224,0,224,15, - 224,1,224,15,224,3,224,15,224,3,224,15,224,15,224,255, - 255,255,224,255,255,255,224,28,34,136,32,3,0,255,255,255, - 240,7,240,15,240,7,240,3,240,7,240,1,240,7,240,1, - 240,7,240,0,240,7,240,0,240,7,240,0,112,7,240,0, - 112,7,240,24,48,7,240,24,48,7,240,24,48,7,240,56, - 48,7,240,56,0,7,240,120,0,7,240,248,0,7,255,248, - 0,7,240,248,0,7,240,120,0,7,240,56,0,7,240,56, - 0,7,240,24,0,7,240,24,0,7,240,24,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,255,255,128,0,30,34,136,35,3,1,0,127,224,192,0, - 224,120,192,3,192,31,192,7,128,15,192,15,128,7,192,31, - 0,7,192,31,0,3,192,63,0,3,192,63,0,1,192,127, - 0,1,192,127,0,1,192,127,0,0,192,255,0,0,192,255, - 0,0,192,255,0,0,0,255,0,0,0,255,0,0,0,255, - 3,255,252,255,3,255,252,255,0,31,192,255,0,31,192,255, - 0,31,192,127,0,31,192,127,0,31,192,127,0,31,192,127, - 0,31,192,63,0,31,192,63,0,31,192,31,0,31,192,15, - 128,57,192,15,128,49,192,7,192,96,192,1,224,192,192,0, - 127,128,192,34,34,170,39,3,0,255,255,63,255,192,7,240, + 224,15,224,15,224,15,192,15,224,15,192,15,224,31,128,15, + 224,30,0,15,224,60,0,15,255,224,0,15,224,124,0,15, + 224,63,0,15,224,31,128,15,224,15,192,15,224,15,224,15, + 224,15,240,15,224,15,240,15,224,15,240,15,224,15,240,15, + 224,15,240,15,224,15,240,15,224,15,224,15,224,15,224,15, + 224,31,192,15,224,31,128,15,224,126,0,255,255,248,0,26, + 34,136,31,3,1,0,127,193,128,1,224,241,128,3,192,63, + 128,15,128,31,128,15,128,15,128,31,0,15,128,63,0,7, + 128,63,0,7,128,127,0,3,128,127,0,3,128,127,0,3, + 128,127,0,1,128,255,0,1,128,255,0,1,128,255,0,1, + 128,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0, + 0,255,0,0,0,255,0,0,0,255,0,0,192,127,0,0, + 192,127,0,0,192,127,0,0,128,63,0,1,128,63,0,1, + 128,63,0,1,128,31,128,3,0,15,128,3,0,7,128,6, + 0,3,192,12,0,1,224,56,0,0,127,224,0,32,34,136, + 37,3,0,255,255,248,0,15,224,31,0,15,224,7,128,15, + 224,3,224,15,224,1,240,15,224,1,240,15,224,0,248,15, + 224,0,252,15,224,0,252,15,224,0,254,15,224,0,254,15, + 224,0,254,15,224,0,255,15,224,0,255,15,224,0,255,15, + 224,0,255,15,224,0,255,15,224,0,255,15,224,0,255,15, + 224,0,255,15,224,0,255,15,224,0,254,15,224,0,254,15, + 224,0,254,15,224,0,254,15,224,0,252,15,224,0,252,15, + 224,0,248,15,224,1,240,15,224,1,224,15,224,3,192,15, + 224,7,128,15,224,30,0,255,255,248,0,27,34,136,33,3, + 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, + 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, + 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, + 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, + 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, + 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, + 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, + 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, + 224,255,255,255,224,255,255,255,224,28,34,136,32,3,0,255, + 255,255,240,7,240,15,240,7,240,3,240,7,240,1,240,7, + 240,1,240,7,240,0,240,7,240,0,240,7,240,0,112,7, + 240,0,112,7,240,24,48,7,240,24,48,7,240,24,48,7, + 240,56,48,7,240,56,0,7,240,120,0,7,240,248,0,7, + 255,248,0,7,240,248,0,7,240,120,0,7,240,56,0,7, + 240,56,0,7,240,24,0,7,240,24,0,7,240,24,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,255,255,128,0,30,34,136,35,3,1,0,127,224, + 192,0,224,120,192,3,192,31,192,7,128,15,192,15,128,7, + 192,31,0,7,192,31,0,3,192,63,0,3,192,63,0,1, + 192,127,0,1,192,127,0,1,192,127,0,0,192,255,0,0, + 192,255,0,0,192,255,0,0,0,255,0,0,0,255,0,0, + 0,255,3,255,252,255,3,255,252,255,0,31,192,255,0,31, + 192,255,0,31,192,127,0,31,192,127,0,31,192,127,0,31, + 192,127,0,31,192,63,0,31,192,63,0,31,192,31,0,31, + 192,15,128,57,192,15,128,49,192,7,192,96,192,1,224,192, + 192,0,127,128,192,34,34,170,39,3,0,255,255,63,255,192, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,255,255,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,7,240, 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, - 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, - 240,1,252,0,7,240,1,252,0,7,255,255,252,0,7,240, - 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, - 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, - 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, - 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, - 240,1,252,0,7,240,1,252,0,7,240,1,252,0,255,255, - 63,255,192,16,34,68,21,3,0,255,255,7,240,7,240,7, + 255,255,63,255,192,16,34,68,21,3,0,255,255,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, - 240,7,240,7,240,7,240,7,240,7,240,255,255,23,34,102, - 26,2,0,1,255,254,0,15,224,0,15,224,0,15,224,0, - 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 240,7,240,7,240,7,240,7,240,7,240,7,240,255,255,23, + 34,102,26,2,0,1,255,254,0,15,224,0,15,224,0,15, 224,0,15,224,0,15,224,0,15,224,0,15,224,0,15,224, 0,15,224,0,15,224,0,15,224,0,15,224,0,15,224,0, - 15,224,30,15,224,126,15,224,127,15,224,255,15,224,255,15, - 224,254,15,224,254,15,224,248,15,192,112,15,192,96,15,128, - 48,31,0,24,30,0,15,248,0,33,34,170,37,3,0,255, - 255,31,254,0,7,240,7,240,0,7,240,3,192,0,7,240, - 3,128,0,7,240,3,0,0,7,240,7,0,0,7,240,14, - 0,0,7,240,12,0,0,7,240,24,0,0,7,240,48,0, - 0,7,240,96,0,0,7,240,224,0,0,7,240,224,0,0, - 7,241,240,0,0,7,243,240,0,0,7,247,248,0,0,7, - 255,252,0,0,7,255,252,0,0,7,249,254,0,0,7,241, - 254,0,0,7,240,255,0,0,7,240,255,0,0,7,240,127, - 128,0,7,240,127,128,0,7,240,63,192,0,7,240,63,192, - 0,7,240,31,224,0,7,240,31,224,0,7,240,15,240,0, - 7,240,15,240,0,7,240,7,248,0,7,240,7,248,0,7, - 240,7,252,0,255,255,63,255,128,28,34,136,32,3,0,255, - 255,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, - 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, - 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, - 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, - 240,0,0,7,240,0,0,7,240,0,0,7,240,0,48,7, - 240,0,48,7,240,0,48,7,240,0,112,7,240,0,112,7, - 240,0,112,7,240,0,240,7,240,0,240,7,240,0,240,7, - 240,1,240,7,240,3,240,7,240,3,240,7,240,7,240,255, - 255,255,240,255,255,255,240,39,34,170,43,2,0,255,240,0, - 63,254,7,240,0,63,192,7,248,0,63,192,7,248,0,63, - 192,7,248,0,127,192,7,252,0,127,192,7,252,0,95,192, - 7,252,0,95,192,7,254,0,223,192,6,254,0,223,192,6, - 255,0,159,192,6,127,0,159,192,6,127,1,159,192,6,127, - 129,159,192,6,63,129,31,192,6,63,129,31,192,6,63,195, - 31,192,6,31,194,31,192,6,31,226,31,192,6,15,226,31, - 192,6,15,230,31,192,6,15,244,31,192,6,7,244,31,192, - 6,7,244,31,192,6,7,252,31,192,6,3,248,31,192,6, - 3,248,31,192,6,1,248,31,192,6,1,248,31,192,6,1, - 240,31,192,6,0,240,31,192,15,0,240,31,192,63,192,240, - 31,192,255,240,97,255,254,34,35,175,37,2,255,255,224,15, - 255,192,31,240,3,255,0,15,240,0,252,0,15,248,0,120, - 0,7,252,0,48,0,3,254,0,48,0,3,254,0,48,0, - 3,255,0,48,0,3,255,128,48,0,3,255,128,48,0,3, - 127,192,48,0,3,63,224,48,0,3,31,224,48,0,3,31, - 240,48,0,3,15,248,48,0,3,7,248,48,0,3,7,252, - 48,0,3,3,254,48,0,3,1,255,48,0,3,1,255,48, - 0,3,0,255,176,0,3,0,127,240,0,3,0,127,240,0, - 3,0,63,240,0,3,0,31,240,0,3,0,15,240,0,3, - 0,15,240,0,3,0,7,240,0,3,0,3,240,0,3,0, - 3,240,0,7,128,1,240,0,15,192,0,240,0,63,240,0, - 240,0,255,252,0,112,0,0,0,0,48,0,28,34,136,33, - 3,1,0,63,192,0,0,224,112,0,3,192,56,0,7,128, - 30,0,15,128,30,0,15,0,15,0,31,0,15,128,63,0, - 15,192,63,0,15,192,127,0,15,192,127,0,15,224,127,0, - 15,224,127,0,15,224,255,0,15,240,255,0,15,240,255,0, - 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, - 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, - 15,224,127,0,15,192,63,0,15,192,63,0,15,192,31,0, - 15,128,15,0,15,0,15,128,31,0,7,128,30,0,3,192, - 60,0,0,224,112,0,0,63,192,0,29,34,136,34,3,0, - 255,255,248,0,7,240,63,0,7,240,15,192,7,240,15,224, - 7,240,15,240,7,240,7,240,7,240,7,248,7,240,7,248, - 7,240,7,248,7,240,7,248,7,240,7,248,7,240,7,248, - 7,240,7,240,7,240,15,240,7,240,15,224,7,240,15,192, - 7,240,31,0,7,255,252,0,7,240,0,0,7,240,0,0, - 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, - 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, - 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, - 7,240,0,0,255,255,128,0,28,45,180,33,3,246,0,63, - 192,0,0,224,112,0,3,192,56,0,7,128,30,0,15,128, - 30,0,15,0,15,0,31,0,15,128,63,0,15,128,63,0, - 15,192,127,0,15,192,127,0,15,224,127,0,15,224,127,0, - 15,224,255,0,15,240,255,0,15,240,255,0,15,240,255,0, - 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, - 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, - 15,224,63,0,15,192,63,15,15,192,31,17,143,128,15,160, - 223,0,15,160,223,0,7,160,254,0,3,224,252,16,0,240, - 248,16,0,127,224,16,0,0,224,16,0,0,224,16,0,0, - 224,48,0,0,240,48,0,0,248,112,0,0,255,240,0,0, - 255,224,0,0,127,224,0,0,127,192,0,0,63,128,0,0, - 31,0,32,36,144,36,3,254,255,255,240,0,7,240,126,0, - 7,240,63,0,7,240,63,128,7,240,31,192,7,240,31,192, - 7,240,31,224,7,240,31,224,7,240,31,224,7,240,31,224, - 7,240,31,224,7,240,31,192,7,240,63,192,7,240,63,0, - 7,240,126,0,7,255,240,0,7,240,240,0,7,240,62,0, - 7,240,63,0,7,240,31,128,7,240,31,128,7,240,31,192, - 7,240,31,192,7,240,31,192,7,240,31,192,7,240,31,195, - 7,240,31,195,7,240,31,195,7,240,31,195,7,240,31,195, - 7,240,31,198,7,240,31,198,7,240,15,238,255,255,135,252, - 0,0,3,248,0,0,0,96,23,34,102,29,4,1,7,252, - 24,24,15,24,56,3,248,112,1,248,112,0,248,240,0,120, - 248,0,120,248,0,56,252,0,24,254,0,24,255,128,24,255, - 224,8,127,240,0,127,252,0,63,254,0,31,255,128,15,255, - 192,3,255,240,1,255,248,128,127,248,192,31,252,192,15,252, - 192,3,254,224,1,254,224,0,126,224,0,62,240,0,30,248, - 0,30,248,0,28,252,0,28,254,0,24,239,0,48,195,128, - 96,193,255,128,29,34,136,34,3,0,255,255,255,248,255,63, - 231,248,252,31,193,248,248,31,192,248,248,31,192,248,240,31, - 192,120,224,31,192,56,224,31,192,56,224,31,192,56,192,31, - 192,24,192,31,192,24,192,31,192,24,192,31,192,24,128,31, - 192,8,0,31,192,0,0,31,192,0,0,31,192,0,0,31, - 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, - 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, - 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, - 192,0,0,31,192,0,0,31,192,0,0,31,192,0,3,255, - 254,0,33,34,170,38,3,0,255,255,7,255,128,15,224,1, - 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 224,0,15,224,30,15,224,126,15,224,127,15,224,255,15,224, + 255,15,224,254,15,224,254,15,224,248,15,192,112,15,192,96, + 15,128,48,31,0,24,30,0,15,248,0,33,34,170,37,3, + 0,255,255,31,254,0,7,240,7,240,0,7,240,3,192,0, + 7,240,3,128,0,7,240,3,0,0,7,240,7,0,0,7, + 240,14,0,0,7,240,12,0,0,7,240,24,0,0,7,240, + 48,0,0,7,240,96,0,0,7,240,224,0,0,7,240,224, + 0,0,7,241,240,0,0,7,243,240,0,0,7,247,248,0, + 0,7,255,252,0,0,7,255,252,0,0,7,249,254,0,0, + 7,241,254,0,0,7,240,255,0,0,7,240,255,0,0,7, + 240,127,128,0,7,240,127,128,0,7,240,63,192,0,7,240, + 63,192,0,7,240,31,224,0,7,240,31,224,0,7,240,15, + 240,0,7,240,15,240,0,7,240,7,248,0,7,240,7,248, + 0,7,240,7,252,0,255,255,63,255,128,28,34,136,32,3, + 0,255,255,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 48,7,240,0,48,7,240,0,48,7,240,0,112,7,240,0, + 112,7,240,0,112,7,240,0,240,7,240,0,240,7,240,0, + 240,7,240,1,240,7,240,3,240,7,240,3,240,7,240,7, + 240,255,255,255,240,255,255,255,240,39,34,170,43,2,0,255, + 240,0,63,254,7,240,0,63,192,7,248,0,63,192,7,248, + 0,63,192,7,248,0,127,192,7,252,0,127,192,7,252,0, + 95,192,7,252,0,95,192,7,254,0,223,192,6,254,0,223, + 192,6,255,0,159,192,6,127,0,159,192,6,127,1,159,192, + 6,127,129,159,192,6,63,129,31,192,6,63,129,31,192,6, + 63,195,31,192,6,31,194,31,192,6,31,226,31,192,6,15, + 226,31,192,6,15,230,31,192,6,15,244,31,192,6,7,244, + 31,192,6,7,244,31,192,6,7,252,31,192,6,3,248,31, + 192,6,3,248,31,192,6,1,248,31,192,6,1,248,31,192, + 6,1,240,31,192,6,0,240,31,192,15,0,240,31,192,63, + 192,240,31,192,255,240,97,255,254,34,35,175,37,2,255,255, + 224,15,255,192,31,240,3,255,0,15,240,0,252,0,15,248, + 0,120,0,7,252,0,48,0,3,254,0,48,0,3,254,0, + 48,0,3,255,0,48,0,3,255,128,48,0,3,255,128,48, + 0,3,127,192,48,0,3,63,224,48,0,3,31,224,48,0, + 3,31,240,48,0,3,15,248,48,0,3,7,248,48,0,3, + 7,252,48,0,3,3,254,48,0,3,1,255,48,0,3,1, + 255,48,0,3,0,255,176,0,3,0,127,240,0,3,0,127, + 240,0,3,0,63,240,0,3,0,31,240,0,3,0,15,240, + 0,3,0,15,240,0,3,0,7,240,0,3,0,3,240,0, + 3,0,3,240,0,7,128,1,240,0,15,192,0,240,0,63, + 240,0,240,0,255,252,0,112,0,0,0,0,48,0,28,34, + 136,33,3,1,0,63,192,0,0,224,112,0,3,192,56,0, + 7,128,30,0,15,128,30,0,15,0,15,0,31,0,15,128, + 63,0,15,192,63,0,15,192,127,0,15,192,127,0,15,224, + 127,0,15,224,127,0,15,224,255,0,15,240,255,0,15,240, + 255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240, + 255,0,15,240,255,0,15,240,127,0,15,224,127,0,15,224, + 127,0,15,224,127,0,15,192,63,0,15,192,63,0,15,192, + 31,0,15,128,15,0,15,0,15,128,31,0,7,128,30,0, + 3,192,60,0,0,224,112,0,0,63,192,0,29,34,136,34, + 3,0,255,255,248,0,7,240,63,0,7,240,15,192,7,240, + 15,224,7,240,15,240,7,240,7,240,7,240,7,248,7,240, + 7,248,7,240,7,248,7,240,7,248,7,240,7,248,7,240, + 7,248,7,240,7,240,7,240,15,240,7,240,15,224,7,240, + 15,192,7,240,31,0,7,255,252,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,255,255,128,0,28,45,180,33,3,246, + 0,63,192,0,0,224,112,0,3,192,56,0,7,128,30,0, + 15,128,30,0,15,0,15,0,31,0,15,128,63,0,15,128, + 63,0,15,192,127,0,15,192,127,0,15,224,127,0,15,224, + 127,0,15,224,255,0,15,240,255,0,15,240,255,0,15,240, + 255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240, + 255,0,15,240,255,0,15,240,127,0,15,224,127,0,15,224, + 127,0,15,224,63,0,15,192,63,15,15,192,31,17,143,128, + 15,160,223,0,15,160,223,0,7,160,254,0,3,224,252,16, + 0,240,248,16,0,127,224,16,0,0,224,16,0,0,224,16, + 0,0,224,48,0,0,240,48,0,0,248,112,0,0,255,240, + 0,0,255,224,0,0,127,224,0,0,127,192,0,0,63,128, + 0,0,31,0,32,36,144,36,3,254,255,255,240,0,7,240, + 126,0,7,240,63,0,7,240,63,128,7,240,31,192,7,240, + 31,192,7,240,31,224,7,240,31,224,7,240,31,224,7,240, + 31,224,7,240,31,224,7,240,31,192,7,240,63,192,7,240, + 63,0,7,240,126,0,7,255,240,0,7,240,240,0,7,240, + 62,0,7,240,63,0,7,240,31,128,7,240,31,128,7,240, + 31,192,7,240,31,192,7,240,31,192,7,240,31,192,7,240, + 31,195,7,240,31,195,7,240,31,195,7,240,31,195,7,240, + 31,195,7,240,31,198,7,240,31,198,7,240,15,238,255,255, + 135,252,0,0,3,248,0,0,0,96,23,34,102,29,4,1, + 7,252,24,24,15,24,56,3,248,112,1,248,112,0,248,240, + 0,120,248,0,120,248,0,56,252,0,24,254,0,24,255,128, + 24,255,224,8,127,240,0,127,252,0,63,254,0,31,255,128, + 15,255,192,3,255,240,1,255,248,128,127,248,192,31,252,192, + 15,252,192,3,254,224,1,254,224,0,126,224,0,62,240,0, + 30,248,0,30,248,0,28,252,0,28,254,0,24,239,0,48, + 195,128,96,193,255,128,29,34,136,34,3,0,255,255,255,248, + 255,63,231,248,252,31,193,248,248,31,192,248,248,31,192,248, + 240,31,192,120,224,31,192,56,224,31,192,56,224,31,192,56, + 192,31,192,24,192,31,192,24,192,31,192,24,192,31,192,24, + 128,31,192,8,0,31,192,0,0,31,192,0,0,31,192,0, + 0,31,192,0,0,31,192,0,0,31,192,0,0,31,192,0, + 0,31,192,0,0,31,192,0,0,31,192,0,0,31,192,0, + 0,31,192,0,0,31,192,0,0,31,192,0,0,31,192,0, + 0,31,192,0,0,31,192,0,0,31,192,0,0,31,192,0, + 3,255,254,0,33,34,170,38,3,0,255,255,7,255,128,15, + 224,1,254,0,15,224,0,120,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, - 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, - 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, - 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, - 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, - 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, - 0,0,34,34,170,37,2,0,255,255,135,255,192,15,248,0, - 126,0,7,248,0,56,0,7,248,0,56,0,3,248,0,48, - 0,3,252,0,48,0,3,252,0,48,0,1,254,0,96,0, - 1,254,0,96,0,0,254,0,96,0,0,255,0,192,0,0, - 255,0,192,0,0,127,0,192,0,0,127,129,128,0,0,127, - 129,128,0,0,63,129,128,0,0,63,195,0,0,0,63,195, - 0,0,0,31,195,0,0,0,31,230,0,0,0,15,230,0, - 0,0,15,246,0,0,0,15,252,0,0,0,7,252,0,0, - 0,7,252,0,0,0,7,248,0,0,0,3,248,0,0,0, - 3,248,0,0,0,3,240,0,0,0,1,240,0,0,0,1, - 240,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224, - 0,0,49,34,238,52,2,0,255,255,63,255,207,255,128,31, - 252,7,254,0,252,0,7,248,3,252,0,112,0,7,248,1, - 252,0,112,0,3,248,1,254,0,96,0,3,252,1,254,0, - 96,0,3,252,0,254,0,96,0,1,252,0,254,0,192,0, - 1,254,1,255,0,192,0,1,254,1,255,0,192,0,0,254, - 1,255,1,128,0,0,255,3,127,129,128,0,0,255,3,63, - 129,128,0,0,127,3,63,129,128,0,0,127,135,63,195,0, - 0,0,127,134,31,195,0,0,0,63,134,31,195,0,0,0, - 63,198,31,231,0,0,0,31,204,15,230,0,0,0,31,204, - 15,230,0,0,0,31,236,15,246,0,0,0,15,248,7,252, - 0,0,0,15,248,7,252,0,0,0,15,248,7,252,0,0, - 0,7,248,3,252,0,0,0,7,240,3,248,0,0,0,7, - 240,3,248,0,0,0,3,240,1,248,0,0,0,3,224,1, - 240,0,0,0,3,224,1,240,0,0,0,1,224,0,240,0, - 0,0,1,192,0,240,0,0,0,1,192,0,224,0,0,0, - 0,192,0,96,0,0,33,34,170,36,2,0,127,255,31,254, - 0,31,252,3,240,0,7,248,3,192,0,3,248,3,128,0, - 3,252,3,128,0,1,252,3,0,0,1,254,7,0,0,0, - 255,6,0,0,0,255,12,0,0,0,127,140,0,0,0,127, - 152,0,0,0,63,240,0,0,0,63,240,0,0,0,31,224, - 0,0,0,31,224,0,0,0,15,240,0,0,0,15,248,0, - 0,0,7,248,0,0,0,7,252,0,0,0,7,252,0,0, - 0,15,254,0,0,0,29,254,0,0,0,24,255,0,0,0, - 56,255,0,0,0,48,127,128,0,0,96,127,128,0,0,224, - 63,192,0,0,192,63,224,0,1,128,31,224,0,3,128,31, - 240,0,3,128,15,240,0,7,128,15,248,0,31,128,31,252, - 0,255,240,127,255,128,32,34,136,35,2,0,255,254,15,255, - 31,248,1,248,15,248,0,240,7,248,0,224,7,248,0,192, - 3,252,0,192,3,252,0,192,1,252,1,128,1,254,1,128, - 0,254,3,0,0,255,3,0,0,255,3,0,0,127,134,0, - 0,127,134,0,0,63,196,0,0,63,204,0,0,31,204,0, - 0,31,248,0,0,15,248,0,0,15,248,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,255,255,0,25,34,136,31,3,0,127,255,255,128,127,128, - 127,128,126,0,255,0,124,0,255,0,120,1,254,0,120,3, - 254,0,112,3,252,0,112,7,252,0,96,7,248,0,96,15, - 248,0,96,15,240,0,64,31,224,0,0,31,224,0,0,63, - 192,0,0,63,192,0,0,127,128,0,0,127,128,0,0,255, - 0,0,0,255,0,0,1,254,0,0,3,254,0,128,3,252, - 0,128,7,248,0,128,7,248,0,128,15,240,1,128,15,240, - 1,128,31,224,3,128,31,224,3,128,63,192,7,128,63,192, - 15,128,127,128,31,128,127,128,63,128,255,255,255,128,255,255, - 255,128,11,42,84,18,4,248,255,224,248,0,248,0,248,0, + 48,0,15,224,0,48,0,15,224,0,48,0,7,224,0,48, + 0,7,224,0,96,0,7,240,0,96,0,3,240,0,192,0, + 1,248,1,192,0,0,252,3,128,0,0,127,159,0,0,0, + 31,252,0,0,34,34,170,37,2,0,255,255,135,255,192,15, + 248,0,126,0,7,248,0,56,0,7,248,0,56,0,3,248, + 0,48,0,3,252,0,48,0,3,252,0,48,0,1,254,0, + 96,0,1,254,0,96,0,0,254,0,96,0,0,255,0,192, + 0,0,255,0,192,0,0,127,0,192,0,0,127,129,128,0, + 0,127,129,128,0,0,63,129,128,0,0,63,195,0,0,0, + 63,195,0,0,0,31,195,0,0,0,31,230,0,0,0,15, + 230,0,0,0,15,246,0,0,0,15,252,0,0,0,7,252, + 0,0,0,7,252,0,0,0,7,248,0,0,0,3,248,0, + 0,0,3,248,0,0,0,3,240,0,0,0,1,240,0,0, + 0,1,240,0,0,0,0,224,0,0,0,0,224,0,0,0, + 0,224,0,0,49,34,238,52,2,0,255,255,63,255,207,255, + 128,31,252,7,254,0,252,0,7,248,3,252,0,112,0,7, + 248,1,252,0,112,0,3,248,1,254,0,96,0,3,252,1, + 254,0,96,0,3,252,0,254,0,96,0,1,252,0,254,0, + 192,0,1,254,1,255,0,192,0,1,254,1,255,0,192,0, + 0,254,1,255,1,128,0,0,255,3,127,129,128,0,0,255, + 3,63,129,128,0,0,127,3,63,129,128,0,0,127,135,63, + 195,0,0,0,127,134,31,195,0,0,0,63,134,31,195,0, + 0,0,63,198,31,231,0,0,0,31,204,15,230,0,0,0, + 31,204,15,230,0,0,0,31,236,15,246,0,0,0,15,248, + 7,252,0,0,0,15,248,7,252,0,0,0,15,248,7,252, + 0,0,0,7,248,3,252,0,0,0,7,240,3,248,0,0, + 0,7,240,3,248,0,0,0,3,240,1,248,0,0,0,3, + 224,1,240,0,0,0,3,224,1,240,0,0,0,1,224,0, + 240,0,0,0,1,192,0,240,0,0,0,1,192,0,224,0, + 0,0,0,192,0,96,0,0,33,34,170,36,2,0,127,255, + 31,254,0,31,252,3,240,0,7,248,3,192,0,3,248,3, + 128,0,3,252,3,128,0,1,252,3,0,0,1,254,7,0, + 0,0,255,6,0,0,0,255,12,0,0,0,127,140,0,0, + 0,127,152,0,0,0,63,240,0,0,0,63,240,0,0,0, + 31,224,0,0,0,31,224,0,0,0,15,240,0,0,0,15, + 248,0,0,0,7,248,0,0,0,7,252,0,0,0,7,252, + 0,0,0,15,254,0,0,0,29,254,0,0,0,24,255,0, + 0,0,56,255,0,0,0,48,127,128,0,0,96,127,128,0, + 0,224,63,192,0,0,192,63,224,0,1,128,31,224,0,3, + 128,31,240,0,3,128,15,240,0,7,128,15,248,0,31,128, + 31,252,0,255,240,127,255,128,32,34,136,35,2,0,255,254, + 15,255,31,248,1,248,15,248,0,240,7,248,0,224,7,248, + 0,192,3,252,0,192,3,252,0,192,1,252,1,128,1,254, + 1,128,0,254,3,0,0,255,3,0,0,255,3,0,0,127, + 134,0,0,127,134,0,0,63,196,0,0,63,204,0,0,31, + 204,0,0,31,248,0,0,15,248,0,0,15,248,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,255,255,0,25,34,136,31,3,0,127,255,255,128, + 127,128,127,128,126,0,255,0,124,0,255,0,120,1,254,0, + 120,3,254,0,112,3,252,0,112,7,252,0,96,7,248,0, + 96,15,248,0,96,15,240,0,64,31,224,0,0,31,224,0, + 0,63,192,0,0,63,192,0,0,127,128,0,0,127,128,0, + 0,255,0,0,0,255,0,0,1,254,0,0,3,254,0,128, + 3,252,0,128,7,248,0,128,7,248,0,128,15,240,1,128, + 15,240,1,128,31,224,3,128,31,224,3,128,63,192,7,128, + 63,192,15,128,127,128,31,128,127,128,63,128,255,255,255,128, + 255,255,255,128,11,42,84,18,4,248,255,224,248,0,248,0, 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, - 248,0,248,0,248,0,248,0,248,0,255,224,16,44,88,22, - 3,247,224,0,224,0,224,0,240,0,112,0,112,0,120,0, - 56,0,56,0,60,0,28,0,28,0,30,0,14,0,14,0, - 14,0,15,0,7,0,7,0,7,128,3,128,3,128,3,192, - 1,192,1,192,1,224,0,224,0,224,0,224,0,240,0,112, - 0,112,0,120,0,56,0,56,0,60,0,28,0,28,0,30, - 0,14,0,14,0,14,0,15,0,7,11,42,84,18,3,248, - 255,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 248,0,248,0,248,0,248,0,248,0,248,0,255,224,16,44, + 88,22,3,247,224,0,224,0,224,0,240,0,112,0,112,0, + 120,0,56,0,56,0,60,0,28,0,28,0,30,0,14,0, + 14,0,14,0,15,0,7,0,7,0,7,128,3,128,3,128, + 3,192,1,192,1,192,1,224,0,224,0,224,0,224,0,240, + 0,112,0,112,0,120,0,56,0,56,0,60,0,28,0,28, + 0,30,0,14,0,14,0,14,0,15,0,7,11,42,84,18, + 3,248,255,224,3,224,3,224,3,224,3,224,3,224,3,224, 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, - 3,224,255,224,22,17,51,28,3,18,0,48,0,0,112,0, - 0,120,0,0,252,0,0,252,0,1,254,0,3,207,0,3, - 143,0,7,135,128,15,3,128,15,3,192,30,1,224,60,0, - 224,60,0,240,120,0,120,112,0,56,240,0,60,25,3,12, - 25,0,248,255,255,255,128,255,255,255,128,255,255,255,128,8, - 9,9,21,4,25,96,240,248,124,60,30,15,3,1,21,22, - 66,24,2,1,15,248,0,24,62,0,56,63,0,120,31,0, - 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, - 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, - 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, - 127,127,240,63,143,224,22,34,102,25,1,0,255,128,0,31, - 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, - 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, - 31,159,128,31,179,224,31,225,224,31,193,240,31,193,248,31, - 192,248,31,192,248,31,128,252,31,128,252,31,128,252,31,128, - 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,248, - 31,192,248,31,193,248,29,193,240,24,225,224,24,99,192,16, - 63,128,18,22,66,22,2,1,3,252,0,15,6,0,31,3, - 0,62,3,128,62,7,128,126,15,128,124,31,128,252,31,128, - 252,31,0,252,14,0,252,0,0,252,0,0,252,0,0,252, - 0,0,252,0,0,124,0,64,124,0,192,62,0,128,62,0, - 128,30,1,0,15,130,0,3,252,0,23,34,102,26,2,0, - 0,63,224,0,7,224,0,7,224,0,7,224,0,7,224,0, - 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, - 224,0,7,224,7,231,224,31,23,224,30,31,224,62,15,224, - 126,15,224,124,15,224,124,7,224,252,7,224,252,7,224,252, - 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, - 224,124,7,224,124,15,224,126,15,224,62,15,224,30,31,224, - 15,23,224,7,231,254,18,22,66,23,2,1,3,252,0,14, - 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, - 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, - 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, - 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, - 102,16,1,1,0,255,0,1,199,128,7,199,128,7,199,192, - 15,143,192,15,143,192,31,143,192,31,143,128,31,135,128,31, - 128,0,31,128,0,31,128,0,255,240,0,31,128,0,31,128, + 3,224,3,224,255,224,22,17,51,28,3,18,0,48,0,0, + 112,0,0,120,0,0,252,0,0,252,0,1,254,0,3,207, + 0,3,143,0,7,135,128,15,3,128,15,3,192,30,1,224, + 60,0,224,60,0,240,120,0,120,112,0,56,240,0,60,25, + 3,12,25,0,248,255,255,255,128,255,255,255,128,255,255,255, + 128,8,9,9,21,4,25,96,240,248,124,60,30,15,3,1, + 21,22,66,24,2,1,15,248,0,24,62,0,56,63,0,120, + 31,0,124,31,128,126,31,128,126,31,128,62,31,128,8,63, + 128,1,255,128,7,159,128,30,31,128,62,31,128,124,31,128, + 124,31,128,252,31,128,252,31,136,252,31,136,252,31,152,254, + 63,144,127,127,240,63,143,224,22,34,102,25,1,0,255,128, 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,159,128,31,179,224,31,225,224,31,193,240,31,193, + 248,31,192,248,31,192,248,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 128,248,31,192,248,31,193,248,29,193,240,24,225,224,24,99, + 192,16,63,128,18,22,66,22,2,1,3,252,0,15,6,0, + 31,3,0,62,3,128,62,7,128,126,15,128,124,31,128,252, + 31,128,252,31,0,252,14,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,124,0,64,124,0,192,62,0,128, + 62,0,128,30,1,0,15,130,0,3,252,0,23,34,102,26, + 2,0,0,63,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,7,224,0,7,224,0,7,224,0,7,224, + 0,7,224,0,7,224,7,231,224,31,23,224,30,31,224,62, + 15,224,126,15,224,124,15,224,124,7,224,252,7,224,252,7, + 224,252,7,224,252,7,224,252,7,224,252,7,224,252,7,224, + 252,7,224,124,7,224,124,15,224,126,15,224,62,15,224,30, + 31,224,15,23,224,7,231,254,18,22,66,23,2,1,3,252, + 0,14,30,0,30,31,0,62,15,128,60,15,128,124,15,128, + 124,15,192,252,15,192,252,15,192,252,15,192,255,255,192,252, + 0,0,252,0,0,252,0,0,252,0,64,124,0,64,124,0, + 192,62,0,192,62,0,128,31,1,0,15,131,0,3,252,0, + 18,34,102,16,1,1,0,255,0,1,199,128,7,199,128,7, + 199,192,15,143,192,15,143,192,31,143,192,31,143,128,31,135, + 128,31,128,0,31,128,0,31,128,0,255,240,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, - 0,31,128,0,31,128,0,255,240,0,24,33,99,27,2,246, - 7,254,62,31,15,71,63,7,143,62,7,207,126,7,238,126, - 7,228,126,7,224,126,7,224,126,7,224,62,7,192,31,15, - 128,15,15,0,3,252,0,12,0,0,48,0,0,48,0,0, - 112,0,0,112,0,0,127,255,128,127,255,224,63,255,240,31, - 255,240,7,255,248,60,1,248,96,0,120,192,0,56,192,0, - 56,192,0,48,192,0,112,96,0,96,48,1,192,30,7,128, - 3,252,0,24,34,102,27,1,0,255,128,0,31,128,0,31, - 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, - 0,31,128,0,31,128,0,31,128,0,31,128,0,31,143,224, - 31,145,240,31,160,248,31,160,252,31,192,252,31,192,252,31, - 192,252,31,128,252,31,128,252,31,128,252,31,128,252,31,128, - 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,252, - 31,128,252,31,128,252,31,128,252,31,128,252,255,227,255,11, - 35,70,15,2,0,4,0,31,0,63,128,63,128,63,128,63, - 128,31,0,4,0,0,0,0,0,0,0,0,0,0,0,255, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,255,240,0,24,33,99,27, + 2,246,7,254,62,31,15,71,63,7,143,62,7,207,126,7, + 238,126,7,228,126,7,224,126,7,224,126,7,224,62,7,192, + 31,15,128,15,15,0,3,252,0,12,0,0,48,0,0,48, + 0,0,112,0,0,112,0,0,127,255,128,127,255,224,63,255, + 240,31,255,240,7,255,248,60,1,248,96,0,120,192,0,56, + 192,0,56,192,0,48,192,0,112,96,0,96,48,1,192,30, + 7,128,3,252,0,24,34,102,27,1,0,255,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,129,0,31, + 143,224,31,145,240,31,160,248,31,160,252,31,192,252,31,192, + 252,31,192,252,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,252,255,227, + 255,11,35,70,15,2,0,4,0,31,0,63,128,63,128,63, + 128,63,128,31,0,4,0,0,0,0,0,0,0,0,0,0, + 0,255,0,63,0,63,0,63,0,63,0,63,0,63,0,63, 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, - 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, - 0,63,0,63,0,63,0,63,0,255,224,15,46,92,16,254, - 245,0,16,0,124,0,254,0,254,0,254,0,254,0,124,0, - 16,0,0,0,0,0,0,0,0,0,0,7,252,0,252,0, + 0,63,0,63,0,63,0,63,0,63,0,255,224,15,46,92, + 16,254,245,0,16,0,124,0,254,0,254,0,254,0,254,0, + 124,0,16,0,0,0,0,0,0,0,0,0,0,7,252,0, 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, - 252,0,252,0,252,0,252,0,252,0,252,56,252,124,252,252, - 252,252,252,248,248,248,248,113,240,49,224,31,128,25,34,136, - 27,1,0,255,128,0,0,31,128,0,0,31,128,0,0,31, - 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, - 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, - 128,0,0,31,131,254,0,31,128,240,0,31,128,96,0,31, - 128,192,0,31,128,128,0,31,129,128,0,31,131,0,0,31, - 134,0,0,31,143,0,0,31,159,0,0,31,159,128,0,31, - 191,128,0,31,239,192,0,31,199,224,0,31,135,224,0,31, - 131,240,0,31,129,248,0,31,129,248,0,31,128,252,0,31, - 128,252,0,31,128,254,0,255,243,255,128,12,34,68,14,1, - 0,255,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 252,0,252,0,252,0,252,0,252,0,252,0,252,56,252,124, + 252,252,252,252,252,248,248,248,248,113,240,49,224,31,128,25, + 34,136,27,1,0,255,128,0,0,31,128,0,0,31,128,0, + 0,31,128,0,0,31,128,0,0,31,128,0,0,31,128,0, + 0,31,128,0,0,31,128,0,0,31,128,0,0,31,128,0, + 0,31,128,0,0,31,131,254,0,31,128,240,0,31,128,96, + 0,31,128,192,0,31,128,128,0,31,129,128,0,31,131,0, + 0,31,134,0,0,31,143,0,0,31,159,0,0,31,159,128, + 0,31,191,128,0,31,239,192,0,31,199,224,0,31,135,224, + 0,31,131,240,0,31,129,248,0,31,129,248,0,31,128,252, + 0,31,128,252,0,31,128,254,0,255,243,255,128,12,34,68, + 14,1,0,255,128,31,128,31,128,31,128,31,128,31,128,31, 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, - 128,31,128,255,240,34,22,110,37,2,1,255,31,193,248,0, - 63,35,230,124,0,63,67,228,62,0,63,131,248,63,0,63, - 131,248,63,0,63,131,248,63,0,63,3,240,63,0,63,3, + 128,31,128,31,128,255,240,34,22,110,37,2,1,255,31,193, + 248,0,63,35,230,124,0,63,67,228,62,0,63,131,248,63, + 0,63,131,248,63,0,63,131,248,63,0,63,3,240,63,0, + 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, + 3,240,63,0,63,3,240,63,0,63,3,240,63,0,63,3, 240,63,0,63,3,240,63,0,63,3,240,63,0,63,3,240, 63,0,63,3,240,63,0,63,3,240,63,0,63,3,240,63, - 0,63,3,240,63,0,63,3,240,63,0,63,3,240,63,0, - 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, - 3,240,63,0,255,207,252,255,192,23,22,66,27,2,1,255, - 31,192,63,35,224,63,65,240,63,65,248,63,129,248,63,129, + 0,63,3,240,63,0,255,207,252,255,192,23,22,66,27,2, + 1,255,31,192,63,35,224,63,65,240,63,65,248,63,129,248, + 63,129,248,63,1,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,63,1, 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, - 63,1,248,63,1,248,63,1,248,63,1,248,63,1,248,63, - 1,248,63,1,248,63,1,248,63,1,248,63,1,248,255,199, - 254,20,22,66,24,2,1,3,252,0,15,15,0,30,7,128, - 62,7,192,62,7,192,124,3,224,124,3,224,252,3,240,252, - 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, - 240,252,3,240,124,3,224,124,3,224,62,7,192,62,7,192, - 30,7,128,15,15,0,3,252,0,22,33,99,25,1,246,255, - 159,128,31,163,192,31,225,224,31,193,240,31,192,248,31,192, - 248,31,192,248,31,128,252,31,128,252,31,128,252,31,128,252, - 31,128,252,31,128,252,31,128,252,31,128,252,31,192,252,31, - 192,248,31,192,248,31,193,240,31,225,240,31,179,224,31,159, - 128,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, - 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,255, - 240,0,22,33,99,25,2,246,7,240,32,15,24,96,30,28, - 96,62,14,224,126,15,224,124,15,224,124,7,224,252,7,224, - 252,7,224,252,7,224,252,7,224,252,7,224,252,7,224,252, - 7,224,252,7,224,124,7,224,124,15,224,126,15,224,62,15, - 224,30,31,224,31,23,224,7,231,224,0,7,224,0,7,224, - 0,7,224,0,7,224,0,7,224,0,7,224,0,7,224,0, - 7,224,0,7,224,0,7,224,0,63,252,17,22,66,20,2, - 1,255,31,0,63,63,128,63,79,128,63,79,128,63,159,128, - 63,159,128,63,159,0,63,14,0,63,0,0,63,0,0,63, - 0,0,63,0,0,63,0,0,63,0,0,63,0,0,63,0, + 255,199,254,20,22,66,24,2,1,3,252,0,15,15,0,30, + 7,128,62,7,192,62,7,192,124,3,224,124,3,224,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,252,3,240,124,3,224,124,3,224,62,7,192,62, + 7,192,30,7,128,15,15,0,3,252,0,22,33,99,25,1, + 246,255,159,128,31,163,192,31,225,224,31,193,240,31,192,248, + 31,192,248,31,192,248,31,128,252,31,128,252,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,252,31,192, + 252,31,192,248,31,192,248,31,193,240,31,225,240,31,179,224, + 31,159,128,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,255,240,0,22,33,99,25,2,246,7,240,32,15,24,96, + 30,28,96,62,14,224,126,15,224,124,15,224,124,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, + 224,252,7,224,252,7,224,124,7,224,124,15,224,126,15,224, + 62,15,224,30,31,224,31,23,224,7,231,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,7,224,0,7,224,0,63,252,17,22,66, + 20,2,1,255,31,0,63,63,128,63,79,128,63,79,128,63, + 159,128,63,159,128,63,159,0,63,14,0,63,0,0,63,0, 0,63,0,0,63,0,0,63,0,0,63,0,0,63,0,0, - 255,192,0,16,22,44,21,3,1,31,196,48,116,96,60,224, - 28,224,28,240,12,248,4,254,4,127,128,127,224,63,240,31, - 252,7,254,129,254,192,127,192,31,224,15,224,7,240,7,248, - 6,204,14,135,248,15,32,64,17,1,0,1,128,1,128,1, - 128,1,128,1,128,3,128,3,128,7,128,15,128,63,128,255, - 248,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, - 128,31,128,31,128,31,128,31,130,31,130,31,130,31,130,31, - 134,31,134,31,132,15,196,15,248,7,240,24,22,66,26,1, - 0,255,143,248,31,129,248,31,129,248,31,129,248,31,129,248, - 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 63,0,0,63,0,0,63,0,0,63,0,0,63,0,0,63, + 0,0,255,192,0,16,22,44,21,3,1,31,196,48,116,96, + 60,224,28,224,28,240,12,248,4,254,4,127,128,127,224,63, + 240,31,252,7,254,129,254,192,127,192,31,224,15,224,7,240, + 7,248,6,204,14,135,248,15,32,64,17,1,0,1,128,1, + 128,1,128,1,128,1,128,3,128,3,128,7,128,15,128,63, + 128,255,248,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,130,31,130,31,130,31, + 130,31,134,31,134,31,132,15,196,15,248,7,240,24,22,66, + 26,1,0,255,143,248,31,129,248,31,129,248,31,129,248,31, 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, - 248,31,131,248,31,131,248,31,133,248,15,133,248,15,201,248, - 7,241,255,23,23,69,25,1,255,255,241,254,63,192,120,31, - 128,48,15,192,48,15,192,32,7,192,96,7,224,96,7,224, - 64,3,224,192,3,240,128,3,240,128,1,241,128,1,249,0, - 0,249,0,0,255,0,0,254,0,0,126,0,0,126,0,0, - 124,0,0,60,0,0,60,0,0,24,0,0,24,0,35,23, - 115,37,1,255,255,231,255,31,224,63,129,252,7,128,31,128, - 252,3,0,15,128,252,2,0,15,192,124,2,0,15,192,124, - 6,0,7,192,126,4,0,7,224,254,4,0,3,224,191,12, - 0,3,224,191,8,0,3,241,159,24,0,1,241,31,144,0, - 1,241,31,144,0,1,251,31,176,0,0,250,15,224,0,0, - 250,15,224,0,0,254,15,224,0,0,124,7,192,0,0,124, - 7,192,0,0,60,7,192,0,0,56,3,128,0,0,56,3, - 128,0,0,24,3,0,0,23,22,66,25,1,0,255,231,252, - 63,192,240,31,192,224,15,192,192,15,225,128,7,227,0,3, - 242,0,3,254,0,1,252,0,1,252,0,0,252,0,0,126, - 0,0,127,0,0,127,0,0,223,128,1,159,192,3,15,192, - 2,15,224,6,7,224,14,7,240,30,7,248,255,207,254,23, - 33,99,25,1,245,255,241,254,63,192,120,31,128,48,15,192, - 32,15,192,32,15,192,96,7,224,64,7,224,64,3,240,192, - 3,240,128,1,248,128,1,249,128,0,249,0,0,253,0,0, - 253,0,0,126,0,0,126,0,0,62,0,0,60,0,0,28, - 0,0,28,0,0,12,0,0,8,0,0,8,0,0,8,0, - 15,16,0,31,16,0,63,144,0,63,32,0,62,32,0,62, - 64,0,31,192,0,15,0,0,18,22,66,22,2,0,127,255, - 192,124,15,192,120,31,128,112,63,0,96,63,0,96,126,0, - 64,126,0,64,252,0,1,248,0,1,248,0,3,240,0,3, - 240,0,7,224,64,15,192,64,15,192,64,31,128,192,31,0, - 192,63,1,192,126,1,192,126,3,192,252,15,192,255,255,192, - 14,43,86,20,3,247,0,60,0,240,3,192,7,128,7,128, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,131,248,31,131,248,31,133,248,15,133,248,15, + 201,248,7,241,255,23,23,69,25,1,255,255,241,254,63,192, + 120,31,128,48,15,192,48,15,192,32,7,192,96,7,224,96, + 7,224,64,3,224,192,3,240,128,3,240,128,1,241,128,1, + 249,0,0,249,0,0,255,0,0,254,0,0,126,0,0,126, + 0,0,124,0,0,60,0,0,60,0,0,24,0,0,24,0, + 35,23,115,37,1,255,255,231,255,31,224,63,129,252,7,128, + 31,128,252,3,0,15,128,252,2,0,15,192,124,2,0,15, + 192,124,6,0,7,192,126,4,0,7,224,254,4,0,3,224, + 191,12,0,3,224,191,8,0,3,241,159,24,0,1,241,31, + 144,0,1,241,31,144,0,1,251,31,176,0,0,250,15,224, + 0,0,250,15,224,0,0,254,15,224,0,0,124,7,192,0, + 0,124,7,192,0,0,60,7,192,0,0,56,3,128,0,0, + 56,3,128,0,0,24,3,0,0,23,22,66,25,1,0,255, + 231,252,63,192,240,31,192,224,15,192,192,15,225,128,7,227, + 0,3,242,0,3,254,0,1,252,0,1,252,0,0,252,0, + 0,126,0,0,127,0,0,127,0,0,223,128,1,159,192,3, + 15,192,2,15,224,6,7,224,14,7,240,30,7,248,255,207, + 254,23,33,99,25,1,245,255,241,254,63,192,120,31,128,48, + 15,192,32,15,192,32,15,192,96,7,224,64,7,224,64,3, + 240,192,3,240,128,1,248,128,1,249,128,0,249,0,0,253, + 0,0,253,0,0,126,0,0,126,0,0,62,0,0,60,0, + 0,28,0,0,28,0,0,12,0,0,8,0,0,8,0,0, + 8,0,15,16,0,31,16,0,63,144,0,63,32,0,62,32, + 0,62,64,0,31,192,0,15,0,0,18,22,66,22,2,0, + 127,255,192,124,15,192,120,31,128,112,63,0,96,63,0,96, + 126,0,64,126,0,64,252,0,1,248,0,1,248,0,3,240, + 0,3,240,0,7,224,64,15,192,64,15,192,64,31,128,192, + 31,0,192,63,1,192,126,1,192,126,3,192,252,15,192,255, + 255,192,14,43,86,20,3,247,0,60,0,240,3,192,7,128, + 7,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,0,15,0, + 28,0,240,0,60,0,30,0,15,0,15,128,15,128,15,128, 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, - 15,128,15,128,15,128,15,128,15,128,15,0,15,0,28,0, - 240,0,60,0,30,0,15,0,15,128,15,128,15,128,15,128, - 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, - 15,128,7,128,7,128,3,192,0,240,0,60,3,44,44,13, - 5,247,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 15,128,15,128,7,128,7,128,3,192,0,240,0,60,3,44, + 44,13,5,247,224,224,224,224,224,224,224,224,224,224,224,224, 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, - 224,224,224,224,224,224,224,224,224,224,224,224,224,224,15,43, - 86,20,3,247,240,0,60,0,15,0,7,128,7,128,7,192, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 15,43,86,20,3,247,240,0,60,0,15,0,7,128,7,128, 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, - 7,192,7,192,7,192,7,192,3,192,3,192,0,240,0,62, - 0,240,1,224,3,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,7,192,3,192,3,192,0,240, + 0,62,0,240,1,224,3,192,7,192,7,192,7,192,7,192, 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, - 7,128,7,128,15,0,60,0,240,0,27,9,36,31,2,8, - 31,128,1,128,63,240,0,192,127,254,0,96,255,255,128,96, - 193,255,240,96,192,63,255,224,192,15,255,192,96,1,255,128, - 48,0,63,0,255,255,255,255,255,255,255,255,255,255,255,255, + 7,192,7,128,7,128,15,0,60,0,240,0,27,9,36,31, + 2,8,31,128,1,128,63,240,0,192,127,254,0,96,255,255, + 128,96,193,255,240,96,192,63,255,224,192,15,255,192,96,1, + 255,128,48,0,63,0,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,0,0,0,13,0,0,8,35,35,14,3, - 245,60,126,255,255,255,126,60,0,0,0,24,24,24,24,24, - 24,24,24,60,60,60,60,126,126,126,126,254,255,255,255,255, - 255,255,126,60,18,34,102,28,5,250,0,96,0,0,96,0, - 0,96,0,0,96,0,0,96,0,1,240,0,7,236,0,15, - 103,0,30,99,0,62,99,128,126,103,128,126,111,128,124,111, - 128,252,111,128,252,103,0,252,96,0,252,96,0,252,96,0, - 252,96,0,252,96,0,252,96,0,124,96,192,124,96,192,62, - 96,128,62,97,128,30,97,0,15,99,0,7,252,0,0,248, - 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, - 29,34,136,34,3,1,0,1,255,0,0,7,129,192,0,31, - 0,224,0,31,0,224,0,63,0,240,0,126,1,240,0,126, - 3,240,0,254,3,240,0,254,3,224,0,254,1,192,0,254, - 0,0,0,254,0,0,0,254,0,0,0,254,0,0,15,254, - 0,0,24,126,6,0,0,127,252,0,0,127,0,0,0,63, - 0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,31, - 0,0,0,31,0,0,0,30,0,0,0,30,0,24,30,28, - 0,56,127,220,0,112,195,248,0,224,128,255,255,224,128,127, - 255,192,128,255,255,128,193,207,255,0,127,3,252,0,24,22, - 66,28,2,5,96,126,6,243,255,207,127,255,254,63,129,252, - 30,0,120,60,0,60,56,0,28,56,0,28,112,0,14,112, - 0,14,112,0,14,112,0,14,112,0,14,112,0,14,56,0, - 28,56,0,28,60,0,60,30,0,120,63,129,252,127,255,254, - 243,255,207,96,126,6,26,34,136,28,1,0,255,248,63,192, - 63,224,15,0,31,224,14,0,31,224,12,0,31,224,12,0, - 15,240,8,0,15,240,8,0,7,240,24,0,7,248,16,0, - 3,248,48,0,3,252,32,0,3,252,96,0,1,254,64,0, - 1,254,192,0,0,254,128,0,0,255,128,0,0,255,0,0, - 63,255,254,0,0,127,0,0,0,127,0,0,0,127,0,0, - 0,127,0,0,63,255,254,0,0,127,0,0,0,127,0,0, - 0,127,0,0,0,127,0,0,0,127,0,0,0,127,0,0, - 0,127,0,0,0,127,0,0,0,127,0,0,0,127,0,0, - 7,255,248,0,3,42,42,13,5,248,224,224,224,224,224,224, - 224,224,224,224,224,224,224,224,224,224,224,0,0,0,0,0, - 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, - 224,224,224,224,22,43,129,30,2,248,1,255,0,7,1,192, - 14,0,224,28,0,224,28,1,240,60,3,240,60,7,240,60, - 7,240,62,7,224,62,3,192,63,0,0,31,192,0,31,248, - 0,15,254,0,31,255,128,55,255,192,97,255,240,96,127,248, - 224,31,248,224,7,252,240,1,252,252,0,124,255,0,60,255, - 192,28,127,240,24,63,252,24,31,255,16,15,255,160,3,255, - 192,0,255,224,0,63,224,0,15,240,6,3,240,31,129,240, - 63,128,240,63,128,240,63,128,240,63,0,240,62,0,224,28, - 1,192,28,3,192,15,7,0,3,252,0,15,6,12,21,3, - 26,120,60,252,126,252,126,252,126,252,126,120,60,35,34,170, - 39,2,1,0,15,254,0,0,0,112,3,192,0,0,192,0, - 96,0,3,128,0,56,0,6,0,0,28,0,12,0,0,6, - 0,24,3,225,134,0,24,15,25,131,0,48,30,15,129,128, - 48,62,7,129,128,96,60,3,128,192,96,124,3,128,192,96, - 124,1,128,192,192,252,1,128,96,192,252,1,128,96,192,252, - 0,0,96,192,252,0,0,96,192,252,0,0,96,192,252,0, - 0,96,192,252,0,128,96,192,252,0,128,96,64,124,0,128, - 192,96,124,1,128,192,96,60,1,0,192,48,62,3,1,128, - 48,30,2,1,128,24,15,12,3,0,24,3,248,6,0,12, - 0,0,6,0,6,0,0,12,0,3,128,0,56,0,0,192, - 0,96,0,0,112,1,192,0,0,15,254,0,0,14,17,34, - 18,2,17,31,0,51,192,97,224,113,224,121,224,57,224,7, - 224,57,224,113,224,241,224,241,228,241,228,241,228,126,248,0, - 0,127,252,127,252,13,20,40,23,5,1,4,0,28,24,24, - 48,56,112,112,96,112,224,241,224,241,224,241,224,241,224,241, - 224,241,224,241,224,112,224,112,224,112,96,56,48,24,16,12, - 0,4,0,23,13,39,27,2,6,255,255,254,255,255,254,255, - 255,254,0,0,14,0,0,14,0,0,14,0,0,14,0,0, - 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, - 12,5,10,18,3,10,255,240,255,240,255,240,255,240,255,240, - 35,34,170,39,2,1,0,15,254,0,0,0,112,3,192,0, - 0,192,0,96,0,3,128,0,56,0,6,0,0,28,0,12, - 0,0,6,0,24,255,252,6,0,24,62,31,3,0,48,62, - 15,129,128,48,62,15,193,128,96,62,15,192,192,96,62,15, - 192,192,96,62,15,192,192,192,62,15,128,96,192,62,31,0, - 96,192,63,248,0,96,192,62,60,0,96,192,62,30,0,96, - 192,62,15,0,96,192,62,15,128,96,192,62,15,128,96,64, - 62,15,128,192,96,62,15,136,192,96,62,15,136,192,48,62, - 15,137,128,48,62,15,145,128,24,255,231,243,0,24,0,3, - 230,0,12,0,0,6,0,6,0,0,12,0,3,128,0,56, - 0,0,192,0,96,0,0,112,1,192,0,0,15,254,0,0, - 12,3,6,20,4,28,255,240,255,240,255,240,16,15,30,28, - 6,20,15,240,31,248,62,124,120,30,240,14,224,7,224,7, - 224,7,224,7,224,14,112,14,124,60,63,252,31,240,3,192, - 41,36,216,45,2,253,0,0,28,0,0,0,0,0,28,0, - 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 255,255,255,255,255,255,255,0,0,0,13,0,0,8,35,35, + 14,3,245,60,126,255,255,255,126,60,0,0,0,24,24,24, + 24,24,24,24,24,60,60,60,60,126,126,126,126,254,255,255, + 255,255,255,255,126,60,18,34,102,28,5,250,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,1,240,0,7,236, + 0,15,103,0,30,99,0,62,99,128,126,103,128,126,111,128, + 124,111,128,252,111,128,252,103,0,252,96,0,252,96,0,252, + 96,0,252,96,0,252,96,0,252,96,0,124,96,192,124,96, + 192,62,96,128,62,97,128,30,97,0,15,99,0,7,252,0, + 0,248,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,29,34,136,34,3,1,0,1,255,0,0,7,129,192, + 0,31,0,224,0,31,0,224,0,63,0,240,0,126,1,240, + 0,126,3,240,0,254,3,240,0,254,3,224,0,254,1,192, + 0,254,0,0,0,254,0,0,0,254,0,0,0,254,0,0, + 15,254,0,0,24,126,6,0,0,127,252,0,0,127,0,0, + 0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0, + 0,31,0,0,0,31,0,0,0,30,0,0,0,30,0,24, + 30,28,0,56,127,220,0,112,195,248,0,224,128,255,255,224, + 128,127,255,192,128,255,255,128,193,207,255,0,127,3,252,0, + 24,22,66,28,2,5,96,126,6,243,255,207,127,255,254,63, + 129,252,30,0,120,60,0,60,56,0,28,56,0,28,112,0, + 14,112,0,14,112,0,14,112,0,14,112,0,14,112,0,14, + 56,0,28,56,0,28,60,0,60,30,0,120,63,129,252,127, + 255,254,243,255,207,96,126,6,26,34,136,28,1,0,255,248, + 63,192,63,224,15,0,31,224,14,0,31,224,12,0,31,224, + 12,0,15,240,8,0,15,240,8,0,7,240,24,0,7,248, + 16,0,3,248,48,0,3,252,32,0,3,252,96,0,1,254, + 64,0,1,254,192,0,0,254,128,0,0,255,128,0,0,255, + 0,0,63,255,254,0,0,127,0,0,0,127,0,0,0,127, + 0,0,0,127,0,0,63,255,254,0,0,127,0,0,0,127, + 0,0,0,127,0,0,0,127,0,0,0,127,0,0,0,127, + 0,0,0,127,0,0,0,127,0,0,0,127,0,0,0,127, + 0,0,7,255,248,0,3,42,42,13,5,248,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,0,0,0, + 0,0,0,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,22,43,129,30,2,248,1,255,0,7, + 1,192,14,0,224,28,0,224,28,1,240,60,3,240,60,7, + 240,60,7,240,62,7,224,62,3,192,63,0,0,31,192,0, + 31,248,0,15,254,0,31,255,128,55,255,192,97,255,240,96, + 127,248,224,31,248,224,7,252,240,1,252,252,0,124,255,0, + 60,255,192,28,127,240,24,63,252,24,31,255,16,15,255,160, + 3,255,192,0,255,224,0,63,224,0,15,240,6,3,240,31, + 129,240,63,128,240,63,128,240,63,128,240,63,0,240,62,0, + 224,28,1,192,28,3,192,15,7,0,3,252,0,15,6,12, + 21,3,26,120,60,252,126,252,126,252,126,252,126,120,60,35, + 34,170,39,2,1,0,15,254,0,0,0,112,3,192,0,0, + 192,0,96,0,3,128,0,56,0,6,0,0,28,0,12,0, + 0,6,0,24,3,225,134,0,24,15,25,131,0,48,30,15, + 129,128,48,62,7,129,128,96,60,3,128,192,96,124,3,128, + 192,96,124,1,128,192,192,252,1,128,96,192,252,1,128,96, + 192,252,0,0,96,192,252,0,0,96,192,252,0,0,96,192, + 252,0,0,96,192,252,0,128,96,192,252,0,128,96,64,124, + 0,128,192,96,124,1,128,192,96,60,1,0,192,48,62,3, + 1,128,48,30,2,1,128,24,15,12,3,0,24,3,248,6, + 0,12,0,0,6,0,6,0,0,12,0,3,128,0,56,0, + 0,192,0,96,0,0,112,1,192,0,0,15,254,0,0,14, + 17,34,18,2,17,31,0,51,192,97,224,113,224,121,224,57, + 224,7,224,57,224,113,224,241,224,241,228,241,228,241,228,126, + 248,0,0,127,252,127,252,13,20,40,23,5,1,4,0,28, + 24,24,48,56,112,112,96,112,224,241,224,241,224,241,224,241, + 224,241,224,241,224,241,224,112,224,112,224,112,96,56,48,24, + 16,12,0,4,0,23,13,39,27,2,6,255,255,254,255,255, + 254,255,255,254,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,12,5,10,18,3,10,255,240,255,240,255,240,255,240, + 255,240,35,34,170,39,2,1,0,15,254,0,0,0,112,3, + 192,0,0,192,0,96,0,3,128,0,56,0,6,0,0,28, + 0,12,0,0,6,0,24,255,252,6,0,24,62,31,3,0, + 48,62,15,129,128,48,62,15,193,128,96,62,15,192,192,96, + 62,15,192,192,96,62,15,192,192,192,62,15,128,96,192,62, + 31,0,96,192,63,248,0,96,192,62,60,0,96,192,62,30, + 0,96,192,62,15,0,96,192,62,15,128,96,192,62,15,128, + 96,64,62,15,128,192,96,62,15,136,192,96,62,15,136,192, + 48,62,15,137,128,48,62,15,145,128,24,255,231,243,0,24, + 0,3,230,0,12,0,0,6,0,6,0,0,12,0,3,128, + 0,56,0,0,192,0,96,0,0,112,1,192,0,0,15,254, + 0,0,12,3,6,20,4,28,255,240,255,240,255,240,16,15, + 30,28,6,20,15,240,31,248,62,124,120,30,240,14,224,7, + 224,7,224,7,224,7,224,14,112,14,124,60,63,252,31,240, + 3,192,41,36,216,45,2,253,0,0,28,0,0,0,0,0, 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, - 28,0,0,0,0,0,28,0,0,0,255,255,255,255,255,128, - 255,255,255,255,255,128,255,255,255,255,255,128,0,0,28,0, - 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,255,255,255,255, + 255,128,255,255,255,255,255,128,255,255,255,255,255,128,0,0, 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, - 28,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, - 255,0,255,255,255,255,255,0,255,255,255,255,255,0,14,21, - 42,21,4,14,31,240,48,248,96,124,224,124,240,124,248,124, - 248,120,120,248,1,240,1,224,3,128,6,0,12,4,16,4, - 32,4,32,12,127,252,127,252,79,248,71,248,1,224,16,21, - 42,22,3,14,31,224,48,248,112,124,112,124,124,124,124,124, - 60,124,0,120,0,224,15,128,0,240,0,124,0,62,16,63, - 124,63,252,63,252,63,240,63,112,126,112,252,31,240,8,9, - 9,21,9,25,6,15,31,62,60,120,240,192,128,24,35,105, - 29,3,244,120,3,192,124,3,192,252,7,224,252,7,224,252, - 7,224,252,7,224,252,7,224,252,7,224,252,7,224,248,7, - 224,248,7,224,120,7,192,112,3,192,112,3,193,112,3,129, - 48,3,131,48,7,135,48,7,255,56,15,254,62,62,254,47, - 252,126,35,248,60,32,0,0,48,0,0,112,0,0,112,0, - 0,120,0,0,120,0,0,124,0,0,124,0,0,126,0,0, - 126,0,0,126,0,0,62,0,0,28,0,0,23,41,123,28, - 3,249,3,255,254,15,240,224,63,240,224,127,240,224,127,240, - 224,255,240,224,255,240,224,255,240,224,255,240,224,255,240,224, - 255,240,224,255,240,224,255,240,224,255,240,224,127,240,224,63, - 240,224,31,240,224,7,240,224,0,112,224,0,112,224,0,112, - 224,0,112,224,0,112,224,0,112,224,0,112,224,0,112,224, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, + 255,255,255,0,255,255,255,255,255,0,255,255,255,255,255,0, + 14,21,42,21,4,14,31,240,48,248,96,124,224,124,240,124, + 248,124,248,120,120,248,1,240,1,224,3,128,6,0,12,4, + 16,4,32,4,32,12,127,252,127,252,79,248,71,248,1,224, + 16,21,42,22,3,14,31,224,48,248,112,124,112,124,124,124, + 124,124,60,124,0,120,0,224,15,128,0,240,0,124,0,62, + 16,63,124,63,252,63,252,63,240,63,112,126,112,252,31,240, + 8,9,9,21,9,25,6,15,31,62,60,120,240,192,128,24, + 35,105,29,3,244,120,3,192,124,3,192,252,7,224,252,7, + 224,252,7,224,252,7,224,252,7,224,252,7,224,252,7,224, + 248,7,224,248,7,224,120,7,192,112,3,192,112,3,193,112, + 3,129,48,3,131,48,7,135,48,7,255,56,15,254,62,62, + 254,47,252,126,35,248,60,32,0,0,48,0,0,112,0,0, + 112,0,0,120,0,0,124,0,0,124,0,0,124,0,0,126, + 0,0,126,0,0,126,0,0,62,0,0,28,0,0,23,41, + 123,28,3,249,3,255,254,15,240,224,63,240,224,127,240,224, + 127,240,224,255,240,224,255,240,224,255,240,224,255,240,224,255, + 240,224,255,240,224,255,240,224,255,240,224,255,240,224,127,240, + 224,63,240,224,31,240,224,7,240,224,0,112,224,0,112,224, 0,112,224,0,112,224,0,112,224,0,112,224,0,112,224,0, 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,112, - 224,0,112,224,0,112,224,0,112,224,0,112,224,8,7,7, - 14,3,12,60,126,255,255,255,126,60,10,10,20,21,5,246, - 8,0,8,0,24,0,15,0,7,128,3,192,3,192,3,192, - 199,128,63,0,11,20,40,21,5,14,7,0,15,0,255,0, + 224,0,112,224,0,112,224,0,112,224,0,112,224,0,112,224, + 0,112,224,0,112,224,0,112,224,0,112,224,0,112,224,8, + 7,7,14,3,12,60,126,255,255,255,126,60,10,10,20,21, + 5,246,8,0,8,0,24,0,15,0,7,128,3,192,3,192, + 3,192,199,128,63,0,11,20,40,21,5,14,7,0,15,0, + 255,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, - 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, - 255,224,13,17,34,19,3,17,15,128,24,192,56,224,112,112, - 112,112,240,120,240,120,240,120,240,120,240,120,240,120,112,112, - 112,224,56,224,15,128,0,0,255,248,13,20,40,23,5,1, - 1,0,193,128,96,192,112,224,48,112,56,112,56,120,60,120, - 60,120,60,120,60,120,60,120,60,120,56,112,56,112,48,112, - 96,224,64,192,1,128,1,0,36,36,180,44,5,255,0,0, - 0,48,0,7,0,0,48,0,7,0,0,96,0,31,0,0, - 224,0,255,0,0,192,0,31,0,1,192,0,31,0,1,128, - 0,31,0,3,0,0,31,0,7,0,0,31,0,6,0,0, - 31,0,14,0,0,31,0,12,0,0,31,0,24,0,0,31, - 0,24,0,0,31,0,48,0,0,31,0,112,15,0,31,0, - 96,31,0,31,0,224,31,0,31,0,192,63,0,31,1,128, - 127,0,255,227,128,127,0,0,3,0,223,0,0,7,1,159, - 0,0,6,1,159,0,0,12,3,31,0,0,12,2,31,0, - 0,24,6,31,0,0,56,12,31,0,0,48,15,255,240,0, - 112,0,31,0,0,96,0,31,0,0,192,0,31,0,1,192, - 0,31,0,1,128,0,31,0,3,128,1,255,224,3,0,0, - 0,0,35,36,180,43,5,255,0,0,0,56,0,7,0,0, - 48,0,7,0,0,112,0,31,0,0,224,0,255,0,0,192, - 0,31,0,1,192,0,31,0,1,128,0,31,0,3,128,0, - 31,0,3,0,0,31,0,7,0,0,31,0,14,0,0,31, - 0,12,0,0,31,0,28,0,0,31,0,24,0,0,31,0, - 56,126,0,31,0,113,143,128,31,0,99,7,192,31,0,231, - 3,224,31,0,199,3,224,31,1,199,131,224,255,227,135,195, - 224,0,3,3,199,192,0,7,1,135,128,0,6,0,15,0, - 0,14,0,30,0,0,12,0,56,0,0,24,0,96,0,0, - 56,0,128,32,0,48,1,0,32,0,112,2,0,32,0,96, - 2,255,224,0,192,7,255,224,1,192,6,255,192,1,128,4, - 127,192,3,128,4,63,128,3,0,0,0,0,38,36,180,44, - 3,255,0,0,0,12,0,31,224,0,12,0,48,248,0,24, - 0,112,124,0,56,0,112,124,0,48,0,124,124,0,112,0, - 124,124,0,96,0,60,124,0,192,0,0,120,1,192,0,0, - 224,1,128,0,15,128,3,128,0,0,240,3,0,0,0,124, - 7,0,0,0,62,6,0,0,16,63,12,0,0,124,63,28, - 3,192,252,63,24,7,192,252,63,56,7,192,240,63,48,15, - 192,112,126,112,31,192,112,252,224,31,192,31,240,192,55,192, - 0,1,192,103,192,0,1,128,103,192,0,3,128,199,192,0, - 3,0,135,192,0,6,1,135,192,0,14,3,7,192,0,12, - 3,255,252,0,28,0,7,192,0,24,0,7,192,0,56,0, - 7,192,0,112,0,7,192,0,96,0,7,192,0,224,0,127, - 248,0,192,0,0,0,16,35,70,23,3,245,7,0,15,128, - 31,192,31,192,31,192,15,128,7,0,0,0,0,0,7,128, - 12,224,16,48,16,48,16,48,16,48,0,96,0,224,0,192, - 3,192,7,128,15,128,31,0,31,4,62,4,126,6,124,2, - 252,3,252,3,252,3,252,3,252,6,126,6,63,12,31,248, - 7,224,33,45,225,36,2,0,0,56,0,0,0,0,60,0, - 0,0,0,62,0,0,0,0,62,0,0,0,0,31,0,0, - 0,0,7,0,0,0,0,3,128,0,0,0,1,192,0,0, - 0,0,64,0,0,0,0,0,0,0,0,0,192,0,0,0, - 1,192,0,0,0,1,224,0,0,0,1,224,0,0,0,3, - 224,0,0,0,3,240,0,0,0,3,240,0,0,0,7,240, - 0,0,0,7,248,0,0,0,7,248,0,0,0,15,248,0, - 0,0,15,252,0,0,0,15,252,0,0,0,25,252,0,0, - 0,25,254,0,0,0,25,254,0,0,0,48,254,0,0,0, - 48,255,0,0,0,32,255,0,0,0,96,127,0,0,0,96, - 127,128,0,0,64,127,128,0,0,192,63,128,0,0,192,63, - 192,0,0,255,255,192,0,1,255,255,192,0,1,128,31,224, - 0,1,0,31,224,0,3,0,15,224,0,3,0,15,240,0, - 2,0,15,240,0,6,0,7,240,0,15,0,7,248,0,31, - 0,15,252,0,255,240,255,255,128,33,45,225,36,2,0,0, - 0,14,0,0,0,0,15,0,0,0,0,31,0,0,0,0, - 62,0,0,0,0,60,0,0,0,0,120,0,0,0,0,240, - 0,0,0,0,192,0,0,0,0,128,0,0,0,0,0,0, - 0,0,0,192,0,0,0,1,192,0,0,0,1,224,0,0, - 0,1,224,0,0,0,3,224,0,0,0,3,240,0,0,0, - 3,240,0,0,0,7,240,0,0,0,7,248,0,0,0,7, - 248,0,0,0,15,248,0,0,0,15,252,0,0,0,15,252, - 0,0,0,25,252,0,0,0,25,254,0,0,0,25,254,0, - 0,0,48,254,0,0,0,48,255,0,0,0,32,255,0,0, - 0,96,127,0,0,0,96,127,128,0,0,64,127,128,0,0, - 192,63,128,0,0,192,63,192,0,0,255,255,192,0,1,255, - 255,192,0,1,128,31,224,0,1,0,31,224,0,3,0,15, - 224,0,3,0,15,240,0,6,0,15,240,0,6,0,7,240, - 0,15,0,7,248,0,255,240,255,255,128,255,240,255,255,128, - 33,44,220,36,2,0,0,1,192,0,0,0,1,224,0,0, - 0,3,224,0,0,0,7,240,0,0,0,15,120,0,0,0, - 30,30,0,0,0,120,7,0,0,0,64,1,128,0,0,0, + 31,0,255,224,13,17,34,19,3,17,15,128,24,192,56,224, + 112,112,112,112,240,120,240,120,240,120,240,120,240,120,240,120, + 112,112,112,224,56,224,15,128,0,0,255,248,13,20,40,23, + 5,1,1,0,193,128,96,192,112,224,48,112,56,112,56,120, + 60,120,60,120,60,120,60,120,60,120,60,120,56,112,56,112, + 48,112,96,224,64,192,1,128,1,0,36,36,180,44,5,255, + 0,0,0,48,0,7,0,0,48,0,7,0,0,96,0,31, + 0,0,224,0,255,0,0,192,0,31,0,1,192,0,31,0, + 1,128,0,31,0,3,0,0,31,0,7,0,0,31,0,6, + 0,0,31,0,14,0,0,31,0,12,0,0,31,0,24,0, + 0,31,0,24,0,0,31,0,48,0,0,31,0,112,15,0, + 31,0,96,31,0,31,0,224,31,0,31,0,192,63,0,31, + 1,128,127,0,255,227,128,127,0,0,3,0,223,0,0,7, + 1,159,0,0,6,1,159,0,0,12,3,31,0,0,12,2, + 31,0,0,24,6,31,0,0,56,12,31,0,0,48,15,255, + 240,0,112,0,31,0,0,96,0,31,0,0,192,0,31,0, + 1,192,0,31,0,1,128,0,31,0,3,128,1,255,224,3, + 0,0,0,0,35,36,180,43,5,255,0,0,0,56,0,7, + 0,0,48,0,7,0,0,112,0,31,0,0,224,0,255,0, + 0,192,0,31,0,1,192,0,31,0,1,128,0,31,0,3, + 128,0,31,0,3,0,0,31,0,7,0,0,31,0,14,0, + 0,31,0,12,0,0,31,0,28,0,0,31,0,24,0,0, + 31,0,56,126,0,31,0,113,143,128,31,0,99,7,192,31, + 0,231,3,224,31,0,199,3,224,31,1,199,131,224,255,227, + 135,195,224,0,3,3,199,192,0,7,1,135,128,0,6,0, + 15,0,0,14,0,30,0,0,12,0,56,0,0,24,0,96, + 0,0,56,0,128,32,0,48,1,0,32,0,112,2,0,32, + 0,96,2,255,224,0,192,7,255,224,1,192,6,255,192,1, + 128,4,127,192,3,128,4,63,128,3,0,0,0,0,38,36, + 180,44,3,255,0,0,0,12,0,31,224,0,12,0,48,248, + 0,24,0,112,124,0,56,0,112,124,0,48,0,124,124,0, + 112,0,124,124,0,96,0,60,124,0,192,0,0,120,1,192, + 0,0,224,1,128,0,15,128,3,128,0,0,240,3,0,0, + 0,124,7,0,0,0,62,6,0,0,16,63,12,0,0,124, + 63,28,3,192,252,63,24,7,192,252,63,56,7,192,240,63, + 48,15,192,112,126,112,31,192,112,252,224,31,192,31,240,192, + 55,192,0,1,192,103,192,0,1,128,103,192,0,3,128,199, + 192,0,3,0,135,192,0,6,1,135,192,0,14,3,7,192, + 0,12,3,255,252,0,28,0,7,192,0,24,0,7,192,0, + 56,0,7,192,0,112,0,7,192,0,96,0,7,192,0,224, + 0,127,248,0,192,0,0,0,16,35,70,23,3,245,7,0, + 15,128,31,192,31,192,31,192,15,128,7,0,0,0,0,0, + 7,128,12,224,16,48,16,48,16,48,16,48,0,96,0,224, + 0,192,3,192,7,128,15,128,31,0,31,4,62,4,126,6, + 124,2,252,3,252,3,252,3,252,3,252,6,126,6,63,12, + 31,248,7,224,33,45,225,36,2,0,0,56,0,0,0,0, + 60,0,0,0,0,62,0,0,0,0,62,0,0,0,0,31, + 0,0,0,0,7,0,0,0,0,3,128,0,0,0,1,192, + 0,0,0,0,64,0,0,0,0,0,0,0,0,0,192,0, + 0,0,1,192,0,0,0,1,224,0,0,0,1,224,0,0, + 0,3,224,0,0,0,3,240,0,0,0,3,240,0,0,0, + 7,240,0,0,0,7,248,0,0,0,7,248,0,0,0,15, + 248,0,0,0,15,252,0,0,0,15,252,0,0,0,25,252, + 0,0,0,25,254,0,0,0,25,254,0,0,0,48,254,0, + 0,0,48,255,0,0,0,32,255,0,0,0,96,127,0,0, + 0,96,127,128,0,0,64,127,128,0,0,192,63,128,0,0, + 192,63,192,0,0,255,255,192,0,1,255,255,192,0,1,128, + 31,224,0,1,0,31,224,0,3,0,15,224,0,3,0,15, + 240,0,2,0,15,240,0,6,0,7,240,0,15,0,7,248, + 0,31,0,15,252,0,255,240,255,255,128,33,45,225,36,2, + 0,0,0,14,0,0,0,0,15,0,0,0,0,31,0,0, + 0,0,62,0,0,0,0,60,0,0,0,0,120,0,0,0, + 0,240,0,0,0,0,192,0,0,0,0,128,0,0,0,0, 0,0,0,0,0,192,0,0,0,1,192,0,0,0,1,224, 0,0,0,1,224,0,0,0,3,224,0,0,0,3,240,0, 0,0,3,240,0,0,0,7,240,0,0,0,7,248,0,0, @@ -61425,245 +61870,288 @@ const u8g_fntpgm_uint8_t u8g_font_osb35[22095] U8G_SECTION(".progmem.u8g_font_os 0,0,0,96,127,0,0,0,96,127,128,0,0,64,127,128, 0,0,192,63,128,0,0,192,63,192,0,0,255,255,192,0, 1,255,255,192,0,1,128,31,224,0,1,0,31,224,0,3, - 0,15,224,0,3,0,15,240,0,2,0,15,240,0,6,0, - 7,240,0,15,0,7,248,0,31,0,15,252,0,255,240,255, - 255,128,33,43,215,36,2,0,0,15,1,0,0,0,31,227, - 0,0,0,63,254,0,0,0,33,254,0,0,0,32,124,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, - 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, - 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, - 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, - 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, - 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, - 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, - 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, - 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, - 0,3,0,15,240,0,6,0,15,240,0,6,0,7,240,0, - 15,0,7,248,0,255,240,255,255,128,255,240,255,255,128,33, - 43,215,36,2,0,0,60,15,0,0,0,126,31,128,0,0, - 126,31,128,0,0,126,31,128,0,0,126,31,128,0,0,60, - 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,192,0,0,0,1,224,0,0,0,1,224,0, - 0,0,1,224,0,0,0,3,240,0,0,0,3,240,0,0, - 0,3,240,0,0,0,7,248,0,0,0,7,248,0,0,0, - 7,248,0,0,0,15,252,0,0,0,15,252,0,0,0,25, - 252,0,0,0,25,254,0,0,0,24,254,0,0,0,48,254, - 0,0,0,48,255,0,0,0,48,127,0,0,0,96,127,0, - 0,0,96,127,128,0,0,96,63,128,0,0,192,63,128,0, - 0,192,63,192,0,0,255,255,192,0,1,255,255,192,0,1, - 128,31,224,0,1,128,15,224,0,3,0,15,224,0,3,0, - 15,240,0,3,0,7,240,0,7,0,7,240,0,15,0,7, - 248,0,31,128,15,252,0,255,240,255,255,128,33,45,225,36, - 2,0,0,1,224,0,0,0,7,248,0,0,0,14,28,0, - 0,0,12,12,0,0,0,12,12,0,0,0,12,12,0,0, - 0,14,28,0,0,0,7,248,0,0,0,3,240,0,0,0, - 0,0,0,0,0,0,192,0,0,0,1,192,0,0,0,1, - 224,0,0,0,1,224,0,0,0,3,224,0,0,0,3,240, - 0,0,0,3,240,0,0,0,7,240,0,0,0,7,248,0, - 0,0,7,248,0,0,0,15,248,0,0,0,13,252,0,0, - 0,13,252,0,0,0,29,252,0,0,0,25,254,0,0,0, - 24,254,0,0,0,56,254,0,0,0,48,255,0,0,0,48, - 127,0,0,0,112,127,0,0,0,96,127,128,0,0,96,63, - 128,0,0,224,63,128,0,0,192,63,192,0,0,255,255,192, - 0,1,255,255,192,0,1,128,31,224,0,1,128,31,224,0, - 3,0,15,224,0,3,0,15,240,0,3,0,15,240,0,7, - 0,7,240,0,15,0,7,248,0,31,128,15,252,0,255,240, - 255,255,128,45,34,204,48,1,0,0,0,127,255,255,240,0, - 0,31,248,7,240,0,0,15,248,1,240,0,0,15,248,0, - 240,0,0,31,248,0,240,0,0,27,248,0,112,0,0,59, - 248,0,112,0,0,51,248,0,48,0,0,115,248,0,48,0, - 0,99,248,12,48,0,0,227,248,12,16,0,0,195,248,12, - 0,0,1,195,248,28,0,0,1,131,248,28,0,0,3,131, - 248,60,0,0,3,3,248,124,0,0,7,3,255,252,0,0, - 6,3,248,124,0,0,14,3,248,60,0,0,12,3,248,28, - 0,0,28,3,248,28,0,0,24,3,248,12,24,0,56,3, - 248,12,24,0,63,255,248,12,24,0,96,3,248,0,56,0, - 224,3,248,0,56,0,192,3,248,0,56,1,192,3,248,0, - 120,1,128,3,248,0,120,3,128,3,248,0,248,7,128,3, - 248,1,248,15,128,3,248,3,248,255,248,127,255,255,248,255, - 248,127,255,255,248,26,45,180,31,3,246,0,127,193,128,1, - 224,241,128,3,192,63,128,7,128,31,128,15,128,15,128,31, - 0,15,128,63,0,7,128,63,0,7,128,63,0,3,128,127, - 0,3,128,127,0,1,128,127,0,1,128,255,0,1,128,255, - 0,1,128,255,0,1,128,255,0,0,0,255,0,0,0,255, - 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, - 0,0,192,127,0,0,192,127,0,0,192,127,0,0,128,63, - 0,0,128,63,0,1,128,63,0,1,128,31,128,3,0,15, - 128,3,0,7,128,6,0,3,192,12,0,1,224,56,0,0, - 127,224,0,0,12,0,0,0,8,0,0,0,30,0,0,0, - 31,128,0,0,3,192,0,0,1,224,0,0,1,224,0,0, - 1,224,0,0,129,192,0,0,199,192,0,0,63,0,0,27, - 45,180,33,3,0,0,224,0,0,1,240,0,0,1,240,0, - 0,0,248,0,0,0,124,0,0,0,60,0,0,0,14,0, - 0,0,6,0,0,0,2,0,0,0,0,0,0,0,0,0, - 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, - 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, - 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, - 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, - 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, - 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, - 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, - 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, - 224,255,255,255,224,255,255,255,224,27,45,180,33,3,0,0, - 0,56,0,0,0,120,0,0,0,248,0,0,0,248,0,0, - 1,240,0,0,3,192,0,0,3,128,0,0,6,0,0,0, - 4,0,0,0,0,0,0,0,0,0,0,255,255,255,224,15, - 224,31,224,15,224,7,224,15,224,3,224,15,224,1,224,15, - 224,1,224,15,224,0,224,15,224,0,224,15,224,0,96,15, - 224,48,96,15,224,48,96,15,224,48,0,15,224,112,0,15, - 224,112,0,15,224,240,0,15,225,240,0,15,255,240,0,15, - 225,240,0,15,224,240,0,15,224,112,0,15,224,112,32,15, - 224,48,96,15,224,48,96,15,224,48,96,15,224,0,96,15, - 224,0,224,15,224,0,224,15,224,0,224,15,224,1,224,15, - 224,3,224,15,224,3,224,15,224,15,224,255,255,255,224,255, - 255,255,224,27,44,176,33,3,0,0,6,0,0,0,15,0, - 0,0,15,128,0,0,31,192,0,0,57,224,0,0,240,112, - 0,3,192,28,0,0,0,4,0,0,0,0,0,0,0,0, - 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, - 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, - 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, - 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, - 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, - 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, - 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, - 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, - 224,255,255,255,224,255,255,255,224,27,43,172,33,3,0,1, - 224,120,0,3,240,252,0,3,240,252,0,3,240,252,0,3, - 240,252,0,1,224,120,0,0,0,0,0,0,0,0,0,0, + 0,15,224,0,3,0,15,240,0,6,0,15,240,0,6,0, + 7,240,0,15,0,7,248,0,255,240,255,255,128,255,240,255, + 255,128,33,44,220,36,2,0,0,1,192,0,0,0,1,224, + 0,0,0,3,224,0,0,0,7,240,0,0,0,15,120,0, + 0,0,30,30,0,0,0,120,7,0,0,0,64,1,128,0, + 0,0,0,0,0,0,0,192,0,0,0,1,192,0,0,0, + 1,224,0,0,0,1,224,0,0,0,3,224,0,0,0,3, + 240,0,0,0,3,240,0,0,0,7,240,0,0,0,7,248, + 0,0,0,7,248,0,0,0,15,248,0,0,0,15,252,0, + 0,0,15,252,0,0,0,25,252,0,0,0,25,254,0,0, + 0,25,254,0,0,0,48,254,0,0,0,48,255,0,0,0, + 32,255,0,0,0,96,127,0,0,0,96,127,128,0,0,64, + 127,128,0,0,192,63,128,0,0,192,63,192,0,0,255,255, + 192,0,1,255,255,192,0,1,128,31,224,0,1,0,31,224, + 0,3,0,15,224,0,3,0,15,240,0,2,0,15,240,0, + 6,0,7,240,0,15,0,7,248,0,31,0,15,252,0,255, + 240,255,255,128,33,43,215,36,2,0,0,15,1,0,0,0, + 31,227,0,0,0,63,254,0,0,0,33,254,0,0,0,32, + 124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,192,0,0,0,1,192,0,0,0,1,224,0, + 0,0,1,224,0,0,0,3,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,7,240,0,0,0,7,248,0,0,0, + 7,248,0,0,0,15,248,0,0,0,15,252,0,0,0,15, + 252,0,0,0,25,252,0,0,0,25,254,0,0,0,25,254, + 0,0,0,48,254,0,0,0,48,255,0,0,0,32,255,0, + 0,0,96,127,0,0,0,96,127,128,0,0,64,127,128,0, + 0,192,63,128,0,0,192,63,192,0,0,255,255,192,0,1, + 255,255,192,0,1,128,31,224,0,1,0,31,224,0,3,0, + 15,224,0,3,0,15,240,0,6,0,15,240,0,6,0,7, + 240,0,15,0,7,248,0,255,240,255,255,128,255,240,255,255, + 128,33,43,215,36,2,0,0,60,15,0,0,0,126,31,128, + 0,0,126,31,128,0,0,126,31,128,0,0,126,31,128,0, + 0,60,15,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,192,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,3,240,0,0,0,3,240, + 0,0,0,3,240,0,0,0,7,248,0,0,0,7,248,0, + 0,0,7,248,0,0,0,15,252,0,0,0,15,252,0,0, + 0,25,252,0,0,0,25,254,0,0,0,24,254,0,0,0, + 48,254,0,0,0,48,255,0,0,0,48,127,0,0,0,96, + 127,0,0,0,96,127,128,0,0,96,63,128,0,0,192,63, + 128,0,0,192,63,192,0,0,255,255,192,0,1,255,255,192, + 0,1,128,31,224,0,1,128,15,224,0,3,0,15,224,0, + 3,0,15,240,0,3,0,7,240,0,7,0,7,240,0,15, + 0,7,248,0,31,128,15,252,0,255,240,255,255,128,33,45, + 225,36,2,0,0,1,224,0,0,0,7,248,0,0,0,14, + 28,0,0,0,12,12,0,0,0,12,12,0,0,0,12,12, + 0,0,0,14,28,0,0,0,7,248,0,0,0,3,240,0, + 0,0,0,0,0,0,0,0,192,0,0,0,1,192,0,0, + 0,1,224,0,0,0,1,224,0,0,0,3,224,0,0,0, + 3,240,0,0,0,3,240,0,0,0,7,240,0,0,0,7, + 248,0,0,0,7,248,0,0,0,15,248,0,0,0,13,252, + 0,0,0,13,252,0,0,0,29,252,0,0,0,25,254,0, + 0,0,24,254,0,0,0,56,254,0,0,0,48,255,0,0, + 0,48,127,0,0,0,112,127,0,0,0,96,127,128,0,0, + 96,63,128,0,0,224,63,128,0,0,192,63,192,0,0,255, + 255,192,0,1,255,255,192,0,1,128,31,224,0,1,128,31, + 224,0,3,0,15,224,0,3,0,15,240,0,3,0,15,240, + 0,7,0,7,240,0,15,0,7,248,0,31,128,15,252,0, + 255,240,255,255,128,45,34,204,48,1,0,0,0,127,255,255, + 240,0,0,31,248,7,240,0,0,15,248,1,240,0,0,15, + 248,0,240,0,0,31,248,0,240,0,0,27,248,0,112,0, + 0,59,248,0,112,0,0,51,248,0,48,0,0,115,248,0, + 48,0,0,99,248,12,48,0,0,227,248,12,16,0,0,195, + 248,12,0,0,1,195,248,28,0,0,1,131,248,28,0,0, + 3,131,248,60,0,0,3,3,248,124,0,0,7,3,255,252, + 0,0,6,3,248,124,0,0,14,3,248,60,0,0,12,3, + 248,28,0,0,28,3,248,28,0,0,24,3,248,12,24,0, + 56,3,248,12,24,0,63,255,248,12,24,0,96,3,248,0, + 56,0,224,3,248,0,56,0,192,3,248,0,56,1,192,3, + 248,0,120,1,128,3,248,0,120,3,128,3,248,0,248,7, + 128,3,248,1,248,15,128,3,248,3,248,255,248,127,255,255, + 248,255,248,127,255,255,248,26,45,180,31,3,246,0,127,193, + 128,1,224,241,128,3,192,63,128,7,128,31,128,15,128,15, + 128,31,0,15,128,63,0,7,128,63,0,7,128,63,0,3, + 128,127,0,3,128,127,0,1,128,127,0,1,128,255,0,1, + 128,255,0,1,128,255,0,1,128,255,0,0,0,255,0,0, + 0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0, + 0,255,0,0,192,127,0,0,192,127,0,0,192,127,0,0, + 128,63,0,0,128,63,0,1,128,63,0,1,128,31,128,3, + 0,15,128,3,0,7,128,6,0,3,192,12,0,1,224,56, + 0,0,127,224,0,0,12,0,0,0,8,0,0,0,30,0, + 0,0,31,128,0,0,3,192,0,0,1,224,0,0,1,224, + 0,0,1,224,0,0,129,192,0,0,199,192,0,0,63,0, + 0,27,45,180,33,3,0,0,224,0,0,1,240,0,0,1, + 240,0,0,0,248,0,0,0,124,0,0,0,60,0,0,0, + 14,0,0,0,6,0,0,0,2,0,0,0,0,0,0,0, 0,0,0,255,255,255,224,15,224,31,224,15,224,7,224,15, 224,3,224,15,224,1,224,15,224,1,224,15,224,0,224,15, - 224,0,224,15,224,0,224,15,224,48,96,15,224,48,96,15, + 224,0,224,15,224,0,96,15,224,48,96,15,224,48,96,15, 224,48,0,15,224,112,0,15,224,112,0,15,224,240,0,15, 225,240,0,15,255,240,0,15,225,240,0,15,224,240,0,15, - 224,112,0,15,224,112,96,15,224,48,96,15,224,48,96,15, - 224,48,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,112,0,15,224,112,32,15,224,48,96,15,224,48,96,15, + 224,48,96,15,224,0,96,15,224,0,96,15,224,0,224,15, 224,0,224,15,224,1,224,15,224,3,224,15,224,3,224,15, - 224,15,224,255,255,255,224,255,255,255,224,16,45,90,21,3, - 0,56,0,124,0,124,0,62,0,31,0,15,0,3,128,1, - 192,0,0,0,0,0,0,255,255,7,240,7,240,7,240,7, + 224,15,224,255,255,255,224,255,255,255,224,27,45,180,33,3, + 0,0,0,56,0,0,0,120,0,0,0,248,0,0,0,248, + 0,0,1,240,0,0,3,192,0,0,3,128,0,0,6,0, + 0,0,4,0,0,0,0,0,0,0,0,0,0,255,255,255, + 224,15,224,31,224,15,224,7,224,15,224,3,224,15,224,1, + 224,15,224,1,224,15,224,0,224,15,224,0,224,15,224,0, + 96,15,224,48,96,15,224,48,96,15,224,48,0,15,224,112, + 0,15,224,112,0,15,224,240,0,15,225,240,0,15,255,240, + 0,15,225,240,0,15,224,240,0,15,224,112,0,15,224,112, + 32,15,224,48,96,15,224,48,96,15,224,48,96,15,224,0, + 96,15,224,0,224,15,224,0,224,15,224,0,224,15,224,1, + 224,15,224,3,224,15,224,3,224,15,224,15,224,255,255,255, + 224,255,255,255,224,27,44,176,33,3,0,0,6,0,0,0, + 15,0,0,0,15,128,0,0,31,192,0,0,57,224,0,0, + 240,112,0,3,192,28,0,0,0,4,0,0,0,0,0,0, + 0,0,0,255,255,255,224,15,224,31,224,15,224,7,224,15, + 224,3,224,15,224,1,224,15,224,1,224,15,224,0,224,15, + 224,0,224,15,224,0,96,15,224,48,96,15,224,48,96,15, + 224,48,0,15,224,112,0,15,224,112,0,15,224,240,0,15, + 225,240,0,15,255,240,0,15,225,240,0,15,224,240,0,15, + 224,112,0,15,224,112,32,15,224,48,96,15,224,48,96,15, + 224,48,96,15,224,0,96,15,224,0,96,15,224,0,224,15, + 224,0,224,15,224,1,224,15,224,3,224,15,224,3,224,15, + 224,15,224,255,255,255,224,255,255,255,224,27,43,172,33,3, + 0,1,224,120,0,3,240,252,0,3,240,252,0,3,240,252, + 0,3,240,252,0,1,224,120,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,224,15,224,31,224,15,224,7, + 224,15,224,3,224,15,224,1,224,15,224,1,224,15,224,0, + 224,15,224,0,224,15,224,0,224,15,224,48,96,15,224,48, + 96,15,224,48,0,15,224,112,0,15,224,112,0,15,224,240, + 0,15,225,240,0,15,255,240,0,15,225,240,0,15,224,240, + 0,15,224,112,0,15,224,112,96,15,224,48,96,15,224,48, + 96,15,224,48,96,15,224,0,96,15,224,0,224,15,224,0, + 224,15,224,0,224,15,224,1,224,15,224,3,224,15,224,3, + 224,15,224,15,224,255,255,255,224,255,255,255,224,16,45,90, + 21,3,0,56,0,124,0,124,0,62,0,31,0,15,0,3, + 128,1,192,0,0,0,0,0,0,255,255,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, - 240,7,240,7,240,7,240,7,240,255,255,16,45,90,21,3, - 0,0,14,0,30,0,62,0,60,0,120,0,240,0,224,1, - 192,0,0,0,0,0,0,255,255,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,255,255,16,45,90, + 21,3,0,0,14,0,30,0,62,0,60,0,120,0,240,0, + 224,1,192,0,0,0,0,0,0,255,255,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, - 240,7,240,7,240,7,240,7,240,255,255,16,44,88,21,3, - 0,1,192,3,192,3,224,7,240,31,120,60,28,240,7,0, - 1,0,0,0,0,255,255,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,255,255,16,44,88, + 21,3,0,1,192,3,192,3,224,7,240,31,120,60,28,240, + 7,0,1,0,0,0,0,255,255,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, - 240,7,240,7,240,255,255,255,255,16,43,86,21,3,0,120, - 30,252,63,252,63,252,63,252,63,120,30,0,0,0,0,0, - 0,255,255,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,255,255,255,255,16,43,86,21,3, + 0,120,30,252,63,252,63,252,63,252,63,120,30,0,0,0, + 0,0,0,255,255,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, - 240,7,240,255,255,32,34,136,37,3,0,255,255,248,0,7, - 240,31,0,7,240,7,128,7,240,3,224,7,240,1,240,7, - 240,1,240,7,240,0,248,7,240,0,252,7,240,0,252,7, - 240,0,254,7,240,0,254,7,240,0,254,7,240,0,255,7, - 240,0,255,7,240,0,255,7,240,0,255,255,255,0,255,7, - 240,0,255,7,240,0,255,7,240,0,255,7,240,0,255,7, - 240,0,254,7,240,0,254,7,240,0,254,7,240,0,254,7, - 240,0,252,7,240,0,252,7,240,0,248,7,240,1,240,7, - 240,1,224,7,240,3,192,7,240,7,128,7,240,31,0,255, - 255,248,0,34,44,220,37,2,255,0,7,128,128,0,0,15, - 241,128,0,0,31,255,0,0,0,16,255,0,0,0,16,60, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,255,224,15,255,192,31,240,3,255,0, - 15,240,0,252,0,15,248,0,120,0,7,252,0,48,0,3, - 254,0,48,0,3,254,0,48,0,3,255,0,48,0,3,255, - 128,48,0,3,255,128,48,0,3,127,192,48,0,3,63,224, - 48,0,3,31,224,48,0,3,31,240,48,0,3,15,248,48, - 0,3,7,248,48,0,3,7,252,48,0,3,3,254,48,0, - 3,1,255,48,0,3,1,255,48,0,3,0,255,176,0,3, - 0,127,240,0,3,0,127,240,0,3,0,63,240,0,3,0, - 31,240,0,3,0,15,240,0,3,0,15,240,0,3,0,7, - 240,0,3,0,3,240,0,3,0,3,240,0,7,128,1,240, - 0,15,192,0,240,0,63,240,0,240,0,255,252,0,112,0, - 0,0,0,48,0,28,45,180,33,3,0,0,192,0,0,1, - 224,0,0,1,240,0,0,0,248,0,0,0,120,0,0,0, - 60,0,0,0,28,0,0,0,6,0,0,0,2,0,0,0, - 0,0,0,0,0,0,0,0,63,192,0,0,224,112,0,3, - 192,56,0,7,128,30,0,15,128,30,0,15,0,15,0,31, - 0,15,128,63,0,15,192,63,0,15,192,127,0,15,192,127, - 0,15,224,127,0,15,224,127,0,15,224,255,0,15,240,255, - 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, - 0,15,240,255,0,15,240,255,0,15,240,127,0,15,224,127, - 0,15,224,127,0,15,224,127,0,15,192,63,0,15,192,63, - 0,15,192,31,0,15,128,15,0,15,0,15,128,31,0,7, - 128,30,0,3,192,60,0,0,224,112,0,0,63,192,0,28, - 45,180,33,3,0,0,0,48,0,0,0,120,0,0,0,248, - 0,0,1,240,0,0,1,224,0,0,3,192,0,0,3,128, - 0,0,6,0,0,0,4,0,0,0,0,0,0,0,0,0, - 0,0,63,192,0,0,224,112,0,3,192,56,0,7,128,30, - 0,15,128,30,0,15,0,15,0,31,0,15,128,63,0,15, - 192,63,0,15,192,127,0,15,192,127,0,15,224,127,0,15, - 224,127,0,15,224,255,0,15,240,255,0,15,240,255,0,15, + 240,7,240,7,240,255,255,32,34,136,37,3,0,255,255,248, + 0,7,240,31,0,7,240,7,128,7,240,3,224,7,240,1, + 240,7,240,1,240,7,240,0,248,7,240,0,252,7,240,0, + 252,7,240,0,254,7,240,0,254,7,240,0,254,7,240,0, + 255,7,240,0,255,7,240,0,255,7,240,0,255,255,255,0, + 255,7,240,0,255,7,240,0,255,7,240,0,255,7,240,0, + 255,7,240,0,254,7,240,0,254,7,240,0,254,7,240,0, + 254,7,240,0,252,7,240,0,252,7,240,0,248,7,240,1, + 240,7,240,1,224,7,240,3,192,7,240,7,128,7,240,31, + 0,255,255,248,0,34,44,220,37,2,255,0,7,128,128,0, + 0,15,241,128,0,0,31,255,0,0,0,16,255,0,0,0, + 16,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,224,15,255,192,31,240,3, + 255,0,15,240,0,252,0,15,248,0,120,0,7,252,0,48, + 0,3,254,0,48,0,3,254,0,48,0,3,255,0,48,0, + 3,255,128,48,0,3,255,128,48,0,3,127,192,48,0,3, + 63,224,48,0,3,31,224,48,0,3,31,240,48,0,3,15, + 248,48,0,3,7,248,48,0,3,7,252,48,0,3,3,254, + 48,0,3,1,255,48,0,3,1,255,48,0,3,0,255,176, + 0,3,0,127,240,0,3,0,127,240,0,3,0,63,240,0, + 3,0,31,240,0,3,0,15,240,0,3,0,15,240,0,3, + 0,7,240,0,3,0,3,240,0,3,0,3,240,0,7,128, + 1,240,0,15,192,0,240,0,63,240,0,240,0,255,252,0, + 112,0,0,0,0,48,0,28,45,180,33,3,0,0,192,0, + 0,1,224,0,0,1,240,0,0,0,248,0,0,0,120,0, + 0,0,60,0,0,0,28,0,0,0,6,0,0,0,2,0, + 0,0,0,0,0,0,0,0,0,0,63,192,0,0,224,112, + 0,3,192,56,0,7,128,30,0,15,128,30,0,15,0,15, + 0,31,0,15,128,63,0,15,192,63,0,15,192,127,0,15, + 192,127,0,15,224,127,0,15,224,127,0,15,224,255,0,15, 240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, - 240,255,0,15,240,127,0,15,224,127,0,15,224,127,0,15, - 224,127,0,15,192,63,0,15,192,63,0,15,192,31,0,15, - 128,15,0,15,0,15,128,31,0,7,128,30,0,3,192,60, - 0,0,224,112,0,0,63,192,0,28,45,180,33,3,0,0, - 6,0,0,0,14,0,0,0,15,0,0,0,31,128,0,0, - 63,192,0,0,121,224,0,0,240,240,0,3,192,60,0,3, - 0,12,0,0,0,0,0,0,0,0,0,0,63,192,0,0, - 224,112,0,3,192,56,0,7,128,30,0,15,128,30,0,15, - 0,15,0,31,0,15,128,63,0,15,192,63,0,15,192,127, - 0,15,192,127,0,15,224,127,0,15,224,127,0,15,224,255, + 240,255,0,15,240,255,0,15,240,255,0,15,240,127,0,15, + 224,127,0,15,224,127,0,15,224,127,0,15,192,63,0,15, + 192,63,0,15,192,31,0,15,128,15,0,15,0,15,128,31, + 0,7,128,30,0,3,192,60,0,0,224,112,0,0,63,192, + 0,28,45,180,33,3,0,0,0,48,0,0,0,120,0,0, + 0,248,0,0,1,240,0,0,1,224,0,0,3,192,0,0, + 3,128,0,0,6,0,0,0,4,0,0,0,0,0,0,0, + 0,0,0,0,63,192,0,0,224,112,0,3,192,56,0,7, + 128,30,0,15,128,30,0,15,0,15,0,31,0,15,128,63, + 0,15,192,63,0,15,192,127,0,15,192,127,0,15,224,127, + 0,15,224,127,0,15,224,255,0,15,240,255,0,15,240,255, 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, - 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,127, - 0,15,224,127,0,15,224,127,0,15,224,127,0,15,192,63, - 0,15,192,63,0,15,192,31,0,15,128,15,0,15,0,15, - 128,31,0,7,128,30,0,3,192,60,0,0,224,112,0,0, - 63,192,0,28,44,176,33,3,0,0,0,8,0,0,126,24, - 0,0,255,248,0,1,255,240,0,1,7,224,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,63,192,0,0,224,112,0,3,192,56,0,7,128,30, - 0,15,128,30,0,15,0,15,0,31,0,15,128,63,0,15, - 192,63,0,15,192,127,0,15,192,127,0,15,224,127,0,15, - 224,127,0,15,224,255,0,15,240,255,0,15,240,255,0,15, + 0,15,240,255,0,15,240,127,0,15,224,127,0,15,224,127, + 0,15,224,127,0,15,192,63,0,15,192,63,0,15,192,31, + 0,15,128,15,0,15,0,15,128,31,0,7,128,30,0,3, + 192,60,0,0,224,112,0,0,63,192,0,28,45,180,33,3, + 0,0,6,0,0,0,14,0,0,0,15,0,0,0,31,128, + 0,0,63,192,0,0,121,224,0,0,240,240,0,3,192,60, + 0,3,0,12,0,0,0,0,0,0,0,0,0,0,63,192, + 0,0,224,112,0,3,192,56,0,7,128,30,0,15,128,30, + 0,15,0,15,0,31,0,15,128,63,0,15,192,63,0,15, + 192,127,0,15,192,127,0,15,224,127,0,15,224,127,0,15, + 224,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, 240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, - 240,255,0,15,240,127,0,15,224,127,0,15,224,127,0,15, - 224,127,0,15,192,63,0,15,192,63,0,15,192,31,0,15, - 128,15,0,15,0,15,128,31,0,7,128,30,0,3,192,60, - 0,0,224,112,0,0,63,192,0,28,44,176,33,3,0,1, - 224,120,0,3,240,252,0,3,240,252,0,3,240,252,0,3, - 240,252,0,1,224,120,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,63,192,0,0,224,112,0,3, - 192,56,0,7,128,30,0,15,128,30,0,15,0,15,0,31, - 0,15,128,63,0,15,192,63,0,15,192,127,0,15,192,127, - 0,15,224,127,0,15,224,127,0,15,224,255,0,15,240,255, + 240,127,0,15,224,127,0,15,224,127,0,15,224,127,0,15, + 192,63,0,15,192,63,0,15,192,31,0,15,128,15,0,15, + 0,15,128,31,0,7,128,30,0,3,192,60,0,0,224,112, + 0,0,63,192,0,28,44,176,33,3,0,0,0,8,0,0, + 126,24,0,0,255,248,0,1,255,240,0,1,7,224,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,63,192,0,0,224,112,0,3,192,56,0,7, + 128,30,0,15,128,30,0,15,0,15,0,31,0,15,128,63, + 0,15,192,63,0,15,192,127,0,15,192,127,0,15,224,127, + 0,15,224,127,0,15,224,255,0,15,240,255,0,15,240,255, 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, - 0,15,240,255,0,15,240,255,0,15,240,127,0,15,224,127, - 0,15,224,127,0,15,224,127,0,15,192,63,0,15,192,63, - 0,15,192,31,0,15,128,15,0,15,0,15,128,31,0,7, - 128,30,0,3,192,60,0,0,224,112,0,0,63,192,0,31, - 30,120,45,7,253,32,0,0,0,112,0,0,12,248,0,0, - 30,124,0,0,60,62,0,0,120,31,0,1,240,15,128,3, - 224,7,192,7,192,3,224,15,128,1,240,31,0,0,248,62, - 0,0,124,124,0,0,62,248,0,0,31,240,0,0,15,224, - 0,0,7,192,0,0,15,224,0,0,31,240,0,0,62,248, - 0,0,124,60,0,0,248,30,0,1,240,15,0,3,224,7, - 128,7,192,3,192,15,128,1,224,31,0,0,240,62,0,0, - 120,124,0,0,60,248,0,0,30,112,0,0,12,28,34,136, - 33,3,1,0,63,224,48,0,224,112,96,1,192,60,192,7, - 128,31,192,15,128,31,128,15,0,15,0,31,0,15,128,63, - 0,15,192,63,0,31,192,63,0,31,224,127,0,63,224,127, - 0,111,224,127,0,239,224,255,0,207,240,255,1,143,240,255, - 3,15,240,255,7,15,240,255,14,15,240,255,12,15,240,255, - 24,15,240,255,48,15,240,255,112,15,224,127,96,15,224,127, - 192,15,224,127,128,15,192,63,128,15,192,63,0,15,192,31, - 0,15,128,15,0,15,0,31,128,30,0,63,128,30,0,51, - 192,56,0,96,224,112,0,192,127,192,0,33,45,225,38,3, - 0,0,24,0,0,0,0,60,0,0,0,0,62,0,0,0, - 0,31,0,0,0,0,15,128,0,0,0,7,128,0,0,0, - 1,192,0,0,0,0,224,0,0,0,0,0,0,0,0,0, + 0,15,240,255,0,15,240,127,0,15,224,127,0,15,224,127, + 0,15,224,127,0,15,192,63,0,15,192,63,0,15,192,31, + 0,15,128,15,0,15,0,15,128,31,0,7,128,30,0,3, + 192,60,0,0,224,112,0,0,63,192,0,28,44,176,33,3, + 0,1,224,120,0,3,240,252,0,3,240,252,0,3,240,252, + 0,3,240,252,0,1,224,120,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,63,192,0,0,224,112, + 0,3,192,56,0,7,128,30,0,15,128,30,0,15,0,15, + 0,31,0,15,128,63,0,15,192,63,0,15,192,127,0,15, + 192,127,0,15,224,127,0,15,224,127,0,15,224,255,0,15, + 240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,255,0,15,240,255,0,15,240,127,0,15, + 224,127,0,15,224,127,0,15,224,127,0,15,192,63,0,15, + 192,63,0,15,192,31,0,15,128,15,0,15,0,15,128,31, + 0,7,128,30,0,3,192,60,0,0,224,112,0,0,63,192, + 0,31,30,120,45,7,253,32,0,0,0,112,0,0,12,248, + 0,0,30,124,0,0,60,62,0,0,120,31,0,1,240,15, + 128,3,224,7,192,7,192,3,224,15,128,1,240,31,0,0, + 248,62,0,0,124,124,0,0,62,248,0,0,31,240,0,0, + 15,224,0,0,7,192,0,0,15,224,0,0,31,240,0,0, + 62,248,0,0,124,60,0,0,248,30,0,1,240,15,0,3, + 224,7,128,7,192,3,192,15,128,1,224,31,0,0,240,62, + 0,0,120,124,0,0,60,248,0,0,30,112,0,0,12,28, + 34,136,33,3,1,0,63,224,48,0,224,112,96,1,192,60, + 192,7,128,31,192,15,128,31,128,15,0,15,0,31,0,15, + 128,63,0,15,192,63,0,31,192,63,0,31,224,127,0,63, + 224,127,0,111,224,127,0,239,224,255,0,207,240,255,1,143, + 240,255,3,15,240,255,7,15,240,255,14,15,240,255,12,15, + 240,255,24,15,240,255,48,15,240,255,112,15,224,127,96,15, + 224,127,192,15,224,127,128,15,192,63,128,15,192,63,0,15, + 192,31,0,15,128,15,0,15,0,31,128,30,0,63,128,30, + 0,51,192,56,0,96,224,112,0,192,127,192,0,33,45,225, + 38,3,0,0,24,0,0,0,0,60,0,0,0,0,62,0, + 0,0,0,31,0,0,0,0,15,128,0,0,0,7,128,0, + 0,0,1,192,0,0,0,0,224,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,255,255,7,255,128,15, + 224,1,254,0,15,224,0,120,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,7,224,0,48, + 0,7,224,0,96,0,7,240,0,96,0,3,240,0,192,0, + 1,248,1,192,0,0,252,3,128,0,0,127,159,0,0,0, + 31,252,0,0,33,45,225,38,3,0,0,0,7,0,0,0, + 0,15,0,0,0,0,15,0,0,0,0,31,0,0,0,0, + 60,0,0,0,0,56,0,0,0,0,112,0,0,0,0,224, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,7,255,128,15,224,1,254,0,15,224,0,120,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,7,224,0,48,0,7,224,0,96,0,7,240,0, + 96,0,3,240,0,192,0,1,248,1,192,0,0,252,3,128, + 0,0,127,159,0,0,0,31,252,0,0,33,45,225,38,3, + 0,0,0,64,0,0,0,0,224,0,0,0,1,240,0,0, + 0,3,240,0,0,0,7,248,0,0,0,15,28,0,0,0, + 30,15,0,0,0,112,3,128,0,0,0,0,128,0,0,0, 0,0,0,0,0,0,0,0,255,255,7,255,128,15,224,1, 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, @@ -61675,289 +62163,261 @@ const u8g_fntpgm_uint8_t u8g_font_osb35[22095] U8G_SECTION(".progmem.u8g_font_os 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, - 0,0,33,45,225,38,3,0,0,0,7,0,0,0,0,15, - 0,0,0,0,15,0,0,0,0,31,0,0,0,0,60,0, - 0,0,0,56,0,0,0,0,112,0,0,0,0,224,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, - 255,7,255,128,15,224,1,254,0,15,224,0,120,0,15,224, + 0,0,33,44,220,38,3,0,0,60,15,0,0,0,126,31, + 128,0,0,126,31,128,0,0,126,31,128,0,0,126,31,128, + 0,0,60,15,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,255,254,7,255,128,15, + 224,1,254,0,15,224,0,120,0,15,224,0,48,0,15,224, 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, - 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, - 0,7,224,0,48,0,7,224,0,96,0,7,240,0,96,0, - 3,240,0,192,0,1,248,1,192,0,0,252,3,128,0,0, - 127,159,0,0,0,31,252,0,0,33,45,225,38,3,0,0, - 0,64,0,0,0,0,224,0,0,0,1,240,0,0,0,3, - 240,0,0,0,7,248,0,0,0,15,28,0,0,0,30,15, - 0,0,0,112,3,128,0,0,0,0,128,0,0,0,0,0, - 0,0,0,0,0,0,255,255,7,255,128,15,224,1,254,0, - 15,224,0,120,0,15,224,0,48,0,15,224,0,48,0,15, - 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, - 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, - 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, - 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, - 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, - 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, - 0,48,0,15,224,0,48,0,7,224,0,48,0,7,224,0, - 96,0,7,240,0,96,0,3,240,0,192,0,1,248,1,192, - 0,0,252,3,128,0,0,127,159,0,0,0,31,252,0,0, - 33,44,220,38,3,0,0,60,15,0,0,0,126,31,128,0, - 0,126,31,128,0,0,126,31,128,0,0,126,31,128,0,0, - 60,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,255,254,7,255,128,15,224,1, - 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, - 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, - 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, - 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, - 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, - 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, - 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, - 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, - 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, - 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, - 0,0,32,45,180,35,2,0,0,0,7,0,0,0,15,0, - 0,0,31,0,0,0,31,0,0,0,60,0,0,0,120,0, - 0,0,112,0,0,0,192,0,0,0,128,0,0,0,0,0, - 0,0,0,0,255,254,15,255,31,248,1,248,15,248,0,240, - 7,248,0,224,7,248,0,192,3,252,0,192,3,252,0,192, - 1,252,1,128,1,254,1,128,0,254,3,0,0,255,3,0, - 0,255,3,0,0,127,134,0,0,127,134,0,0,63,196,0, - 0,63,204,0,0,31,204,0,0,31,248,0,0,15,248,0, - 0,15,248,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,255,255,0,29,34,136,34, - 3,0,255,255,128,0,7,240,0,0,7,240,0,0,7,240, - 0,0,7,240,0,0,7,240,0,0,7,255,248,0,7,240, - 63,0,7,240,15,192,7,240,15,224,7,240,15,240,7,240, - 7,240,7,240,7,248,7,240,7,248,7,240,7,248,7,240, - 7,248,7,240,7,248,7,240,7,248,7,240,7,240,7,240, - 15,240,7,240,15,224,7,240,15,192,7,240,31,0,7,255, - 252,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, - 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, - 0,0,7,240,0,0,255,255,128,0,23,34,102,27,2,0, - 0,127,0,1,227,128,3,195,224,7,193,224,7,193,240,15, - 129,240,15,129,240,15,129,240,31,129,240,31,129,224,31,129, - 224,31,129,192,31,131,128,31,188,0,31,131,0,31,129,192, - 31,128,240,31,128,248,31,128,248,31,128,124,31,128,124,31, - 128,126,31,128,126,31,128,126,31,128,126,31,128,126,31,128, - 126,31,184,126,31,252,124,31,252,124,31,248,252,31,248,248, - 31,184,240,255,159,224,21,34,102,24,2,0,24,0,0,60, - 0,0,62,0,0,30,0,0,15,0,0,7,128,0,3,128, - 0,1,192,0,0,192,0,0,0,0,0,0,0,0,0,0, - 15,248,0,24,62,0,56,63,0,120,31,0,124,31,128,126, - 31,128,126,31,128,60,31,128,0,127,128,3,223,128,15,31, - 128,30,31,128,62,31,128,124,31,128,252,31,128,252,31,128, - 252,31,136,252,31,136,252,31,152,254,63,144,127,127,240,63, - 143,224,21,34,102,24,2,0,0,12,0,0,30,0,0,62, - 0,0,62,0,0,124,0,0,120,0,0,224,0,0,192,0, - 1,128,0,0,0,0,0,0,0,0,0,0,15,248,0,24, - 62,0,56,63,0,120,31,0,124,31,128,126,31,128,126,31, - 128,62,31,128,8,63,128,1,255,128,7,159,128,30,31,128, - 62,31,128,124,31,128,124,31,128,252,31,128,252,31,136,252, - 31,136,252,31,152,254,63,144,127,127,240,63,143,224,21,34, - 102,24,2,0,1,192,0,1,224,0,3,224,0,3,224,0, - 7,240,0,7,56,0,14,28,0,28,14,0,48,7,0,0, - 0,0,0,0,0,0,0,0,15,248,0,24,62,0,56,63, - 0,120,31,0,124,31,128,126,31,128,126,31,128,62,31,128, - 8,63,128,1,255,128,7,159,128,30,31,128,62,31,128,124, - 31,128,124,31,128,252,31,128,252,31,136,252,31,136,252,31, - 152,254,63,144,127,127,240,63,143,224,21,32,96,24,2,0, - 15,3,0,31,195,0,63,254,0,49,252,0,32,120,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248, + 48,0,15,224,0,48,0,15,224,0,48,0,7,224,0,48, + 0,7,224,0,96,0,7,240,0,96,0,3,240,0,192,0, + 1,248,1,192,0,0,252,3,128,0,0,127,159,0,0,0, + 31,252,0,0,32,45,180,35,2,0,0,0,7,0,0,0, + 15,0,0,0,31,0,0,0,31,0,0,0,60,0,0,0, + 120,0,0,0,112,0,0,0,192,0,0,0,128,0,0,0, + 0,0,0,0,0,0,255,254,15,255,31,248,1,248,15,248, + 0,240,7,248,0,224,7,248,0,192,3,252,0,192,3,252, + 0,192,1,252,1,128,1,254,1,128,0,254,3,0,0,255, + 3,0,0,255,3,0,0,127,134,0,0,127,134,0,0,63, + 196,0,0,63,204,0,0,31,204,0,0,31,248,0,0,15, + 248,0,0,15,248,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,255,255,0,29,34, + 136,34,3,0,255,255,128,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,255,248,0, + 7,240,63,0,7,240,15,192,7,240,15,224,7,240,15,240, + 7,240,7,240,7,240,7,248,7,240,7,248,7,240,7,248, + 7,240,7,248,7,240,7,248,7,240,7,248,7,240,7,240, + 7,240,15,240,7,240,15,224,7,240,15,192,7,240,31,0, + 7,255,252,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,255,255,128,0,23,34,102,27, + 2,0,0,127,0,1,227,128,3,195,224,7,193,224,7,193, + 240,15,129,240,15,129,240,15,129,240,31,129,240,31,129,224, + 31,129,224,31,129,192,31,131,128,31,188,0,31,131,0,31, + 129,192,31,128,240,31,128,248,31,128,248,31,128,124,31,128, + 124,31,128,126,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,184,126,31,252,124,31,252,124,31,248,252,31, + 248,248,31,184,240,255,159,224,21,34,102,24,2,0,24,0, + 0,60,0,0,62,0,0,30,0,0,15,0,0,7,128,0, + 3,128,0,1,192,0,0,192,0,0,0,0,0,0,0,0, + 0,0,15,248,0,24,62,0,56,63,0,120,31,0,124,31, + 128,126,31,128,126,31,128,60,31,128,0,127,128,3,223,128, + 15,31,128,30,31,128,62,31,128,124,31,128,252,31,128,252, + 31,128,252,31,136,252,31,136,252,31,152,254,63,144,127,127, + 240,63,143,224,21,34,102,24,2,0,0,12,0,0,30,0, + 0,62,0,0,62,0,0,124,0,0,120,0,0,224,0,0, + 192,0,1,128,0,0,0,0,0,0,0,0,0,0,15,248, 0,24,62,0,56,63,0,120,31,0,124,31,128,126,31,128, 126,31,128,62,31,128,8,63,128,1,255,128,7,159,128,30, 31,128,62,31,128,124,31,128,124,31,128,252,31,128,252,31, 136,252,31,136,252,31,152,254,63,144,127,127,240,63,143,224, - 21,32,96,24,2,0,60,30,0,126,63,0,126,63,0,126, - 63,0,126,63,0,60,30,0,0,0,0,0,0,0,0,0, - 0,0,0,0,15,248,0,24,62,0,56,63,0,120,31,0, - 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, - 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, - 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, - 127,127,240,63,143,224,21,34,102,24,2,1,3,240,0,7, - 248,0,14,28,0,12,12,0,12,12,0,12,12,0,14,28, - 0,7,248,0,1,224,0,0,0,0,0,0,0,0,0,0, + 21,34,102,24,2,0,1,192,0,1,224,0,3,224,0,3, + 224,0,7,240,0,7,56,0,14,28,0,28,14,0,48,7, + 0,0,0,0,0,0,0,0,0,0,15,248,0,24,62,0, + 56,63,0,120,31,0,124,31,128,126,31,128,126,31,128,62, + 31,128,8,63,128,1,255,128,7,159,128,30,31,128,62,31, + 128,124,31,128,124,31,128,252,31,128,252,31,136,252,31,136, + 252,31,152,254,63,144,127,127,240,63,143,224,21,32,96,24, + 2,0,15,3,0,31,195,0,63,254,0,49,252,0,32,120, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 15,248,0,24,62,0,56,63,0,120,31,0,124,31,128,126, - 31,128,126,31,128,62,31,128,8,63,128,1,255,128,7,31, + 31,128,126,31,128,62,31,128,8,63,128,1,255,128,7,159, 128,30,31,128,62,31,128,124,31,128,124,31,128,252,31,128, - 252,31,136,252,31,136,252,31,152,254,63,144,127,111,240,63, - 199,224,29,22,88,34,2,1,15,240,255,128,24,63,195,192, - 56,63,195,224,120,31,131,240,124,31,129,240,126,31,129,240, - 126,31,129,248,62,31,129,248,0,63,129,248,1,255,129,248, - 7,31,255,248,30,31,128,0,62,31,128,0,124,31,128,0, - 124,31,128,8,252,31,128,8,252,31,128,24,252,31,192,16, - 252,31,192,16,254,51,192,32,127,97,240,64,63,192,255,128, - 18,32,96,22,2,247,3,252,0,15,6,0,31,7,0,62, - 7,128,62,7,128,126,15,128,124,31,128,252,31,128,252,31, - 0,252,14,0,252,0,0,252,0,0,252,0,0,252,0,0, - 252,0,0,124,0,64,124,0,192,62,0,128,62,1,128,30, - 1,0,15,130,0,3,252,0,0,128,0,0,128,0,1,128, - 0,0,240,0,0,56,0,0,60,0,0,60,0,0,60,0, - 4,120,0,3,240,0,18,34,102,23,2,0,28,0,0,30, - 0,0,30,0,0,31,0,0,15,128,0,7,128,0,3,192, - 0,0,192,0,0,96,0,0,0,0,0,0,0,0,0,0, - 3,252,0,14,30,0,30,31,0,62,15,128,60,15,128,124, - 15,128,124,15,192,252,15,192,252,15,192,252,15,192,255,255, - 192,252,0,0,252,0,0,252,0,0,252,0,64,124,0,64, - 124,0,192,62,0,192,62,1,128,31,1,0,15,135,0,3, - 252,0,18,34,102,23,2,0,0,14,0,0,31,0,0,31, - 0,0,62,0,0,60,0,0,120,0,0,240,0,0,224,0, - 1,128,0,0,0,0,0,0,0,0,0,0,3,252,0,14, - 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, - 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, - 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, - 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, - 102,23,2,0,1,224,0,1,224,0,1,240,0,3,240,0, - 3,248,0,7,56,0,14,28,0,28,14,0,56,3,0,0, - 0,0,0,0,0,0,0,0,3,252,0,14,30,0,30,31, - 0,62,15,128,60,15,128,124,15,128,124,15,192,252,15,192, - 252,15,192,252,15,192,255,255,192,252,0,0,252,0,0,252, - 0,0,252,0,64,124,0,64,124,0,192,62,0,192,62,0, - 128,31,1,0,15,131,0,3,252,0,18,32,96,23,2,0, - 30,15,0,63,31,128,63,31,128,63,31,128,63,31,128,30, - 15,0,0,0,0,0,0,0,0,0,0,0,0,0,3,252, + 252,31,136,252,31,136,252,31,152,254,63,144,127,127,240,63, + 143,224,21,32,96,24,2,0,60,30,0,126,63,0,126,63, + 0,126,63,0,126,63,0,60,30,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,248,0,24,62,0,56,63,0,120, + 31,0,124,31,128,126,31,128,126,31,128,62,31,128,8,63, + 128,1,255,128,7,159,128,30,31,128,62,31,128,124,31,128, + 124,31,128,252,31,128,252,31,136,252,31,136,252,31,152,254, + 63,144,127,127,240,63,143,224,21,34,102,24,2,1,3,240, + 0,7,248,0,14,28,0,12,12,0,12,12,0,12,12,0, + 14,28,0,7,248,0,1,224,0,0,0,0,0,0,0,0, + 0,0,15,248,0,24,62,0,56,63,0,120,31,0,124,31, + 128,126,31,128,126,31,128,62,31,128,8,63,128,1,255,128, + 7,31,128,30,31,128,62,31,128,124,31,128,124,31,128,252, + 31,128,252,31,136,252,31,136,252,31,152,254,63,144,127,111, + 240,63,199,224,29,22,88,34,2,1,15,240,255,128,24,63, + 195,192,56,63,195,224,120,31,131,240,124,31,129,240,126,31, + 129,240,126,31,129,248,62,31,129,248,0,63,129,248,1,255, + 129,248,7,31,255,248,30,31,128,0,62,31,128,0,124,31, + 128,0,124,31,128,8,252,31,128,8,252,31,128,24,252,31, + 192,16,252,31,192,16,254,51,192,32,127,97,240,64,63,192, + 255,128,18,32,96,22,2,247,3,252,0,15,6,0,31,7, + 0,62,7,128,62,7,128,126,15,128,124,31,128,252,31,128, + 252,31,0,252,14,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,124,0,64,124,0,192,62,0,128,62,1, + 128,30,1,0,15,130,0,3,252,0,0,128,0,0,128,0, + 1,128,0,0,240,0,0,56,0,0,60,0,0,60,0,0, + 60,0,4,120,0,3,240,0,18,34,102,23,2,0,28,0, + 0,30,0,0,30,0,0,31,0,0,15,128,0,7,128,0, + 3,192,0,0,192,0,0,96,0,0,0,0,0,0,0,0, + 0,0,3,252,0,14,30,0,30,31,0,62,15,128,60,15, + 128,124,15,128,124,15,192,252,15,192,252,15,192,252,15,192, + 255,255,192,252,0,0,252,0,0,252,0,0,252,0,64,124, + 0,64,124,0,192,62,0,192,62,1,128,31,1,0,15,135, + 0,3,252,0,18,34,102,23,2,0,0,14,0,0,31,0, + 0,31,0,0,62,0,0,60,0,0,120,0,0,240,0,0, + 224,0,1,128,0,0,0,0,0,0,0,0,0,0,3,252, 0,14,30,0,30,31,0,62,15,128,60,15,128,124,15,128, 124,15,192,252,15,192,252,15,192,252,15,192,255,255,192,252, 0,0,252,0,0,252,0,0,252,0,64,124,0,64,124,0, 192,62,0,192,62,0,128,31,1,0,15,131,0,3,252,0, - 12,34,68,15,1,0,96,0,240,0,248,0,248,0,124,0, - 28,0,14,0,7,0,3,0,0,0,0,0,0,0,127,128, + 18,34,102,23,2,0,1,224,0,1,224,0,1,240,0,3, + 240,0,3,248,0,7,56,0,14,28,0,28,14,0,56,3, + 0,0,0,0,0,0,0,0,0,0,3,252,0,14,30,0, + 30,31,0,62,15,128,60,15,128,124,15,128,124,15,192,252, + 15,192,252,15,192,252,15,192,255,255,192,252,0,0,252,0, + 0,252,0,0,252,0,64,124,0,64,124,0,192,62,0,192, + 62,0,128,31,1,0,15,131,0,3,252,0,18,32,96,23, + 2,0,30,15,0,63,31,128,63,31,128,63,31,128,63,31, + 128,30,15,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,252,0,14,30,0,30,31,0,62,15,128,60,15,128,124, + 15,128,124,15,192,252,15,192,252,15,192,252,15,192,255,255, + 192,252,0,0,252,0,0,252,0,0,252,0,64,124,0,64, + 124,0,192,62,0,192,62,0,128,31,1,0,15,131,0,3, + 252,0,12,34,68,15,1,0,96,0,240,0,248,0,248,0, + 124,0,28,0,14,0,7,0,3,0,0,0,0,0,0,0, + 127,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, - 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, - 31,128,31,128,31,128,31,128,127,240,12,34,68,15,2,0, - 0,224,1,240,1,240,3,224,7,192,7,128,15,0,28,0, - 24,0,0,0,0,0,0,0,255,0,63,0,63,0,63,0, + 31,128,31,128,31,128,31,128,31,128,127,240,12,34,68,15, + 2,0,0,224,1,240,1,240,3,224,7,192,7,128,15,0, + 28,0,24,0,0,0,0,0,0,0,255,0,63,0,63,0, 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, - 63,0,255,224,14,34,68,14,0,0,7,128,15,128,15,128, - 15,192,31,224,60,224,56,112,112,60,192,12,0,0,0,0, - 0,0,63,192,15,192,15,192,15,192,15,192,15,192,15,192, + 63,0,63,0,255,224,14,34,68,14,0,0,7,128,15,128, + 15,128,15,192,31,224,60,224,56,112,112,60,192,12,0,0, + 0,0,0,0,63,192,15,192,15,192,15,192,15,192,15,192, 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, - 15,192,15,192,15,192,15,192,15,192,15,192,63,248,14,32, - 64,14,1,0,120,120,252,252,252,252,252,252,252,252,120,120, - 0,0,0,0,0,0,0,0,63,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,63,248, + 14,32,64,14,1,0,120,120,252,252,252,252,252,252,252,252, + 120,120,0,0,0,0,0,0,0,0,63,192,15,192,15,192, 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, - 15,192,63,248,20,34,102,24,2,0,15,193,128,15,227,0, - 7,254,0,3,248,0,1,248,0,1,252,0,3,254,0,14, - 126,0,24,63,0,0,63,128,0,31,128,0,15,192,7,255, - 192,15,15,224,30,7,224,62,7,224,62,7,224,124,7,240, - 124,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, - 3,240,252,3,240,252,3,240,252,3,240,124,3,224,124,7, - 224,62,7,192,62,7,192,30,7,128,15,15,0,3,252,0, - 23,32,96,27,2,0,3,224,96,7,248,64,15,255,192,12, - 127,128,8,15,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,255,31,192,63,35,224,63,65,240,63,65,248, - 63,129,248,63,129,248,63,1,248,63,1,248,63,1,248,63, - 1,248,63,1,248,63,1,248,63,1,248,63,1,248,63,1, - 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, - 63,1,248,255,199,254,20,34,102,24,2,0,14,0,0,31, - 0,0,31,0,0,15,128,0,7,192,0,3,192,0,1,224, - 0,0,96,0,0,48,0,0,0,0,0,0,0,0,0,0, - 3,252,0,15,15,0,30,7,128,62,7,192,62,7,192,124, - 3,224,124,3,224,252,3,240,252,3,240,252,3,240,252,3, + 15,192,15,192,63,248,20,34,102,24,2,0,15,193,128,15, + 227,0,7,254,0,3,248,0,1,248,0,1,252,0,3,254, + 0,14,126,0,24,63,0,0,63,128,0,31,128,0,15,192, + 7,255,192,15,15,224,30,7,224,62,7,224,62,7,224,124, + 7,240,124,3,240,252,3,240,252,3,240,252,3,240,252,3, 240,252,3,240,252,3,240,252,3,240,252,3,240,124,3,224, - 124,3,224,62,7,192,62,7,192,30,7,128,15,15,0,3, - 252,0,20,34,102,24,2,0,0,7,0,0,15,128,0,15, - 128,0,31,0,0,62,0,0,60,0,0,120,0,0,224,0, - 0,192,0,0,0,0,0,0,0,0,0,0,3,252,0,15, - 15,0,30,7,128,62,7,192,62,7,192,124,3,224,124,3, - 224,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, - 252,3,240,252,3,240,252,3,240,124,3,224,124,3,224,62, - 7,192,62,7,192,30,7,128,15,15,0,3,252,0,20,34, - 102,24,2,0,0,240,0,0,240,0,1,248,0,1,248,0, - 3,252,0,3,156,0,7,14,0,14,7,0,24,1,128,0, - 0,0,0,0,0,0,0,0,3,252,0,15,15,0,30,7, - 128,62,7,192,62,7,192,124,3,224,124,3,224,252,3,240, - 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, - 3,240,252,3,240,124,3,224,124,3,224,62,7,192,62,7, - 192,30,7,128,15,15,0,3,252,0,20,32,96,24,2,0, - 7,192,128,15,240,128,31,255,128,16,255,0,16,62,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,252, + 124,7,224,62,7,192,62,7,192,30,7,128,15,15,0,3, + 252,0,23,32,96,27,2,0,3,224,96,7,248,64,15,255, + 192,12,127,128,8,15,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,31,192,63,35,224,63,65,240,63, + 65,248,63,129,248,63,129,248,63,1,248,63,1,248,63,1, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,63,1,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,255,199,254,20,34,102,24,2,0,14,0, + 0,31,0,0,31,0,0,15,128,0,7,192,0,3,192,0, + 1,224,0,0,96,0,0,48,0,0,0,0,0,0,0,0, + 0,0,3,252,0,15,15,0,30,7,128,62,7,192,62,7, + 192,124,3,224,124,3,224,252,3,240,252,3,240,252,3,240, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,124, + 3,224,124,3,224,62,7,192,62,7,192,30,7,128,15,15, + 0,3,252,0,20,34,102,24,2,0,0,7,0,0,15,128, + 0,15,128,0,31,0,0,62,0,0,60,0,0,120,0,0, + 224,0,0,192,0,0,0,0,0,0,0,0,0,0,3,252, 0,15,15,0,30,7,128,62,7,192,62,7,192,124,3,224, 124,3,224,252,3,240,252,3,240,252,3,240,252,3,240,252, 3,240,252,3,240,252,3,240,252,3,240,124,3,224,124,3, 224,62,7,192,62,7,192,30,7,128,15,15,0,3,252,0, - 20,32,96,24,2,0,30,15,0,63,31,128,63,31,128,63, - 31,128,63,31,128,30,15,0,0,0,0,0,0,0,0,0, - 0,0,0,0,3,252,0,15,15,0,30,7,128,62,7,192, - 62,7,192,124,3,224,124,3,224,252,3,240,252,3,240,252, + 20,34,102,24,2,0,0,240,0,0,240,0,1,248,0,1, + 248,0,3,252,0,3,156,0,7,14,0,14,7,0,24,1, + 128,0,0,0,0,0,0,0,0,0,3,252,0,15,15,0, + 30,7,128,62,7,192,62,7,192,124,3,224,124,3,224,252, 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, - 240,124,3,224,124,3,224,62,7,192,62,7,192,30,7,128, - 15,15,0,3,252,0,41,32,192,45,2,253,0,0,28,0, - 0,0,0,0,62,0,0,0,0,0,127,0,0,0,0,0, - 127,0,0,0,0,0,127,0,0,0,0,0,62,0,0,0, - 0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0, + 240,252,3,240,252,3,240,124,3,224,124,3,224,62,7,192, + 62,7,192,30,7,128,15,15,0,3,252,0,20,32,96,24, + 2,0,7,192,128,15,240,128,31,255,128,16,255,0,16,62, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,252,0,15,15,0,30,7,128,62,7,192,62,7,192,124, + 3,224,124,3,224,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,124,3,224, + 124,3,224,62,7,192,62,7,192,30,7,128,15,15,0,3, + 252,0,20,32,96,24,2,0,30,15,0,63,31,128,63,31, + 128,63,31,128,63,31,128,30,15,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,252,0,15,15,0,30,7,128,62, + 7,192,62,7,192,124,3,224,124,3,224,252,3,240,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,124,3,224,124,3,224,62,7,192,62,7,192,30, + 7,128,15,15,0,3,252,0,41,32,192,45,2,253,0,0, + 28,0,0,0,0,0,62,0,0,0,0,0,127,0,0,0, + 0,0,127,0,0,0,0,0,127,0,0,0,0,0,62,0, + 0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, - 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,255,255,255,128,255,255,255,255,255,128,255,255, + 255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,28,0,0,0,0,0,62,0,0,0,0,0, - 127,0,0,0,0,0,127,0,0,0,0,0,127,0,0,0, - 0,0,62,0,0,0,0,0,28,0,0,0,20,22,66,24, - 2,1,3,252,48,15,15,96,30,15,192,62,7,192,62,7, - 192,124,7,224,124,7,224,252,15,240,252,27,240,252,51,240, - 252,115,240,252,227,240,252,195,240,253,131,240,255,3,240,126, - 3,224,126,3,224,62,7,192,62,7,192,63,7,128,111,15, - 0,195,252,0,24,34,102,26,1,0,7,0,0,7,128,0, - 7,192,0,7,192,0,3,224,0,1,224,0,0,112,0,0, - 48,0,0,24,0,0,0,0,0,0,0,0,0,0,255,143, + 0,0,0,0,0,0,28,0,0,0,0,0,62,0,0,0, + 0,0,127,0,0,0,0,0,127,0,0,0,0,0,127,0, + 0,0,0,0,62,0,0,0,0,0,28,0,0,0,20,22, + 66,24,2,1,3,252,48,15,15,96,30,15,192,62,7,192, + 62,7,192,124,7,224,124,7,224,252,15,240,252,27,240,252, + 51,240,252,115,240,252,227,240,252,195,240,253,131,240,255,3, + 240,126,3,224,126,3,224,62,7,192,62,7,192,63,7,128, + 111,15,0,195,252,0,24,34,102,26,1,0,7,0,0,7, + 128,0,7,192,0,7,192,0,3,224,0,1,224,0,0,112, + 0,0,48,0,0,24,0,0,0,0,0,0,0,0,0,0, + 255,143,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,131,248,31,131,248,31,133,248,15,133,248,15,201,248,7, + 241,255,24,34,102,26,1,0,0,3,128,0,3,128,0,7, + 128,0,15,128,0,15,0,0,30,0,0,28,0,0,56,0, + 0,48,0,0,0,0,0,0,0,0,0,0,255,143,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,131,248,31, + 131,248,31,133,248,15,133,248,15,201,248,7,241,255,24,34, + 102,26,1,0,0,56,0,0,120,0,0,124,0,0,252,0, + 0,254,0,1,206,0,3,135,0,7,3,128,14,0,192,0, + 0,0,0,0,0,0,0,0,255,143,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,131,248,31,131,248,31,133, + 248,15,133,248,15,201,248,7,241,255,24,32,96,26,1,0, + 7,131,192,15,199,224,15,199,224,15,199,224,15,199,224,7, + 131,192,0,0,0,0,0,0,0,0,0,0,0,0,255,135, 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,131, 248,31,131,248,31,133,248,15,133,248,15,201,248,7,241,255, - 24,34,102,26,1,0,0,3,128,0,3,128,0,7,128,0, - 15,128,0,15,0,0,30,0,0,28,0,0,56,0,0,48, - 0,0,0,0,0,0,0,0,0,0,255,143,248,31,129,248, - 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, - 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, - 248,31,129,248,31,129,248,31,129,248,31,131,248,31,131,248, - 31,133,248,15,133,248,15,201,248,7,241,255,24,34,102,26, - 1,0,0,56,0,0,120,0,0,124,0,0,252,0,0,254, - 0,1,206,0,3,135,0,7,3,128,14,0,192,0,0,0, - 0,0,0,0,0,0,255,143,248,31,129,248,31,129,248,31, - 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, - 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, - 31,129,248,31,129,248,31,131,248,31,131,248,31,133,248,15, - 133,248,15,201,248,7,241,255,24,32,96,26,1,0,7,131, - 192,15,199,224,15,199,224,15,199,224,15,199,224,7,131,192, - 0,0,0,0,0,0,0,0,0,0,0,0,255,135,248,31, - 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, - 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, - 31,129,248,31,129,248,31,129,248,31,129,248,31,131,248,31, - 131,248,31,133,248,15,133,248,15,201,248,7,241,255,23,45, - 135,25,1,245,0,1,192,0,1,224,0,3,224,0,7,192, - 0,7,128,0,15,0,0,14,0,0,28,0,0,24,0,0, - 0,0,0,0,0,0,0,0,255,241,254,63,192,120,31,128, - 48,15,192,32,15,192,32,15,192,96,7,224,64,7,224,64, - 3,240,192,3,240,128,1,248,128,1,249,128,0,249,0,0, - 253,0,0,253,0,0,126,0,0,126,0,0,62,0,0,60, - 0,0,28,0,0,28,0,0,12,0,0,8,0,0,8,0, - 0,8,0,15,16,0,31,16,0,63,144,0,63,32,0,62, - 32,0,62,64,0,31,192,0,15,0,0,22,44,132,25,1, - 244,3,128,0,15,128,0,63,128,0,255,128,0,223,128,0, + 23,45,135,25,1,245,0,1,192,0,1,224,0,3,224,0, + 7,192,0,7,128,0,15,0,0,14,0,0,28,0,0,24, + 0,0,0,0,0,0,0,0,0,0,255,241,254,63,192,120, + 31,128,48,15,192,32,15,192,32,15,192,96,7,224,64,7, + 224,64,3,240,192,3,240,128,1,248,128,1,249,128,0,249, + 0,0,253,0,0,253,0,0,126,0,0,126,0,0,62,0, + 0,60,0,0,28,0,0,28,0,0,12,0,0,8,0,0, + 8,0,0,8,0,15,16,0,31,16,0,63,144,0,63,32, + 0,62,32,0,62,64,0,31,192,0,15,0,0,22,44,132, + 25,1,244,3,128,0,15,128,0,63,128,0,255,128,0,223, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,135,240,31,159,248,31,177,248,31,160,252,31,192,252, + 31,192,252,31,192,252,31,128,252,31,128,252,31,128,248,31, + 129,248,31,129,240,31,129,240,31,129,224,31,131,192,31,131, + 128,31,135,128,31,134,0,31,140,0,31,152,0,31,224,0, 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, - 135,240,31,159,248,31,177,248,31,160,252,31,192,252,31,192, - 252,31,192,252,31,128,252,31,128,252,31,128,248,31,129,248, - 31,129,240,31,129,240,31,129,224,31,131,192,31,131,128,31, - 135,128,31,134,0,31,140,0,31,152,0,31,224,0,31,128, - 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, - 31,128,0,31,128,0,31,128,0,30,0,0,120,0,0,224, - 0,0,128,0,0,23,44,132,25,1,245,3,193,224,7,227, - 240,7,227,240,7,227,240,7,227,240,3,193,224,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,255,241,254,63, - 192,120,31,128,48,15,192,32,15,192,32,15,192,96,7,224, - 64,7,224,64,3,240,192,3,240,128,1,240,128,1,249,128, - 0,249,0,0,253,0,0,253,0,0,126,0,0,126,0,0, - 62,0,0,60,0,0,28,0,0,28,0,0,12,0,0,8, - 0,0,8,0,0,8,0,15,16,0,31,16,0,63,144,0, - 63,32,0,62,32,0,62,64,0,31,192,0,15,0,0}; + 128,0,31,128,0,31,128,0,31,128,0,30,0,0,120,0, + 0,224,0,0,128,0,0,23,44,132,25,1,245,3,193,224, + 7,227,240,7,227,240,7,227,240,7,227,240,3,193,224,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241, + 254,63,192,120,31,128,48,15,192,32,15,192,32,15,192,96, + 7,224,64,7,224,64,3,240,192,3,240,128,1,240,128,1, + 249,128,0,249,0,0,253,0,0,253,0,0,126,0,0,126, + 0,0,62,0,0,60,0,0,28,0,0,28,0,0,12,0, + 0,8,0,0,8,0,0,8,0,15,16,0,31,16,0,63, + 144,0,63,32,0,62,32,0,62,64,0,31,192,0,15,0, + 0}; /* Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -61970,8 +62430,8 @@ const u8g_fntpgm_uint8_t u8g_font_osb35[22095] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =35 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb35n[1539] U8G_SECTION(".progmem.u8g_font_osb35n") = { - 0,133,60,215,242,34,0,0,0,0,42,57,0,35,247,34, +const u8g_fntpgm_uint8_t u8g_font_osb35n[1567] U8G_FONT_SECTION("u8g_font_osb35n") = { + 0,133,60,215,242,34,0,0,0,0,42,58,0,35,247,34, 0,17,19,57,24,4,13,1,128,0,3,192,0,3,192,0, 227,195,0,241,135,128,248,143,128,252,159,128,126,191,0,3, 192,0,3,192,0,126,191,0,252,159,128,248,143,128,241,135, @@ -62067,7 +62527,8 @@ const u8g_fntpgm_uint8_t u8g_font_osb35n[1539] U8G_SECTION(".progmem.u8g_font_os 31,15,252,15,255,252,3,243,252,0,3,252,0,3,252,0, 3,248,7,3,248,31,131,248,31,195,248,63,195,240,63,195, 240,63,131,224,62,7,224,60,7,192,28,15,128,14,31,0, - 7,252,0}; + 7,252,0,8,22,22,14,3,1,126,255,255,255,255,126,0, + 0,0,0,0,0,0,0,0,0,126,255,255,255,255,126}; /* Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -62080,8 +62541,8 @@ const u8g_fntpgm_uint8_t u8g_font_osb35n[1539] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =38 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osb35r[10245] U8G_SECTION(".progmem.u8g_font_osb35r") = { - 0,133,60,215,242,35,12,218,29,222,32,127,246,38,245,35, +const u8g_fntpgm_uint8_t u8g_font_osb35r[10247] U8G_FONT_SECTION("u8g_font_osb35r") = { + 0,133,60,215,242,35,12,220,29,224,32,127,246,38,245,35, 246,0,0,0,13,0,0,8,34,34,14,3,1,126,126,255, 255,255,255,255,255,126,126,126,126,60,60,60,60,60,24,24, 24,24,24,24,24,24,0,0,0,126,255,255,255,255,126,12, @@ -62235,493 +62696,493 @@ const u8g_fntpgm_uint8_t u8g_font_osb35r[10245] U8G_SECTION(".progmem.u8g_font_o 3,248,31,131,248,31,195,248,63,195,240,63,195,240,63,131, 224,62,7,224,60,7,192,28,15,128,14,31,0,7,252,0, 8,22,22,14,3,1,126,255,255,255,255,126,0,0,0,0, - 0,0,0,0,0,0,126,255,255,255,255,126,9,31,62,13, - 2,248,63,0,127,128,127,128,127,128,127,128,63,0,0,0, + 0,0,0,0,0,0,126,255,255,255,255,126,9,32,64,13, + 2,247,63,0,127,128,127,128,127,128,127,128,63,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,126,0,255,0,255,128,255,128,255,128,127,128,1,128, - 1,128,1,128,3,0,3,0,6,0,28,0,56,0,96,0, - 37,40,200,45,4,249,0,0,0,0,48,0,0,0,0,240, + 0,0,60,0,127,0,255,0,255,128,255,128,255,128,57,128, + 1,128,1,128,3,0,3,0,6,0,12,0,56,0,240,0, + 64,0,37,40,200,45,4,249,0,0,0,0,48,0,0,0, + 0,240,0,0,0,1,248,0,0,0,7,224,0,0,0,31, + 128,0,0,0,126,0,0,0,1,252,0,0,0,7,240,0, + 0,0,15,192,0,0,0,63,0,0,0,0,252,0,0,0, + 3,240,0,0,0,15,224,0,0,0,63,128,0,0,0,126, 0,0,0,1,248,0,0,0,7,224,0,0,0,31,128,0, - 0,0,126,0,0,0,1,252,0,0,0,7,240,0,0,0, - 15,192,0,0,0,63,0,0,0,0,252,0,0,0,3,240, - 0,0,0,15,224,0,0,0,63,128,0,0,0,126,0,0, - 0,1,248,0,0,0,7,224,0,0,0,31,128,0,0,0, - 127,0,0,0,0,252,0,0,0,0,248,0,0,0,0,126, - 0,0,0,0,31,128,0,0,0,15,224,0,0,0,3,248, + 0,0,127,0,0,0,0,252,0,0,0,0,248,0,0,0, + 0,126,0,0,0,0,31,128,0,0,0,15,224,0,0,0, + 3,248,0,0,0,0,252,0,0,0,0,63,0,0,0,0, + 15,192,0,0,0,3,240,0,0,0,1,252,0,0,0,0, + 127,0,0,0,0,31,192,0,0,0,7,224,0,0,0,1, + 248,0,0,0,0,126,0,0,0,0,63,128,0,0,0,15, + 224,0,0,0,3,248,0,0,0,0,248,0,0,0,0,48, + 41,13,78,45,2,6,255,255,255,255,255,128,255,255,255,255, + 255,128,255,255,255,255,255,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,255,255,255,128,255,255,255,255,255,128,255,255, + 255,255,255,128,37,40,200,45,4,249,96,0,0,0,0,120, 0,0,0,0,252,0,0,0,0,63,0,0,0,0,15,192, 0,0,0,3,240,0,0,0,1,252,0,0,0,0,127,0, - 0,0,0,31,192,0,0,0,7,224,0,0,0,1,248,0, + 0,0,0,31,128,0,0,0,7,224,0,0,0,1,248,0, 0,0,0,126,0,0,0,0,63,128,0,0,0,15,224,0, - 0,0,3,248,0,0,0,0,248,0,0,0,0,48,41,13, - 78,45,2,6,255,255,255,255,255,128,255,255,255,255,255,128, - 255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, - 255,128,37,40,200,45,4,249,96,0,0,0,0,120,0,0, - 0,0,252,0,0,0,0,63,0,0,0,0,15,192,0,0, - 0,3,240,0,0,0,1,252,0,0,0,0,127,0,0,0, - 0,31,128,0,0,0,7,224,0,0,0,1,248,0,0,0, - 0,126,0,0,0,0,63,128,0,0,0,15,224,0,0,0, - 3,240,0,0,0,0,252,0,0,0,0,63,0,0,0,0, - 15,192,0,0,0,7,240,0,0,0,1,248,0,0,0,0, - 248,0,0,0,3,240,0,0,0,15,192,0,0,0,63,128, - 0,0,0,254,0,0,0,1,248,0,0,0,7,224,0,0, - 0,31,128,0,0,0,126,0,0,0,1,252,0,0,0,7, - 240,0,0,0,31,192,0,0,0,63,0,0,0,0,252,0, - 0,0,3,240,0,0,0,15,224,0,0,0,63,128,0,0, - 0,254,0,0,0,0,248,0,0,0,0,96,0,0,0,0, - 15,34,68,22,3,1,31,240,59,248,96,252,96,252,192,126, - 192,126,192,126,192,126,192,126,64,252,96,252,48,248,1,240, - 1,224,3,192,3,128,7,0,7,0,14,0,12,16,12,16, - 12,16,12,16,6,32,3,192,0,0,0,0,0,128,3,224, - 7,240,7,240,7,240,7,240,3,224,35,34,170,39,2,1, - 0,15,255,0,0,0,56,1,224,0,0,224,0,112,0,1, - 128,0,28,0,7,0,0,14,0,14,0,0,7,0,12,0, - 248,3,0,28,3,205,243,128,56,7,135,241,128,56,15,7, - 225,192,112,31,7,225,192,112,62,7,224,224,112,62,7,224, - 224,224,124,7,192,224,224,124,7,192,224,224,124,7,192,224, - 224,252,15,192,224,224,248,15,128,224,224,248,15,128,224,224, - 248,15,129,192,224,248,31,129,192,224,248,31,129,128,112,248, - 31,3,128,112,248,63,3,0,112,120,111,6,0,56,60,199, - 140,0,56,31,3,240,0,28,0,0,0,0,14,0,0,0, - 0,7,0,0,0,0,3,128,0,0,0,1,192,0,96,0, - 0,120,1,192,0,0,31,255,0,0,33,35,175,36,2,0, - 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, - 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, - 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, - 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, - 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, - 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, - 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, - 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, - 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, - 0,3,0,15,240,0,2,0,15,240,0,6,0,7,240,0, - 15,0,7,248,0,31,0,15,252,0,255,240,255,255,128,28, - 34,136,33,3,0,255,255,240,0,15,224,126,0,15,224,31, - 0,15,224,31,128,15,224,15,192,15,224,15,192,15,224,15, + 0,0,3,240,0,0,0,0,252,0,0,0,0,63,0,0, + 0,0,15,192,0,0,0,7,240,0,0,0,1,248,0,0, + 0,0,248,0,0,0,3,240,0,0,0,15,192,0,0,0, + 63,128,0,0,0,254,0,0,0,1,248,0,0,0,7,224, + 0,0,0,31,128,0,0,0,126,0,0,0,1,252,0,0, + 0,7,240,0,0,0,31,192,0,0,0,63,0,0,0,0, + 252,0,0,0,3,240,0,0,0,15,224,0,0,0,63,128, + 0,0,0,254,0,0,0,0,248,0,0,0,0,96,0,0, + 0,0,15,34,68,22,3,1,31,240,59,248,96,252,96,252, + 192,126,192,126,192,126,192,126,192,126,64,252,96,252,48,248, + 1,240,1,224,3,192,3,128,7,0,7,0,14,0,12,16, + 12,16,12,16,12,16,6,32,3,192,0,0,0,0,0,128, + 3,224,7,240,7,240,7,240,7,240,3,224,35,34,170,39, + 2,1,0,15,255,0,0,0,56,1,224,0,0,224,0,112, + 0,1,128,0,28,0,7,0,0,14,0,14,0,0,7,0, + 12,0,248,3,0,28,3,205,243,128,56,7,135,241,128,56, + 15,7,225,192,112,31,7,225,192,112,62,7,224,224,112,62, + 7,224,224,224,124,7,192,224,224,124,7,192,224,224,124,7, + 192,224,224,252,15,192,224,224,248,15,128,224,224,248,15,128, + 224,224,248,15,129,192,224,248,31,129,192,224,248,31,129,128, + 112,248,31,3,128,112,248,63,3,0,112,120,111,6,0,56, + 60,199,140,0,56,31,3,240,0,28,0,0,0,0,14,0, + 0,0,0,7,0,0,0,0,3,128,0,0,0,1,192,0, + 96,0,0,120,1,192,0,0,31,255,0,0,33,35,175,36, + 2,0,0,0,192,0,0,0,1,192,0,0,0,1,224,0, + 0,0,1,224,0,0,0,3,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,7,240,0,0,0,7,248,0,0,0, + 7,248,0,0,0,15,248,0,0,0,15,252,0,0,0,15, + 252,0,0,0,25,252,0,0,0,25,254,0,0,0,25,254, + 0,0,0,48,254,0,0,0,48,255,0,0,0,32,255,0, + 0,0,96,127,0,0,0,96,127,128,0,0,64,127,128,0, + 0,192,63,128,0,0,192,63,192,0,0,255,255,192,0,1, + 255,255,192,0,1,128,31,224,0,1,0,31,224,0,3,0, + 15,224,0,3,0,15,240,0,2,0,15,240,0,6,0,7, + 240,0,15,0,7,248,0,31,0,15,252,0,255,240,255,255, + 128,28,34,136,33,3,0,255,255,240,0,15,224,126,0,15, + 224,31,0,15,224,31,128,15,224,15,192,15,224,15,192,15, 224,15,224,15,224,15,224,15,224,15,224,15,224,15,224,15, - 224,15,224,15,192,15,224,15,192,15,224,31,128,15,224,30, - 0,15,224,60,0,15,255,224,0,15,224,124,0,15,224,63, - 0,15,224,31,128,15,224,15,192,15,224,15,224,15,224,15, - 240,15,224,15,240,15,224,15,240,15,224,15,240,15,224,15, - 240,15,224,15,240,15,224,15,224,15,224,15,224,15,224,31, - 192,15,224,31,128,15,224,126,0,255,255,248,0,26,34,136, - 31,3,1,0,127,193,128,1,224,241,128,3,192,63,128,15, - 128,31,128,15,128,15,128,31,0,15,128,63,0,7,128,63, - 0,7,128,127,0,3,128,127,0,3,128,127,0,3,128,127, - 0,1,128,255,0,1,128,255,0,1,128,255,0,1,128,255, - 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, - 0,0,0,255,0,0,0,255,0,0,192,127,0,0,192,127, - 0,0,192,127,0,0,128,63,0,1,128,63,0,1,128,63, - 0,1,128,31,128,3,0,15,128,3,0,7,128,6,0,3, - 192,12,0,1,224,56,0,0,127,224,0,32,34,136,37,3, - 0,255,255,248,0,15,224,31,0,15,224,7,128,15,224,3, - 224,15,224,1,240,15,224,1,240,15,224,0,248,15,224,0, - 252,15,224,0,252,15,224,0,254,15,224,0,254,15,224,0, - 254,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, - 255,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, - 255,15,224,0,255,15,224,0,254,15,224,0,254,15,224,0, - 254,15,224,0,254,15,224,0,252,15,224,0,252,15,224,0, - 248,15,224,1,240,15,224,1,224,15,224,3,192,15,224,7, - 128,15,224,30,0,255,255,248,0,27,34,136,33,3,0,255, - 255,255,224,15,224,31,224,15,224,7,224,15,224,3,224,15, - 224,1,224,15,224,1,224,15,224,0,224,15,224,0,224,15, - 224,0,96,15,224,48,96,15,224,48,96,15,224,48,0,15, - 224,112,0,15,224,112,0,15,224,240,0,15,225,240,0,15, - 255,240,0,15,225,240,0,15,224,240,0,15,224,112,0,15, - 224,112,32,15,224,48,96,15,224,48,96,15,224,48,96,15, - 224,0,96,15,224,0,96,15,224,0,224,15,224,0,224,15, - 224,1,224,15,224,3,224,15,224,3,224,15,224,15,224,255, - 255,255,224,255,255,255,224,28,34,136,32,3,0,255,255,255, - 240,7,240,15,240,7,240,3,240,7,240,1,240,7,240,1, - 240,7,240,0,240,7,240,0,240,7,240,0,112,7,240,0, - 112,7,240,24,48,7,240,24,48,7,240,24,48,7,240,56, - 48,7,240,56,0,7,240,120,0,7,240,248,0,7,255,248, - 0,7,240,248,0,7,240,120,0,7,240,56,0,7,240,56, - 0,7,240,24,0,7,240,24,0,7,240,24,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,255,255,128,0,30,34,136,35,3,1,0,127,224,192,0, - 224,120,192,3,192,31,192,7,128,15,192,15,128,7,192,31, - 0,7,192,31,0,3,192,63,0,3,192,63,0,1,192,127, - 0,1,192,127,0,1,192,127,0,0,192,255,0,0,192,255, - 0,0,192,255,0,0,0,255,0,0,0,255,0,0,0,255, - 3,255,252,255,3,255,252,255,0,31,192,255,0,31,192,255, - 0,31,192,127,0,31,192,127,0,31,192,127,0,31,192,127, - 0,31,192,63,0,31,192,63,0,31,192,31,0,31,192,15, - 128,57,192,15,128,49,192,7,192,96,192,1,224,192,192,0, - 127,128,192,34,34,170,39,3,0,255,255,63,255,192,7,240, + 224,15,224,15,224,15,192,15,224,15,192,15,224,31,128,15, + 224,30,0,15,224,60,0,15,255,224,0,15,224,124,0,15, + 224,63,0,15,224,31,128,15,224,15,192,15,224,15,224,15, + 224,15,240,15,224,15,240,15,224,15,240,15,224,15,240,15, + 224,15,240,15,224,15,240,15,224,15,224,15,224,15,224,15, + 224,31,192,15,224,31,128,15,224,126,0,255,255,248,0,26, + 34,136,31,3,1,0,127,193,128,1,224,241,128,3,192,63, + 128,15,128,31,128,15,128,15,128,31,0,15,128,63,0,7, + 128,63,0,7,128,127,0,3,128,127,0,3,128,127,0,3, + 128,127,0,1,128,255,0,1,128,255,0,1,128,255,0,1, + 128,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0, + 0,255,0,0,0,255,0,0,0,255,0,0,192,127,0,0, + 192,127,0,0,192,127,0,0,128,63,0,1,128,63,0,1, + 128,63,0,1,128,31,128,3,0,15,128,3,0,7,128,6, + 0,3,192,12,0,1,224,56,0,0,127,224,0,32,34,136, + 37,3,0,255,255,248,0,15,224,31,0,15,224,7,128,15, + 224,3,224,15,224,1,240,15,224,1,240,15,224,0,248,15, + 224,0,252,15,224,0,252,15,224,0,254,15,224,0,254,15, + 224,0,254,15,224,0,255,15,224,0,255,15,224,0,255,15, + 224,0,255,15,224,0,255,15,224,0,255,15,224,0,255,15, + 224,0,255,15,224,0,255,15,224,0,254,15,224,0,254,15, + 224,0,254,15,224,0,254,15,224,0,252,15,224,0,252,15, + 224,0,248,15,224,1,240,15,224,1,224,15,224,3,192,15, + 224,7,128,15,224,30,0,255,255,248,0,27,34,136,33,3, + 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, + 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, + 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, + 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, + 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, + 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, + 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, + 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, + 224,255,255,255,224,255,255,255,224,28,34,136,32,3,0,255, + 255,255,240,7,240,15,240,7,240,3,240,7,240,1,240,7, + 240,1,240,7,240,0,240,7,240,0,240,7,240,0,112,7, + 240,0,112,7,240,24,48,7,240,24,48,7,240,24,48,7, + 240,56,48,7,240,56,0,7,240,120,0,7,240,248,0,7, + 255,248,0,7,240,248,0,7,240,120,0,7,240,56,0,7, + 240,56,0,7,240,24,0,7,240,24,0,7,240,24,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,255,255,128,0,30,34,136,35,3,1,0,127,224, + 192,0,224,120,192,3,192,31,192,7,128,15,192,15,128,7, + 192,31,0,7,192,31,0,3,192,63,0,3,192,63,0,1, + 192,127,0,1,192,127,0,1,192,127,0,0,192,255,0,0, + 192,255,0,0,192,255,0,0,0,255,0,0,0,255,0,0, + 0,255,3,255,252,255,3,255,252,255,0,31,192,255,0,31, + 192,255,0,31,192,127,0,31,192,127,0,31,192,127,0,31, + 192,127,0,31,192,63,0,31,192,63,0,31,192,31,0,31, + 192,15,128,57,192,15,128,49,192,7,192,96,192,1,224,192, + 192,0,127,128,192,34,34,170,39,3,0,255,255,63,255,192, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,255,255,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,7,240, 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, - 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, - 240,1,252,0,7,240,1,252,0,7,255,255,252,0,7,240, - 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, - 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, - 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, - 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, - 240,1,252,0,7,240,1,252,0,7,240,1,252,0,255,255, - 63,255,192,16,34,68,21,3,0,255,255,7,240,7,240,7, + 255,255,63,255,192,16,34,68,21,3,0,255,255,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, - 240,7,240,7,240,7,240,7,240,7,240,255,255,23,34,102, - 26,2,0,1,255,254,0,15,224,0,15,224,0,15,224,0, - 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 240,7,240,7,240,7,240,7,240,7,240,7,240,255,255,23, + 34,102,26,2,0,1,255,254,0,15,224,0,15,224,0,15, 224,0,15,224,0,15,224,0,15,224,0,15,224,0,15,224, 0,15,224,0,15,224,0,15,224,0,15,224,0,15,224,0, - 15,224,30,15,224,126,15,224,127,15,224,255,15,224,255,15, - 224,254,15,224,254,15,224,248,15,192,112,15,192,96,15,128, - 48,31,0,24,30,0,15,248,0,33,34,170,37,3,0,255, - 255,31,254,0,7,240,7,240,0,7,240,3,192,0,7,240, - 3,128,0,7,240,3,0,0,7,240,7,0,0,7,240,14, - 0,0,7,240,12,0,0,7,240,24,0,0,7,240,48,0, - 0,7,240,96,0,0,7,240,224,0,0,7,240,224,0,0, - 7,241,240,0,0,7,243,240,0,0,7,247,248,0,0,7, - 255,252,0,0,7,255,252,0,0,7,249,254,0,0,7,241, - 254,0,0,7,240,255,0,0,7,240,255,0,0,7,240,127, - 128,0,7,240,127,128,0,7,240,63,192,0,7,240,63,192, - 0,7,240,31,224,0,7,240,31,224,0,7,240,15,240,0, - 7,240,15,240,0,7,240,7,248,0,7,240,7,248,0,7, - 240,7,252,0,255,255,63,255,128,28,34,136,32,3,0,255, - 255,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, - 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, - 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, - 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, - 240,0,0,7,240,0,0,7,240,0,0,7,240,0,48,7, - 240,0,48,7,240,0,48,7,240,0,112,7,240,0,112,7, - 240,0,112,7,240,0,240,7,240,0,240,7,240,0,240,7, - 240,1,240,7,240,3,240,7,240,3,240,7,240,7,240,255, - 255,255,240,255,255,255,240,39,34,170,43,2,0,255,240,0, - 63,254,7,240,0,63,192,7,248,0,63,192,7,248,0,63, - 192,7,248,0,127,192,7,252,0,127,192,7,252,0,95,192, - 7,252,0,95,192,7,254,0,223,192,6,254,0,223,192,6, - 255,0,159,192,6,127,0,159,192,6,127,1,159,192,6,127, - 129,159,192,6,63,129,31,192,6,63,129,31,192,6,63,195, - 31,192,6,31,194,31,192,6,31,226,31,192,6,15,226,31, - 192,6,15,230,31,192,6,15,244,31,192,6,7,244,31,192, - 6,7,244,31,192,6,7,252,31,192,6,3,248,31,192,6, - 3,248,31,192,6,1,248,31,192,6,1,248,31,192,6,1, - 240,31,192,6,0,240,31,192,15,0,240,31,192,63,192,240, - 31,192,255,240,97,255,254,34,35,175,37,2,255,255,224,15, - 255,192,31,240,3,255,0,15,240,0,252,0,15,248,0,120, - 0,7,252,0,48,0,3,254,0,48,0,3,254,0,48,0, - 3,255,0,48,0,3,255,128,48,0,3,255,128,48,0,3, - 127,192,48,0,3,63,224,48,0,3,31,224,48,0,3,31, - 240,48,0,3,15,248,48,0,3,7,248,48,0,3,7,252, - 48,0,3,3,254,48,0,3,1,255,48,0,3,1,255,48, - 0,3,0,255,176,0,3,0,127,240,0,3,0,127,240,0, - 3,0,63,240,0,3,0,31,240,0,3,0,15,240,0,3, - 0,15,240,0,3,0,7,240,0,3,0,3,240,0,3,0, - 3,240,0,7,128,1,240,0,15,192,0,240,0,63,240,0, - 240,0,255,252,0,112,0,0,0,0,48,0,28,34,136,33, - 3,1,0,63,192,0,0,224,112,0,3,192,56,0,7,128, - 30,0,15,128,30,0,15,0,15,0,31,0,15,128,63,0, - 15,192,63,0,15,192,127,0,15,192,127,0,15,224,127,0, - 15,224,127,0,15,224,255,0,15,240,255,0,15,240,255,0, - 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, - 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, - 15,224,127,0,15,192,63,0,15,192,63,0,15,192,31,0, - 15,128,15,0,15,0,15,128,31,0,7,128,30,0,3,192, - 60,0,0,224,112,0,0,63,192,0,29,34,136,34,3,0, - 255,255,248,0,7,240,63,0,7,240,15,192,7,240,15,224, - 7,240,15,240,7,240,7,240,7,240,7,248,7,240,7,248, - 7,240,7,248,7,240,7,248,7,240,7,248,7,240,7,248, - 7,240,7,240,7,240,15,240,7,240,15,224,7,240,15,192, - 7,240,31,0,7,255,252,0,7,240,0,0,7,240,0,0, - 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, - 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, - 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, - 7,240,0,0,255,255,128,0,28,45,180,33,3,246,0,63, - 192,0,0,224,112,0,3,192,56,0,7,128,30,0,15,128, - 30,0,15,0,15,0,31,0,15,128,63,0,15,128,63,0, - 15,192,127,0,15,192,127,0,15,224,127,0,15,224,127,0, - 15,224,255,0,15,240,255,0,15,240,255,0,15,240,255,0, - 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, - 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, - 15,224,63,0,15,192,63,15,15,192,31,17,143,128,15,160, - 223,0,15,160,223,0,7,160,254,0,3,224,252,16,0,240, - 248,16,0,127,224,16,0,0,224,16,0,0,224,16,0,0, - 224,48,0,0,240,48,0,0,248,112,0,0,255,240,0,0, - 255,224,0,0,127,224,0,0,127,192,0,0,63,128,0,0, - 31,0,32,36,144,36,3,254,255,255,240,0,7,240,126,0, - 7,240,63,0,7,240,63,128,7,240,31,192,7,240,31,192, - 7,240,31,224,7,240,31,224,7,240,31,224,7,240,31,224, - 7,240,31,224,7,240,31,192,7,240,63,192,7,240,63,0, - 7,240,126,0,7,255,240,0,7,240,240,0,7,240,62,0, - 7,240,63,0,7,240,31,128,7,240,31,128,7,240,31,192, - 7,240,31,192,7,240,31,192,7,240,31,192,7,240,31,195, - 7,240,31,195,7,240,31,195,7,240,31,195,7,240,31,195, - 7,240,31,198,7,240,31,198,7,240,15,238,255,255,135,252, - 0,0,3,248,0,0,0,96,23,34,102,29,4,1,7,252, - 24,24,15,24,56,3,248,112,1,248,112,0,248,240,0,120, - 248,0,120,248,0,56,252,0,24,254,0,24,255,128,24,255, - 224,8,127,240,0,127,252,0,63,254,0,31,255,128,15,255, - 192,3,255,240,1,255,248,128,127,248,192,31,252,192,15,252, - 192,3,254,224,1,254,224,0,126,224,0,62,240,0,30,248, - 0,30,248,0,28,252,0,28,254,0,24,239,0,48,195,128, - 96,193,255,128,29,34,136,34,3,0,255,255,255,248,255,63, - 231,248,252,31,193,248,248,31,192,248,248,31,192,248,240,31, - 192,120,224,31,192,56,224,31,192,56,224,31,192,56,192,31, - 192,24,192,31,192,24,192,31,192,24,192,31,192,24,128,31, - 192,8,0,31,192,0,0,31,192,0,0,31,192,0,0,31, - 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, - 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, - 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, - 192,0,0,31,192,0,0,31,192,0,0,31,192,0,3,255, - 254,0,33,34,170,38,3,0,255,255,7,255,128,15,224,1, - 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 224,0,15,224,30,15,224,126,15,224,127,15,224,255,15,224, + 255,15,224,254,15,224,254,15,224,248,15,192,112,15,192,96, + 15,128,48,31,0,24,30,0,15,248,0,33,34,170,37,3, + 0,255,255,31,254,0,7,240,7,240,0,7,240,3,192,0, + 7,240,3,128,0,7,240,3,0,0,7,240,7,0,0,7, + 240,14,0,0,7,240,12,0,0,7,240,24,0,0,7,240, + 48,0,0,7,240,96,0,0,7,240,224,0,0,7,240,224, + 0,0,7,241,240,0,0,7,243,240,0,0,7,247,248,0, + 0,7,255,252,0,0,7,255,252,0,0,7,249,254,0,0, + 7,241,254,0,0,7,240,255,0,0,7,240,255,0,0,7, + 240,127,128,0,7,240,127,128,0,7,240,63,192,0,7,240, + 63,192,0,7,240,31,224,0,7,240,31,224,0,7,240,15, + 240,0,7,240,15,240,0,7,240,7,248,0,7,240,7,248, + 0,7,240,7,252,0,255,255,63,255,128,28,34,136,32,3, + 0,255,255,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 48,7,240,0,48,7,240,0,48,7,240,0,112,7,240,0, + 112,7,240,0,112,7,240,0,240,7,240,0,240,7,240,0, + 240,7,240,1,240,7,240,3,240,7,240,3,240,7,240,7, + 240,255,255,255,240,255,255,255,240,39,34,170,43,2,0,255, + 240,0,63,254,7,240,0,63,192,7,248,0,63,192,7,248, + 0,63,192,7,248,0,127,192,7,252,0,127,192,7,252,0, + 95,192,7,252,0,95,192,7,254,0,223,192,6,254,0,223, + 192,6,255,0,159,192,6,127,0,159,192,6,127,1,159,192, + 6,127,129,159,192,6,63,129,31,192,6,63,129,31,192,6, + 63,195,31,192,6,31,194,31,192,6,31,226,31,192,6,15, + 226,31,192,6,15,230,31,192,6,15,244,31,192,6,7,244, + 31,192,6,7,244,31,192,6,7,252,31,192,6,3,248,31, + 192,6,3,248,31,192,6,1,248,31,192,6,1,248,31,192, + 6,1,240,31,192,6,0,240,31,192,15,0,240,31,192,63, + 192,240,31,192,255,240,97,255,254,34,35,175,37,2,255,255, + 224,15,255,192,31,240,3,255,0,15,240,0,252,0,15,248, + 0,120,0,7,252,0,48,0,3,254,0,48,0,3,254,0, + 48,0,3,255,0,48,0,3,255,128,48,0,3,255,128,48, + 0,3,127,192,48,0,3,63,224,48,0,3,31,224,48,0, + 3,31,240,48,0,3,15,248,48,0,3,7,248,48,0,3, + 7,252,48,0,3,3,254,48,0,3,1,255,48,0,3,1, + 255,48,0,3,0,255,176,0,3,0,127,240,0,3,0,127, + 240,0,3,0,63,240,0,3,0,31,240,0,3,0,15,240, + 0,3,0,15,240,0,3,0,7,240,0,3,0,3,240,0, + 3,0,3,240,0,7,128,1,240,0,15,192,0,240,0,63, + 240,0,240,0,255,252,0,112,0,0,0,0,48,0,28,34, + 136,33,3,1,0,63,192,0,0,224,112,0,3,192,56,0, + 7,128,30,0,15,128,30,0,15,0,15,0,31,0,15,128, + 63,0,15,192,63,0,15,192,127,0,15,192,127,0,15,224, + 127,0,15,224,127,0,15,224,255,0,15,240,255,0,15,240, + 255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240, + 255,0,15,240,255,0,15,240,127,0,15,224,127,0,15,224, + 127,0,15,224,127,0,15,192,63,0,15,192,63,0,15,192, + 31,0,15,128,15,0,15,0,15,128,31,0,7,128,30,0, + 3,192,60,0,0,224,112,0,0,63,192,0,29,34,136,34, + 3,0,255,255,248,0,7,240,63,0,7,240,15,192,7,240, + 15,224,7,240,15,240,7,240,7,240,7,240,7,248,7,240, + 7,248,7,240,7,248,7,240,7,248,7,240,7,248,7,240, + 7,248,7,240,7,240,7,240,15,240,7,240,15,224,7,240, + 15,192,7,240,31,0,7,255,252,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,255,255,128,0,28,45,180,33,3,246, + 0,63,192,0,0,224,112,0,3,192,56,0,7,128,30,0, + 15,128,30,0,15,0,15,0,31,0,15,128,63,0,15,128, + 63,0,15,192,127,0,15,192,127,0,15,224,127,0,15,224, + 127,0,15,224,255,0,15,240,255,0,15,240,255,0,15,240, + 255,0,15,240,255,0,15,240,255,0,15,240,255,0,15,240, + 255,0,15,240,255,0,15,240,127,0,15,224,127,0,15,224, + 127,0,15,224,63,0,15,192,63,15,15,192,31,17,143,128, + 15,160,223,0,15,160,223,0,7,160,254,0,3,224,252,16, + 0,240,248,16,0,127,224,16,0,0,224,16,0,0,224,16, + 0,0,224,48,0,0,240,48,0,0,248,112,0,0,255,240, + 0,0,255,224,0,0,127,224,0,0,127,192,0,0,63,128, + 0,0,31,0,32,36,144,36,3,254,255,255,240,0,7,240, + 126,0,7,240,63,0,7,240,63,128,7,240,31,192,7,240, + 31,192,7,240,31,224,7,240,31,224,7,240,31,224,7,240, + 31,224,7,240,31,224,7,240,31,192,7,240,63,192,7,240, + 63,0,7,240,126,0,7,255,240,0,7,240,240,0,7,240, + 62,0,7,240,63,0,7,240,31,128,7,240,31,128,7,240, + 31,192,7,240,31,192,7,240,31,192,7,240,31,192,7,240, + 31,195,7,240,31,195,7,240,31,195,7,240,31,195,7,240, + 31,195,7,240,31,198,7,240,31,198,7,240,15,238,255,255, + 135,252,0,0,3,248,0,0,0,96,23,34,102,29,4,1, + 7,252,24,24,15,24,56,3,248,112,1,248,112,0,248,240, + 0,120,248,0,120,248,0,56,252,0,24,254,0,24,255,128, + 24,255,224,8,127,240,0,127,252,0,63,254,0,31,255,128, + 15,255,192,3,255,240,1,255,248,128,127,248,192,31,252,192, + 15,252,192,3,254,224,1,254,224,0,126,224,0,62,240,0, + 30,248,0,30,248,0,28,252,0,28,254,0,24,239,0,48, + 195,128,96,193,255,128,29,34,136,34,3,0,255,255,255,248, + 255,63,231,248,252,31,193,248,248,31,192,248,248,31,192,248, + 240,31,192,120,224,31,192,56,224,31,192,56,224,31,192,56, + 192,31,192,24,192,31,192,24,192,31,192,24,192,31,192,24, + 128,31,192,8,0,31,192,0,0,31,192,0,0,31,192,0, + 0,31,192,0,0,31,192,0,0,31,192,0,0,31,192,0, + 0,31,192,0,0,31,192,0,0,31,192,0,0,31,192,0, + 0,31,192,0,0,31,192,0,0,31,192,0,0,31,192,0, + 0,31,192,0,0,31,192,0,0,31,192,0,0,31,192,0, + 3,255,254,0,33,34,170,38,3,0,255,255,7,255,128,15, + 224,1,254,0,15,224,0,120,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, - 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, - 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, - 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, - 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, - 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, - 0,0,34,34,170,37,2,0,255,255,135,255,192,15,248,0, - 126,0,7,248,0,56,0,7,248,0,56,0,3,248,0,48, - 0,3,252,0,48,0,3,252,0,48,0,1,254,0,96,0, - 1,254,0,96,0,0,254,0,96,0,0,255,0,192,0,0, - 255,0,192,0,0,127,0,192,0,0,127,129,128,0,0,127, - 129,128,0,0,63,129,128,0,0,63,195,0,0,0,63,195, - 0,0,0,31,195,0,0,0,31,230,0,0,0,15,230,0, - 0,0,15,246,0,0,0,15,252,0,0,0,7,252,0,0, - 0,7,252,0,0,0,7,248,0,0,0,3,248,0,0,0, - 3,248,0,0,0,3,240,0,0,0,1,240,0,0,0,1, - 240,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224, - 0,0,49,34,238,52,2,0,255,255,63,255,207,255,128,31, - 252,7,254,0,252,0,7,248,3,252,0,112,0,7,248,1, - 252,0,112,0,3,248,1,254,0,96,0,3,252,1,254,0, - 96,0,3,252,0,254,0,96,0,1,252,0,254,0,192,0, - 1,254,1,255,0,192,0,1,254,1,255,0,192,0,0,254, - 1,255,1,128,0,0,255,3,127,129,128,0,0,255,3,63, - 129,128,0,0,127,3,63,129,128,0,0,127,135,63,195,0, - 0,0,127,134,31,195,0,0,0,63,134,31,195,0,0,0, - 63,198,31,231,0,0,0,31,204,15,230,0,0,0,31,204, - 15,230,0,0,0,31,236,15,246,0,0,0,15,248,7,252, - 0,0,0,15,248,7,252,0,0,0,15,248,7,252,0,0, - 0,7,248,3,252,0,0,0,7,240,3,248,0,0,0,7, - 240,3,248,0,0,0,3,240,1,248,0,0,0,3,224,1, - 240,0,0,0,3,224,1,240,0,0,0,1,224,0,240,0, - 0,0,1,192,0,240,0,0,0,1,192,0,224,0,0,0, - 0,192,0,96,0,0,33,34,170,36,2,0,127,255,31,254, - 0,31,252,3,240,0,7,248,3,192,0,3,248,3,128,0, - 3,252,3,128,0,1,252,3,0,0,1,254,7,0,0,0, - 255,6,0,0,0,255,12,0,0,0,127,140,0,0,0,127, - 152,0,0,0,63,240,0,0,0,63,240,0,0,0,31,224, - 0,0,0,31,224,0,0,0,15,240,0,0,0,15,248,0, - 0,0,7,248,0,0,0,7,252,0,0,0,7,252,0,0, - 0,15,254,0,0,0,29,254,0,0,0,24,255,0,0,0, - 56,255,0,0,0,48,127,128,0,0,96,127,128,0,0,224, - 63,192,0,0,192,63,224,0,1,128,31,224,0,3,128,31, - 240,0,3,128,15,240,0,7,128,15,248,0,31,128,31,252, - 0,255,240,127,255,128,32,34,136,35,2,0,255,254,15,255, - 31,248,1,248,15,248,0,240,7,248,0,224,7,248,0,192, - 3,252,0,192,3,252,0,192,1,252,1,128,1,254,1,128, - 0,254,3,0,0,255,3,0,0,255,3,0,0,127,134,0, - 0,127,134,0,0,63,196,0,0,63,204,0,0,31,204,0, - 0,31,248,0,0,15,248,0,0,15,248,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, - 0,255,255,0,25,34,136,31,3,0,127,255,255,128,127,128, - 127,128,126,0,255,0,124,0,255,0,120,1,254,0,120,3, - 254,0,112,3,252,0,112,7,252,0,96,7,248,0,96,15, - 248,0,96,15,240,0,64,31,224,0,0,31,224,0,0,63, - 192,0,0,63,192,0,0,127,128,0,0,127,128,0,0,255, - 0,0,0,255,0,0,1,254,0,0,3,254,0,128,3,252, - 0,128,7,248,0,128,7,248,0,128,15,240,1,128,15,240, - 1,128,31,224,3,128,31,224,3,128,63,192,7,128,63,192, - 15,128,127,128,31,128,127,128,63,128,255,255,255,128,255,255, - 255,128,11,42,84,18,4,248,255,224,248,0,248,0,248,0, + 48,0,15,224,0,48,0,15,224,0,48,0,7,224,0,48, + 0,7,224,0,96,0,7,240,0,96,0,3,240,0,192,0, + 1,248,1,192,0,0,252,3,128,0,0,127,159,0,0,0, + 31,252,0,0,34,34,170,37,2,0,255,255,135,255,192,15, + 248,0,126,0,7,248,0,56,0,7,248,0,56,0,3,248, + 0,48,0,3,252,0,48,0,3,252,0,48,0,1,254,0, + 96,0,1,254,0,96,0,0,254,0,96,0,0,255,0,192, + 0,0,255,0,192,0,0,127,0,192,0,0,127,129,128,0, + 0,127,129,128,0,0,63,129,128,0,0,63,195,0,0,0, + 63,195,0,0,0,31,195,0,0,0,31,230,0,0,0,15, + 230,0,0,0,15,246,0,0,0,15,252,0,0,0,7,252, + 0,0,0,7,252,0,0,0,7,248,0,0,0,3,248,0, + 0,0,3,248,0,0,0,3,240,0,0,0,1,240,0,0, + 0,1,240,0,0,0,0,224,0,0,0,0,224,0,0,0, + 0,224,0,0,49,34,238,52,2,0,255,255,63,255,207,255, + 128,31,252,7,254,0,252,0,7,248,3,252,0,112,0,7, + 248,1,252,0,112,0,3,248,1,254,0,96,0,3,252,1, + 254,0,96,0,3,252,0,254,0,96,0,1,252,0,254,0, + 192,0,1,254,1,255,0,192,0,1,254,1,255,0,192,0, + 0,254,1,255,1,128,0,0,255,3,127,129,128,0,0,255, + 3,63,129,128,0,0,127,3,63,129,128,0,0,127,135,63, + 195,0,0,0,127,134,31,195,0,0,0,63,134,31,195,0, + 0,0,63,198,31,231,0,0,0,31,204,15,230,0,0,0, + 31,204,15,230,0,0,0,31,236,15,246,0,0,0,15,248, + 7,252,0,0,0,15,248,7,252,0,0,0,15,248,7,252, + 0,0,0,7,248,3,252,0,0,0,7,240,3,248,0,0, + 0,7,240,3,248,0,0,0,3,240,1,248,0,0,0,3, + 224,1,240,0,0,0,3,224,1,240,0,0,0,1,224,0, + 240,0,0,0,1,192,0,240,0,0,0,1,192,0,224,0, + 0,0,0,192,0,96,0,0,33,34,170,36,2,0,127,255, + 31,254,0,31,252,3,240,0,7,248,3,192,0,3,248,3, + 128,0,3,252,3,128,0,1,252,3,0,0,1,254,7,0, + 0,0,255,6,0,0,0,255,12,0,0,0,127,140,0,0, + 0,127,152,0,0,0,63,240,0,0,0,63,240,0,0,0, + 31,224,0,0,0,31,224,0,0,0,15,240,0,0,0,15, + 248,0,0,0,7,248,0,0,0,7,252,0,0,0,7,252, + 0,0,0,15,254,0,0,0,29,254,0,0,0,24,255,0, + 0,0,56,255,0,0,0,48,127,128,0,0,96,127,128,0, + 0,224,63,192,0,0,192,63,224,0,1,128,31,224,0,3, + 128,31,240,0,3,128,15,240,0,7,128,15,248,0,31,128, + 31,252,0,255,240,127,255,128,32,34,136,35,2,0,255,254, + 15,255,31,248,1,248,15,248,0,240,7,248,0,224,7,248, + 0,192,3,252,0,192,3,252,0,192,1,252,1,128,1,254, + 1,128,0,254,3,0,0,255,3,0,0,255,3,0,0,127, + 134,0,0,127,134,0,0,63,196,0,0,63,204,0,0,31, + 204,0,0,31,248,0,0,15,248,0,0,15,248,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,255,255,0,25,34,136,31,3,0,127,255,255,128, + 127,128,127,128,126,0,255,0,124,0,255,0,120,1,254,0, + 120,3,254,0,112,3,252,0,112,7,252,0,96,7,248,0, + 96,15,248,0,96,15,240,0,64,31,224,0,0,31,224,0, + 0,63,192,0,0,63,192,0,0,127,128,0,0,127,128,0, + 0,255,0,0,0,255,0,0,1,254,0,0,3,254,0,128, + 3,252,0,128,7,248,0,128,7,248,0,128,15,240,1,128, + 15,240,1,128,31,224,3,128,31,224,3,128,63,192,7,128, + 63,192,15,128,127,128,31,128,127,128,63,128,255,255,255,128, + 255,255,255,128,11,42,84,18,4,248,255,224,248,0,248,0, 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, - 248,0,248,0,248,0,248,0,248,0,255,224,16,44,88,22, - 3,247,224,0,224,0,224,0,240,0,112,0,112,0,120,0, - 56,0,56,0,60,0,28,0,28,0,30,0,14,0,14,0, - 14,0,15,0,7,0,7,0,7,128,3,128,3,128,3,192, - 1,192,1,192,1,224,0,224,0,224,0,224,0,240,0,112, - 0,112,0,120,0,56,0,56,0,60,0,28,0,28,0,30, - 0,14,0,14,0,14,0,15,0,7,11,42,84,18,3,248, - 255,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 248,0,248,0,248,0,248,0,248,0,248,0,255,224,16,44, + 88,22,3,247,224,0,224,0,224,0,240,0,112,0,112,0, + 120,0,56,0,56,0,60,0,28,0,28,0,30,0,14,0, + 14,0,14,0,15,0,7,0,7,0,7,128,3,128,3,128, + 3,192,1,192,1,192,1,224,0,224,0,224,0,224,0,240, + 0,112,0,112,0,120,0,56,0,56,0,60,0,28,0,28, + 0,30,0,14,0,14,0,14,0,15,0,7,11,42,84,18, + 3,248,255,224,3,224,3,224,3,224,3,224,3,224,3,224, 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, - 3,224,255,224,22,17,51,28,3,18,0,48,0,0,112,0, - 0,120,0,0,252,0,0,252,0,1,254,0,3,207,0,3, - 143,0,7,135,128,15,3,128,15,3,192,30,1,224,60,0, - 224,60,0,240,120,0,120,112,0,56,240,0,60,25,3,12, - 25,0,248,255,255,255,128,255,255,255,128,255,255,255,128,8, - 9,9,21,4,25,96,240,248,124,60,30,15,3,1,21,22, - 66,24,2,1,15,248,0,24,62,0,56,63,0,120,31,0, - 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, - 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, - 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, - 127,127,240,63,143,224,22,34,102,25,1,0,255,128,0,31, - 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, - 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, - 31,159,128,31,179,224,31,225,224,31,193,240,31,193,248,31, - 192,248,31,192,248,31,128,252,31,128,252,31,128,252,31,128, - 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,248, - 31,192,248,31,193,248,29,193,240,24,225,224,24,99,192,16, - 63,128,18,22,66,22,2,1,3,252,0,15,6,0,31,3, - 0,62,3,128,62,7,128,126,15,128,124,31,128,252,31,128, - 252,31,0,252,14,0,252,0,0,252,0,0,252,0,0,252, - 0,0,252,0,0,124,0,64,124,0,192,62,0,128,62,0, - 128,30,1,0,15,130,0,3,252,0,23,34,102,26,2,0, - 0,63,224,0,7,224,0,7,224,0,7,224,0,7,224,0, - 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, - 224,0,7,224,7,231,224,31,23,224,30,31,224,62,15,224, - 126,15,224,124,15,224,124,7,224,252,7,224,252,7,224,252, - 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, - 224,124,7,224,124,15,224,126,15,224,62,15,224,30,31,224, - 15,23,224,7,231,254,18,22,66,23,2,1,3,252,0,14, - 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, - 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, - 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, - 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, - 102,16,1,1,0,255,0,1,199,128,7,199,128,7,199,192, - 15,143,192,15,143,192,31,143,192,31,143,128,31,135,128,31, - 128,0,31,128,0,31,128,0,255,240,0,31,128,0,31,128, + 3,224,3,224,255,224,22,17,51,28,3,18,0,48,0,0, + 112,0,0,120,0,0,252,0,0,252,0,1,254,0,3,207, + 0,3,143,0,7,135,128,15,3,128,15,3,192,30,1,224, + 60,0,224,60,0,240,120,0,120,112,0,56,240,0,60,25, + 3,12,25,0,248,255,255,255,128,255,255,255,128,255,255,255, + 128,8,9,9,21,4,25,96,240,248,124,60,30,15,3,1, + 21,22,66,24,2,1,15,248,0,24,62,0,56,63,0,120, + 31,0,124,31,128,126,31,128,126,31,128,62,31,128,8,63, + 128,1,255,128,7,159,128,30,31,128,62,31,128,124,31,128, + 124,31,128,252,31,128,252,31,136,252,31,136,252,31,152,254, + 63,144,127,127,240,63,143,224,22,34,102,25,1,0,255,128, 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,159,128,31,179,224,31,225,224,31,193,240,31,193, + 248,31,192,248,31,192,248,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 128,248,31,192,248,31,193,248,29,193,240,24,225,224,24,99, + 192,16,63,128,18,22,66,22,2,1,3,252,0,15,6,0, + 31,3,0,62,3,128,62,7,128,126,15,128,124,31,128,252, + 31,128,252,31,0,252,14,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,124,0,64,124,0,192,62,0,128, + 62,0,128,30,1,0,15,130,0,3,252,0,23,34,102,26, + 2,0,0,63,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,7,224,0,7,224,0,7,224,0,7,224, + 0,7,224,0,7,224,7,231,224,31,23,224,30,31,224,62, + 15,224,126,15,224,124,15,224,124,7,224,252,7,224,252,7, + 224,252,7,224,252,7,224,252,7,224,252,7,224,252,7,224, + 252,7,224,124,7,224,124,15,224,126,15,224,62,15,224,30, + 31,224,15,23,224,7,231,254,18,22,66,23,2,1,3,252, + 0,14,30,0,30,31,0,62,15,128,60,15,128,124,15,128, + 124,15,192,252,15,192,252,15,192,252,15,192,255,255,192,252, + 0,0,252,0,0,252,0,0,252,0,64,124,0,64,124,0, + 192,62,0,192,62,0,128,31,1,0,15,131,0,3,252,0, + 18,34,102,16,1,1,0,255,0,1,199,128,7,199,128,7, + 199,192,15,143,192,15,143,192,31,143,192,31,143,128,31,135, + 128,31,128,0,31,128,0,31,128,0,255,240,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, - 0,31,128,0,31,128,0,255,240,0,24,33,99,27,2,246, - 7,254,62,31,15,71,63,7,143,62,7,207,126,7,238,126, - 7,228,126,7,224,126,7,224,126,7,224,62,7,192,31,15, - 128,15,15,0,3,252,0,12,0,0,48,0,0,48,0,0, - 112,0,0,112,0,0,127,255,128,127,255,224,63,255,240,31, - 255,240,7,255,248,60,1,248,96,0,120,192,0,56,192,0, - 56,192,0,48,192,0,112,96,0,96,48,1,192,30,7,128, - 3,252,0,24,34,102,27,1,0,255,128,0,31,128,0,31, - 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, - 0,31,128,0,31,128,0,31,128,0,31,128,0,31,143,224, - 31,145,240,31,160,248,31,160,252,31,192,252,31,192,252,31, - 192,252,31,128,252,31,128,252,31,128,252,31,128,252,31,128, - 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,252, - 31,128,252,31,128,252,31,128,252,31,128,252,255,227,255,11, - 35,70,15,2,0,4,0,31,0,63,128,63,128,63,128,63, - 128,31,0,4,0,0,0,0,0,0,0,0,0,0,0,255, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,255,240,0,24,33,99,27, + 2,246,7,254,62,31,15,71,63,7,143,62,7,207,126,7, + 238,126,7,228,126,7,224,126,7,224,126,7,224,62,7,192, + 31,15,128,15,15,0,3,252,0,12,0,0,48,0,0,48, + 0,0,112,0,0,112,0,0,127,255,128,127,255,224,63,255, + 240,31,255,240,7,255,248,60,1,248,96,0,120,192,0,56, + 192,0,56,192,0,48,192,0,112,96,0,96,48,1,192,30, + 7,128,3,252,0,24,34,102,27,1,0,255,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,129,0,31, + 143,224,31,145,240,31,160,248,31,160,252,31,192,252,31,192, + 252,31,192,252,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,252,255,227, + 255,11,35,70,15,2,0,4,0,31,0,63,128,63,128,63, + 128,63,128,31,0,4,0,0,0,0,0,0,0,0,0,0, + 0,255,0,63,0,63,0,63,0,63,0,63,0,63,0,63, 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, - 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, - 0,63,0,63,0,63,0,63,0,255,224,15,46,92,16,254, - 245,0,16,0,124,0,254,0,254,0,254,0,254,0,124,0, - 16,0,0,0,0,0,0,0,0,0,0,7,252,0,252,0, + 0,63,0,63,0,63,0,63,0,63,0,255,224,15,46,92, + 16,254,245,0,16,0,124,0,254,0,254,0,254,0,254,0, + 124,0,16,0,0,0,0,0,0,0,0,0,0,7,252,0, 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, - 252,0,252,0,252,0,252,0,252,0,252,56,252,124,252,252, - 252,252,252,248,248,248,248,113,240,49,224,31,128,25,34,136, - 27,1,0,255,128,0,0,31,128,0,0,31,128,0,0,31, - 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, - 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, - 128,0,0,31,131,254,0,31,128,240,0,31,128,96,0,31, - 128,192,0,31,128,128,0,31,129,128,0,31,131,0,0,31, - 134,0,0,31,143,0,0,31,159,0,0,31,159,128,0,31, - 191,128,0,31,239,192,0,31,199,224,0,31,135,224,0,31, - 131,240,0,31,129,248,0,31,129,248,0,31,128,252,0,31, - 128,252,0,31,128,254,0,255,243,255,128,12,34,68,14,1, - 0,255,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 252,0,252,0,252,0,252,0,252,0,252,0,252,56,252,124, + 252,252,252,252,252,248,248,248,248,113,240,49,224,31,128,25, + 34,136,27,1,0,255,128,0,0,31,128,0,0,31,128,0, + 0,31,128,0,0,31,128,0,0,31,128,0,0,31,128,0, + 0,31,128,0,0,31,128,0,0,31,128,0,0,31,128,0, + 0,31,128,0,0,31,131,254,0,31,128,240,0,31,128,96, + 0,31,128,192,0,31,128,128,0,31,129,128,0,31,131,0, + 0,31,134,0,0,31,143,0,0,31,159,0,0,31,159,128, + 0,31,191,128,0,31,239,192,0,31,199,224,0,31,135,224, + 0,31,131,240,0,31,129,248,0,31,129,248,0,31,128,252, + 0,31,128,252,0,31,128,254,0,255,243,255,128,12,34,68, + 14,1,0,255,128,31,128,31,128,31,128,31,128,31,128,31, 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, - 128,31,128,255,240,34,22,110,37,2,1,255,31,193,248,0, - 63,35,230,124,0,63,67,228,62,0,63,131,248,63,0,63, - 131,248,63,0,63,131,248,63,0,63,3,240,63,0,63,3, + 128,31,128,31,128,255,240,34,22,110,37,2,1,255,31,193, + 248,0,63,35,230,124,0,63,67,228,62,0,63,131,248,63, + 0,63,131,248,63,0,63,131,248,63,0,63,3,240,63,0, + 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, + 3,240,63,0,63,3,240,63,0,63,3,240,63,0,63,3, 240,63,0,63,3,240,63,0,63,3,240,63,0,63,3,240, 63,0,63,3,240,63,0,63,3,240,63,0,63,3,240,63, - 0,63,3,240,63,0,63,3,240,63,0,63,3,240,63,0, - 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, - 3,240,63,0,255,207,252,255,192,23,22,66,27,2,1,255, - 31,192,63,35,224,63,65,240,63,65,248,63,129,248,63,129, + 0,63,3,240,63,0,255,207,252,255,192,23,22,66,27,2, + 1,255,31,192,63,35,224,63,65,240,63,65,248,63,129,248, + 63,129,248,63,1,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,63,1, 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, - 63,1,248,63,1,248,63,1,248,63,1,248,63,1,248,63, - 1,248,63,1,248,63,1,248,63,1,248,63,1,248,255,199, - 254,20,22,66,24,2,1,3,252,0,15,15,0,30,7,128, - 62,7,192,62,7,192,124,3,224,124,3,224,252,3,240,252, - 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, - 240,252,3,240,124,3,224,124,3,224,62,7,192,62,7,192, - 30,7,128,15,15,0,3,252,0,22,33,99,25,1,246,255, - 159,128,31,163,192,31,225,224,31,193,240,31,192,248,31,192, - 248,31,192,248,31,128,252,31,128,252,31,128,252,31,128,252, - 31,128,252,31,128,252,31,128,252,31,128,252,31,192,252,31, - 192,248,31,192,248,31,193,240,31,225,240,31,179,224,31,159, - 128,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, - 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,255, - 240,0,22,33,99,25,2,246,7,240,32,15,24,96,30,28, - 96,62,14,224,126,15,224,124,15,224,124,7,224,252,7,224, - 252,7,224,252,7,224,252,7,224,252,7,224,252,7,224,252, - 7,224,252,7,224,124,7,224,124,15,224,126,15,224,62,15, - 224,30,31,224,31,23,224,7,231,224,0,7,224,0,7,224, - 0,7,224,0,7,224,0,7,224,0,7,224,0,7,224,0, - 7,224,0,7,224,0,7,224,0,63,252,17,22,66,20,2, - 1,255,31,0,63,63,128,63,79,128,63,79,128,63,159,128, - 63,159,128,63,159,0,63,14,0,63,0,0,63,0,0,63, - 0,0,63,0,0,63,0,0,63,0,0,63,0,0,63,0, + 255,199,254,20,22,66,24,2,1,3,252,0,15,15,0,30, + 7,128,62,7,192,62,7,192,124,3,224,124,3,224,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,252,3,240,124,3,224,124,3,224,62,7,192,62, + 7,192,30,7,128,15,15,0,3,252,0,22,33,99,25,1, + 246,255,159,128,31,163,192,31,225,224,31,193,240,31,192,248, + 31,192,248,31,192,248,31,128,252,31,128,252,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,252,31,192, + 252,31,192,248,31,192,248,31,193,240,31,225,240,31,179,224, + 31,159,128,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,255,240,0,22,33,99,25,2,246,7,240,32,15,24,96, + 30,28,96,62,14,224,126,15,224,124,15,224,124,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, + 224,252,7,224,252,7,224,124,7,224,124,15,224,126,15,224, + 62,15,224,30,31,224,31,23,224,7,231,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,7,224,0,7,224,0,63,252,17,22,66, + 20,2,1,255,31,0,63,63,128,63,79,128,63,79,128,63, + 159,128,63,159,128,63,159,0,63,14,0,63,0,0,63,0, 0,63,0,0,63,0,0,63,0,0,63,0,0,63,0,0, - 255,192,0,16,22,44,21,3,1,31,196,48,116,96,60,224, - 28,224,28,240,12,248,4,254,4,127,128,127,224,63,240,31, - 252,7,254,129,254,192,127,192,31,224,15,224,7,240,7,248, - 6,204,14,135,248,15,32,64,17,1,0,1,128,1,128,1, - 128,1,128,1,128,3,128,3,128,7,128,15,128,63,128,255, - 248,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, - 128,31,128,31,128,31,128,31,130,31,130,31,130,31,130,31, - 134,31,134,31,132,15,196,15,248,7,240,24,22,66,26,1, - 0,255,143,248,31,129,248,31,129,248,31,129,248,31,129,248, - 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 63,0,0,63,0,0,63,0,0,63,0,0,63,0,0,63, + 0,0,255,192,0,16,22,44,21,3,1,31,196,48,116,96, + 60,224,28,224,28,240,12,248,4,254,4,127,128,127,224,63, + 240,31,252,7,254,129,254,192,127,192,31,224,15,224,7,240, + 7,248,6,204,14,135,248,15,32,64,17,1,0,1,128,1, + 128,1,128,1,128,1,128,3,128,3,128,7,128,15,128,63, + 128,255,248,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,130,31,130,31,130,31, + 130,31,134,31,134,31,132,15,196,15,248,7,240,24,22,66, + 26,1,0,255,143,248,31,129,248,31,129,248,31,129,248,31, 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, - 248,31,131,248,31,131,248,31,133,248,15,133,248,15,201,248, - 7,241,255,23,23,69,25,1,255,255,241,254,63,192,120,31, - 128,48,15,192,48,15,192,32,7,192,96,7,224,96,7,224, - 64,3,224,192,3,240,128,3,240,128,1,241,128,1,249,0, - 0,249,0,0,255,0,0,254,0,0,126,0,0,126,0,0, - 124,0,0,60,0,0,60,0,0,24,0,0,24,0,35,23, - 115,37,1,255,255,231,255,31,224,63,129,252,7,128,31,128, - 252,3,0,15,128,252,2,0,15,192,124,2,0,15,192,124, - 6,0,7,192,126,4,0,7,224,254,4,0,3,224,191,12, - 0,3,224,191,8,0,3,241,159,24,0,1,241,31,144,0, - 1,241,31,144,0,1,251,31,176,0,0,250,15,224,0,0, - 250,15,224,0,0,254,15,224,0,0,124,7,192,0,0,124, - 7,192,0,0,60,7,192,0,0,56,3,128,0,0,56,3, - 128,0,0,24,3,0,0,23,22,66,25,1,0,255,231,252, - 63,192,240,31,192,224,15,192,192,15,225,128,7,227,0,3, - 242,0,3,254,0,1,252,0,1,252,0,0,252,0,0,126, - 0,0,127,0,0,127,0,0,223,128,1,159,192,3,15,192, - 2,15,224,6,7,224,14,7,240,30,7,248,255,207,254,23, - 33,99,25,1,245,255,241,254,63,192,120,31,128,48,15,192, - 32,15,192,32,15,192,96,7,224,64,7,224,64,3,240,192, - 3,240,128,1,248,128,1,249,128,0,249,0,0,253,0,0, - 253,0,0,126,0,0,126,0,0,62,0,0,60,0,0,28, - 0,0,28,0,0,12,0,0,8,0,0,8,0,0,8,0, - 15,16,0,31,16,0,63,144,0,63,32,0,62,32,0,62, - 64,0,31,192,0,15,0,0,18,22,66,22,2,0,127,255, - 192,124,15,192,120,31,128,112,63,0,96,63,0,96,126,0, - 64,126,0,64,252,0,1,248,0,1,248,0,3,240,0,3, - 240,0,7,224,64,15,192,64,15,192,64,31,128,192,31,0, - 192,63,1,192,126,1,192,126,3,192,252,15,192,255,255,192, - 14,43,86,20,3,247,0,60,0,240,3,192,7,128,7,128, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,131,248,31,131,248,31,133,248,15,133,248,15, + 201,248,7,241,255,23,23,69,25,1,255,255,241,254,63,192, + 120,31,128,48,15,192,48,15,192,32,7,192,96,7,224,96, + 7,224,64,3,224,192,3,240,128,3,240,128,1,241,128,1, + 249,0,0,249,0,0,255,0,0,254,0,0,126,0,0,126, + 0,0,124,0,0,60,0,0,60,0,0,24,0,0,24,0, + 35,23,115,37,1,255,255,231,255,31,224,63,129,252,7,128, + 31,128,252,3,0,15,128,252,2,0,15,192,124,2,0,15, + 192,124,6,0,7,192,126,4,0,7,224,254,4,0,3,224, + 191,12,0,3,224,191,8,0,3,241,159,24,0,1,241,31, + 144,0,1,241,31,144,0,1,251,31,176,0,0,250,15,224, + 0,0,250,15,224,0,0,254,15,224,0,0,124,7,192,0, + 0,124,7,192,0,0,60,7,192,0,0,56,3,128,0,0, + 56,3,128,0,0,24,3,0,0,23,22,66,25,1,0,255, + 231,252,63,192,240,31,192,224,15,192,192,15,225,128,7,227, + 0,3,242,0,3,254,0,1,252,0,1,252,0,0,252,0, + 0,126,0,0,127,0,0,127,0,0,223,128,1,159,192,3, + 15,192,2,15,224,6,7,224,14,7,240,30,7,248,255,207, + 254,23,33,99,25,1,245,255,241,254,63,192,120,31,128,48, + 15,192,32,15,192,32,15,192,96,7,224,64,7,224,64,3, + 240,192,3,240,128,1,248,128,1,249,128,0,249,0,0,253, + 0,0,253,0,0,126,0,0,126,0,0,62,0,0,60,0, + 0,28,0,0,28,0,0,12,0,0,8,0,0,8,0,0, + 8,0,15,16,0,31,16,0,63,144,0,63,32,0,62,32, + 0,62,64,0,31,192,0,15,0,0,18,22,66,22,2,0, + 127,255,192,124,15,192,120,31,128,112,63,0,96,63,0,96, + 126,0,64,126,0,64,252,0,1,248,0,1,248,0,3,240, + 0,3,240,0,7,224,64,15,192,64,15,192,64,31,128,192, + 31,0,192,63,1,192,126,1,192,126,3,192,252,15,192,255, + 255,192,14,43,86,20,3,247,0,60,0,240,3,192,7,128, + 7,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,0,15,0, + 28,0,240,0,60,0,30,0,15,0,15,128,15,128,15,128, 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, - 15,128,15,128,15,128,15,128,15,128,15,0,15,0,28,0, - 240,0,60,0,30,0,15,0,15,128,15,128,15,128,15,128, - 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, - 15,128,7,128,7,128,3,192,0,240,0,60,3,44,44,13, - 5,247,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 15,128,15,128,7,128,7,128,3,192,0,240,0,60,3,44, + 44,13,5,247,224,224,224,224,224,224,224,224,224,224,224,224, 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, - 224,224,224,224,224,224,224,224,224,224,224,224,224,224,15,43, - 86,20,3,247,240,0,60,0,15,0,7,128,7,128,7,192, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 15,43,86,20,3,247,240,0,60,0,15,0,7,128,7,128, 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, - 7,192,7,192,7,192,7,192,3,192,3,192,0,240,0,62, - 0,240,1,224,3,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,7,192,3,192,3,192,0,240, + 0,62,0,240,1,224,3,192,7,192,7,192,7,192,7,192, 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, - 7,128,7,128,15,0,60,0,240,0,27,9,36,31,2,8, - 31,128,1,128,63,240,0,192,127,254,0,96,255,255,128,96, - 193,255,240,96,192,63,255,224,192,15,255,192,96,1,255,128, - 48,0,63,0,255}; + 7,192,7,128,7,128,15,0,60,0,240,0,27,9,36,31, + 2,8,31,128,1,128,63,240,0,192,127,254,0,96,255,255, + 128,96,193,255,240,96,192,63,255,224,192,15,255,192,96,1, + 255,128,48,0,63,0,255}; /* Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -62734,7 +63195,7 @@ const u8g_fntpgm_uint8_t u8g_font_osb35r[10245] U8G_SECTION(".progmem.u8g_font_o Max Font ascent =25 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr18[7816] U8G_SECTION(".progmem.u8g_font_osr18") = { +const u8g_fntpgm_uint8_t u8g_font_osr18[7816] U8G_FONT_SECTION("u8g_font_osr18") = { 0,68,33,235,248,18,4,197,10,125,32,255,250,25,249,19, 250,0,0,0,7,0,0,3,18,18,7,2,0,224,224,224, 224,224,224,64,64,64,64,64,64,64,64,0,224,224,224,6, @@ -62757,7 +63218,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr18[7816] U8G_SECTION(".progmem.u8g_font_osr 64,96,32,16,24,12,6,23,23,9,1,252,64,32,48,16, 24,8,8,12,4,4,4,4,4,4,12,8,8,8,16,16, 32,64,192,10,10,20,14,2,8,12,0,12,0,204,192,201, - 192,42,0,30,0,235,192,201,192,12,0,12,0,22,22,66, + 192,43,0,28,0,123,128,201,192,12,0,12,0,22,22,66, 24,1,252,0,16,0,0,16,0,0,16,0,0,16,0,0, 16,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, 0,255,255,252,0,16,0,0,16,0,0,16,0,0,16,0, @@ -62793,7 +63254,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr18[7816] U8G_SECTION(".progmem.u8g_font_osr 0,30,0,49,128,96,192,224,192,192,64,192,96,192,96,192, 224,96,224,113,96,30,96,0,96,0,64,96,192,96,192,64, 128,65,0,62,0,3,12,12,7,2,0,224,224,224,0,0, - 0,0,0,0,224,224,224,4,16,16,8,2,252,96,240,240, + 0,0,0,0,224,224,224,4,16,16,8,2,252,240,240,240, 0,0,0,0,0,96,240,240,16,16,32,32,64,20,21,63, 24,2,253,0,0,48,0,0,192,0,3,0,0,12,0,0, 48,0,0,224,0,3,128,0,14,0,0,24,0,0,96,0, @@ -63004,7 +63465,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr18[7816] U8G_SECTION(".progmem.u8g_font_osr 96,66,254,7,11,11,12,3,7,120,132,198,198,4,120,14, 70,198,134,120,4,4,4,11,5,13,48,48,96,128,14,19, 38,17,2,249,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,64,192,64,128,64,132,163,252,159,28,128,0,128,0, + 192,192,64,192,64,128,64,132,163,252,158,56,128,0,128,0, 192,0,192,0,192,0,224,0,64,0,11,22,44,14,2,252, 63,224,120,128,248,128,248,128,248,128,248,128,248,128,120,128, 8,128,8,128,8,128,8,128,8,128,8,128,8,128,8,128, @@ -63236,10 +63697,10 @@ const u8g_fntpgm_uint8_t u8g_font_osr18[7816] U8G_SECTION(".progmem.u8g_font_osr Max Font ascent =18 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr18n[595] U8G_SECTION(".progmem.u8g_font_osr18n") = { - 0,68,33,235,248,18,0,0,0,0,42,57,0,18,250,18, - 0,10,10,20,14,2,8,12,0,12,0,204,192,201,192,42, - 0,30,0,235,192,201,192,12,0,12,0,22,22,66,24,1, +const u8g_fntpgm_uint8_t u8g_font_osr18n[613] U8G_FONT_SECTION("u8g_font_osr18n") = { + 0,68,33,235,248,18,0,0,0,0,42,58,0,18,250,18, + 0,10,10,20,14,2,8,12,0,12,0,204,192,201,192,43, + 0,28,0,123,128,201,192,12,0,12,0,22,22,66,24,1, 252,0,16,0,0,16,0,0,16,0,0,16,0,0,16,0, 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,255, 255,252,0,16,0,0,16,0,0,16,0,0,16,0,0,16, @@ -63274,7 +63735,8 @@ const u8g_fntpgm_uint8_t u8g_font_osr18n[595] U8G_SECTION(".progmem.u8g_font_osr 48,192,48,96,96,112,192,31,128,11,18,36,15,2,0,30, 0,49,128,96,192,224,192,192,64,192,96,192,96,192,224,96, 224,113,96,30,96,0,96,0,64,96,192,96,192,64,128,65, - 0,62,0}; + 0,62,0,3,12,12,7,2,0,224,224,224,0,0,0,0, + 0,0,224,224,224}; /* Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -63287,7 +63749,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr18n[595] U8G_SECTION(".progmem.u8g_font_osr Max Font ascent =20 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr18r[3683] U8G_SECTION(".progmem.u8g_font_osr18r") = { +const u8g_fntpgm_uint8_t u8g_font_osr18r[3683] U8G_FONT_SECTION("u8g_font_osr18r") = { 0,68,33,235,248,18,4,197,10,125,32,127,250,20,250,19, 250,0,0,0,7,0,0,3,18,18,7,2,0,224,224,224, 224,224,224,64,64,64,64,64,64,64,64,0,224,224,224,6, @@ -63310,7 +63772,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr18r[3683] U8G_SECTION(".progmem.u8g_font_os 64,96,32,16,24,12,6,23,23,9,1,252,64,32,48,16, 24,8,8,12,4,4,4,4,4,4,12,8,8,8,16,16, 32,64,192,10,10,20,14,2,8,12,0,12,0,204,192,201, - 192,42,0,30,0,235,192,201,192,12,0,12,0,22,22,66, + 192,43,0,28,0,123,128,201,192,12,0,12,0,22,22,66, 24,1,252,0,16,0,0,16,0,0,16,0,0,16,0,0, 16,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, 0,255,255,252,0,16,0,0,16,0,0,16,0,0,16,0, @@ -63346,7 +63808,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr18r[3683] U8G_SECTION(".progmem.u8g_font_os 0,30,0,49,128,96,192,224,192,192,64,192,96,192,96,192, 224,96,224,113,96,30,96,0,96,0,64,96,192,96,192,64, 128,65,0,62,0,3,12,12,7,2,0,224,224,224,0,0, - 0,0,0,0,224,224,224,4,16,16,8,2,252,96,240,240, + 0,0,0,0,224,224,224,4,16,16,8,2,252,240,240,240, 0,0,0,0,0,96,240,240,16,16,32,32,64,20,21,63, 24,2,253,0,0,48,0,0,192,0,3,0,0,12,0,0, 48,0,0,224,0,3,128,0,14,0,0,24,0,0,96,0, @@ -63520,7 +63982,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr18r[3683] U8G_SECTION(".progmem.u8g_font_os 32,192,15,5,10,17,1,4,32,4,254,2,143,194,129,254, 64,124,255}; /* - Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-153-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov Capital A Height: 21, '1' Height: 21 Calculated Max Values w=29 h=28 x= 6 y=17 dx=32 dy= 0 ascent=28 len=88 @@ -63531,7 +63993,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr18r[3683] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =28 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr21") = { +const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_FONT_SECTION("u8g_font_osr21") = { 0,76,38,232,247,21,5,131,12,189,32,255,249,28,248,22, 249,0,0,0,8,0,0,4,21,21,8,2,0,96,240,240, 240,240,240,96,96,96,96,96,96,96,96,96,64,0,96,240, @@ -63556,8 +64018,8 @@ const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr 128,128,128,192,64,64,32,32,16,24,8,4,6,28,28,11, 2,250,128,192,64,32,48,16,24,8,8,8,4,4,4,4, 4,4,4,4,12,8,8,24,16,48,32,96,192,128,10,12, - 24,14,2,9,12,0,14,0,204,64,228,192,53,0,14,0, - 63,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, + 24,14,2,9,12,0,14,0,204,64,228,192,117,192,14,0, + 30,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, 1,252,0,8,0,0,8,0,0,8,0,0,8,0,0,8, 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, 0,8,0,0,8,0,255,255,255,0,8,0,0,8,0,0, @@ -63584,8 +64046,8 @@ const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr 0,0,64,0,192,1,192,1,192,3,192,7,192,5,192,13, 192,9,192,17,192,49,192,33,192,65,192,193,192,255,252,1, 192,1,192,1,192,1,192,1,192,15,252,12,21,42,17,2, - 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,79, - 0,112,192,64,96,64,96,0,112,0,112,0,112,96,112,240, + 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,95, + 0,96,192,64,96,64,96,0,112,0,112,0,112,96,112,240, 112,240,112,224,96,192,224,64,192,63,128,12,21,42,17,2, 0,7,128,24,64,16,96,48,224,96,224,96,192,96,0,224, 0,231,128,232,192,240,96,240,96,224,112,224,112,224,112,224, @@ -63601,7 +64063,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr 96,112,96,112,64,96,192,96,128,63,0,4,14,14,8,2, 0,96,240,240,96,0,0,0,0,0,0,96,240,240,96,4, 18,18,8,2,251,96,240,240,96,0,0,0,0,0,0,224, - 240,240,16,16,16,32,64,22,24,72,27,2,251,0,0,12, + 240,240,16,16,48,32,64,22,24,72,27,2,251,0,0,12, 0,0,56,0,0,96,0,1,128,0,7,0,0,28,0,0, 112,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, 0,224,0,0,48,0,0,12,0,0,7,0,0,1,192,0, @@ -63740,7 +64202,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr 192,49,192,97,192,225,192,225,200,225,200,226,216,60,240,13, 21,42,15,1,0,248,0,56,0,56,0,56,0,56,0,56, 0,56,0,59,192,60,96,56,48,56,48,56,48,56,48,56, - 56,56,56,56,48,56,48,56,48,56,32,44,96,35,192,10, + 56,56,56,56,48,56,48,56,48,56,48,36,96,35,192,10, 14,28,12,1,0,31,0,48,128,96,64,96,192,225,192,224, 128,224,0,224,0,224,0,224,0,96,64,96,128,48,128,31, 0,13,21,42,15,1,0,3,224,0,224,0,224,0,224,0, @@ -63852,7 +64314,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr 0,3,0,227,128,227,0,135,0,124,0,5,5,5,13,6, 16,24,56,48,96,128,15,22,44,18,2,248,192,64,192,96, 224,224,192,224,192,224,192,96,192,96,192,96,64,96,64,64, - 64,66,192,194,177,190,143,12,128,0,128,0,192,0,192,0, + 64,66,192,194,177,190,143,28,128,0,128,0,192,0,192,0, 192,0,224,0,224,0,96,0,12,26,52,16,2,251,31,240, 124,64,252,64,252,64,252,64,252,64,252,64,124,64,60,64, 4,64,4,64,4,64,4,64,4,64,4,64,4,64,4,64, @@ -64129,7 +64591,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr 6,64,7,64,3,128,3,128,3,128,1,0,1,0,1,0, 1,0,114,0,114,0,116,0,56,0}; /* - Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-153-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov Capital A Height: 0, '1' Height: 21 Calculated Max Values w=24 h=28 x= 3 y= 9 dx=26 dy= 0 ascent=22 len=75 @@ -64140,10 +64602,10 @@ const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr Max Font ascent =22 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr21n[702] U8G_SECTION(".progmem.u8g_font_osr21n") = { - 0,76,38,232,247,21,0,0,0,0,42,57,0,22,250,21, - 0,10,12,24,14,2,9,12,0,14,0,204,64,228,192,53, - 0,14,0,63,0,229,192,196,192,12,0,14,0,12,0,24, +const u8g_fntpgm_uint8_t u8g_font_osr21n[722] U8G_FONT_SECTION("u8g_font_osr21n") = { + 0,76,38,232,247,21,0,0,0,0,42,58,0,22,250,21, + 0,10,12,24,14,2,9,12,0,14,0,204,64,228,192,117, + 192,14,0,30,0,229,192,196,192,12,0,14,0,12,0,24, 25,75,26,1,252,0,8,0,0,8,0,0,8,0,0,8, 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, 0,8,0,0,8,0,0,8,0,255,255,255,0,8,0,0, @@ -64171,7 +64633,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr21n[702] U8G_SECTION(".progmem.u8g_font_osr 5,192,13,192,9,192,17,192,49,192,33,192,65,192,193,192, 255,252,1,192,1,192,1,192,1,192,1,192,15,252,12,21, 42,17,2,0,96,64,127,128,127,0,64,0,64,0,64,0, - 64,0,79,0,112,192,64,96,64,96,0,112,0,112,0,112, + 64,0,95,0,96,192,64,96,64,96,0,112,0,112,0,112, 96,112,240,112,240,112,224,96,192,224,64,192,63,128,12,21, 42,17,2,0,7,128,24,64,16,96,48,224,96,224,96,192, 96,0,224,0,231,128,232,192,240,96,240,96,224,112,224,112, @@ -64184,9 +64646,11 @@ const u8g_fntpgm_uint8_t u8g_font_osr21n[702] U8G_SECTION(".progmem.u8g_font_osr 224,28,224,28,224,24,224,24,96,24,112,48,31,192,12,21, 42,17,2,0,15,0,48,128,96,64,96,96,224,96,224,96, 224,112,224,112,224,112,96,112,96,240,49,176,14,48,0,48, - 0,32,48,96,112,96,112,64,96,192,96,128,63,0}; + 0,32,48,96,112,96,112,64,96,192,96,128,63,0,4,14, + 14,8,2,0,96,240,240,96,0,0,0,0,0,0,96,240, + 240,96}; /* - Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-153-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov Capital A Height: 21, '1' Height: 21 Calculated Max Values w=29 h=28 x= 4 y=17 dx=32 dy= 0 ascent=23 len=88 @@ -64197,7 +64661,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr21n[702] U8G_SECTION(".progmem.u8g_font_osr Max Font ascent =23 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_SECTION(".progmem.u8g_font_osr21r") = { +const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_FONT_SECTION("u8g_font_osr21r") = { 0,76,38,232,247,21,5,131,12,189,32,127,249,23,249,22, 249,0,0,0,8,0,0,4,21,21,8,2,0,96,240,240, 240,240,240,96,96,96,96,96,96,96,96,96,64,0,96,240, @@ -64222,8 +64686,8 @@ const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_SECTION(".progmem.u8g_font_os 128,128,128,192,64,64,32,32,16,24,8,4,6,28,28,11, 2,250,128,192,64,32,48,16,24,8,8,8,4,4,4,4, 4,4,4,4,12,8,8,24,16,48,32,96,192,128,10,12, - 24,14,2,9,12,0,14,0,204,64,228,192,53,0,14,0, - 63,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, + 24,14,2,9,12,0,14,0,204,64,228,192,117,192,14,0, + 30,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, 1,252,0,8,0,0,8,0,0,8,0,0,8,0,0,8, 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, 0,8,0,0,8,0,255,255,255,0,8,0,0,8,0,0, @@ -64250,8 +64714,8 @@ const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_SECTION(".progmem.u8g_font_os 0,0,64,0,192,1,192,1,192,3,192,7,192,5,192,13, 192,9,192,17,192,49,192,33,192,65,192,193,192,255,252,1, 192,1,192,1,192,1,192,1,192,15,252,12,21,42,17,2, - 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,79, - 0,112,192,64,96,64,96,0,112,0,112,0,112,96,112,240, + 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,95, + 0,96,192,64,96,64,96,0,112,0,112,0,112,96,112,240, 112,240,112,224,96,192,224,64,192,63,128,12,21,42,17,2, 0,7,128,24,64,16,96,48,224,96,224,96,192,96,0,224, 0,231,128,232,192,240,96,240,96,224,112,224,112,224,112,224, @@ -64267,7 +64731,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_SECTION(".progmem.u8g_font_os 96,112,96,112,64,96,192,96,128,63,0,4,14,14,8,2, 0,96,240,240,96,0,0,0,0,0,0,96,240,240,96,4, 18,18,8,2,251,96,240,240,96,0,0,0,0,0,0,224, - 240,240,16,16,16,32,64,22,24,72,27,2,251,0,0,12, + 240,240,16,16,48,32,64,22,24,72,27,2,251,0,0,12, 0,0,56,0,0,96,0,1,128,0,7,0,0,28,0,0, 112,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, 0,224,0,0,48,0,0,12,0,0,7,0,0,1,192,0, @@ -64406,7 +64870,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_SECTION(".progmem.u8g_font_os 192,49,192,97,192,225,192,225,200,225,200,226,216,60,240,13, 21,42,15,1,0,248,0,56,0,56,0,56,0,56,0,56, 0,56,0,59,192,60,96,56,48,56,48,56,48,56,48,56, - 56,56,56,56,48,56,48,56,48,56,32,44,96,35,192,10, + 56,56,56,56,48,56,48,56,48,56,48,36,96,35,192,10, 14,28,12,1,0,31,0,48,128,96,64,96,192,225,192,224, 128,224,0,224,0,224,0,224,0,96,64,96,128,48,128,31, 0,13,21,42,15,1,0,3,224,0,224,0,224,0,224,0, @@ -64485,7 +64949,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =35 descent=-10 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_SECTION(".progmem.u8g_font_osr26") = { +const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_FONT_SECTION("u8g_font_osr26") = { 0,94,46,227,245,26,7,96,17,82,32,255,248,35,246,27, 248,0,0,0,10,0,0,4,25,25,10,3,0,96,240,240, 240,240,240,240,240,96,96,96,96,96,96,96,96,96,96,32, @@ -64516,7 +64980,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_SECTION(".progmem.u8g_font_os 33,13,2,250,192,96,96,48,24,24,12,12,6,6,6,2, 3,3,3,3,3,3,3,3,2,6,6,6,4,12,12,24, 24,48,96,192,128,13,15,30,18,3,10,7,0,7,0,7, - 0,195,24,226,56,114,112,10,128,7,0,15,128,122,240,242, + 0,195,24,226,56,242,120,58,224,7,0,7,128,122,240,242, 120,226,56,7,0,7,0,7,0,30,31,124,34,2,250,0, 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, @@ -64575,7 +65039,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_SECTION(".progmem.u8g_font_os 112,56,96,112,48,224,31,192,4,17,17,10,3,0,96,240, 240,240,96,0,0,0,0,0,0,0,96,240,240,240,96,5, 23,23,11,3,250,112,248,248,248,112,0,0,0,0,0,0, - 0,112,240,248,120,8,8,8,16,16,32,64,28,29,116,34, + 0,112,248,248,120,24,24,24,16,48,32,64,28,29,116,34, 3,251,0,0,0,112,0,0,1,192,0,0,7,0,0,0, 28,0,0,0,112,0,0,1,224,0,0,3,128,0,0,14, 0,0,0,56,0,0,0,224,0,0,3,128,0,0,15,0, @@ -64768,8 +65232,8 @@ const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_SECTION(".progmem.u8g_font_os 224,113,224,241,225,113,113,126,62,60,16,26,52,18,0,0, 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, 28,0,28,112,29,140,29,14,30,6,30,7,28,7,28,7, - 28,7,28,7,28,7,28,7,28,7,28,7,30,6,30,14, - 19,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, + 28,7,28,7,28,7,28,7,28,7,28,7,30,6,26,14, + 17,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, 112,48,96,112,224,112,224,112,224,0,224,0,224,0,224,0, 224,0,96,16,112,16,48,32,24,64,15,128,16,26,52,19, 2,0,1,248,0,56,0,56,0,56,0,56,0,56,0,56, @@ -64930,7 +65394,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_SECTION(".progmem.u8g_font_os 56,48,96,192,19,27,81,22,2,246,96,24,0,224,60,0, 224,60,0,224,60,0,224,60,0,224,60,0,224,60,0,224, 60,0,224,60,0,192,24,0,64,24,0,64,24,0,64,56, - 0,96,48,32,112,124,96,95,227,224,71,193,192,128,0,0, + 0,96,48,32,112,124,96,95,231,224,71,195,192,128,0,0, 192,0,0,192,0,0,192,0,0,192,0,0,224,0,0,224, 0,0,224,0,0,240,0,0,96,0,0,15,31,62,19,2, 251,31,254,62,16,126,16,254,16,254,16,254,16,254,16,254, @@ -65323,10 +65787,10 @@ const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =27 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr26n[932] U8G_SECTION(".progmem.u8g_font_osr26n") = { - 0,94,46,227,245,25,0,0,0,0,42,57,0,27,249,25, +const u8g_fntpgm_uint8_t u8g_font_osr26n[955] U8G_FONT_SECTION("u8g_font_osr26n") = { + 0,94,46,227,245,25,0,0,0,0,42,58,0,27,249,25, 0,13,15,30,18,3,10,7,0,7,0,7,0,195,24,226, - 56,114,112,10,128,7,0,15,128,122,240,242,120,226,56,7, + 56,242,120,58,224,7,0,7,128,122,240,242,120,226,56,7, 0,7,0,7,0,30,31,124,34,2,250,0,3,0,0,0, 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, @@ -65382,7 +65846,8 @@ const u8g_fntpgm_uint8_t u8g_font_osr26n[932] U8G_SECTION(".progmem.u8g_font_osr 3,0,7,192,24,96,48,48,112,56,112,28,224,28,224,28, 224,30,224,30,224,30,224,30,112,62,112,62,56,94,15,158, 0,30,0,28,0,28,56,28,120,28,120,56,112,56,96,112, - 48,224,31,192}; + 48,224,31,192,4,17,17,10,3,0,96,240,240,240,96,0, + 0,0,0,0,0,0,96,240,240,240,96}; /* Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -65395,7 +65860,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr26n[932] U8G_SECTION(".progmem.u8g_font_osr Max Font ascent =28 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr26r[6049] U8G_SECTION(".progmem.u8g_font_osr26r") = { +const u8g_fntpgm_uint8_t u8g_font_osr26r[6049] U8G_FONT_SECTION("u8g_font_osr26r") = { 0,94,46,227,245,26,7,96,17,82,32,127,248,28,248,27, 248,0,0,0,10,0,0,4,25,25,10,3,0,96,240,240, 240,240,240,240,240,96,96,96,96,96,96,96,96,96,96,32, @@ -65426,7 +65891,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr26r[6049] U8G_SECTION(".progmem.u8g_font_os 33,13,2,250,192,96,96,48,24,24,12,12,6,6,6,2, 3,3,3,3,3,3,3,3,2,6,6,6,4,12,12,24, 24,48,96,192,128,13,15,30,18,3,10,7,0,7,0,7, - 0,195,24,226,56,114,112,10,128,7,0,15,128,122,240,242, + 0,195,24,226,56,242,120,58,224,7,0,7,128,122,240,242, 120,226,56,7,0,7,0,7,0,30,31,124,34,2,250,0, 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, @@ -65485,7 +65950,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr26r[6049] U8G_SECTION(".progmem.u8g_font_os 112,56,96,112,48,224,31,192,4,17,17,10,3,0,96,240, 240,240,96,0,0,0,0,0,0,0,96,240,240,240,96,5, 23,23,11,3,250,112,248,248,248,112,0,0,0,0,0,0, - 0,112,240,248,120,8,8,8,16,16,32,64,28,29,116,34, + 0,112,248,248,120,24,24,24,16,48,32,64,28,29,116,34, 3,251,0,0,0,112,0,0,1,192,0,0,7,0,0,0, 28,0,0,0,112,0,0,1,224,0,0,3,128,0,0,14, 0,0,0,56,0,0,0,224,0,0,3,128,0,0,15,0, @@ -65678,8 +66143,8 @@ const u8g_fntpgm_uint8_t u8g_font_osr26r[6049] U8G_SECTION(".progmem.u8g_font_os 224,113,224,241,225,113,113,126,62,60,16,26,52,18,0,0, 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, 28,0,28,112,29,140,29,14,30,6,30,7,28,7,28,7, - 28,7,28,7,28,7,28,7,28,7,28,7,30,6,30,14, - 19,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, + 28,7,28,7,28,7,28,7,28,7,28,7,30,6,26,14, + 17,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, 112,48,96,112,224,112,224,112,224,0,224,0,224,0,224,0, 224,0,96,16,112,16,48,32,24,64,15,128,16,26,52,19, 2,0,1,248,0,56,0,56,0,56,0,56,0,56,0,56, @@ -65787,7 +66252,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr26r[6049] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =39 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr29[16232] U8G_SECTION(".progmem.u8g_font_osr29") = { +const u8g_fntpgm_uint8_t u8g_font_osr29[16232] U8G_FONT_SECTION("u8g_font_osr29") = { 0,107,51,223,244,29,9,148,21,166,32,255,247,39,245,30, 247,0,0,0,11,0,0,5,28,28,11,3,0,112,248,248, 248,248,248,248,248,112,112,112,112,112,112,112,112,32,32,32, @@ -65832,7 +66297,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr29[16232] U8G_SECTION(".progmem.u8g_font_os 128,1,128,3,128,3,0,3,0,3,0,6,0,6,0,14, 0,12,0,24,0,24,0,48,0,96,0,224,0,192,0,15, 17,34,21,3,11,3,128,3,192,3,128,3,128,225,142,241, - 30,249,62,29,112,3,128,3,128,29,112,249,62,241,30,227, + 30,249,62,29,112,3,192,3,192,29,120,249,62,241,30,227, 142,3,128,3,192,3,128,35,34,170,39,2,250,0,0,192, 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, @@ -65906,9 +66371,9 @@ const u8g_fntpgm_uint8_t u8g_font_osr29[16232] U8G_SECTION(".progmem.u8g_font_os 128,0,7,0,0,7,0,56,7,0,124,7,0,124,14,0, 120,14,0,112,12,0,112,24,0,48,48,0,31,224,0,5, 19,19,11,3,0,112,248,248,248,112,0,0,0,0,0,0, - 0,0,0,112,248,248,248,112,5,26,26,11,3,249,112,248, - 248,248,112,0,0,0,0,0,0,0,0,0,112,240,248,120, - 8,8,8,16,16,32,96,64,32,34,136,39,3,250,0,0, + 0,0,0,112,248,248,248,112,6,26,26,12,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,248,252,124, + 12,12,12,8,24,48,32,64,32,34,136,39,3,250,0,0, 0,2,0,0,0,7,0,0,0,28,0,0,0,112,0,0, 1,224,0,0,7,128,0,0,30,0,0,0,120,0,0,1, 224,0,0,3,128,0,0,14,0,0,0,56,0,0,0,240, @@ -66336,7 +66801,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr29[16232] U8G_SECTION(".progmem.u8g_font_os 30,90,25,3,245,96,6,0,224,15,0,240,15,0,240,15, 0,240,15,0,224,15,0,224,15,0,224,15,0,224,15,0, 224,15,0,224,6,0,64,6,0,64,6,0,64,6,0,96, - 12,8,96,14,24,88,59,248,79,241,248,67,224,240,192,0, + 12,8,96,14,24,88,57,248,79,241,248,67,224,112,192,0, 0,192,0,0,192,0,0,192,0,0,192,0,0,224,0,0, 224,0,0,240,0,0,240,0,0,112,0,0,112,0,0,17, 35,105,23,3,250,15,255,128,63,140,0,127,140,0,127,140, @@ -66815,10 +67280,10 @@ const u8g_fntpgm_uint8_t u8g_font_osr29[16232] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =30 descent=-8 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr29n[1201] U8G_SECTION(".progmem.u8g_font_osr29n") = { - 0,107,51,223,244,28,0,0,0,0,42,57,0,30,248,28, +const u8g_fntpgm_uint8_t u8g_font_osr29n[1226] U8G_FONT_SECTION("u8g_font_osr29n") = { + 0,107,51,223,244,28,0,0,0,0,42,58,0,30,248,28, 0,15,17,34,21,3,11,3,128,3,192,3,128,3,128,225, - 142,241,30,249,62,29,112,3,128,3,128,29,112,249,62,241, + 142,241,30,249,62,29,112,3,192,3,192,29,120,249,62,241, 30,227,142,3,128,3,192,3,128,35,34,170,39,2,250,0, 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, @@ -66891,7 +67356,8 @@ const u8g_fntpgm_uint8_t u8g_font_osr29n[1201] U8G_SECTION(".progmem.u8g_font_os 128,112,15,128,112,15,128,56,27,128,28,51,128,7,199,128, 0,7,128,0,7,0,0,7,0,56,7,0,124,7,0,124, 14,0,120,14,0,112,12,0,112,24,0,48,48,0,31,224, - 0}; + 0,5,19,19,11,3,0,112,248,248,248,112,0,0,0,0, + 0,0,0,0,0,112,248,248,248,112}; /* Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -66904,7 +67370,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr29n[1201] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =31 descent=-9 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr29r[7573] U8G_SECTION(".progmem.u8g_font_osr29r") = { +const u8g_fntpgm_uint8_t u8g_font_osr29r[7573] U8G_FONT_SECTION("u8g_font_osr29r") = { 0,107,51,223,244,29,9,148,21,166,32,127,247,31,247,30, 247,0,0,0,11,0,0,5,28,28,11,3,0,112,248,248, 248,248,248,248,248,112,112,112,112,112,112,112,112,32,32,32, @@ -66949,7 +67415,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr29r[7573] U8G_SECTION(".progmem.u8g_font_os 128,1,128,3,128,3,0,3,0,3,0,6,0,6,0,14, 0,12,0,24,0,24,0,48,0,96,0,224,0,192,0,15, 17,34,21,3,11,3,128,3,192,3,128,3,128,225,142,241, - 30,249,62,29,112,3,128,3,128,29,112,249,62,241,30,227, + 30,249,62,29,112,3,192,3,192,29,120,249,62,241,30,227, 142,3,128,3,192,3,128,35,34,170,39,2,250,0,0,192, 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, @@ -67023,9 +67489,9 @@ const u8g_fntpgm_uint8_t u8g_font_osr29r[7573] U8G_SECTION(".progmem.u8g_font_os 128,0,7,0,0,7,0,56,7,0,124,7,0,124,14,0, 120,14,0,112,12,0,112,24,0,48,48,0,31,224,0,5, 19,19,11,3,0,112,248,248,248,112,0,0,0,0,0,0, - 0,0,0,112,248,248,248,112,5,26,26,11,3,249,112,248, - 248,248,112,0,0,0,0,0,0,0,0,0,112,240,248,120, - 8,8,8,16,16,32,96,64,32,34,136,39,3,250,0,0, + 0,0,0,112,248,248,248,112,6,26,26,12,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,248,252,124, + 12,12,12,8,24,48,32,64,32,34,136,39,3,250,0,0, 0,2,0,0,0,7,0,0,0,28,0,0,0,112,0,0, 1,224,0,0,7,128,0,0,30,0,0,0,120,0,0,1, 224,0,0,3,128,0,0,14,0,0,0,56,0,0,0,240, @@ -67391,7 +67857,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr29r[7573] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =47 descent=-13 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr35[22370] U8G_SECTION(".progmem.u8g_font_osr35") = { +const u8g_fntpgm_uint8_t u8g_font_osr35[22370] U8G_FONT_SECTION("u8g_font_osr35") = { 0,128,62,216,241,35,12,236,30,116,32,255,246,47,243,36, 246,0,0,0,14,0,0,6,34,34,14,4,0,120,252,252, 252,252,252,252,252,252,120,120,120,120,120,120,48,48,48,48, @@ -67450,9 +67916,9 @@ const u8g_fntpgm_uint8_t u8g_font_osr35[22370] U8G_SECTION(".progmem.u8g_font_os 0,96,0,96,0,96,0,96,0,96,0,224,0,192,0,192, 0,192,1,128,1,128,3,128,3,0,7,0,6,0,14,0, 12,0,24,0,56,0,112,0,224,0,18,20,60,25,4,14, - 0,224,0,1,224,0,1,224,0,1,224,0,96,195,128,240, - 135,192,248,143,192,124,159,128,7,248,0,1,224,0,1,224, - 0,6,184,0,124,143,128,248,135,192,240,195,192,97,193,128, + 0,224,0,1,224,0,1,224,0,1,224,0,224,195,128,240, + 135,192,248,143,192,60,159,128,3,248,0,1,224,0,3,240, + 0,30,190,0,124,143,128,248,135,192,240,195,192,97,193,128, 1,224,0,1,224,0,1,224,0,0,224,0,41,41,246,45, 2,248,0,0,12,0,0,0,0,0,12,0,0,0,0,0, 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, @@ -67921,7 +68387,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr35[22370] U8G_SECTION(".progmem.u8g_font_os 35,105,27,1,0,255,0,0,15,0,0,15,0,0,15,0, 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, 15,0,0,15,0,0,15,0,0,15,0,0,15,15,192,15, - 48,240,15,32,112,15,64,120,15,128,120,15,128,120,15,0, + 48,240,15,96,112,15,64,120,15,128,120,15,128,120,15,0, 120,15,0,120,15,0,120,15,0,120,15,0,120,15,0,120, 15,0,120,15,0,120,15,0,120,15,0,120,15,0,120,15, 0,120,15,0,120,15,0,120,15,0,120,255,195,255,10,34, @@ -68803,11 +69269,11 @@ const u8g_fntpgm_uint8_t u8g_font_osr35[22370] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =36 descent=-10 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr35n[1560] U8G_SECTION(".progmem.u8g_font_osr35n") = { - 0,128,62,216,241,34,0,0,0,0,42,57,0,36,246,34, +const u8g_fntpgm_uint8_t u8g_font_osr35n[1588] U8G_FONT_SECTION("u8g_font_osr35n") = { + 0,128,62,216,241,34,0,0,0,0,42,58,0,36,246,34, 0,18,20,60,25,4,14,0,224,0,1,224,0,1,224,0, - 1,224,0,96,195,128,240,135,192,248,143,192,124,159,128,7, - 248,0,1,224,0,1,224,0,6,184,0,124,143,128,248,135, + 1,224,0,224,195,128,240,135,192,248,143,192,60,159,128,3, + 248,0,1,224,0,3,240,0,30,190,0,124,143,128,248,135, 192,240,195,192,97,193,128,1,224,0,1,224,0,1,224,0, 0,224,0,41,41,246,45,2,248,0,0,12,0,0,0,0, 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, @@ -68901,7 +69367,9 @@ const u8g_fntpgm_uint8_t u8g_font_osr35n[1560] U8G_SECTION(".progmem.u8g_font_os 1,248,120,3,248,60,7,120,30,14,120,15,252,120,3,240, 120,0,0,240,0,0,240,0,0,240,0,0,240,60,0,224, 124,0,224,124,1,192,124,1,192,120,3,128,112,3,0,56, - 6,0,28,28,0,15,248,0}; + 6,0,28,28,0,15,248,0,6,22,22,14,4,1,120,252, + 252,252,120,0,0,0,0,0,0,0,0,0,0,0,0,120, + 252,252,252,120}; /* Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 Copyright: Copyright (C) 2006-2008 Alexey Kryukov @@ -68914,7 +69382,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr35n[1560] U8G_SECTION(".progmem.u8g_font_os Max Font ascent =37 descent=-11 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_osr35r[10371] U8G_SECTION(".progmem.u8g_font_osr35r") = { +const u8g_fntpgm_uint8_t u8g_font_osr35r[10371] U8G_FONT_SECTION("u8g_font_osr35r") = { 0,128,62,216,241,35,12,236,30,116,32,127,246,37,245,36, 246,0,0,0,14,0,0,6,34,34,14,4,0,120,252,252, 252,252,252,252,252,252,120,120,120,120,120,120,48,48,48,48, @@ -68973,9 +69441,9 @@ const u8g_fntpgm_uint8_t u8g_font_osr35r[10371] U8G_SECTION(".progmem.u8g_font_o 0,96,0,96,0,96,0,96,0,96,0,224,0,192,0,192, 0,192,1,128,1,128,3,128,3,0,7,0,6,0,14,0, 12,0,24,0,56,0,112,0,224,0,18,20,60,25,4,14, - 0,224,0,1,224,0,1,224,0,1,224,0,96,195,128,240, - 135,192,248,143,192,124,159,128,7,248,0,1,224,0,1,224, - 0,6,184,0,124,143,128,248,135,192,240,195,192,97,193,128, + 0,224,0,1,224,0,1,224,0,1,224,0,224,195,128,240, + 135,192,248,143,192,60,159,128,3,248,0,1,224,0,3,240, + 0,30,190,0,124,143,128,248,135,192,240,195,192,97,193,128, 1,224,0,1,224,0,1,224,0,0,224,0,41,41,246,45, 2,248,0,0,12,0,0,0,0,0,12,0,0,0,0,0, 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, @@ -69444,7 +69912,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr35r[10371] U8G_SECTION(".progmem.u8g_font_o 35,105,27,1,0,255,0,0,15,0,0,15,0,0,15,0, 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, 15,0,0,15,0,0,15,0,0,15,0,0,15,15,192,15, - 48,240,15,32,112,15,64,120,15,128,120,15,128,120,15,0, + 48,240,15,96,112,15,64,120,15,128,120,15,128,120,15,0, 120,15,0,120,15,0,120,15,0,120,15,0,120,15,0,120, 15,0,120,15,0,120,15,0,120,15,0,120,15,0,120,15, 0,120,15,0,120,15,0,120,15,0,120,255,195,255,10,34, @@ -69576,7 +70044,7 @@ const u8g_fntpgm_uint8_t u8g_font_osr35r[10371] U8G_SECTION(".progmem.u8g_font_o Max Font ascent = 4 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_p01type[1163] U8G_SECTION(".progmem.u8g_font_p01type") = { +const u8g_fntpgm_uint8_t u8g_font_p01type[1163] U8G_FONT_SECTION("u8g_font_p01type") = { 0,5,6,0,254,4,1,81,2,129,32,255,254,4,254,5, 254,0,0,0,4,0,0,1,5,5,3,1,255,128,128,128, 0,128,3,2,2,4,0,2,160,160,5,5,5,6,0,255, @@ -69662,8 +70130,8 @@ const u8g_fntpgm_uint8_t u8g_font_p01type[1163] U8G_SECTION(".progmem.u8g_font_p Max Font ascent = 4 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_p01typen[177] U8G_SECTION(".progmem.u8g_font_p01typen") = { - 0,5,6,0,254,5,0,0,0,0,42,57,0,4,255,5, +const u8g_fntpgm_uint8_t u8g_font_p01typen[186] U8G_FONT_SECTION("u8g_font_p01typen") = { + 0,5,6,0,254,5,0,0,0,0,42,58,0,4,255,5, 0,3,3,3,4,0,0,160,64,160,3,3,3,4,0,0, 64,224,64,2,2,2,3,0,255,64,128,3,1,1,4,0, 1,224,1,1,1,2,0,0,128,4,4,4,5,0,255,16, @@ -69674,7 +70142,7 @@ const u8g_fntpgm_uint8_t u8g_font_p01typen[177] U8G_SECTION(".progmem.u8g_font_p 96,128,224,32,192,3,5,5,4,0,255,96,128,224,160,192, 3,5,5,4,0,255,224,32,32,64,64,3,5,5,4,0, 255,96,160,224,160,192,3,5,5,4,0,255,96,160,224,32, - 192}; + 192,1,3,3,2,0,0,128,0,128}; /* Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 Copyright: Copyright Patrick Lauke 2012 @@ -69687,7 +70155,7 @@ const u8g_fntpgm_uint8_t u8g_font_p01typen[177] U8G_SECTION(".progmem.u8g_font_p Max Font ascent = 4 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_p01typer[938] U8G_SECTION(".progmem.u8g_font_p01typer") = { +const u8g_fntpgm_uint8_t u8g_font_p01typer[938] U8G_FONT_SECTION("u8g_font_p01typer") = { 0,5,6,0,254,4,1,81,2,129,32,127,254,4,254,5, 254,0,0,0,4,0,0,1,5,5,3,1,255,128,128,128, 0,128,3,2,2,4,0,2,160,160,5,5,5,6,0,255, @@ -69759,7 +70227,7 @@ const u8g_fntpgm_uint8_t u8g_font_p01typer[938] U8G_SECTION(".progmem.u8g_font_p Max Font ascent = 6 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[1140] U8G_SECTION(".progmem.u8g_font_pixelle_micro") = { +const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[1140] U8G_FONT_SECTION("u8g_font_pixelle_micro") = { 0,6,8,255,254,5,1,97,2,188,32,255,254,6,254,6, 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,0, @@ -69844,8 +70312,8 @@ const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[1140] U8G_SECTION(".progmem.u8g_ Max Font ascent = 6 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[180] U8G_SECTION(".progmem.u8g_font_pixelle_micron") = { - 0,6,8,255,254,5,0,0,0,0,42,57,0,6,255,5, +const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[189] U8G_FONT_SECTION("u8g_font_pixelle_micron") = { + 0,6,8,255,254,5,0,0,0,0,42,58,0,6,255,5, 0,3,4,4,4,0,0,64,224,64,160,3,3,3,4,0, 0,64,224,64,1,2,2,2,0,255,128,128,3,1,1,4, 0,1,224,1,1,1,2,0,0,128,3,6,6,4,0,0, @@ -69856,7 +70324,7 @@ const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[180] U8G_SECTION(".progmem.u8g_ 4,0,0,224,128,224,32,192,3,5,5,4,0,0,64,160, 192,160,64,3,5,5,4,0,0,224,32,64,64,128,3,5, 5,4,0,0,64,160,64,160,64,3,5,5,4,0,0,64, - 160,96,160,64}; + 160,96,160,64,1,3,3,2,0,0,128,0,128}; /* Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 Copyright: Copyright rdonaghy 2008 @@ -69869,7 +70337,7 @@ const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[180] U8G_SECTION(".progmem.u8g_ Max Font ascent = 6 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[1012] U8G_SECTION(".progmem.u8g_font_pixelle_micror") = { +const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[1012] U8G_FONT_SECTION("u8g_font_pixelle_micror") = { 0,6,8,255,254,5,1,97,2,188,32,127,254,6,254,6, 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,0, @@ -69934,6 +70402,2896 @@ const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[1012] U8G_SECTION(".progmem.u8g 32,1,7,7,2,0,255,128,128,128,128,128,128,128,3,7, 7,4,0,255,128,64,64,32,64,64,128,4,2,2,5,0, 1,80,160,255}; +/* + Fontname: ProFont10 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 5 dy= 0 ascent= 8 len= 9 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont10[2560] U8G_FONT_SECTION("u8g_font_profont10") = { + 0,5,9,0,254,6,1,126,2,248,32,255,254,8,254,7, + 254,0,0,0,5,0,0,1,6,6,5,2,0,128,128,128, + 128,0,128,3,2,2,5,1,5,160,160,5,5,5,5,0, + 1,80,248,80,248,80,5,8,8,5,0,255,32,120,160,112, + 40,168,112,32,5,6,6,5,0,0,120,168,176,104,168,144, + 4,6,6,5,0,0,64,160,64,80,160,80,1,2,2,5, + 2,4,128,128,3,8,8,5,1,255,32,64,128,128,128,128, + 64,32,3,8,8,5,0,255,128,64,32,32,32,32,64,128, + 4,5,5,5,0,1,64,144,96,144,32,3,3,3,5,0, + 1,64,224,64,2,3,3,5,0,254,64,64,128,2,1,1, + 5,1,2,192,1,1,1,5,2,0,128,4,8,8,5,0, + 254,16,16,32,32,64,64,128,128,4,6,6,5,0,0,96, + 144,176,208,144,96,3,6,6,5,1,0,64,192,64,64,64, + 224,4,6,6,5,0,0,96,144,16,32,64,240,4,6,6, + 5,0,0,96,144,32,16,144,96,4,6,6,5,0,0,32, + 96,160,240,32,112,4,6,6,5,0,0,240,128,224,16,144, + 96,4,6,6,5,0,0,96,128,224,144,144,96,4,6,6, + 5,0,0,240,16,32,64,64,64,4,6,6,5,0,0,96, + 144,96,144,144,96,4,6,6,5,0,0,96,144,144,112,16, + 96,1,4,4,5,2,0,128,0,0,128,2,6,6,5,0, + 254,64,0,0,64,64,128,3,5,5,5,1,0,32,64,128, + 64,32,4,3,3,5,0,1,240,0,240,3,5,5,5,1, + 0,128,64,32,64,128,4,6,6,5,0,0,96,144,32,64, + 0,64,4,6,6,5,0,0,96,144,176,176,128,112,4,6, + 6,5,0,0,96,144,144,240,144,144,4,6,6,5,0,0, + 224,144,224,144,144,224,4,6,6,5,0,0,96,144,128,128, + 144,96,4,6,6,5,0,0,224,144,144,144,144,224,4,6, + 6,5,0,0,240,128,224,128,128,240,4,6,6,5,0,0, + 240,128,224,128,128,128,4,6,6,5,0,0,96,144,128,176, + 144,96,4,6,6,5,0,0,144,144,240,144,144,144,3,6, + 6,5,1,0,224,64,64,64,64,224,4,6,6,5,0,0, + 16,16,16,16,144,96,4,6,6,5,0,0,144,160,192,192, + 160,144,4,6,6,5,0,0,128,128,128,128,128,240,4,6, + 6,5,0,0,144,240,240,144,144,144,4,6,6,5,0,0, + 144,208,176,144,144,144,4,6,6,5,0,0,96,144,144,144, + 144,96,4,6,6,5,0,0,224,144,144,224,128,128,4,7, + 7,5,0,255,96,144,144,144,176,96,16,4,6,6,5,0, + 0,224,144,144,224,144,144,4,6,6,5,0,0,96,144,96, + 16,144,96,3,6,6,5,1,0,224,64,64,64,64,64,4, + 6,6,5,0,0,144,144,144,144,144,96,4,6,6,5,0, + 0,144,144,144,144,160,64,4,6,6,5,0,0,144,144,144, + 240,240,144,4,6,6,5,0,0,144,144,96,96,144,144,4, + 6,6,5,0,0,144,144,160,64,64,64,4,6,6,5,0, + 0,240,16,32,64,128,240,2,8,8,5,2,255,192,128,128, + 128,128,128,128,192,4,8,8,5,1,254,128,128,64,64,32, + 32,16,16,2,8,8,5,1,255,192,64,64,64,64,64,64, + 192,3,2,2,5,1,4,64,160,5,1,1,5,0,254,248, + 2,2,2,5,1,5,128,64,4,4,4,5,0,0,112,144, + 176,80,4,6,6,5,0,0,128,128,224,144,144,224,4,4, + 4,5,0,0,96,144,128,112,4,6,6,5,0,0,16,16, + 112,144,144,112,4,4,4,5,0,0,96,240,128,112,3,6, + 6,5,1,0,32,64,224,64,64,64,4,6,6,5,0,254, + 112,144,144,112,16,96,4,6,6,5,0,0,128,128,224,144, + 144,144,3,6,6,5,1,0,64,0,192,64,64,224,2,8, + 8,5,1,254,64,0,192,64,64,64,64,128,4,6,6,5, + 0,0,128,128,160,192,160,144,3,6,6,5,1,0,192,64, + 64,64,64,224,5,4,4,5,0,0,240,168,168,168,4,4, + 4,5,0,0,160,208,144,144,4,4,4,5,0,0,96,144, + 144,96,4,6,6,5,0,254,224,144,144,224,128,128,4,6, + 6,5,0,254,112,144,144,112,16,16,4,4,4,5,0,0, + 160,208,128,128,4,4,4,5,0,0,112,224,16,224,3,6, + 6,5,1,0,64,64,224,64,64,32,4,4,4,5,0,0, + 144,144,176,80,4,4,4,5,0,0,144,144,160,64,5,4, + 4,5,0,0,168,168,168,80,4,4,4,5,0,0,144,96, + 96,144,4,6,6,5,0,254,144,144,144,112,16,96,4,4, + 4,5,0,0,240,32,64,240,3,9,9,5,1,254,32,64, + 64,64,128,64,64,64,32,1,8,8,5,2,255,128,128,128, + 128,128,128,128,128,3,9,9,5,1,254,128,64,64,64,32, + 64,64,64,128,4,2,2,5,0,2,80,160,0,0,0,5, + 0,0,0,0,0,5,0,0,0,0,0,5,0,0,2,3, + 3,5,0,255,64,64,128,3,9,9,5,1,254,32,64,64, + 224,64,64,64,64,128,4,3,3,5,0,255,80,80,160,5, + 1,1,5,0,0,168,3,5,5,5,1,1,64,224,64,64, + 64,3,5,5,5,1,1,64,224,64,224,64,3,2,2,5, + 1,5,64,160,5,6,6,5,0,0,120,208,224,112,248,112, + 4,8,8,5,0,0,80,32,112,128,96,16,144,96,2,3, + 3,5,0,0,64,128,64,4,6,6,5,0,0,112,160,176, + 160,160,112,0,0,0,5,0,0,0,0,0,5,0,0,0, + 0,0,5,0,0,0,0,0,5,0,0,2,3,3,5,2, + 3,64,128,128,2,3,3,5,1,3,64,64,128,4,3,3, + 5,0,3,80,160,160,4,3,3,5,0,3,80,80,160,4, + 4,4,5,0,1,96,240,240,96,2,1,1,5,1,2,192, + 5,1,1,5,0,2,248,4,2,2,5,0,5,80,160,5, + 3,3,5,0,3,248,88,88,4,7,7,5,0,0,80,32, + 0,112,224,16,224,2,3,3,5,0,0,128,64,128,4,4, + 4,5,0,0,112,176,160,80,0,0,0,5,0,0,0,0, + 0,5,0,0,4,8,8,5,0,0,80,0,144,144,160,64, + 64,64,0,0,0,5,0,0,1,6,6,5,2,0,128,0, + 128,128,128,128,4,6,6,5,0,255,32,96,176,192,112,64, + 4,6,6,5,0,0,96,128,192,128,144,224,4,4,4,5, + 0,0,144,96,96,144,3,6,6,5,1,0,160,64,224,64, + 224,64,1,8,8,5,2,255,128,128,128,0,0,128,128,128, + 4,8,8,5,0,255,96,144,64,160,80,32,144,96,2,1, + 1,5,1,5,192,4,6,6,5,0,0,192,32,208,208,32, + 192,3,5,5,5,1,2,96,160,96,0,224,5,3,3,5, + 0,0,72,144,72,4,2,2,5,0,1,240,16,3,1,1, + 5,0,2,224,4,5,5,5,0,1,192,32,208,208,176,2, + 1,1,5,1,5,192,3,3,3,5,1,3,64,160,64,3, + 4,4,5,0,0,64,224,64,224,2,3,3,5,1,4,128, + 64,192,2,3,3,5,1,4,192,64,192,2,1,1,5,2, + 5,192,4,5,5,5,0,255,160,160,160,208,128,4,6,6, + 5,0,0,112,176,176,112,48,48,1,1,1,5,2,2,128, + 2,2,2,5,1,254,192,192,2,3,3,5,1,4,192,64, + 64,3,5,5,5,1,2,64,160,64,0,224,5,3,3,5, + 0,0,144,72,144,5,7,7,5,0,0,192,72,80,32,72, + 152,8,5,7,7,5,0,0,192,72,80,32,80,136,24,5, + 7,7,5,0,0,192,72,208,32,72,152,8,4,6,6,5, + 0,0,32,0,32,64,144,96,4,8,8,5,0,0,64,32, + 96,144,144,240,144,144,4,8,8,5,0,0,32,64,96,144, + 144,240,144,144,4,8,8,5,0,0,32,80,0,96,144,240, + 144,144,4,8,8,5,0,0,80,160,0,96,144,240,144,144, + 4,8,8,5,0,0,80,0,96,144,144,240,144,144,4,8, + 8,5,0,0,32,80,32,96,144,240,144,144,4,6,6,5, + 0,0,112,160,240,160,160,176,4,8,8,5,0,254,96,144, + 128,128,144,96,32,64,4,8,8,5,0,0,64,32,240,128, + 224,128,128,240,4,8,8,5,0,0,32,64,240,128,224,128, + 128,240,4,8,8,5,0,0,32,80,240,128,224,128,128,240, + 4,8,8,5,0,0,80,0,240,128,224,128,128,240,3,8, + 8,5,1,0,128,64,224,64,64,64,64,224,3,8,8,5, + 1,0,32,64,224,64,64,64,64,224,3,8,8,5,1,0, + 64,160,0,224,64,64,64,224,3,8,8,5,1,0,160,0, + 224,64,64,64,64,224,4,6,6,5,0,0,96,80,208,80, + 80,96,4,8,8,5,0,0,80,160,144,208,176,144,144,144, + 4,8,8,5,0,0,64,32,96,144,144,144,144,96,4,8, + 8,5,0,0,32,64,96,144,144,144,144,96,4,8,8,5, + 0,0,32,80,0,96,144,144,144,96,4,8,8,5,0,0, + 80,160,0,96,144,144,144,96,4,8,8,5,0,0,80,0, + 96,144,144,144,144,96,3,3,3,5,0,1,160,64,160,4, + 6,6,5,0,0,96,144,176,208,144,96,4,8,8,5,0, + 0,64,32,144,144,144,144,144,96,4,8,8,5,0,0,32, + 64,144,144,144,144,144,96,4,8,8,5,0,0,32,80,0, + 144,144,144,144,96,4,8,8,5,0,0,80,0,144,144,144, + 144,144,96,4,8,8,5,0,0,32,64,0,144,144,160,64, + 64,4,6,6,5,0,0,128,224,144,224,128,128,4,7,7, + 5,0,255,96,144,160,160,144,160,128,4,7,7,5,0,0, + 64,32,0,112,144,176,80,4,7,7,5,0,0,32,64,0, + 112,144,176,80,4,7,7,5,0,0,32,80,0,112,144,176, + 80,4,7,7,5,0,0,80,160,0,112,144,176,80,4,6, + 6,5,0,0,80,0,112,144,176,80,4,7,7,5,0,0, + 32,80,32,112,144,176,80,4,4,4,5,0,0,112,176,160, + 112,4,6,6,5,0,254,96,144,128,112,32,64,4,7,7, + 5,0,0,64,32,0,96,240,128,112,4,7,7,5,0,0, + 32,64,0,96,240,128,112,4,7,7,5,0,0,32,80,0, + 96,240,128,112,4,6,6,5,0,0,80,0,96,240,128,112, + 3,7,7,5,1,0,128,64,0,192,64,64,224,3,7,7, + 5,1,0,64,128,0,192,64,64,224,3,7,7,5,1,0, + 64,160,0,192,64,64,224,3,6,6,5,1,0,160,0,192, + 64,64,224,4,7,7,5,0,0,192,192,32,112,144,144,96, + 4,7,7,5,0,0,80,160,0,160,208,144,144,4,7,7, + 5,0,0,64,32,0,96,144,144,96,4,7,7,5,0,0, + 32,64,0,96,144,144,96,4,7,7,5,0,0,32,80,0, + 96,144,144,96,4,7,7,5,0,0,80,160,0,96,144,144, + 96,4,6,6,5,0,0,80,0,96,144,144,96,3,5,5, + 5,0,0,64,0,224,0,64,4,4,4,5,0,0,96,176, + 208,96,4,7,7,5,0,0,64,32,0,144,144,176,80,4, + 7,7,5,0,0,32,64,0,144,144,176,80,4,7,7,5, + 0,0,32,80,0,144,144,176,80,4,6,6,5,0,0,80, + 0,144,144,176,80,4,9,9,5,0,254,16,32,0,144,144, + 144,112,16,96,4,8,8,5,0,254,128,128,224,144,144,224, + 128,128,4,8,8,5,0,254,80,0,144,144,144,112,16,96 + }; +/* + Fontname: ProFont10 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 5 dy= 0 ascent= 7 len= 9 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont10r[1106] U8G_FONT_SECTION("u8g_font_profont10r") = { + 0,5,9,0,254,6,1,126,2,248,32,127,254,7,254,7, + 254,0,0,0,5,0,0,1,6,6,5,2,0,128,128,128, + 128,0,128,3,2,2,5,1,5,160,160,5,5,5,5,0, + 1,80,248,80,248,80,5,8,8,5,0,255,32,120,160,112, + 40,168,112,32,5,6,6,5,0,0,120,168,176,104,168,144, + 4,6,6,5,0,0,64,160,64,80,160,80,1,2,2,5, + 2,4,128,128,3,8,8,5,1,255,32,64,128,128,128,128, + 64,32,3,8,8,5,0,255,128,64,32,32,32,32,64,128, + 4,5,5,5,0,1,64,144,96,144,32,3,3,3,5,0, + 1,64,224,64,2,3,3,5,0,254,64,64,128,2,1,1, + 5,1,2,192,1,1,1,5,2,0,128,4,8,8,5,0, + 254,16,16,32,32,64,64,128,128,4,6,6,5,0,0,96, + 144,176,208,144,96,3,6,6,5,1,0,64,192,64,64,64, + 224,4,6,6,5,0,0,96,144,16,32,64,240,4,6,6, + 5,0,0,96,144,32,16,144,96,4,6,6,5,0,0,32, + 96,160,240,32,112,4,6,6,5,0,0,240,128,224,16,144, + 96,4,6,6,5,0,0,96,128,224,144,144,96,4,6,6, + 5,0,0,240,16,32,64,64,64,4,6,6,5,0,0,96, + 144,96,144,144,96,4,6,6,5,0,0,96,144,144,112,16, + 96,1,4,4,5,2,0,128,0,0,128,2,6,6,5,0, + 254,64,0,0,64,64,128,3,5,5,5,1,0,32,64,128, + 64,32,4,3,3,5,0,1,240,0,240,3,5,5,5,1, + 0,128,64,32,64,128,4,6,6,5,0,0,96,144,32,64, + 0,64,4,6,6,5,0,0,96,144,176,176,128,112,4,6, + 6,5,0,0,96,144,144,240,144,144,4,6,6,5,0,0, + 224,144,224,144,144,224,4,6,6,5,0,0,96,144,128,128, + 144,96,4,6,6,5,0,0,224,144,144,144,144,224,4,6, + 6,5,0,0,240,128,224,128,128,240,4,6,6,5,0,0, + 240,128,224,128,128,128,4,6,6,5,0,0,96,144,128,176, + 144,96,4,6,6,5,0,0,144,144,240,144,144,144,3,6, + 6,5,1,0,224,64,64,64,64,224,4,6,6,5,0,0, + 16,16,16,16,144,96,4,6,6,5,0,0,144,160,192,192, + 160,144,4,6,6,5,0,0,128,128,128,128,128,240,4,6, + 6,5,0,0,144,240,240,144,144,144,4,6,6,5,0,0, + 144,208,176,144,144,144,4,6,6,5,0,0,96,144,144,144, + 144,96,4,6,6,5,0,0,224,144,144,224,128,128,4,7, + 7,5,0,255,96,144,144,144,176,96,16,4,6,6,5,0, + 0,224,144,144,224,144,144,4,6,6,5,0,0,96,144,96, + 16,144,96,3,6,6,5,1,0,224,64,64,64,64,64,4, + 6,6,5,0,0,144,144,144,144,144,96,4,6,6,5,0, + 0,144,144,144,144,160,64,4,6,6,5,0,0,144,144,144, + 240,240,144,4,6,6,5,0,0,144,144,96,96,144,144,4, + 6,6,5,0,0,144,144,160,64,64,64,4,6,6,5,0, + 0,240,16,32,64,128,240,2,8,8,5,2,255,192,128,128, + 128,128,128,128,192,4,8,8,5,1,254,128,128,64,64,32, + 32,16,16,2,8,8,5,1,255,192,64,64,64,64,64,64, + 192,3,2,2,5,1,4,64,160,5,1,1,5,0,254,248, + 2,2,2,5,1,5,128,64,4,4,4,5,0,0,112,144, + 176,80,4,6,6,5,0,0,128,128,224,144,144,224,4,4, + 4,5,0,0,96,144,128,112,4,6,6,5,0,0,16,16, + 112,144,144,112,4,4,4,5,0,0,96,240,128,112,3,6, + 6,5,1,0,32,64,224,64,64,64,4,6,6,5,0,254, + 112,144,144,112,16,96,4,6,6,5,0,0,128,128,224,144, + 144,144,3,6,6,5,1,0,64,0,192,64,64,224,2,8, + 8,5,1,254,64,0,192,64,64,64,64,128,4,6,6,5, + 0,0,128,128,160,192,160,144,3,6,6,5,1,0,192,64, + 64,64,64,224,5,4,4,5,0,0,240,168,168,168,4,4, + 4,5,0,0,160,208,144,144,4,4,4,5,0,0,96,144, + 144,96,4,6,6,5,0,254,224,144,144,224,128,128,4,6, + 6,5,0,254,112,144,144,112,16,16,4,4,4,5,0,0, + 160,208,128,128,4,4,4,5,0,0,112,224,16,224,3,6, + 6,5,1,0,64,64,224,64,64,32,4,4,4,5,0,0, + 144,144,176,80,4,4,4,5,0,0,144,144,160,64,5,4, + 4,5,0,0,168,168,168,80,4,4,4,5,0,0,144,96, + 96,144,4,6,6,5,0,254,144,144,144,112,16,96,4,4, + 4,5,0,0,240,32,64,240,3,9,9,5,1,254,32,64, + 64,64,128,64,64,64,32,1,8,8,5,2,255,128,128,128, + 128,128,128,128,128,3,9,9,5,1,254,128,64,64,64,32, + 64,64,64,128,4,2,2,5,0,2,80,160,0,0,0,5, + 0,0}; +/* + Fontname: ProFont11 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h=11 x= 3 y= 6 dx= 6 dy= 0 ascent= 9 len=11 + Font Bounding box w= 6 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont11[2768] U8G_FONT_SECTION("u8g_font_profont11") = { + 0,6,10,0,254,7,1,158,3,55,32,255,254,9,254,8, + 254,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,3,3,6,1,5,160,160,160,5,5,5, + 6,0,2,80,248,80,248,80,5,9,9,6,0,255,32,112, + 168,160,112,40,168,112,32,5,7,7,6,0,0,120,168,176, + 80,104,168,144,5,7,7,6,0,0,96,144,160,64,168,144, + 104,1,3,3,6,2,5,128,128,128,3,9,9,6,1,255, + 32,64,128,128,128,128,128,64,32,3,9,9,6,1,255,128, + 64,32,32,32,32,32,64,128,5,5,5,6,0,2,32,168, + 112,168,32,5,5,5,6,0,1,32,32,248,32,32,2,4, + 4,6,1,254,192,192,64,128,3,1,1,6,1,3,224,2, + 2,2,6,2,0,192,192,5,10,10,6,0,254,8,8,16, + 16,32,32,64,64,128,128,5,7,7,6,0,0,112,136,152, + 168,200,136,112,5,7,7,6,0,0,32,224,32,32,32,32, + 248,5,7,7,6,0,0,112,136,8,16,32,64,248,5,7, + 7,6,0,0,112,136,8,48,8,136,112,5,7,7,6,0, + 0,16,48,80,144,248,16,56,5,7,7,6,0,0,248,128, + 240,8,8,136,112,5,7,7,6,0,0,112,128,240,136,136, + 136,112,5,7,7,6,0,0,248,8,8,16,32,32,32,5, + 7,7,6,0,0,112,136,136,112,136,136,112,5,7,7,6, + 0,0,112,136,136,136,120,8,112,2,5,5,6,2,0,192, + 192,0,192,192,2,7,7,6,1,254,192,192,0,192,192,64, + 128,4,7,7,6,1,0,16,32,64,128,64,32,16,5,3, + 3,6,0,2,248,0,248,4,7,7,6,1,0,128,64,32, + 16,32,64,128,5,7,7,6,0,0,112,136,8,16,32,0, + 32,5,7,7,6,0,0,112,136,184,168,184,128,120,5,7, + 7,6,0,0,32,80,80,136,248,136,136,5,7,7,6,0, + 0,240,136,136,240,136,136,240,5,7,7,6,0,0,112,136, + 128,128,128,136,112,5,7,7,6,0,0,240,136,136,136,136, + 136,240,5,7,7,6,0,0,248,128,128,240,128,128,248,5, + 7,7,6,0,0,248,128,128,240,128,128,128,5,7,7,6, + 0,0,112,136,128,152,136,136,112,5,7,7,6,0,0,136, + 136,136,248,136,136,136,5,7,7,6,0,0,248,32,32,32, + 32,32,248,5,7,7,6,0,0,8,8,8,8,136,136,112, + 5,7,7,6,0,0,136,144,160,192,160,144,136,5,7,7, + 6,0,0,128,128,128,128,128,128,248,5,7,7,6,0,0, + 136,216,168,168,136,136,136,5,7,7,6,0,0,136,200,168, + 152,136,136,136,5,7,7,6,0,0,112,136,136,136,136,136, + 112,5,7,7,6,0,0,240,136,136,240,128,128,128,5,8, + 8,6,0,255,112,136,136,136,136,168,112,8,5,7,7,6, + 0,0,240,136,136,240,136,136,136,5,7,7,6,0,0,112, + 136,128,112,8,136,112,5,7,7,6,0,0,248,32,32,32, + 32,32,32,5,7,7,6,0,0,136,136,136,136,136,136,112, + 5,7,7,6,0,0,136,136,136,80,80,32,32,5,7,7, + 6,0,0,136,136,136,168,168,216,136,5,7,7,6,0,0, + 136,136,80,32,80,136,136,5,7,7,6,0,0,136,136,136, + 80,32,32,32,5,7,7,6,0,0,248,8,16,32,64,128, + 248,2,9,9,6,2,255,192,128,128,128,128,128,128,128,192, + 5,10,10,6,1,254,128,128,64,64,32,32,16,16,8,8, + 2,9,9,6,1,255,192,64,64,64,64,64,64,64,192,5, + 3,3,6,0,4,32,80,136,6,1,1,6,0,254,252,2, + 2,2,6,1,6,128,64,5,5,5,6,0,0,120,136,136, + 152,104,5,7,7,6,0,0,128,128,240,136,136,136,240,5, + 5,5,6,0,0,112,136,128,128,120,5,7,7,6,0,0, + 8,8,120,136,136,136,120,5,5,5,6,0,0,112,136,248, + 128,120,4,7,7,6,1,0,48,64,224,64,64,64,64,5, + 7,7,6,0,254,120,136,136,136,120,8,112,5,7,7,6, + 0,0,128,128,240,136,136,136,136,3,7,7,6,1,0,64, + 0,192,64,64,64,224,3,9,9,6,0,254,32,0,96,32, + 32,32,32,32,192,5,7,7,6,0,0,128,128,144,160,224, + 144,136,3,7,7,6,1,0,192,64,64,64,64,64,224,5, + 5,5,6,0,0,240,168,168,168,168,5,5,5,6,0,0, + 176,200,136,136,136,5,5,5,6,0,0,112,136,136,136,112, + 5,7,7,6,0,254,240,136,136,136,240,128,128,5,7,7, + 6,0,254,120,136,136,136,120,8,8,5,5,5,6,0,0, + 176,200,128,128,128,5,5,5,6,0,0,120,128,112,8,240, + 4,7,7,6,1,0,64,64,224,64,64,64,48,5,5,5, + 6,0,0,136,136,136,152,104,5,5,5,6,0,0,136,136, + 80,80,32,5,5,5,6,0,0,168,168,168,168,80,5,5, + 5,6,0,0,136,80,32,80,136,5,7,7,6,0,254,136, + 136,136,136,120,8,112,5,5,5,6,0,0,248,16,32,64, + 248,3,11,11,6,1,254,32,64,64,64,64,128,64,64,64, + 64,32,1,9,9,6,2,255,128,128,128,128,128,128,128,128, + 128,3,11,11,6,1,254,128,64,64,64,64,32,64,64,64, + 64,128,5,2,2,6,0,3,104,176,0,0,0,6,0,0, + 0,0,0,6,0,0,0,0,0,6,0,0,2,3,3,6, + 0,255,64,64,128,5,11,11,6,0,254,24,32,32,32,112, + 32,32,32,32,32,192,4,3,3,6,0,255,80,80,160,5, + 1,1,6,0,0,168,3,5,5,6,1,2,64,224,64,64, + 64,3,5,5,6,1,2,64,224,64,224,64,3,2,2,6, + 1,6,64,160,6,8,8,6,0,0,124,168,176,96,104,212, + 84,40,5,9,9,6,0,0,80,32,112,136,128,112,8,136, + 112,2,4,4,6,0,0,64,128,128,64,5,7,7,6,0, + 0,120,160,160,176,160,160,120,0,0,0,6,0,0,0,0, + 0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0, + 2,3,3,6,2,4,64,128,128,2,3,3,6,2,4,64, + 64,128,4,3,3,6,1,4,80,160,160,4,3,3,6,1, + 4,80,80,160,5,5,5,6,0,1,112,248,248,248,112,3, + 1,1,6,1,3,224,6,1,1,6,0,3,252,5,2,2, + 6,0,6,104,176,6,3,3,6,0,4,244,92,92,5,8, + 8,6,0,0,80,32,0,120,128,112,8,240,2,4,4,6, + 0,0,128,64,64,128,5,5,5,6,0,0,80,168,184,160, + 88,0,0,0,6,0,0,0,0,0,6,0,0,5,9,9, + 6,0,0,80,0,136,136,136,80,32,32,32,0,0,0,6, + 0,0,1,7,7,6,3,0,128,0,128,128,128,128,128,5, + 7,7,6,0,255,32,112,168,160,160,120,32,5,8,8,6, + 0,0,96,144,128,224,128,128,136,240,5,5,5,6,0,0, + 136,112,80,112,136,5,7,7,6,0,0,136,80,248,32,248, + 32,32,1,9,9,6,2,255,128,128,128,128,0,128,128,128, + 128,5,10,10,6,0,255,112,136,72,160,144,72,40,144,136, + 112,3,1,1,6,1,6,160,5,7,7,6,0,0,224,16, + 104,136,104,16,224,4,6,6,6,1,3,112,144,144,112,0, + 240,5,4,4,6,0,0,72,144,144,72,5,3,3,6,0, + 1,248,8,8,5,1,1,6,0,3,248,5,6,6,6,0, + 1,224,16,200,168,200,176,3,1,1,6,1,6,224,4,4, + 4,6,1,4,96,144,144,96,5,6,6,6,0,0,32,32, + 248,32,32,248,3,4,4,6,1,5,192,32,64,224,3,5, + 5,6,1,4,192,32,96,32,192,3,2,2,6,2,6,96, + 192,5,7,7,6,0,254,144,144,144,144,232,128,128,5,8, + 8,6,0,0,120,168,168,168,120,40,40,40,2,2,2,6, + 2,2,192,192,3,3,3,6,1,254,224,96,192,3,4,4, + 6,1,5,192,64,64,224,4,6,6,6,1,3,96,144,144, + 96,0,240,5,4,4,6,0,0,144,72,72,144,6,9,9, + 6,0,0,192,64,68,232,16,40,88,184,8,6,9,9,6, + 0,0,192,64,68,232,16,56,68,136,28,6,9,9,6,0, + 0,192,32,100,40,208,40,88,184,8,5,7,7,6,0,0, + 32,0,32,64,128,136,112,5,9,9,6,0,0,64,32,32, + 80,80,136,248,136,136,5,9,9,6,0,0,16,32,32,80, + 80,136,248,136,136,5,9,9,6,0,0,32,80,0,32,80, + 136,248,136,136,5,9,9,6,0,0,104,176,32,80,80,136, + 248,136,136,5,9,9,6,0,0,80,0,32,80,80,136,248, + 136,136,5,9,9,6,0,0,32,80,32,80,136,136,248,136, + 136,5,7,7,6,0,0,120,160,160,240,160,160,184,5,9, + 9,6,0,254,112,136,128,128,128,136,112,32,64,5,9,9, + 6,0,0,64,32,248,128,128,240,128,128,248,5,9,9,6, + 0,0,16,32,248,128,128,240,128,128,248,5,9,9,6,0, + 0,32,80,248,128,128,240,128,128,248,5,9,9,6,0,0, + 80,0,248,128,128,240,128,128,248,5,9,9,6,0,0,64, + 32,248,32,32,32,32,32,248,5,9,9,6,0,0,16,32, + 248,32,32,32,32,32,248,5,9,9,6,0,0,32,80,0, + 248,32,32,32,32,248,5,9,9,6,0,0,80,0,248,32, + 32,32,32,32,248,5,7,7,6,0,0,112,72,72,232,72, + 72,112,5,9,9,6,0,0,104,176,136,200,168,152,136,136, + 136,5,9,9,6,0,0,64,32,112,136,136,136,136,136,112, + 5,9,9,6,0,0,16,32,112,136,136,136,136,136,112,5, + 9,9,6,0,0,32,80,0,112,136,136,136,136,112,5,9, + 9,6,0,0,104,176,112,136,136,136,136,136,112,5,9,9, + 6,0,0,80,0,112,136,136,136,136,136,112,5,5,5,6, + 0,1,136,80,32,80,136,5,7,7,6,0,0,112,136,152, + 168,200,136,112,5,9,9,6,0,0,64,32,136,136,136,136, + 136,136,112,5,9,9,6,0,0,16,32,136,136,136,136,136, + 136,112,5,9,9,6,0,0,32,80,0,136,136,136,136,136, + 112,5,9,9,6,0,0,80,0,136,136,136,136,136,136,112, + 5,9,9,6,0,0,16,32,136,136,136,80,32,32,32,5, + 7,7,6,0,0,128,240,136,136,240,128,128,5,9,9,6, + 0,255,48,72,136,144,144,136,136,176,128,5,8,8,6,0, + 0,32,16,0,120,136,136,152,104,5,8,8,6,0,0,16, + 32,0,120,136,136,152,104,5,8,8,6,0,0,32,80,0, + 120,136,136,152,104,5,8,8,6,0,0,104,176,0,120,136, + 136,152,104,5,7,7,6,0,0,80,0,120,136,136,152,104, + 5,8,8,6,0,0,32,80,32,120,136,136,152,104,5,5, + 5,6,0,0,112,168,184,160,120,5,7,7,6,0,254,112, + 136,128,128,120,32,64,5,8,8,6,0,0,64,32,0,112, + 136,248,128,120,5,8,8,6,0,0,16,32,0,112,136,248, + 128,120,5,8,8,6,0,0,32,80,0,112,136,248,128,120, + 5,7,7,6,0,0,80,0,112,136,248,128,120,3,8,8, + 6,1,0,128,64,0,192,64,64,64,224,3,8,8,6,1, + 0,32,64,0,192,64,64,64,224,3,8,8,6,1,0,64, + 160,0,192,64,64,64,224,3,7,7,6,1,0,160,0,192, + 64,64,64,224,5,8,8,6,0,0,96,96,16,120,136,136, + 136,112,5,8,8,6,0,0,104,176,0,176,200,136,136,136, + 5,8,8,6,0,0,64,32,0,112,136,136,136,112,5,8, + 8,6,0,0,16,32,0,112,136,136,136,112,5,8,8,6, + 0,0,32,80,0,112,136,136,136,112,5,8,8,6,0,0, + 104,176,0,112,136,136,136,112,5,7,7,6,0,0,80,0, + 112,136,136,136,112,5,5,5,6,0,1,32,0,248,0,32, + 5,5,5,6,0,0,112,152,168,200,112,5,8,8,6,0, + 0,64,32,0,136,136,136,152,104,5,8,8,6,0,0,16, + 32,0,136,136,136,152,104,5,8,8,6,0,0,32,80,0, + 136,136,136,152,104,5,7,7,6,0,0,80,0,136,136,136, + 152,104,5,10,10,6,0,254,16,32,0,136,136,136,136,120, + 8,112,5,9,9,6,0,254,128,128,240,136,136,136,240,128, + 128,5,9,9,6,0,254,80,0,136,136,136,136,120,8,112 + }; +/* + Fontname: ProFont11 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h=11 x= 2 y= 6 dx= 6 dy= 0 ascent= 9 len=11 + Font Bounding box w= 6 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont11r[1200] U8G_FONT_SECTION("u8g_font_profont11r") = { + 0,6,10,0,254,7,1,158,3,55,32,127,254,9,254,8, + 254,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,3,3,6,1,5,160,160,160,5,5,5, + 6,0,2,80,248,80,248,80,5,9,9,6,0,255,32,112, + 168,160,112,40,168,112,32,5,7,7,6,0,0,120,168,176, + 80,104,168,144,5,7,7,6,0,0,96,144,160,64,168,144, + 104,1,3,3,6,2,5,128,128,128,3,9,9,6,1,255, + 32,64,128,128,128,128,128,64,32,3,9,9,6,1,255,128, + 64,32,32,32,32,32,64,128,5,5,5,6,0,2,32,168, + 112,168,32,5,5,5,6,0,1,32,32,248,32,32,2,4, + 4,6,1,254,192,192,64,128,3,1,1,6,1,3,224,2, + 2,2,6,2,0,192,192,5,10,10,6,0,254,8,8,16, + 16,32,32,64,64,128,128,5,7,7,6,0,0,112,136,152, + 168,200,136,112,5,7,7,6,0,0,32,224,32,32,32,32, + 248,5,7,7,6,0,0,112,136,8,16,32,64,248,5,7, + 7,6,0,0,112,136,8,48,8,136,112,5,7,7,6,0, + 0,16,48,80,144,248,16,56,5,7,7,6,0,0,248,128, + 240,8,8,136,112,5,7,7,6,0,0,112,128,240,136,136, + 136,112,5,7,7,6,0,0,248,8,8,16,32,32,32,5, + 7,7,6,0,0,112,136,136,112,136,136,112,5,7,7,6, + 0,0,112,136,136,136,120,8,112,2,5,5,6,2,0,192, + 192,0,192,192,2,7,7,6,1,254,192,192,0,192,192,64, + 128,4,7,7,6,1,0,16,32,64,128,64,32,16,5,3, + 3,6,0,2,248,0,248,4,7,7,6,1,0,128,64,32, + 16,32,64,128,5,7,7,6,0,0,112,136,8,16,32,0, + 32,5,7,7,6,0,0,112,136,184,168,184,128,120,5,7, + 7,6,0,0,32,80,80,136,248,136,136,5,7,7,6,0, + 0,240,136,136,240,136,136,240,5,7,7,6,0,0,112,136, + 128,128,128,136,112,5,7,7,6,0,0,240,136,136,136,136, + 136,240,5,7,7,6,0,0,248,128,128,240,128,128,248,5, + 7,7,6,0,0,248,128,128,240,128,128,128,5,7,7,6, + 0,0,112,136,128,152,136,136,112,5,7,7,6,0,0,136, + 136,136,248,136,136,136,5,7,7,6,0,0,248,32,32,32, + 32,32,248,5,7,7,6,0,0,8,8,8,8,136,136,112, + 5,7,7,6,0,0,136,144,160,192,160,144,136,5,7,7, + 6,0,0,128,128,128,128,128,128,248,5,7,7,6,0,0, + 136,216,168,168,136,136,136,5,7,7,6,0,0,136,200,168, + 152,136,136,136,5,7,7,6,0,0,112,136,136,136,136,136, + 112,5,7,7,6,0,0,240,136,136,240,128,128,128,5,8, + 8,6,0,255,112,136,136,136,136,168,112,8,5,7,7,6, + 0,0,240,136,136,240,136,136,136,5,7,7,6,0,0,112, + 136,128,112,8,136,112,5,7,7,6,0,0,248,32,32,32, + 32,32,32,5,7,7,6,0,0,136,136,136,136,136,136,112, + 5,7,7,6,0,0,136,136,136,80,80,32,32,5,7,7, + 6,0,0,136,136,136,168,168,216,136,5,7,7,6,0,0, + 136,136,80,32,80,136,136,5,7,7,6,0,0,136,136,136, + 80,32,32,32,5,7,7,6,0,0,248,8,16,32,64,128, + 248,2,9,9,6,2,255,192,128,128,128,128,128,128,128,192, + 5,10,10,6,1,254,128,128,64,64,32,32,16,16,8,8, + 2,9,9,6,1,255,192,64,64,64,64,64,64,64,192,5, + 3,3,6,0,4,32,80,136,6,1,1,6,0,254,252,2, + 2,2,6,1,6,128,64,5,5,5,6,0,0,120,136,136, + 152,104,5,7,7,6,0,0,128,128,240,136,136,136,240,5, + 5,5,6,0,0,112,136,128,128,120,5,7,7,6,0,0, + 8,8,120,136,136,136,120,5,5,5,6,0,0,112,136,248, + 128,120,4,7,7,6,1,0,48,64,224,64,64,64,64,5, + 7,7,6,0,254,120,136,136,136,120,8,112,5,7,7,6, + 0,0,128,128,240,136,136,136,136,3,7,7,6,1,0,64, + 0,192,64,64,64,224,3,9,9,6,0,254,32,0,96,32, + 32,32,32,32,192,5,7,7,6,0,0,128,128,144,160,224, + 144,136,3,7,7,6,1,0,192,64,64,64,64,64,224,5, + 5,5,6,0,0,240,168,168,168,168,5,5,5,6,0,0, + 176,200,136,136,136,5,5,5,6,0,0,112,136,136,136,112, + 5,7,7,6,0,254,240,136,136,136,240,128,128,5,7,7, + 6,0,254,120,136,136,136,120,8,8,5,5,5,6,0,0, + 176,200,128,128,128,5,5,5,6,0,0,120,128,112,8,240, + 4,7,7,6,1,0,64,64,224,64,64,64,48,5,5,5, + 6,0,0,136,136,136,152,104,5,5,5,6,0,0,136,136, + 80,80,32,5,5,5,6,0,0,168,168,168,168,80,5,5, + 5,6,0,0,136,80,32,80,136,5,7,7,6,0,254,136, + 136,136,136,120,8,112,5,5,5,6,0,0,248,16,32,64, + 248,3,11,11,6,1,254,32,64,64,64,64,128,64,64,64, + 64,32,1,9,9,6,2,255,128,128,128,128,128,128,128,128, + 128,3,11,11,6,1,254,128,64,64,64,64,32,64,64,64, + 64,128,5,2,2,6,0,3,104,176,0,0,0,6,0,0 + }; +/* + Fontname: ProFont12 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w= 6 h=12 x= 3 y= 7 dx= 6 dy= 0 ascent=10 len=12 + Font Bounding box w= 6 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont12[2907] U8G_FONT_SECTION("u8g_font_profont12") = { + 0,6,11,0,254,8,1,178,3,103,32,255,254,10,254,9, + 254,0,0,0,6,0,0,1,8,8,6,2,0,128,128,128, + 128,128,128,0,128,3,3,3,6,1,6,160,160,160,5,5, + 5,6,0,3,80,248,80,248,80,5,10,10,6,0,255,32, + 112,168,160,112,40,40,168,112,32,5,8,8,6,0,0,120, + 168,168,80,48,104,168,144,5,8,8,6,0,0,96,144,160, + 64,160,168,144,104,1,3,3,6,2,6,128,128,128,3,10, + 10,6,1,255,32,64,128,128,128,128,128,128,64,32,3,10, + 10,6,1,255,128,64,32,32,32,32,32,32,64,128,5,5, + 5,6,0,3,32,168,112,168,32,5,5,5,6,0,1,32, + 32,248,32,32,2,4,4,6,1,254,192,192,64,128,3,1, + 1,6,1,3,224,2,2,2,6,2,0,192,192,5,10,10, + 6,0,254,8,8,16,16,32,32,64,64,128,128,5,8,8, + 6,0,0,112,136,152,168,200,136,136,112,5,8,8,6,0, + 0,32,224,32,32,32,32,32,248,5,8,8,6,0,0,112, + 136,8,16,32,64,128,248,5,8,8,6,0,0,112,136,8, + 48,8,8,136,112,5,8,8,6,0,0,16,48,80,144,248, + 16,16,56,5,8,8,6,0,0,248,128,128,240,8,8,136, + 112,5,8,8,6,0,0,112,128,128,240,136,136,136,112,5, + 8,8,6,0,0,248,8,8,16,32,32,32,32,5,8,8, + 6,0,0,112,136,136,112,136,136,136,112,5,8,8,6,0, + 0,112,136,136,136,120,8,8,112,2,6,6,6,2,0,192, + 192,0,0,192,192,2,8,8,6,1,254,192,192,0,0,192, + 192,64,128,4,7,7,6,1,1,16,32,64,128,64,32,16, + 5,3,3,6,0,3,248,0,248,4,7,7,6,1,1,128, + 64,32,16,32,64,128,5,8,8,6,0,0,112,136,8,8, + 16,32,0,32,5,8,8,6,0,0,112,136,184,168,184,128, + 128,120,5,8,8,6,0,0,32,80,80,136,136,248,136,136, + 5,8,8,6,0,0,240,136,136,240,136,136,136,240,5,8, + 8,6,0,0,112,136,128,128,128,128,136,112,5,8,8,6, + 0,0,240,136,136,136,136,136,136,240,5,8,8,6,0,0, + 248,128,128,240,128,128,128,248,5,8,8,6,0,0,248,128, + 128,240,128,128,128,128,5,8,8,6,0,0,112,136,128,128, + 152,136,136,112,5,8,8,6,0,0,136,136,136,248,136,136, + 136,136,5,8,8,6,0,0,248,32,32,32,32,32,32,248, + 5,8,8,6,0,0,8,8,8,8,8,136,136,112,5,8, + 8,6,0,0,136,144,160,192,192,160,144,136,5,8,8,6, + 0,0,128,128,128,128,128,128,128,248,5,8,8,6,0,0, + 136,216,168,168,136,136,136,136,5,8,8,6,0,0,136,200, + 168,152,136,136,136,136,5,8,8,6,0,0,112,136,136,136, + 136,136,136,112,5,8,8,6,0,0,240,136,136,240,128,128, + 128,128,5,9,9,6,0,255,112,136,136,136,136,136,168,112, + 8,5,8,8,6,0,0,240,136,136,240,136,136,136,136,5, + 8,8,6,0,0,112,136,128,112,8,8,136,112,5,8,8, + 6,0,0,248,32,32,32,32,32,32,32,5,8,8,6,0, + 0,136,136,136,136,136,136,136,112,5,8,8,6,0,0,136, + 136,136,136,80,80,32,32,5,8,8,6,0,0,136,136,136, + 136,168,168,216,136,5,8,8,6,0,0,136,136,136,80,32, + 80,136,136,5,8,8,6,0,0,136,136,136,136,80,32,32, + 32,5,8,8,6,0,0,248,8,16,32,64,128,128,248,2, + 10,10,6,2,255,192,128,128,128,128,128,128,128,128,192,5, + 10,10,6,1,254,128,128,64,64,32,32,16,16,8,8,2, + 10,10,6,1,255,192,64,64,64,64,64,64,64,64,192,5, + 3,3,6,0,5,32,80,136,6,1,1,6,0,254,252,2, + 2,2,6,1,7,128,64,5,5,5,6,0,0,120,136,136, + 152,104,5,8,8,6,0,0,128,128,128,240,136,136,136,240, + 5,5,5,6,0,0,112,136,128,128,120,5,8,8,6,0, + 0,8,8,8,120,136,136,136,120,5,5,5,6,0,0,112, + 136,248,128,120,4,8,8,6,1,0,48,64,224,64,64,64, + 64,64,5,7,7,6,0,254,120,136,136,136,120,8,112,5, + 8,8,6,0,0,128,128,128,240,136,136,136,136,3,8,8, + 6,1,0,64,0,0,192,64,64,64,224,3,10,10,6,0, + 254,32,0,0,96,32,32,32,32,32,192,5,8,8,6,0, + 0,128,128,128,144,160,224,144,136,3,8,8,6,1,0,192, + 64,64,64,64,64,64,224,5,5,5,6,0,0,240,168,168, + 168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,5, + 6,0,0,112,136,136,136,112,5,7,7,6,0,254,240,136, + 136,136,240,128,128,5,7,7,6,0,254,120,136,136,136,120, + 8,8,5,5,5,6,0,0,176,200,128,128,128,5,5,5, + 6,0,0,120,128,112,8,240,4,8,8,6,1,0,64,64, + 64,224,64,64,64,48,5,5,5,6,0,0,136,136,136,152, + 104,5,5,5,6,0,0,136,136,80,80,32,5,5,5,6, + 0,0,168,168,168,168,80,5,5,5,6,0,0,136,80,32, + 80,136,5,7,7,6,0,254,136,136,136,136,120,8,112,5, + 5,5,6,0,0,248,16,32,64,248,3,11,11,6,1,254, + 32,64,64,64,64,128,64,64,64,64,32,1,10,10,6,2, + 255,128,128,128,128,128,128,128,128,128,128,3,11,11,6,1, + 254,128,64,64,64,64,32,64,64,64,64,128,5,2,2,6, + 0,4,104,176,0,0,0,6,0,0,0,0,0,6,0,0, + 0,0,0,6,0,0,2,3,3,6,0,255,64,64,128,5, + 12,12,6,0,254,24,32,32,32,32,112,32,32,32,32,32, + 192,4,3,3,6,0,255,80,80,160,5,1,1,6,0,0, + 168,3,6,6,6,1,2,64,224,64,64,64,64,3,6,6, + 6,1,2,64,224,64,64,224,64,3,2,2,6,1,7,64, + 160,6,9,9,6,0,0,124,164,168,80,32,104,212,84,40, + 5,10,10,6,0,0,80,32,112,136,128,112,8,8,136,112, + 2,4,4,6,0,0,64,128,128,64,5,8,8,6,0,0, + 120,160,160,176,160,160,160,120,0,0,0,6,0,0,0,0, + 0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0, + 2,3,3,6,2,5,64,128,128,2,3,3,6,2,5,64, + 64,128,4,3,3,6,1,5,80,160,160,4,3,3,6,1, + 5,80,80,160,5,5,5,6,0,2,112,248,248,248,112,3, + 1,1,6,1,3,224,6,1,1,6,0,3,252,5,2,2, + 6,0,7,104,176,6,3,3,6,0,5,244,92,92,5,9, + 9,6,0,0,80,32,0,0,120,128,112,8,240,2,4,4, + 6,0,0,128,64,64,128,5,5,5,6,0,0,80,168,184, + 160,88,0,0,0,6,0,0,0,0,0,6,0,0,5,10, + 10,6,0,0,80,0,0,136,136,136,80,32,32,32,0,0, + 0,6,0,0,1,8,8,6,3,0,128,0,128,128,128,128, + 128,128,5,7,7,6,0,255,32,112,168,160,160,120,32,5, + 9,9,6,0,0,96,144,128,224,128,128,128,136,240,5,5, + 5,6,0,1,136,112,80,112,136,5,8,8,6,0,0,136, + 80,248,32,248,32,32,32,1,10,10,6,2,255,128,128,128, + 128,0,0,128,128,128,128,5,11,11,6,0,255,112,136,72, + 160,144,136,72,40,144,136,112,3,1,1,6,1,7,160,5, + 8,8,6,0,0,224,16,104,136,136,104,16,224,4,7,7, + 6,1,3,112,144,144,112,0,0,240,5,4,4,6,0,0, + 72,144,144,72,5,3,3,6,0,2,248,8,8,5,1,1, + 6,0,3,248,5,7,7,6,0,1,224,16,200,168,168,200, + 176,3,1,1,6,1,7,224,4,4,4,6,1,5,96,144, + 144,96,5,6,6,6,0,1,32,32,248,32,32,248,3,4, + 4,6,1,6,192,32,64,224,3,5,5,6,1,5,192,32, + 96,32,192,4,2,2,6,2,7,112,224,5,7,7,6,0, + 254,144,144,144,144,232,128,128,5,9,9,6,0,0,120,168, + 168,168,120,40,40,40,40,2,2,2,6,2,3,192,192,4, + 3,3,6,1,254,240,112,224,3,4,4,6,1,6,192,64, + 64,224,4,7,7,6,1,3,96,144,144,96,0,0,240,5, + 4,4,6,0,0,144,72,72,144,6,10,10,6,0,0,192, + 64,68,232,16,32,72,152,56,8,6,10,10,6,0,0,192, + 64,68,232,16,32,88,132,8,28,6,10,10,6,0,0,192, + 32,100,40,208,32,72,152,56,8,5,8,8,6,0,0,32, + 0,32,64,128,128,136,112,5,10,10,6,0,0,64,32,32, + 80,80,136,136,248,136,136,5,10,10,6,0,0,16,32,32, + 80,80,136,136,248,136,136,5,10,10,6,0,0,32,80,0, + 32,80,80,136,248,136,136,5,10,10,6,0,0,104,176,32, + 80,80,136,136,248,136,136,5,10,10,6,0,0,80,0,32, + 80,80,136,136,248,136,136,5,10,10,6,0,0,32,80,32, + 80,80,136,136,248,136,136,5,8,8,6,0,0,120,160,160, + 240,160,160,160,184,5,10,10,6,0,254,112,136,128,128,128, + 128,136,112,32,64,5,10,10,6,0,0,64,32,248,128,128, + 240,128,128,128,248,5,10,10,6,0,0,16,32,248,128,128, + 240,128,128,128,248,5,10,10,6,0,0,32,80,248,128,128, + 240,128,128,128,248,5,10,10,6,0,0,80,0,248,128,128, + 240,128,128,128,248,5,10,10,6,0,0,64,32,248,32,32, + 32,32,32,32,248,5,10,10,6,0,0,16,32,248,32,32, + 32,32,32,32,248,5,10,10,6,0,0,32,80,0,248,32, + 32,32,32,32,248,5,10,10,6,0,0,80,0,248,32,32, + 32,32,32,32,248,6,8,8,6,0,0,120,68,68,228,68, + 68,68,120,5,10,10,6,0,0,104,176,136,200,168,152,136, + 136,136,136,5,10,10,6,0,0,64,32,112,136,136,136,136, + 136,136,112,5,10,10,6,0,0,16,32,112,136,136,136,136, + 136,136,112,5,10,10,6,0,0,32,80,0,112,136,136,136, + 136,136,112,5,10,10,6,0,0,104,176,112,136,136,136,136, + 136,136,112,5,10,10,6,0,0,80,0,112,136,136,136,136, + 136,136,112,5,5,5,6,0,2,136,80,32,80,136,5,8, + 8,6,0,0,112,136,152,168,200,136,136,112,5,10,10,6, + 0,0,64,32,136,136,136,136,136,136,136,112,5,10,10,6, + 0,0,16,32,136,136,136,136,136,136,136,112,5,10,10,6, + 0,0,32,80,0,136,136,136,136,136,136,112,5,10,10,6, + 0,0,80,0,136,136,136,136,136,136,136,112,5,10,10,6, + 0,0,16,32,136,136,136,136,80,32,32,32,5,8,8,6, + 0,0,128,240,136,136,136,240,128,128,5,10,10,6,0,255, + 48,72,136,144,144,136,136,136,176,128,5,9,9,6,0,0, + 32,16,0,0,120,136,136,152,104,5,9,9,6,0,0,16, + 32,0,0,120,136,136,152,104,5,9,9,6,0,0,32,80, + 0,0,120,136,136,152,104,5,9,9,6,0,0,104,176,0, + 0,120,136,136,152,104,5,8,8,6,0,0,80,0,0,120, + 136,136,152,104,5,9,9,6,0,0,32,80,32,0,120,136, + 136,152,104,5,5,5,6,0,0,112,168,184,160,120,5,7, + 7,6,0,254,112,136,128,128,120,32,64,5,9,9,6,0, + 0,64,32,0,0,112,136,248,128,120,5,9,9,6,0,0, + 16,32,0,0,112,136,248,128,120,5,9,9,6,0,0,32, + 80,0,0,112,136,248,128,120,5,8,8,6,0,0,80,0, + 0,112,136,248,128,120,3,9,9,6,1,0,128,64,0,0, + 192,64,64,64,224,3,9,9,6,1,0,32,64,0,0,192, + 64,64,64,224,3,9,9,6,1,0,64,160,0,0,192,64, + 64,64,224,3,8,8,6,1,0,160,0,0,192,64,64,64, + 224,5,9,9,6,0,0,96,96,16,8,120,136,136,136,112, + 5,9,9,6,0,0,104,176,0,0,176,200,136,136,136,5, + 9,9,6,0,0,64,32,0,0,112,136,136,136,112,5,9, + 9,6,0,0,16,32,0,0,112,136,136,136,112,5,9,9, + 6,0,0,32,80,0,0,112,136,136,136,112,5,9,9,6, + 0,0,104,176,0,0,112,136,136,136,112,5,8,8,6,0, + 0,80,0,0,112,136,136,136,112,5,5,5,6,0,1,32, + 0,248,0,32,5,5,5,6,0,0,112,152,168,200,112,5, + 9,9,6,0,0,64,32,0,0,136,136,136,152,104,5,9, + 9,6,0,0,16,32,0,0,136,136,136,152,104,5,9,9, + 6,0,0,32,80,0,0,136,136,136,152,104,5,8,8,6, + 0,0,80,0,0,136,136,136,152,104,5,11,11,6,0,254, + 16,32,0,0,136,136,136,136,120,8,112,5,10,10,6,0, + 254,128,128,128,240,136,136,136,240,128,128,5,10,10,6,0, + 254,80,0,0,136,136,136,136,120,8,112}; +/* + Fontname: ProFont12 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w= 6 h=11 x= 2 y= 7 dx= 6 dy= 0 ascent= 9 len=11 + Font Bounding box w= 6 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont12r[1258] U8G_FONT_SECTION("u8g_font_profont12r") = { + 0,6,11,0,254,8,1,178,3,103,32,127,254,9,254,9, + 254,0,0,0,6,0,0,1,8,8,6,2,0,128,128,128, + 128,128,128,0,128,3,3,3,6,1,6,160,160,160,5,5, + 5,6,0,3,80,248,80,248,80,5,10,10,6,0,255,32, + 112,168,160,112,40,40,168,112,32,5,8,8,6,0,0,120, + 168,168,80,48,104,168,144,5,8,8,6,0,0,96,144,160, + 64,160,168,144,104,1,3,3,6,2,6,128,128,128,3,10, + 10,6,1,255,32,64,128,128,128,128,128,128,64,32,3,10, + 10,6,1,255,128,64,32,32,32,32,32,32,64,128,5,5, + 5,6,0,3,32,168,112,168,32,5,5,5,6,0,1,32, + 32,248,32,32,2,4,4,6,1,254,192,192,64,128,3,1, + 1,6,1,3,224,2,2,2,6,2,0,192,192,5,10,10, + 6,0,254,8,8,16,16,32,32,64,64,128,128,5,8,8, + 6,0,0,112,136,152,168,200,136,136,112,5,8,8,6,0, + 0,32,224,32,32,32,32,32,248,5,8,8,6,0,0,112, + 136,8,16,32,64,128,248,5,8,8,6,0,0,112,136,8, + 48,8,8,136,112,5,8,8,6,0,0,16,48,80,144,248, + 16,16,56,5,8,8,6,0,0,248,128,128,240,8,8,136, + 112,5,8,8,6,0,0,112,128,128,240,136,136,136,112,5, + 8,8,6,0,0,248,8,8,16,32,32,32,32,5,8,8, + 6,0,0,112,136,136,112,136,136,136,112,5,8,8,6,0, + 0,112,136,136,136,120,8,8,112,2,6,6,6,2,0,192, + 192,0,0,192,192,2,8,8,6,1,254,192,192,0,0,192, + 192,64,128,4,7,7,6,1,1,16,32,64,128,64,32,16, + 5,3,3,6,0,3,248,0,248,4,7,7,6,1,1,128, + 64,32,16,32,64,128,5,8,8,6,0,0,112,136,8,8, + 16,32,0,32,5,8,8,6,0,0,112,136,184,168,184,128, + 128,120,5,8,8,6,0,0,32,80,80,136,136,248,136,136, + 5,8,8,6,0,0,240,136,136,240,136,136,136,240,5,8, + 8,6,0,0,112,136,128,128,128,128,136,112,5,8,8,6, + 0,0,240,136,136,136,136,136,136,240,5,8,8,6,0,0, + 248,128,128,240,128,128,128,248,5,8,8,6,0,0,248,128, + 128,240,128,128,128,128,5,8,8,6,0,0,112,136,128,128, + 152,136,136,112,5,8,8,6,0,0,136,136,136,248,136,136, + 136,136,5,8,8,6,0,0,248,32,32,32,32,32,32,248, + 5,8,8,6,0,0,8,8,8,8,8,136,136,112,5,8, + 8,6,0,0,136,144,160,192,192,160,144,136,5,8,8,6, + 0,0,128,128,128,128,128,128,128,248,5,8,8,6,0,0, + 136,216,168,168,136,136,136,136,5,8,8,6,0,0,136,200, + 168,152,136,136,136,136,5,8,8,6,0,0,112,136,136,136, + 136,136,136,112,5,8,8,6,0,0,240,136,136,240,128,128, + 128,128,5,9,9,6,0,255,112,136,136,136,136,136,168,112, + 8,5,8,8,6,0,0,240,136,136,240,136,136,136,136,5, + 8,8,6,0,0,112,136,128,112,8,8,136,112,5,8,8, + 6,0,0,248,32,32,32,32,32,32,32,5,8,8,6,0, + 0,136,136,136,136,136,136,136,112,5,8,8,6,0,0,136, + 136,136,136,80,80,32,32,5,8,8,6,0,0,136,136,136, + 136,168,168,216,136,5,8,8,6,0,0,136,136,136,80,32, + 80,136,136,5,8,8,6,0,0,136,136,136,136,80,32,32, + 32,5,8,8,6,0,0,248,8,16,32,64,128,128,248,2, + 10,10,6,2,255,192,128,128,128,128,128,128,128,128,192,5, + 10,10,6,1,254,128,128,64,64,32,32,16,16,8,8,2, + 10,10,6,1,255,192,64,64,64,64,64,64,64,64,192,5, + 3,3,6,0,5,32,80,136,6,1,1,6,0,254,252,2, + 2,2,6,1,7,128,64,5,5,5,6,0,0,120,136,136, + 152,104,5,8,8,6,0,0,128,128,128,240,136,136,136,240, + 5,5,5,6,0,0,112,136,128,128,120,5,8,8,6,0, + 0,8,8,8,120,136,136,136,120,5,5,5,6,0,0,112, + 136,248,128,120,4,8,8,6,1,0,48,64,224,64,64,64, + 64,64,5,7,7,6,0,254,120,136,136,136,120,8,112,5, + 8,8,6,0,0,128,128,128,240,136,136,136,136,3,8,8, + 6,1,0,64,0,0,192,64,64,64,224,3,10,10,6,0, + 254,32,0,0,96,32,32,32,32,32,192,5,8,8,6,0, + 0,128,128,128,144,160,224,144,136,3,8,8,6,1,0,192, + 64,64,64,64,64,64,224,5,5,5,6,0,0,240,168,168, + 168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,5, + 6,0,0,112,136,136,136,112,5,7,7,6,0,254,240,136, + 136,136,240,128,128,5,7,7,6,0,254,120,136,136,136,120, + 8,8,5,5,5,6,0,0,176,200,128,128,128,5,5,5, + 6,0,0,120,128,112,8,240,4,8,8,6,1,0,64,64, + 64,224,64,64,64,48,5,5,5,6,0,0,136,136,136,152, + 104,5,5,5,6,0,0,136,136,80,80,32,5,5,5,6, + 0,0,168,168,168,168,80,5,5,5,6,0,0,136,80,32, + 80,136,5,7,7,6,0,254,136,136,136,136,120,8,112,5, + 5,5,6,0,0,248,16,32,64,248,3,11,11,6,1,254, + 32,64,64,64,64,128,64,64,64,64,32,1,10,10,6,2, + 255,128,128,128,128,128,128,128,128,128,128,3,11,11,6,1, + 254,128,64,64,64,64,32,64,64,64,64,128,5,2,2,6, + 0,4,104,176,0,0,0,6,0,0}; +/* + Fontname: ProFont15 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=15 x= 4 y= 8 dx= 7 dy= 0 ascent=12 len=15 + Font Bounding box w= 7 h=14 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont15[3186] U8G_FONT_SECTION("u8g_font_profont15") = { + 0,7,14,0,253,9,1,217,3,175,32,255,253,12,253,11, + 253,0,0,0,7,0,0,1,9,9,7,3,0,128,128,128, + 128,128,128,128,0,128,4,4,4,7,1,7,144,144,144,144, + 6,6,6,7,0,3,72,252,72,72,252,72,5,13,13,7, + 0,254,32,32,112,168,160,160,112,40,40,168,112,32,32,7, + 9,9,7,0,0,126,162,164,168,84,42,74,138,132,6,9, + 9,7,0,0,112,136,144,160,64,160,148,136,116,1,4,4, + 7,3,7,128,128,128,128,4,13,13,7,1,254,16,32,64, + 128,128,128,128,128,128,128,64,32,16,4,13,13,7,1,254, + 128,64,32,16,16,16,16,16,16,16,32,64,128,5,6,6, + 7,0,3,32,168,112,112,168,32,5,5,5,7,0,1,32, + 32,248,32,32,3,5,5,7,1,253,96,96,32,64,128,4, + 1,1,7,1,3,240,2,2,2,7,2,0,192,192,6,12, + 12,7,0,254,4,4,8,8,16,16,32,32,64,64,128,128, + 6,9,9,7,0,0,120,132,140,148,164,196,132,132,120,7, + 9,9,7,0,0,16,112,16,16,16,16,16,16,254,6,9, + 9,7,0,0,120,132,4,4,8,16,32,64,252,6,9,9, + 7,0,0,120,132,4,4,56,4,4,132,120,6,9,9,7, + 0,0,8,24,40,72,136,252,8,8,28,6,9,9,7,0, + 0,252,128,128,248,4,4,4,132,120,6,9,9,7,0,0, + 120,128,128,248,132,132,132,132,120,6,9,9,7,0,0,252, + 4,4,8,16,32,32,32,32,6,9,9,7,0,0,120,132, + 132,132,120,132,132,132,120,6,9,9,7,0,0,120,132,132, + 132,132,124,4,4,120,2,7,7,7,2,0,192,192,0,0, + 0,192,192,3,10,10,7,1,253,96,96,0,0,0,96,96, + 32,64,128,5,9,9,7,1,0,8,16,32,64,128,64,32, + 16,8,6,4,4,7,0,3,252,0,0,252,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,6,9,9,7,0, + 0,120,132,4,4,8,16,32,0,32,6,9,9,7,0,0, + 120,132,156,164,164,152,128,128,124,6,9,9,7,0,0,48, + 48,72,72,132,252,132,132,132,6,9,9,7,0,0,248,132, + 132,132,248,132,132,132,248,6,9,9,7,0,0,120,132,128, + 128,128,128,128,132,120,6,9,9,7,0,0,248,132,132,132, + 132,132,132,132,248,6,9,9,7,0,0,252,128,128,128,248, + 128,128,128,252,6,9,9,7,0,0,252,128,128,128,248,128, + 128,128,128,6,9,9,7,0,0,120,132,128,128,140,132,132, + 132,120,6,9,9,7,0,0,132,132,132,132,252,132,132,132, + 132,7,9,9,7,0,0,254,16,16,16,16,16,16,16,254, + 6,9,9,7,0,0,4,4,4,4,4,132,132,132,120,6, + 9,9,7,0,0,132,136,144,160,192,160,144,136,132,6,9, + 9,7,0,0,128,128,128,128,128,128,128,128,252,7,9,9, + 7,0,0,130,198,170,146,146,130,130,130,130,6,9,9,7, + 0,0,132,196,164,148,140,132,132,132,132,6,9,9,7,0, + 0,120,132,132,132,132,132,132,132,120,6,9,9,7,0,0, + 248,132,132,132,248,128,128,128,128,6,10,10,7,0,255,120, + 132,132,132,132,132,164,148,120,4,6,9,9,7,0,0,248, + 132,132,132,248,132,132,132,132,6,9,9,7,0,0,120,132, + 128,128,120,4,4,132,120,7,9,9,7,0,0,254,16,16, + 16,16,16,16,16,16,6,9,9,7,0,0,132,132,132,132, + 132,132,132,132,120,7,9,9,7,0,0,130,130,130,68,68, + 40,40,16,16,7,9,9,7,0,0,130,130,130,130,146,146, + 170,198,130,6,9,9,7,0,0,132,132,132,72,48,48,72, + 132,132,7,9,9,7,0,0,130,130,130,68,40,16,16,16, + 16,6,9,9,7,0,0,252,4,8,16,32,64,128,128,252, + 3,12,12,7,2,255,224,128,128,128,128,128,128,128,128,128, + 128,224,6,12,12,7,1,254,128,128,64,64,32,32,16,16, + 8,8,4,4,3,12,12,7,1,255,224,32,32,32,32,32, + 32,32,32,32,32,224,5,3,3,7,1,6,32,80,136,7, + 1,1,7,0,254,254,3,3,3,7,1,8,128,64,32,6, + 6,6,7,0,0,124,132,132,140,148,100,6,9,9,7,0, + 0,128,128,128,248,132,132,132,132,248,6,6,6,7,0,0, + 120,132,128,128,128,124,6,9,9,7,0,0,4,4,4,124, + 132,132,132,132,124,6,6,6,7,0,0,120,132,252,128,128, + 124,4,9,9,7,1,0,48,64,64,224,64,64,64,64,64, + 6,9,9,7,0,253,124,132,132,132,132,124,4,4,120,6, + 9,9,7,0,0,128,128,128,248,132,132,132,132,132,3,9, + 9,7,2,0,64,0,0,192,64,64,64,64,224,3,12,12, + 7,1,253,32,0,0,96,32,32,32,32,32,32,32,192,6, + 9,9,7,0,0,128,128,128,136,144,160,208,136,132,3,9, + 9,7,2,0,192,64,64,64,64,64,64,64,224,7,6,6, + 7,0,0,252,146,146,146,146,146,6,6,6,7,0,0,152, + 164,196,132,132,132,6,6,6,7,0,0,120,132,132,132,132, + 120,6,9,9,7,0,253,248,132,132,132,132,248,128,128,128, + 6,9,9,7,0,253,124,132,132,132,132,124,4,4,4,6, + 6,6,7,0,0,152,164,192,128,128,128,6,6,6,7,0, + 0,124,128,120,4,4,248,4,9,9,7,1,0,64,64,64, + 224,64,64,64,64,48,6,6,6,7,0,0,132,132,132,140, + 148,100,6,6,6,7,0,0,132,132,72,72,48,48,7,6, + 6,7,0,0,146,146,146,146,146,108,6,6,6,7,0,0, + 132,72,48,48,72,132,6,9,9,7,0,253,132,132,132,132, + 132,124,4,4,120,6,6,6,7,0,0,252,8,16,32,64, + 252,4,15,15,7,1,253,48,64,64,64,64,64,64,128,64, + 64,64,64,64,64,48,1,13,13,7,3,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,4,15,15,7,1,253,192, + 32,32,32,32,32,32,16,32,32,32,32,32,32,192,6,2, + 2,7,0,4,100,152,0,0,0,7,0,0,0,0,0,7, + 0,0,0,0,0,7,0,0,2,4,4,7,0,255,64,64, + 64,128,7,14,14,7,0,254,6,8,16,16,16,56,16,16, + 16,16,16,16,32,192,5,4,4,7,0,255,72,72,72,144, + 7,1,1,7,0,0,146,3,6,6,7,2,3,64,224,64, + 64,64,64,3,6,6,7,2,3,64,224,64,64,224,64,5, + 3,3,7,1,8,32,80,136,7,10,10,7,0,0,126,164, + 168,176,96,84,170,42,42,20,6,12,12,7,0,0,68,40, + 16,120,132,128,128,120,4,4,132,120,2,5,5,7,0,0, + 64,128,128,128,64,6,9,9,7,0,0,124,144,144,144,152, + 144,144,144,124,0,0,0,7,0,0,0,0,0,7,0,0, + 0,0,0,7,0,0,0,0,0,7,0,0,2,4,4,7, + 3,5,64,128,128,128,2,4,4,7,3,5,64,64,64,128, + 5,4,4,7,1,5,72,144,144,144,5,4,4,7,1,5, + 72,72,72,144,6,6,6,7,0,2,48,120,252,252,120,48, + 4,1,1,7,1,3,240,7,1,1,7,0,3,254,6,2, + 2,7,0,8,100,152,7,4,4,7,0,5,242,94,82,82, + 6,11,11,7,0,0,68,40,16,0,0,124,128,120,4,4, + 248,2,5,5,7,0,0,128,64,64,64,128,6,6,6,7, + 0,0,104,148,156,144,144,108,0,0,0,7,0,0,0,0, + 0,7,0,0,7,12,12,7,0,0,68,0,0,130,130,130, + 68,40,16,16,16,16,0,0,0,7,0,0,1,9,9,7, + 4,0,128,0,128,128,128,128,128,128,128,5,10,10,7,0, + 254,32,32,112,168,160,160,160,120,32,32,6,11,11,7,0, + 0,96,144,128,128,240,128,128,128,132,136,240,7,7,7,7, + 0,0,130,68,56,40,56,68,130,7,10,10,7,0,0,130, + 68,40,254,16,16,254,16,16,16,1,13,13,7,3,254,128, + 128,128,128,128,0,0,0,128,128,128,128,128,6,13,13,7, + 0,255,120,132,132,68,160,144,72,36,20,136,132,132,120,4, + 1,1,7,1,8,144,6,9,9,7,0,0,240,8,116,132, + 132,132,116,8,240,5,8,8,7,1,4,120,136,136,136,120, + 0,0,248,6,5,5,7,0,0,68,136,136,136,68,6,4, + 4,7,0,1,252,4,4,4,5,1,1,7,0,3,248,6, + 8,8,7,0,1,240,8,100,148,148,228,148,136,4,1,1, + 7,1,8,240,5,5,5,7,1,6,112,136,136,136,112,5, + 6,6,7,0,1,32,32,248,32,32,248,4,5,5,7,1, + 7,96,144,32,64,240,4,5,5,7,1,7,96,144,32,144, + 96,3,3,3,7,3,8,96,224,192,6,9,9,7,0,253, + 136,136,136,136,136,244,128,128,128,6,10,10,7,0,0,60, + 84,148,148,84,60,20,20,20,20,2,2,2,7,3,3,192, + 192,2,3,3,7,2,254,192,64,128,3,5,5,7,2,7, + 192,64,64,64,224,5,8,8,7,1,4,112,136,136,136,112, + 0,0,248,6,5,5,7,0,0,136,68,68,68,136,7,12, + 12,7,0,0,96,32,32,34,116,8,16,36,76,148,30,4, + 7,12,12,7,0,0,96,32,32,34,116,8,16,44,82,132, + 8,30,7,12,12,7,0,0,96,144,32,146,100,8,16,36, + 76,148,30,4,6,9,9,7,0,0,16,0,16,32,64,128, + 128,132,120,6,12,12,7,0,0,64,32,16,48,48,72,72, + 132,252,132,132,132,6,12,12,7,0,0,8,16,32,48,48, + 72,72,132,252,132,132,132,6,12,12,7,0,0,16,40,68, + 48,48,72,72,132,252,132,132,132,6,12,12,7,0,0,100, + 152,0,48,48,72,72,132,252,132,132,132,6,12,12,7,0, + 0,72,0,0,48,48,72,72,132,252,132,132,132,6,12,12, + 7,0,0,48,72,72,48,48,72,72,132,252,132,132,132,6, + 9,9,7,0,0,124,144,144,144,248,144,144,144,156,6,11, + 11,7,0,254,120,132,128,128,128,128,128,132,120,16,32,6, + 12,12,7,0,0,64,32,16,252,128,128,128,248,128,128,128, + 252,6,12,12,7,0,0,8,16,32,252,128,128,128,248,128, + 128,128,252,6,12,12,7,0,0,16,40,68,252,128,128,128, + 248,128,128,128,252,6,12,12,7,0,0,72,0,0,252,128, + 128,128,248,128,128,128,252,7,12,12,7,0,0,64,32,16, + 254,16,16,16,16,16,16,16,254,7,12,12,7,0,0,4, + 8,16,254,16,16,16,16,16,16,16,254,7,12,12,7,0, + 0,16,40,68,254,16,16,16,16,16,16,16,254,7,12,12, + 7,0,0,72,0,0,254,16,16,16,16,16,16,16,254,6, + 9,9,7,0,0,120,68,68,68,228,68,68,68,120,6,12, + 12,7,0,0,100,152,0,132,196,164,148,140,132,132,132,132, + 6,12,12,7,0,0,64,32,16,120,132,132,132,132,132,132, + 132,120,6,12,12,7,0,0,8,16,32,120,132,132,132,132, + 132,132,132,120,6,12,12,7,0,0,16,40,68,120,132,132, + 132,132,132,132,132,120,6,12,12,7,0,0,100,152,0,120, + 132,132,132,132,132,132,132,120,6,12,12,7,0,0,72,0, + 0,120,132,132,132,132,132,132,132,120,5,5,5,7,0,2, + 136,80,32,80,136,6,9,9,7,0,0,120,132,140,148,164, + 196,132,132,120,6,12,12,7,0,0,64,32,16,132,132,132, + 132,132,132,132,132,120,6,12,12,7,0,0,8,16,32,132, + 132,132,132,132,132,132,132,120,6,12,12,7,0,0,16,40, + 68,0,132,132,132,132,132,132,132,120,6,12,12,7,0,0, + 72,0,0,132,132,132,132,132,132,132,132,120,7,12,12,7, + 0,0,4,8,16,130,130,130,68,40,16,16,16,16,6,9, + 9,7,0,0,128,248,132,132,132,248,128,128,128,6,11,11, + 7,0,255,56,68,132,136,144,144,136,132,132,152,128,6,11, + 11,7,0,0,64,32,16,0,0,124,132,132,140,148,100,6, + 11,11,7,0,0,4,8,16,0,0,124,132,132,140,148,100, + 6,11,11,7,0,0,16,40,68,0,0,124,132,132,140,148, + 100,6,10,10,7,0,0,100,152,0,0,124,132,132,140,148, + 100,6,9,9,7,0,0,72,0,0,124,132,132,140,148,100, + 6,10,10,7,0,0,48,72,72,48,124,132,132,140,148,100, + 6,6,6,7,0,0,120,164,188,160,160,124,6,8,8,7, + 0,254,120,132,128,128,128,124,16,32,6,11,11,7,0,0, + 64,32,16,0,0,120,132,252,128,128,124,6,11,11,7,0, + 0,4,8,16,0,0,120,132,252,128,128,124,6,11,11,7, + 0,0,16,40,68,0,0,120,132,252,128,128,124,6,9,9, + 7,0,0,72,0,0,120,132,252,128,128,124,4,11,11,7, + 1,0,128,64,32,0,0,96,32,32,32,32,112,4,11,11, + 7,2,0,16,32,64,0,0,192,64,64,64,64,224,5,11, + 11,7,1,0,32,80,136,0,0,96,32,32,32,32,112,4, + 9,9,7,1,0,144,0,0,96,32,32,32,32,112,6,11, + 11,7,0,0,80,32,80,8,4,124,132,132,132,132,120,6, + 10,10,7,0,0,100,152,0,0,152,164,196,132,132,132,6, + 11,11,7,0,0,64,32,16,0,0,120,132,132,132,132,120, + 6,11,11,7,0,0,4,8,16,0,0,120,132,132,132,132, + 120,6,11,11,7,0,0,16,40,68,0,0,120,132,132,132, + 132,120,6,10,10,7,0,0,100,152,0,0,120,132,132,132, + 132,120,6,9,9,7,0,0,72,0,0,120,132,132,132,132, + 120,5,5,5,7,0,1,32,0,248,0,32,6,6,6,7, + 0,0,120,140,148,164,196,120,6,11,11,7,0,0,64,32, + 16,0,0,132,132,132,140,148,100,6,11,11,7,0,0,4, + 8,16,0,0,132,132,132,140,148,100,6,11,11,7,0,0, + 16,40,68,0,0,132,132,132,140,148,100,6,9,9,7,0, + 0,72,0,0,132,132,132,140,148,100,6,14,14,7,0,253, + 4,8,16,0,0,132,132,132,132,132,124,4,4,120,6,12, + 12,7,0,253,128,128,128,248,132,132,132,132,248,128,128,128, + 6,12,12,7,0,253,72,0,0,132,132,132,132,132,124,4, + 4,120}; +/* + Fontname: ProFont15 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=15 x= 3 y= 8 dx= 7 dy= 0 ascent=12 len=15 + Font Bounding box w= 7 h=14 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont15r[1372] U8G_FONT_SECTION("u8g_font_profont15r") = { + 0,7,14,0,253,9,1,217,3,175,32,127,253,12,253,11, + 253,0,0,0,7,0,0,1,9,9,7,3,0,128,128,128, + 128,128,128,128,0,128,4,4,4,7,1,7,144,144,144,144, + 6,6,6,7,0,3,72,252,72,72,252,72,5,13,13,7, + 0,254,32,32,112,168,160,160,112,40,40,168,112,32,32,7, + 9,9,7,0,0,126,162,164,168,84,42,74,138,132,6,9, + 9,7,0,0,112,136,144,160,64,160,148,136,116,1,4,4, + 7,3,7,128,128,128,128,4,13,13,7,1,254,16,32,64, + 128,128,128,128,128,128,128,64,32,16,4,13,13,7,1,254, + 128,64,32,16,16,16,16,16,16,16,32,64,128,5,6,6, + 7,0,3,32,168,112,112,168,32,5,5,5,7,0,1,32, + 32,248,32,32,3,5,5,7,1,253,96,96,32,64,128,4, + 1,1,7,1,3,240,2,2,2,7,2,0,192,192,6,12, + 12,7,0,254,4,4,8,8,16,16,32,32,64,64,128,128, + 6,9,9,7,0,0,120,132,140,148,164,196,132,132,120,7, + 9,9,7,0,0,16,112,16,16,16,16,16,16,254,6,9, + 9,7,0,0,120,132,4,4,8,16,32,64,252,6,9,9, + 7,0,0,120,132,4,4,56,4,4,132,120,6,9,9,7, + 0,0,8,24,40,72,136,252,8,8,28,6,9,9,7,0, + 0,252,128,128,248,4,4,4,132,120,6,9,9,7,0,0, + 120,128,128,248,132,132,132,132,120,6,9,9,7,0,0,252, + 4,4,8,16,32,32,32,32,6,9,9,7,0,0,120,132, + 132,132,120,132,132,132,120,6,9,9,7,0,0,120,132,132, + 132,132,124,4,4,120,2,7,7,7,2,0,192,192,0,0, + 0,192,192,3,10,10,7,1,253,96,96,0,0,0,96,96, + 32,64,128,5,9,9,7,1,0,8,16,32,64,128,64,32, + 16,8,6,4,4,7,0,3,252,0,0,252,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,6,9,9,7,0, + 0,120,132,4,4,8,16,32,0,32,6,9,9,7,0,0, + 120,132,156,164,164,152,128,128,124,6,9,9,7,0,0,48, + 48,72,72,132,252,132,132,132,6,9,9,7,0,0,248,132, + 132,132,248,132,132,132,248,6,9,9,7,0,0,120,132,128, + 128,128,128,128,132,120,6,9,9,7,0,0,248,132,132,132, + 132,132,132,132,248,6,9,9,7,0,0,252,128,128,128,248, + 128,128,128,252,6,9,9,7,0,0,252,128,128,128,248,128, + 128,128,128,6,9,9,7,0,0,120,132,128,128,140,132,132, + 132,120,6,9,9,7,0,0,132,132,132,132,252,132,132,132, + 132,7,9,9,7,0,0,254,16,16,16,16,16,16,16,254, + 6,9,9,7,0,0,4,4,4,4,4,132,132,132,120,6, + 9,9,7,0,0,132,136,144,160,192,160,144,136,132,6,9, + 9,7,0,0,128,128,128,128,128,128,128,128,252,7,9,9, + 7,0,0,130,198,170,146,146,130,130,130,130,6,9,9,7, + 0,0,132,196,164,148,140,132,132,132,132,6,9,9,7,0, + 0,120,132,132,132,132,132,132,132,120,6,9,9,7,0,0, + 248,132,132,132,248,128,128,128,128,6,10,10,7,0,255,120, + 132,132,132,132,132,164,148,120,4,6,9,9,7,0,0,248, + 132,132,132,248,132,132,132,132,6,9,9,7,0,0,120,132, + 128,128,120,4,4,132,120,7,9,9,7,0,0,254,16,16, + 16,16,16,16,16,16,6,9,9,7,0,0,132,132,132,132, + 132,132,132,132,120,7,9,9,7,0,0,130,130,130,68,68, + 40,40,16,16,7,9,9,7,0,0,130,130,130,130,146,146, + 170,198,130,6,9,9,7,0,0,132,132,132,72,48,48,72, + 132,132,7,9,9,7,0,0,130,130,130,68,40,16,16,16, + 16,6,9,9,7,0,0,252,4,8,16,32,64,128,128,252, + 3,12,12,7,2,255,224,128,128,128,128,128,128,128,128,128, + 128,224,6,12,12,7,1,254,128,128,64,64,32,32,16,16, + 8,8,4,4,3,12,12,7,1,255,224,32,32,32,32,32, + 32,32,32,32,32,224,5,3,3,7,1,6,32,80,136,7, + 1,1,7,0,254,254,3,3,3,7,1,8,128,64,32,6, + 6,6,7,0,0,124,132,132,140,148,100,6,9,9,7,0, + 0,128,128,128,248,132,132,132,132,248,6,6,6,7,0,0, + 120,132,128,128,128,124,6,9,9,7,0,0,4,4,4,124, + 132,132,132,132,124,6,6,6,7,0,0,120,132,252,128,128, + 124,4,9,9,7,1,0,48,64,64,224,64,64,64,64,64, + 6,9,9,7,0,253,124,132,132,132,132,124,4,4,120,6, + 9,9,7,0,0,128,128,128,248,132,132,132,132,132,3,9, + 9,7,2,0,64,0,0,192,64,64,64,64,224,3,12,12, + 7,1,253,32,0,0,96,32,32,32,32,32,32,32,192,6, + 9,9,7,0,0,128,128,128,136,144,160,208,136,132,3,9, + 9,7,2,0,192,64,64,64,64,64,64,64,224,7,6,6, + 7,0,0,252,146,146,146,146,146,6,6,6,7,0,0,152, + 164,196,132,132,132,6,6,6,7,0,0,120,132,132,132,132, + 120,6,9,9,7,0,253,248,132,132,132,132,248,128,128,128, + 6,9,9,7,0,253,124,132,132,132,132,124,4,4,4,6, + 6,6,7,0,0,152,164,192,128,128,128,6,6,6,7,0, + 0,124,128,120,4,4,248,4,9,9,7,1,0,64,64,64, + 224,64,64,64,64,48,6,6,6,7,0,0,132,132,132,140, + 148,100,6,6,6,7,0,0,132,132,72,72,48,48,7,6, + 6,7,0,0,146,146,146,146,146,108,6,6,6,7,0,0, + 132,72,48,48,72,132,6,9,9,7,0,253,132,132,132,132, + 132,124,4,4,120,6,6,6,7,0,0,252,8,16,32,64, + 252,4,15,15,7,1,253,48,64,64,64,64,64,64,128,64, + 64,64,64,64,64,48,1,13,13,7,3,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,4,15,15,7,1,253,192, + 32,32,32,32,32,32,16,32,32,32,32,32,32,192,6,2, + 2,7,0,4,100,152,0,0,0,7,0,0}; +/* + Fontname: ProFont17 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w= 9 h=17 x= 5 y=10 dx=14 dy= 0 ascent=14 len=32 + Font Bounding box w=14 h=16 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =13 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont17[3681] U8G_FONT_SECTION("u8g_font_profont17") = { + 0,14,16,0,253,11,2,35,4,78,32,255,253,14,253,13, + 253,0,0,0,14,0,0,2,11,11,14,3,0,192,192,192, + 192,192,192,192,192,0,192,192,5,5,5,14,1,8,216,216, + 216,216,216,7,7,7,14,1,3,108,254,254,108,254,254,108, + 8,15,15,14,0,254,24,24,60,126,219,216,124,62,31,219, + 219,126,60,24,24,8,11,11,14,0,0,63,127,219,222,124, + 60,62,123,219,206,196,8,11,11,14,0,0,48,120,204,204, + 216,112,243,222,204,254,123,2,5,5,14,3,8,192,192,192, + 192,192,6,15,15,14,1,254,12,24,48,96,192,192,192,192, + 192,192,192,96,48,24,12,6,15,15,14,1,254,192,96,48, + 24,12,12,12,12,12,12,12,24,48,96,192,8,8,8,14, + 0,3,24,219,255,60,60,255,219,24,8,8,8,14,0,1, + 24,24,24,255,255,24,24,24,4,6,6,14,1,253,112,112, + 112,48,96,192,5,2,2,14,1,4,248,248,3,3,3,14, + 2,0,224,224,224,9,16,32,14,0,253,1,128,1,128,3, + 0,3,0,6,0,6,0,12,0,12,0,24,0,24,0,48, + 0,48,0,96,0,96,0,192,0,192,0,8,11,11,14,0, + 0,60,126,195,199,207,219,243,227,195,126,60,8,11,11,14, + 0,0,24,120,120,24,24,24,24,24,24,255,255,8,11,11, + 14,0,0,60,126,195,195,6,12,24,48,96,255,255,8,11, + 11,14,0,0,60,126,195,195,30,28,6,195,195,126,60,8, + 11,11,14,0,0,6,14,30,54,102,198,255,255,6,15,15, + 8,11,11,14,0,0,255,255,192,252,254,3,3,3,195,126, + 60,8,11,11,14,0,0,62,126,192,252,254,195,195,195,195, + 126,60,8,11,11,14,0,0,255,255,3,3,6,12,24,24, + 24,24,24,8,11,11,14,0,0,60,126,195,195,126,60,126, + 195,195,126,60,8,11,11,14,0,0,60,126,195,195,195,195, + 127,63,3,126,124,3,8,8,14,2,0,224,224,224,0,0, + 224,224,224,4,11,11,14,1,253,112,112,112,0,0,112,112, + 112,48,96,192,7,11,11,14,1,0,6,12,24,48,96,192, + 96,48,24,12,6,8,5,5,14,0,3,255,255,0,255,255, + 7,11,11,14,1,0,192,96,48,24,12,6,12,24,48,96, + 192,8,11,11,14,0,0,60,126,195,195,6,12,24,16,0, + 24,24,8,11,11,14,0,0,60,126,195,207,223,219,223,206, + 192,127,63,8,11,11,14,0,0,24,60,60,102,102,195,255, + 255,195,195,195,8,11,11,14,0,0,252,254,195,195,254,252, + 198,195,195,254,252,8,11,11,14,0,0,60,126,195,195,192, + 192,192,195,195,126,60,8,11,11,14,0,0,252,254,195,195, + 195,195,195,195,195,254,252,8,11,11,14,0,0,255,255,192, + 192,252,252,192,192,192,255,255,8,11,11,14,0,0,255,255, + 192,192,252,252,192,192,192,192,192,8,11,11,14,0,0,60, + 126,195,195,192,207,207,195,195,126,60,8,11,11,14,0,0, + 195,195,195,195,255,255,195,195,195,195,195,8,11,11,14,0, + 0,255,255,24,24,24,24,24,24,24,255,255,8,11,11,14, + 0,0,3,3,3,3,3,3,195,195,195,126,60,8,11,11, + 14,0,0,195,198,204,216,240,224,240,216,204,198,195,8,11, + 11,14,0,0,192,192,192,192,192,192,192,192,192,255,255,8, + 11,11,14,0,0,195,231,255,255,219,219,219,195,195,195,195, + 8,11,11,14,0,0,195,227,243,219,207,199,195,195,195,195, + 195,8,11,11,14,0,0,60,126,195,195,195,195,195,195,195, + 126,60,8,11,11,14,0,0,252,254,195,195,254,252,192,192, + 192,192,192,8,13,13,14,0,254,60,126,195,195,195,195,195, + 219,207,126,62,6,3,8,11,11,14,0,0,252,254,195,195, + 254,252,198,195,195,195,195,8,11,11,14,0,0,60,126,195, + 192,124,62,7,195,195,126,60,8,11,11,14,0,0,255,255, + 24,24,24,24,24,24,24,24,24,8,11,11,14,0,0,195, + 195,195,195,195,195,195,195,195,126,60,8,11,11,14,0,0, + 195,195,195,195,195,102,102,60,60,24,24,8,11,11,14,0, + 0,195,195,195,195,219,219,219,255,255,231,195,8,11,11,14, + 0,0,195,195,195,102,60,24,60,102,195,195,195,8,11,11, + 14,0,0,195,195,195,195,231,126,60,24,24,24,24,8,11, + 11,14,0,0,255,255,3,6,12,24,48,96,192,255,255,4, + 15,15,14,3,254,240,240,192,192,192,192,192,192,192,192,192, + 192,192,240,240,9,16,32,14,0,253,192,0,192,0,96,0, + 96,0,48,0,48,0,24,0,24,0,12,0,12,0,6,0, + 6,0,3,0,3,0,1,128,1,128,4,15,15,14,1,254, + 240,240,48,48,48,48,48,48,48,48,48,48,48,240,240,7, + 5,5,14,1,6,16,56,108,198,130,9,2,4,14,0,253, + 255,128,255,128,3,4,4,14,1,9,128,192,96,32,8,8, + 8,14,0,0,63,127,195,195,199,207,123,51,8,11,11,14, + 0,0,192,192,192,252,254,195,195,195,195,254,252,8,8,8, + 14,0,0,60,126,195,195,192,192,127,63,8,11,11,14,0, + 0,3,3,3,63,127,195,195,195,195,127,63,8,8,8,14, + 0,0,60,126,195,255,255,192,127,63,6,11,11,14,2,0, + 28,60,96,240,240,96,96,96,96,96,96,8,11,11,14,0, + 253,63,127,195,195,195,195,127,63,3,62,60,8,11,11,14, + 0,0,192,192,192,252,254,195,195,195,195,195,195,6,11,11, + 14,1,0,48,48,0,240,240,48,48,48,48,252,252,5,14, + 14,14,0,253,24,24,0,120,120,24,24,24,24,24,24,24, + 240,224,8,11,11,14,0,0,192,192,192,198,204,216,240,248, + 204,198,195,6,11,11,14,1,0,240,240,48,48,48,48,48, + 48,48,252,252,8,8,8,14,0,0,252,254,219,219,219,219, + 219,219,8,8,8,14,0,0,204,222,243,227,195,195,195,195, + 8,8,8,14,0,0,60,126,195,195,195,195,126,60,8,11, + 11,14,0,253,252,254,195,195,195,195,254,252,192,192,192,8, + 11,11,14,0,253,63,127,195,195,195,195,127,63,3,3,3, + 8,8,8,14,0,0,204,222,243,227,192,192,192,192,8,8, + 8,14,0,0,63,255,192,252,63,3,255,252,6,11,11,14, + 2,0,96,96,96,240,240,96,96,96,96,60,28,8,8,8, + 14,0,0,195,195,195,195,199,207,123,51,8,8,8,14,0, + 0,195,195,195,102,102,60,60,24,8,8,8,14,0,0,219, + 219,219,219,219,219,255,102,8,8,8,14,0,0,195,102,60, + 24,24,60,102,195,8,11,11,14,0,253,195,195,195,195,195, + 195,127,63,3,62,60,7,8,8,14,0,0,254,254,12,24, + 48,96,254,254,5,17,17,14,1,253,24,56,48,48,48,48, + 48,96,192,96,48,48,48,48,48,56,24,2,15,15,14,3, + 254,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 5,17,17,14,2,253,192,224,96,96,96,96,96,48,24,48, + 96,96,96,96,96,224,192,8,3,3,14,0,5,113,219,142, + 0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14, + 0,0,4,5,5,14,0,254,48,48,48,96,192,8,17,17, + 14,0,253,7,15,24,24,24,24,60,60,24,24,24,24,24, + 24,24,240,224,7,5,5,14,0,254,54,54,54,108,216,8, + 2,2,14,0,0,219,219,4,9,9,14,2,2,96,96,240, + 240,96,96,96,96,96,4,9,9,14,2,2,96,96,240,240, + 96,240,240,96,96,6,3,3,14,1,10,48,120,204,9,13, + 26,14,0,0,63,128,127,128,217,128,219,0,222,0,124,0, + 56,0,63,0,127,128,214,128,150,128,31,128,15,0,8,14, + 14,14,0,0,102,60,24,60,126,195,192,124,62,7,195,195, + 126,60,4,7,7,14,0,0,48,96,192,192,192,96,48,8, + 11,11,14,0,0,63,127,216,216,220,220,216,216,216,127,63, + 0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14, + 0,0,0,0,0,14,0,0,4,5,5,14,3,6,48,96, + 192,192,192,4,5,5,14,3,6,48,48,48,96,192,7,5, + 5,14,1,6,54,108,216,216,216,7,5,5,14,1,6,54, + 54,54,108,216,7,7,7,14,0,2,56,124,254,254,254,124, + 56,5,2,2,14,2,5,248,248,9,2,4,14,0,5,255, + 128,255,128,8,3,3,14,0,9,113,219,142,9,5,10,14, + 0,6,252,128,39,128,39,128,36,128,36,128,8,13,13,14, + 0,0,102,60,24,0,0,63,255,192,252,63,3,255,252,4, + 7,7,14,0,0,192,96,48,48,48,96,192,8,8,8,14, + 0,0,36,126,219,223,223,216,127,39,0,0,0,14,0,0, + 0,0,0,14,0,0,8,14,14,14,0,0,102,102,0,195, + 195,195,195,231,126,60,24,24,24,24,0,0,0,14,0,0, + 2,11,11,14,5,0,192,192,0,192,192,192,192,192,192,192, + 192,8,12,12,14,0,254,24,24,60,126,219,219,216,216,127, + 63,24,24,8,12,12,14,0,0,120,252,204,192,240,240,192, + 192,192,199,254,252,8,8,8,14,0,0,129,66,60,36,36, + 60,66,129,8,11,11,14,0,0,195,102,60,255,255,24,255, + 255,24,24,24,2,15,15,14,3,254,192,192,192,192,192,192, + 0,0,0,192,192,192,192,192,192,8,16,16,14,0,254,60, + 126,99,99,51,216,204,198,99,51,27,204,198,198,126,60,4, + 2,2,14,2,9,144,240,8,11,11,14,0,0,120,252,134, + 123,251,195,251,123,134,252,120,6,9,9,14,2,5,60,124, + 204,204,124,60,0,252,252,8,7,7,14,0,0,51,102,204, + 204,204,102,51,8,4,4,14,0,2,255,255,3,3,8,2, + 2,14,0,4,255,255,8,10,10,14,0,1,248,252,6,243, + 251,219,243,251,222,204,5,2,2,14,2,9,248,248,6,6, + 6,14,2,6,48,120,204,204,120,48,8,9,9,14,0,0, + 24,24,24,255,255,24,24,255,255,4,6,6,14,2,8,96, + 144,16,32,64,240,4,6,6,14,2,8,96,144,32,16,144, + 96,4,4,4,14,3,9,48,112,224,192,8,11,11,14,0, + 253,204,204,204,204,204,204,255,243,192,192,192,8,13,13,14, + 0,0,63,127,219,219,219,219,127,63,27,27,27,27,27,3, + 3,3,14,3,4,224,224,224,4,5,5,14,1,253,112,112, + 48,96,192,3,6,6,14,3,8,192,64,64,64,64,224,6, + 9,9,14,2,5,48,120,204,204,120,48,0,252,252,8,7, + 7,14,0,0,204,102,51,51,51,102,204,9,14,28,14,0, + 0,96,0,32,0,32,0,32,128,33,0,114,0,4,0,8, + 0,17,0,35,0,69,0,137,0,15,128,1,0,9,14,28, + 14,0,0,96,0,32,0,32,0,32,128,33,0,114,0,4, + 0,8,0,19,0,36,128,64,128,129,0,2,0,7,128,9, + 14,28,14,0,0,48,0,72,0,16,0,8,128,73,0,50, + 0,4,0,8,0,17,0,35,0,69,0,137,0,15,128,1, + 0,8,11,11,14,0,0,24,24,0,8,24,48,96,195,195, + 126,60,8,14,14,14,0,0,96,48,24,24,60,60,102,102, + 195,255,255,195,195,195,8,14,14,14,0,0,6,12,24,24, + 60,60,102,102,195,255,255,195,195,195,8,14,14,14,0,0, + 24,60,102,24,60,60,102,102,195,255,255,195,195,195,8,14, + 14,14,0,0,115,219,142,24,60,60,102,102,195,255,255,195, + 195,195,8,14,14,14,0,0,102,102,0,24,60,60,102,102, + 195,255,255,195,195,195,8,14,14,14,0,0,24,60,36,60, + 24,60,102,102,195,255,255,195,195,195,8,11,11,14,0,0, + 63,127,216,216,252,252,216,216,216,223,223,8,14,14,14,0, + 253,60,126,195,195,192,192,192,195,195,126,60,24,48,96,8, + 14,14,14,0,0,96,48,24,255,255,192,192,252,252,192,192, + 192,255,255,8,14,14,14,0,0,6,12,24,255,255,192,192, + 252,252,192,192,192,255,255,8,14,14,14,0,0,24,60,102, + 255,255,192,192,252,252,192,192,192,255,255,8,14,14,14,0, + 0,102,102,0,255,255,192,192,252,252,192,192,192,255,255,8, + 14,14,14,0,0,96,48,24,255,255,24,24,24,24,24,24, + 24,255,255,8,14,14,14,0,0,6,12,24,255,255,24,24, + 24,24,24,24,24,255,255,8,14,14,14,0,0,24,60,102, + 255,255,24,24,24,24,24,24,24,255,255,8,14,14,14,0, + 0,102,102,0,255,255,24,24,24,24,24,24,24,255,255,8, + 11,11,14,0,0,124,126,99,99,243,243,99,99,99,126,124, + 8,14,14,14,0,0,113,219,142,195,227,243,219,207,199,195, + 195,195,195,195,8,14,14,14,0,0,96,48,24,60,126,195, + 195,195,195,195,195,195,126,60,8,14,14,14,0,0,6,12, + 24,60,126,195,195,195,195,195,195,195,126,60,8,14,14,14, + 0,0,24,60,102,0,60,126,195,195,195,195,195,195,126,60, + 8,14,14,14,0,0,113,219,142,60,126,195,195,195,195,195, + 195,195,126,60,8,14,14,14,0,0,102,102,0,60,126,195, + 195,195,195,195,195,195,126,60,8,7,7,14,0,2,195,102, + 60,24,60,102,195,8,11,11,14,0,0,60,126,195,199,207, + 219,243,227,195,126,60,8,14,14,14,0,0,96,48,24,195, + 195,195,195,195,195,195,195,195,126,60,8,14,14,14,0,0, + 6,12,24,195,195,195,195,195,195,195,195,195,126,60,8,14, + 14,14,0,0,24,60,102,0,195,195,195,195,195,195,195,195, + 126,60,8,14,14,14,0,0,102,102,0,195,195,195,195,195, + 195,195,195,195,126,60,8,14,14,14,0,0,6,12,24,195, + 195,195,195,231,126,60,24,24,24,24,8,11,11,14,0,0, + 192,192,252,254,195,195,254,252,192,192,192,8,15,15,14,0, + 254,28,62,99,195,195,198,204,204,198,195,195,222,220,192,192, + 8,13,13,14,0,0,16,24,12,4,0,63,127,195,195,199, + 207,123,51,8,13,13,14,0,0,4,12,24,16,0,63,127, + 195,195,199,207,123,51,8,12,12,14,0,0,24,60,102,0, + 63,127,195,195,199,207,123,51,8,12,12,14,0,0,113,219, + 142,0,63,127,195,195,199,207,123,51,8,11,11,14,0,0, + 102,102,0,63,127,195,195,199,207,123,51,8,12,12,14,0, + 0,24,36,36,24,63,127,195,195,199,207,123,51,8,8,8, + 14,0,0,60,126,219,223,223,216,127,63,8,11,11,14,0, + 253,60,126,195,195,192,192,127,63,24,48,96,8,13,13,14, + 0,0,32,48,24,8,0,60,126,195,255,255,192,127,63,8, + 13,13,14,0,0,4,12,24,16,0,60,126,195,255,255,192, + 127,63,8,12,12,14,0,0,24,60,102,0,60,126,195,255, + 255,192,127,63,8,11,11,14,0,0,102,102,0,60,126,195, + 255,255,192,127,63,6,13,13,14,1,0,128,192,96,32,0, + 240,240,48,48,48,48,252,252,6,13,13,14,1,0,8,24, + 48,32,0,240,240,48,48,48,48,252,252,6,12,12,14,1, + 0,48,120,204,0,240,240,48,48,48,48,252,252,6,11,11, + 14,1,0,204,204,0,240,240,48,48,48,48,252,252,8,13, + 13,14,0,0,72,48,48,72,4,62,127,195,195,195,195,126, + 60,8,12,12,14,0,0,113,219,142,0,204,222,243,227,195, + 195,195,195,8,13,13,14,0,0,32,48,24,8,0,60,126, + 195,195,195,195,126,60,8,13,13,14,0,0,4,12,24,16, + 0,60,126,195,195,195,195,126,60,8,12,12,14,0,0,24, + 60,102,0,60,126,195,195,195,195,126,60,8,12,12,14,0, + 0,113,219,142,0,60,126,195,195,195,195,126,60,8,11,11, + 14,0,0,102,102,0,60,126,195,195,195,195,126,60,8,8, + 8,14,0,2,24,24,0,255,255,0,24,24,8,8,8,14, + 0,0,60,126,199,207,243,227,126,60,8,13,13,14,0,0, + 32,48,24,8,0,195,195,195,195,199,207,123,51,8,13,13, + 14,0,0,4,12,24,16,0,195,195,195,195,199,207,123,51, + 8,12,12,14,0,0,24,60,102,0,195,195,195,195,199,207, + 123,51,8,11,11,14,0,0,102,102,0,195,195,195,195,199, + 207,123,51,8,16,16,14,0,253,4,12,24,16,0,195,195, + 195,195,195,195,127,63,3,62,60,8,14,14,14,0,253,192, + 192,192,252,254,195,195,195,195,254,252,192,192,192,8,14,14, + 14,0,253,102,102,0,195,195,195,195,195,195,127,63,3,62, + 60}; +/* + Fontname: ProFont17 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w= 9 h=17 x= 3 y= 9 dx=14 dy= 0 ascent=14 len=32 + Font Bounding box w=14 h=16 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =13 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont17r[1590] U8G_FONT_SECTION("u8g_font_profont17r") = { + 0,14,16,0,253,11,2,35,4,78,32,127,253,14,253,13, + 253,0,0,0,14,0,0,2,11,11,14,3,0,192,192,192, + 192,192,192,192,192,0,192,192,5,5,5,14,1,8,216,216, + 216,216,216,7,7,7,14,1,3,108,254,254,108,254,254,108, + 8,15,15,14,0,254,24,24,60,126,219,216,124,62,31,219, + 219,126,60,24,24,8,11,11,14,0,0,63,127,219,222,124, + 60,62,123,219,206,196,8,11,11,14,0,0,48,120,204,204, + 216,112,243,222,204,254,123,2,5,5,14,3,8,192,192,192, + 192,192,6,15,15,14,1,254,12,24,48,96,192,192,192,192, + 192,192,192,96,48,24,12,6,15,15,14,1,254,192,96,48, + 24,12,12,12,12,12,12,12,24,48,96,192,8,8,8,14, + 0,3,24,219,255,60,60,255,219,24,8,8,8,14,0,1, + 24,24,24,255,255,24,24,24,4,6,6,14,1,253,112,112, + 112,48,96,192,5,2,2,14,1,4,248,248,3,3,3,14, + 2,0,224,224,224,9,16,32,14,0,253,1,128,1,128,3, + 0,3,0,6,0,6,0,12,0,12,0,24,0,24,0,48, + 0,48,0,96,0,96,0,192,0,192,0,8,11,11,14,0, + 0,60,126,195,199,207,219,243,227,195,126,60,8,11,11,14, + 0,0,24,120,120,24,24,24,24,24,24,255,255,8,11,11, + 14,0,0,60,126,195,195,6,12,24,48,96,255,255,8,11, + 11,14,0,0,60,126,195,195,30,28,6,195,195,126,60,8, + 11,11,14,0,0,6,14,30,54,102,198,255,255,6,15,15, + 8,11,11,14,0,0,255,255,192,252,254,3,3,3,195,126, + 60,8,11,11,14,0,0,62,126,192,252,254,195,195,195,195, + 126,60,8,11,11,14,0,0,255,255,3,3,6,12,24,24, + 24,24,24,8,11,11,14,0,0,60,126,195,195,126,60,126, + 195,195,126,60,8,11,11,14,0,0,60,126,195,195,195,195, + 127,63,3,126,124,3,8,8,14,2,0,224,224,224,0,0, + 224,224,224,4,11,11,14,1,253,112,112,112,0,0,112,112, + 112,48,96,192,7,11,11,14,1,0,6,12,24,48,96,192, + 96,48,24,12,6,8,5,5,14,0,3,255,255,0,255,255, + 7,11,11,14,1,0,192,96,48,24,12,6,12,24,48,96, + 192,8,11,11,14,0,0,60,126,195,195,6,12,24,16,0, + 24,24,8,11,11,14,0,0,60,126,195,207,223,219,223,206, + 192,127,63,8,11,11,14,0,0,24,60,60,102,102,195,255, + 255,195,195,195,8,11,11,14,0,0,252,254,195,195,254,252, + 198,195,195,254,252,8,11,11,14,0,0,60,126,195,195,192, + 192,192,195,195,126,60,8,11,11,14,0,0,252,254,195,195, + 195,195,195,195,195,254,252,8,11,11,14,0,0,255,255,192, + 192,252,252,192,192,192,255,255,8,11,11,14,0,0,255,255, + 192,192,252,252,192,192,192,192,192,8,11,11,14,0,0,60, + 126,195,195,192,207,207,195,195,126,60,8,11,11,14,0,0, + 195,195,195,195,255,255,195,195,195,195,195,8,11,11,14,0, + 0,255,255,24,24,24,24,24,24,24,255,255,8,11,11,14, + 0,0,3,3,3,3,3,3,195,195,195,126,60,8,11,11, + 14,0,0,195,198,204,216,240,224,240,216,204,198,195,8,11, + 11,14,0,0,192,192,192,192,192,192,192,192,192,255,255,8, + 11,11,14,0,0,195,231,255,255,219,219,219,195,195,195,195, + 8,11,11,14,0,0,195,227,243,219,207,199,195,195,195,195, + 195,8,11,11,14,0,0,60,126,195,195,195,195,195,195,195, + 126,60,8,11,11,14,0,0,252,254,195,195,254,252,192,192, + 192,192,192,8,13,13,14,0,254,60,126,195,195,195,195,195, + 219,207,126,62,6,3,8,11,11,14,0,0,252,254,195,195, + 254,252,198,195,195,195,195,8,11,11,14,0,0,60,126,195, + 192,124,62,7,195,195,126,60,8,11,11,14,0,0,255,255, + 24,24,24,24,24,24,24,24,24,8,11,11,14,0,0,195, + 195,195,195,195,195,195,195,195,126,60,8,11,11,14,0,0, + 195,195,195,195,195,102,102,60,60,24,24,8,11,11,14,0, + 0,195,195,195,195,219,219,219,255,255,231,195,8,11,11,14, + 0,0,195,195,195,102,60,24,60,102,195,195,195,8,11,11, + 14,0,0,195,195,195,195,231,126,60,24,24,24,24,8,11, + 11,14,0,0,255,255,3,6,12,24,48,96,192,255,255,4, + 15,15,14,3,254,240,240,192,192,192,192,192,192,192,192,192, + 192,192,240,240,9,16,32,14,0,253,192,0,192,0,96,0, + 96,0,48,0,48,0,24,0,24,0,12,0,12,0,6,0, + 6,0,3,0,3,0,1,128,1,128,4,15,15,14,1,254, + 240,240,48,48,48,48,48,48,48,48,48,48,48,240,240,7, + 5,5,14,1,6,16,56,108,198,130,9,2,4,14,0,253, + 255,128,255,128,3,4,4,14,1,9,128,192,96,32,8,8, + 8,14,0,0,63,127,195,195,199,207,123,51,8,11,11,14, + 0,0,192,192,192,252,254,195,195,195,195,254,252,8,8,8, + 14,0,0,60,126,195,195,192,192,127,63,8,11,11,14,0, + 0,3,3,3,63,127,195,195,195,195,127,63,8,8,8,14, + 0,0,60,126,195,255,255,192,127,63,6,11,11,14,2,0, + 28,60,96,240,240,96,96,96,96,96,96,8,11,11,14,0, + 253,63,127,195,195,195,195,127,63,3,62,60,8,11,11,14, + 0,0,192,192,192,252,254,195,195,195,195,195,195,6,11,11, + 14,1,0,48,48,0,240,240,48,48,48,48,252,252,5,14, + 14,14,0,253,24,24,0,120,120,24,24,24,24,24,24,24, + 240,224,8,11,11,14,0,0,192,192,192,198,204,216,240,248, + 204,198,195,6,11,11,14,1,0,240,240,48,48,48,48,48, + 48,48,252,252,8,8,8,14,0,0,252,254,219,219,219,219, + 219,219,8,8,8,14,0,0,204,222,243,227,195,195,195,195, + 8,8,8,14,0,0,60,126,195,195,195,195,126,60,8,11, + 11,14,0,253,252,254,195,195,195,195,254,252,192,192,192,8, + 11,11,14,0,253,63,127,195,195,195,195,127,63,3,3,3, + 8,8,8,14,0,0,204,222,243,227,192,192,192,192,8,8, + 8,14,0,0,63,255,192,252,63,3,255,252,6,11,11,14, + 2,0,96,96,96,240,240,96,96,96,96,60,28,8,8,8, + 14,0,0,195,195,195,195,199,207,123,51,8,8,8,14,0, + 0,195,195,195,102,102,60,60,24,8,8,8,14,0,0,219, + 219,219,219,219,219,255,102,8,8,8,14,0,0,195,102,60, + 24,24,60,102,195,8,11,11,14,0,253,195,195,195,195,195, + 195,127,63,3,62,60,7,8,8,14,0,0,254,254,12,24, + 48,96,254,254,5,17,17,14,1,253,24,56,48,48,48,48, + 48,96,192,96,48,48,48,48,48,56,24,2,15,15,14,3, + 254,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 5,17,17,14,2,253,192,224,96,96,96,96,96,48,24,48, + 96,96,96,96,96,224,192,8,3,3,14,0,5,113,219,142, + 0,0,0,14,0,0}; +/* + Fontname: ProFont22 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=12 h=22 x= 6 y=12 dx=12 dy= 0 ascent=18 len=44 + Font Bounding box w=12 h=21 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =16 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont22[6454] U8G_FONT_SECTION("u8g_font_profont22") = { + 0,12,21,0,252,14,3,117,7,113,32,255,252,18,252,16, + 252,0,0,0,12,0,0,2,14,14,12,4,0,192,192,192, + 192,192,192,192,192,192,192,0,0,192,192,6,6,6,12,2, + 10,204,204,204,204,204,204,10,10,20,12,0,4,51,0,51, + 0,255,192,255,192,51,0,51,0,255,192,255,192,51,0,51, + 0,10,18,36,12,0,254,12,0,12,0,63,0,127,128,237, + 192,204,192,204,0,236,0,127,0,63,128,13,192,12,192,204, + 192,237,192,127,128,63,0,12,0,12,0,10,14,28,12,0, + 0,63,192,127,192,204,192,205,192,207,128,207,0,127,0,63, + 128,60,192,124,192,236,192,204,192,199,128,195,0,10,14,28, + 12,0,0,62,0,127,0,227,0,199,0,206,0,252,0,120, + 0,120,0,252,192,207,192,199,128,231,128,127,192,60,192,2, + 6,6,12,4,10,192,192,192,192,192,192,6,18,18,12,2, + 254,12,28,56,112,224,192,192,192,192,192,192,192,192,224,112, + 56,28,12,6,18,18,12,2,254,192,224,112,56,28,12,12, + 12,12,12,12,12,12,28,56,112,224,192,10,10,20,12,0, + 4,12,0,12,0,204,192,255,192,63,0,63,0,255,192,204, + 192,12,0,12,0,10,10,20,12,0,2,12,0,12,0,12, + 0,12,0,255,192,255,192,12,0,12,0,12,0,12,0,5, + 9,9,12,2,252,48,120,120,56,24,56,112,224,64,6,2, + 2,12,2,6,252,252,4,4,4,12,3,1,96,240,240,96, + 11,20,40,12,0,252,0,96,0,96,0,192,0,192,1,128, + 1,128,3,0,3,0,6,0,6,0,12,0,12,0,24,0, + 24,0,48,0,48,0,96,0,96,0,192,0,192,0,10,14, + 28,12,0,0,63,0,127,128,225,192,193,192,195,192,199,192, + 206,192,220,192,248,192,240,192,224,192,225,192,127,128,63,0, + 10,14,28,12,0,0,12,0,12,0,124,0,124,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,255,192, + 255,192,10,14,28,12,0,0,63,0,127,128,225,192,192,192, + 0,192,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,192,255,192,10,14,28,12,0,0,63,0,127,128,225,192, + 192,192,0,192,1,128,15,0,15,128,1,192,0,192,192,192, + 225,192,127,128,63,0,10,14,28,12,0,0,3,0,7,0, + 15,0,31,0,59,0,115,0,227,0,195,0,255,192,255,192, + 3,0,3,0,15,192,15,192,10,14,28,12,0,0,255,192, + 255,192,192,0,192,0,255,0,255,128,1,192,0,192,0,192, + 0,192,192,192,225,192,127,128,63,0,10,14,28,12,0,0, + 63,0,127,0,224,0,192,0,255,0,255,128,193,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,14,28,12, + 0,0,255,192,255,192,0,192,0,192,0,192,1,192,3,128, + 7,0,14,0,12,0,12,0,12,0,12,0,12,0,10,14, + 28,12,0,0,63,0,127,128,225,192,192,192,192,192,97,128, + 63,0,127,128,225,192,192,192,192,192,225,192,127,128,63,0, + 10,14,28,12,0,0,63,0,127,128,225,192,192,192,192,192, + 192,192,192,192,224,192,127,192,63,192,0,192,1,192,63,128, + 63,0,4,10,10,12,3,1,96,240,240,96,0,0,96,240, + 240,96,5,15,15,12,2,252,48,120,120,48,0,0,48,120, + 120,56,24,56,112,224,64,8,14,14,12,2,0,3,7,14, + 28,56,112,224,224,112,56,28,14,7,3,10,6,12,12,0, + 4,255,192,255,192,0,0,0,0,255,192,255,192,8,14,14, + 12,2,0,192,224,112,56,28,14,7,7,14,28,56,112,224, + 192,10,14,28,12,0,0,63,0,127,128,225,192,192,192,0, + 192,1,192,3,128,7,0,14,0,12,0,0,0,0,0,12, + 0,12,0,10,14,28,12,0,0,63,0,127,128,225,192,192, + 192,199,192,207,192,204,192,204,192,207,192,199,128,192,0,224, + 0,127,192,63,192,10,14,28,12,0,0,12,0,30,0,30, + 0,51,0,51,0,97,128,97,128,192,192,255,192,255,192,192, + 192,192,192,192,192,192,192,10,14,28,12,0,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,0,255,128,193,192,192, + 192,192,192,193,192,255,128,255,0,10,14,28,12,0,0,63, + 0,127,128,225,192,192,192,192,0,192,0,192,0,192,0,192, + 0,192,0,192,192,225,192,127,128,63,0,10,14,28,12,0, + 0,255,0,255,128,193,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,193,192,255,128,255,0,10,14,28, + 12,0,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 0,255,0,192,0,192,0,192,0,192,0,255,192,255,192,10, + 14,28,12,0,0,255,192,255,192,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,10,14,28,12,0,0,63,0,127,128,225,192,192,192,192, + 0,192,0,195,192,195,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,255,192,255,192,192,192,192,192,192,192,192, + 192,192,192,192,192,10,14,28,12,0,0,255,192,255,192,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,255,192,255,192,10,14,28,12,0,0,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,192,192,192, + 192,192,192,225,192,127,128,63,0,10,14,28,12,0,0,193, + 192,195,128,199,0,206,0,220,0,248,0,240,0,248,0,220, + 0,206,0,199,0,195,128,193,192,192,192,10,14,28,12,0, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,255,192,255,192,10,14,28, + 12,0,0,192,192,225,192,243,192,255,192,222,192,204,192,204, + 192,204,192,192,192,192,192,192,192,192,192,192,192,192,192,10, + 14,28,12,0,0,192,192,224,192,240,192,248,192,220,192,206, + 192,199,192,195,192,193,192,192,192,192,192,192,192,192,192,192, + 192,10,14,28,12,0,0,63,0,127,128,225,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,0,255,0,255,128,193,192,192, + 192,192,192,193,192,255,128,255,0,192,0,192,0,192,0,192, + 0,192,0,192,0,10,16,32,12,0,254,63,0,127,128,225, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,204, + 192,239,192,127,128,63,128,1,192,0,192,10,14,28,12,0, + 0,255,0,255,128,193,192,192,192,192,192,193,128,255,0,255, + 128,193,192,192,192,192,192,192,192,192,192,192,192,10,14,28, + 12,0,0,63,0,127,128,225,192,192,192,192,0,224,0,127, + 0,63,128,1,192,0,192,192,192,225,192,127,128,63,0,10, + 14,28,12,0,0,255,192,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,10,14,28,12,0,0,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,10,14,28,12,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,204,192,204,192,204,192,222,192,255, + 192,243,192,225,192,192,192,10,14,28,12,0,0,192,192,192, + 192,192,192,225,192,115,128,63,0,30,0,30,0,63,0,115, + 128,225,192,192,192,192,192,192,192,10,14,28,12,0,0,192, + 192,192,192,192,192,192,192,192,192,225,192,115,128,63,0,30, + 0,12,0,12,0,12,0,12,0,12,0,10,14,28,12,0, + 0,255,192,255,192,0,192,1,192,3,128,7,0,14,0,28, + 0,56,0,112,0,224,0,192,0,255,192,255,192,4,18,18, + 12,4,254,240,240,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,240,240,11,20,40,12,1,252,192,0,192,0,96, + 0,96,0,48,0,48,0,24,0,24,0,12,0,12,0,6, + 0,6,0,3,0,3,0,1,128,1,128,0,192,0,192,0, + 96,0,96,4,18,18,12,2,254,240,240,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,240,10,6,12,12,0, + 8,12,0,30,0,63,0,115,128,225,192,64,128,12,2,4, + 12,0,252,255,240,255,240,4,4,4,12,2,12,192,224,112, + 48,10,10,20,12,0,0,63,192,127,192,224,192,192,192,192, + 192,193,192,195,192,231,192,126,192,60,192,10,14,28,12,0, + 0,192,0,192,0,192,0,192,0,255,0,255,128,193,192,192, + 192,192,192,192,192,192,192,193,192,255,128,255,0,10,10,20, + 12,0,0,63,0,127,128,225,192,192,192,192,0,192,0,192, + 0,224,0,127,192,63,192,10,14,28,12,0,0,0,192,0, + 192,0,192,0,192,63,192,127,192,224,192,192,192,192,192,192, + 192,192,192,224,192,127,192,63,192,10,10,20,12,0,0,63, + 0,127,128,225,192,192,192,255,192,255,192,192,0,224,0,127, + 192,63,192,8,14,14,12,2,0,15,31,56,48,252,252,48, + 48,48,48,48,48,48,48,10,14,28,12,0,252,63,192,127, + 192,224,192,192,192,192,192,192,192,192,192,224,192,127,192,63, + 192,0,192,1,192,63,128,63,0,10,14,28,12,0,0,192, + 0,192,0,192,0,192,0,255,0,255,128,193,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,14,14,12,2, + 0,48,48,0,0,240,240,48,48,48,48,48,48,252,252,6, + 18,18,12,0,252,12,12,0,0,60,60,12,12,12,12,12, + 12,12,12,12,28,248,240,10,14,28,12,0,0,192,0,192, + 0,192,0,192,0,195,128,199,0,206,0,220,0,252,0,254, + 0,231,0,195,128,193,192,192,192,6,14,14,12,2,0,240, + 240,48,48,48,48,48,48,48,48,48,48,252,252,10,10,20, + 12,0,0,255,0,255,128,205,192,204,192,204,192,204,192,204, + 192,204,192,204,192,204,192,10,10,20,12,0,0,207,0,223, + 128,249,192,240,192,224,192,192,192,192,192,192,192,192,192,192, + 192,10,10,20,12,0,0,63,0,127,128,225,192,192,192,192, + 192,192,192,192,192,225,192,127,128,63,0,10,14,28,12,0, + 252,255,0,255,128,193,192,192,192,192,192,192,192,192,192,193, + 192,255,128,255,0,192,0,192,0,192,0,192,0,10,14,28, + 12,0,252,63,192,127,192,224,192,192,192,192,192,192,192,192, + 192,224,192,127,192,63,192,0,192,0,192,0,192,0,192,10, + 10,20,12,0,0,207,0,223,128,249,192,240,192,224,0,192, + 0,192,0,192,0,192,0,192,0,10,10,20,12,0,0,63, + 192,127,192,192,0,192,0,127,0,63,128,0,192,0,192,255, + 128,255,0,8,14,14,12,2,0,48,48,48,48,252,252,48, + 48,48,48,48,56,31,15,10,10,20,12,0,0,192,192,192, + 192,192,192,192,192,192,192,193,192,195,192,231,192,126,192,60, + 192,10,10,20,12,0,0,192,192,192,192,192,192,97,128,97, + 128,51,128,51,0,30,0,30,0,12,0,10,10,20,12,0, + 0,204,192,204,192,204,192,204,192,204,192,204,192,204,192,204, + 192,127,128,51,0,10,10,20,12,0,0,192,192,225,192,115, + 128,63,0,30,0,30,0,63,0,115,128,225,192,192,192,10, + 14,28,12,0,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,224,192,127,192,63,192,0,192,1,192,63,128,63, + 0,10,10,20,12,0,0,255,192,255,192,3,128,7,0,14, + 0,28,0,56,0,112,0,255,192,255,192,6,22,22,12,2, + 252,12,28,56,48,48,48,48,48,48,112,224,224,112,48,48, + 48,48,48,48,56,28,12,2,18,18,12,4,254,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,6, + 22,22,12,2,252,192,224,112,48,48,48,48,48,48,56,28, + 28,56,48,48,48,48,48,48,112,224,192,10,4,8,12,0, + 6,48,192,124,192,207,128,195,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,4,7,7,12,0, + 253,48,48,48,48,112,224,64,10,22,44,12,0,252,3,192, + 7,192,14,0,12,0,12,0,12,0,12,0,12,0,63,0, + 63,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,28,0,248,0,240,0,8,7,7,12,0,253, + 51,51,51,51,119,238,68,10,2,4,12,0,0,204,192,204, + 192,6,10,10,12,2,4,48,48,252,252,48,48,48,48,48, + 48,6,10,10,12,2,4,48,48,252,252,48,48,252,252,48, + 48,6,4,4,12,2,12,48,120,252,204,12,16,32,12,0, + 0,63,240,127,240,204,224,205,192,207,128,207,0,126,0,60, + 0,60,192,127,224,243,48,243,48,179,48,51,48,31,224,12, + 192,10,18,36,12,0,0,51,0,63,0,30,0,12,0,63, + 0,127,128,225,192,192,192,192,0,224,0,127,0,63,128,1, + 192,0,192,192,192,225,192,127,128,63,0,4,10,10,12,0, + 255,48,112,96,224,192,192,224,96,112,48,10,14,28,12,0, + 0,63,192,127,192,236,0,204,0,204,0,204,0,207,0,207, + 0,204,0,204,0,204,0,236,0,127,192,63,192,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,4,7,7,12,4,8,32,112,224,192,192, + 192,192,4,7,7,12,4,7,48,48,48,48,112,224,64,8, + 7,7,12,2,8,34,119,238,204,204,204,204,8,7,7,12, + 2,7,51,51,51,51,119,238,68,10,10,20,12,0,2,30, + 0,127,128,127,128,255,192,255,192,255,192,255,192,127,128,127, + 128,30,0,6,2,2,12,2,6,252,252,12,2,4,12,0, + 6,255,240,255,240,10,4,8,12,0,12,48,192,124,192,207, + 128,195,0,12,6,12,12,0,8,255,48,255,240,51,240,51, + 240,51,48,51,48,10,16,32,12,0,0,51,0,63,0,30, + 0,12,0,0,0,0,0,63,192,127,192,192,0,192,0,127, + 0,63,128,0,192,0,192,255,128,255,0,4,10,10,12,0, + 255,192,224,96,112,48,48,112,96,224,192,10,10,20,12,0, + 0,51,0,127,128,204,192,204,192,207,192,207,192,204,0,204, + 0,127,192,51,192,0,0,0,12,0,0,0,0,0,12,0, + 0,10,18,36,12,0,0,51,0,51,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,225,192,115,128,63,0,30, + 0,12,0,12,0,12,0,12,0,12,0,0,0,0,12,0, + 0,2,14,14,12,6,0,192,192,0,0,192,192,192,192,192, + 192,192,192,192,192,10,14,28,12,0,254,12,0,12,0,63, + 0,127,128,237,192,204,192,204,0,204,0,204,0,236,0,127, + 192,63,192,12,0,12,0,10,16,32,12,0,0,60,0,126, + 0,231,0,195,0,192,0,192,0,252,0,252,0,192,0,192, + 0,192,0,192,0,192,192,193,192,255,128,255,0,10,10,20, + 12,0,0,64,128,225,192,127,128,63,0,51,0,51,0,63, + 0,127,128,225,192,64,128,10,14,28,12,0,0,192,192,225, + 192,115,128,63,0,255,192,255,192,12,0,12,0,255,192,255, + 192,12,0,12,0,12,0,12,0,2,18,18,12,4,254,192, + 192,192,192,192,192,192,192,0,0,192,192,192,192,192,192,192, + 192,10,20,40,12,0,254,31,0,127,128,97,192,224,192,112, + 192,56,192,220,0,206,0,199,0,227,128,113,192,56,192,28, + 192,14,192,199,0,195,128,193,192,225,128,127,128,62,0,6, + 2,2,12,2,12,204,204,10,14,28,12,0,0,120,0,254, + 0,135,0,1,128,61,128,124,192,192,192,192,192,124,192,61, + 128,1,128,135,0,254,0,120,0,8,12,12,12,2,6,63, + 127,227,195,195,227,127,63,0,0,255,255,10,10,20,12,0, + 255,48,192,113,192,97,128,227,128,195,0,195,0,227,128,97, + 128,113,192,48,192,10,6,12,12,0,2,255,192,255,192,0, + 192,0,192,0,192,0,192,10,2,4,12,0,6,255,192,255, + 192,10,12,24,12,0,2,120,0,254,0,135,0,1,128,241, + 128,248,192,204,192,204,192,248,192,249,192,223,128,207,0,6, + 2,2,12,2,12,252,252,8,8,8,12,2,8,60,126,231, + 195,195,231,126,60,10,12,24,12,0,0,12,0,12,0,12, + 0,12,0,255,192,255,192,12,0,12,0,12,0,12,0,255, + 192,255,192,5,7,7,12,3,11,112,136,8,16,32,64,248, + 5,7,7,12,3,11,112,136,8,48,8,136,112,4,4,4, + 12,4,12,48,112,224,192,10,14,28,12,0,252,195,0,195, + 0,195,0,195,0,195,0,195,0,195,0,199,128,255,192,252, + 192,192,0,192,0,192,0,192,0,10,16,32,12,0,0,31, + 192,127,192,124,192,236,192,204,192,204,192,236,192,124,192,127, + 192,31,192,12,192,12,192,12,192,12,192,12,192,12,192,4, + 4,4,12,4,4,96,240,240,96,4,6,6,12,2,252,240, + 240,48,112,224,64,5,7,7,12,3,11,32,224,32,32,32, + 32,248,8,12,12,12,2,6,60,126,231,195,195,231,126,60, + 0,0,255,255,10,10,20,12,0,255,195,0,227,128,97,128, + 113,192,48,192,48,192,113,192,97,128,227,128,195,0,12,18, + 36,12,0,0,16,0,112,0,16,0,16,0,16,16,16,32, + 124,64,0,128,1,0,2,0,4,0,8,64,16,192,33,64, + 66,64,131,224,0,64,0,224,12,18,36,12,0,0,16,0, + 112,0,16,0,16,0,16,16,16,32,124,64,0,128,1,0, + 2,0,4,0,9,192,18,32,32,32,64,64,128,128,1,0, + 3,224,12,18,36,12,0,0,56,0,68,0,4,0,24,0, + 4,16,68,32,56,64,0,128,1,0,2,0,4,0,8,64, + 16,192,33,64,66,64,131,224,0,64,0,224,10,14,28,12, + 0,0,12,0,12,0,0,0,0,0,12,0,28,0,56,0, + 112,0,224,0,192,0,192,192,225,192,127,128,63,0,10,18, + 36,12,0,0,48,0,56,0,28,0,12,0,12,0,30,0, + 30,0,51,0,51,0,97,128,97,128,192,192,255,192,255,192, + 192,192,192,192,192,192,192,192,10,18,36,12,0,0,3,0, + 7,0,14,0,12,0,12,0,30,0,30,0,51,0,51,0, + 97,128,97,128,192,192,255,192,255,192,192,192,192,192,192,192, + 192,192,10,18,36,12,0,0,12,0,30,0,63,0,51,0, + 12,0,30,0,30,0,51,0,51,0,97,128,97,128,192,192, + 255,192,255,192,192,192,192,192,192,192,192,192,10,18,36,12, + 0,0,48,192,124,192,207,128,195,0,12,0,30,0,30,0, + 51,0,51,0,97,128,97,128,192,192,255,192,255,192,192,192, + 192,192,192,192,192,192,10,18,36,12,0,0,51,0,51,0, + 0,0,0,0,12,0,30,0,30,0,51,0,51,0,97,128, + 97,128,192,192,255,192,255,192,192,192,192,192,192,192,192,192, + 10,18,36,12,0,0,12,0,30,0,51,0,51,0,30,0, + 30,0,30,0,51,0,51,0,97,128,97,128,192,192,255,192, + 255,192,192,192,192,192,192,192,192,192,10,14,28,12,0,0, + 63,192,127,192,236,0,204,0,204,0,204,0,255,0,255,0, + 204,0,204,0,204,0,204,0,207,192,207,192,10,18,36,12, + 0,252,63,0,127,128,225,192,192,192,192,0,192,0,192,0, + 192,0,192,0,192,0,192,192,225,192,127,128,63,0,12,0, + 28,0,56,0,16,0,10,18,36,12,0,0,48,0,56,0, + 28,0,12,0,255,192,255,192,192,0,192,0,192,0,192,0, + 255,0,255,0,192,0,192,0,192,0,192,0,255,192,255,192, + 10,18,36,12,0,0,3,0,7,0,14,0,12,0,255,192, + 255,192,192,0,192,0,192,0,192,0,255,0,255,0,192,0, + 192,0,192,0,192,0,255,192,255,192,10,18,36,12,0,0, + 12,0,30,0,63,0,51,0,255,192,255,192,192,0,192,0, + 192,0,192,0,255,0,255,0,192,0,192,0,192,0,192,0, + 255,192,255,192,10,18,36,12,0,0,51,0,51,0,0,0, + 0,0,255,192,255,192,192,0,192,0,192,0,192,0,255,0, + 255,0,192,0,192,0,192,0,192,0,255,192,255,192,10,18, + 36,12,0,0,48,0,56,0,28,0,12,0,255,192,255,192, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,255,192,255,192,10,18,36,12,0,0,3,0, + 7,0,14,0,12,0,255,192,255,192,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,255,192, + 255,192,10,18,36,12,0,0,12,0,30,0,63,0,51,0, + 255,192,255,192,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,255,192,255,192,10,18,36,12, + 0,0,51,0,51,0,0,0,0,0,255,192,255,192,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,255,192,255,192,10,14,28,12,0,0,63,0,63,128, + 49,192,48,192,48,192,48,192,252,192,252,192,48,192,48,192, + 48,192,49,192,63,128,63,0,10,18,36,12,0,0,48,192, + 124,192,207,128,199,0,192,192,224,192,240,192,248,192,220,192, + 206,192,199,192,195,192,193,192,192,192,192,192,192,192,192,192, + 192,192,10,18,36,12,0,0,48,0,56,0,28,0,12,0, + 63,0,127,128,225,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,18,36,12, + 0,0,3,0,7,0,14,0,12,0,63,0,127,128,225,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,18,36,12,0,0,12,0,30,0, + 63,0,51,0,0,0,63,0,127,128,225,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,225,192,127,128,63,0, + 10,18,36,12,0,0,48,192,124,192,207,128,199,0,63,0, + 127,128,225,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,18,36,12,0,0, + 51,0,51,0,0,0,0,0,63,0,127,128,225,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,225,192, + 127,128,63,0,10,10,20,12,0,2,64,128,225,192,115,128, + 63,0,30,0,30,0,63,0,115,128,225,192,64,128,10,14, + 28,12,0,0,63,0,127,128,225,192,193,192,195,192,199,192, + 206,192,220,192,248,192,240,192,224,192,225,192,127,128,63,0, + 10,18,36,12,0,0,48,0,56,0,28,0,12,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,18,36,12,0,0, + 3,0,7,0,14,0,12,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,225,192, + 127,128,63,0,10,18,36,12,0,0,12,0,30,0,63,0, + 51,0,0,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,225,192,127,128,63,0,10,18, + 36,12,0,0,51,0,51,0,0,0,0,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,225,192,127,128,63,0,10,18,36,12,0,0,3,0, + 7,0,14,0,12,0,192,192,192,192,192,192,192,192,192,192, + 225,192,115,128,63,0,30,0,12,0,12,0,12,0,12,0, + 12,0,10,14,28,12,0,0,192,0,192,0,255,0,255,128, + 193,192,192,192,192,192,193,192,255,128,255,0,192,0,192,0, + 192,0,192,0,10,18,36,12,0,254,15,0,31,128,57,192, + 112,192,224,192,193,192,195,128,195,0,195,0,195,128,193,192, + 192,192,192,192,193,192,207,128,207,0,192,0,192,0,10,16, + 32,12,0,0,12,0,14,0,7,0,3,0,0,0,0,0, + 63,192,127,192,224,192,192,192,192,192,193,192,195,192,231,192, + 126,192,60,192,10,16,32,12,0,0,3,0,7,0,14,0, + 12,0,0,0,0,0,63,192,127,192,224,192,192,192,192,192, + 193,192,195,192,231,192,126,192,60,192,10,16,32,12,0,0, + 12,0,30,0,63,0,51,0,0,0,0,0,63,192,127,192, + 224,192,192,192,192,192,193,192,195,192,231,192,126,192,60,192, + 10,16,32,12,0,0,48,192,124,192,207,128,199,0,0,0, + 0,0,63,192,127,192,224,192,192,192,192,192,193,192,195,192, + 231,192,126,192,60,192,10,14,28,12,0,0,51,0,51,0, + 0,0,0,0,63,192,127,192,224,192,192,192,192,192,193,192, + 195,192,231,192,126,192,60,192,10,16,32,12,0,0,12,0, + 30,0,51,0,51,0,30,0,12,0,63,192,127,192,224,192, + 192,192,192,192,193,192,195,192,231,192,126,192,60,192,10,10, + 20,12,0,0,63,0,127,128,237,192,204,192,207,192,207,192, + 204,0,236,0,127,192,63,192,10,14,28,12,0,252,63,0, + 127,128,225,192,192,192,192,0,192,0,192,0,224,0,127,192, + 63,192,12,0,28,0,56,0,16,0,10,16,32,12,0,0, + 48,0,56,0,28,0,12,0,0,0,0,0,63,0,127,128, + 225,192,192,192,255,192,255,192,192,0,224,0,127,192,63,192, + 10,16,32,12,0,0,3,0,7,0,14,0,12,0,0,0, + 0,0,63,0,127,128,225,192,192,192,255,192,255,192,192,0, + 224,0,127,192,63,192,10,16,32,12,0,0,12,0,30,0, + 63,0,51,0,0,0,0,0,63,0,127,128,225,192,192,192, + 255,192,255,192,192,0,224,0,127,192,63,192,10,14,28,12, + 0,0,51,0,51,0,0,0,0,0,63,0,127,128,225,192, + 192,192,255,192,255,192,192,0,224,0,127,192,63,192,6,16, + 16,12,2,0,192,224,112,48,0,0,240,240,48,48,48,48, + 48,48,252,252,6,16,16,12,2,0,12,28,56,48,0,0, + 240,240,48,48,48,48,48,48,252,252,6,16,16,12,2,0, + 48,120,252,204,0,0,240,240,48,48,48,48,48,48,252,252, + 6,14,14,12,2,0,204,204,0,0,240,240,48,48,48,48, + 48,48,252,252,10,17,34,12,0,0,36,0,126,0,60,0, + 60,0,126,0,39,0,3,128,63,192,127,192,225,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,16,32,12, + 0,0,48,192,124,192,207,128,199,0,0,0,0,0,207,0, + 223,128,249,192,240,192,224,192,192,192,192,192,192,192,192,192, + 192,192,10,16,32,12,0,0,48,0,56,0,28,0,12,0, + 0,0,0,0,63,0,127,128,225,192,192,192,192,192,192,192, + 192,192,225,192,127,128,63,0,10,16,32,12,0,0,3,0, + 7,0,14,0,12,0,0,0,0,0,63,0,127,128,225,192, + 192,192,192,192,192,192,192,192,225,192,127,128,63,0,10,16, + 32,12,0,0,12,0,30,0,63,0,51,0,0,0,0,0, + 63,0,127,128,225,192,192,192,192,192,192,192,192,192,225,192, + 127,128,63,0,10,16,32,12,0,0,48,192,124,192,207,128, + 199,0,0,0,0,0,63,0,127,128,225,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,14,28,12,0,0, + 51,0,51,0,0,0,0,0,63,0,127,128,225,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,10,20,12, + 0,2,12,0,12,0,0,0,0,0,255,192,255,192,0,0, + 0,0,12,0,12,0,10,10,20,12,0,0,63,0,127,128, + 227,192,199,192,206,192,220,192,248,192,241,192,127,128,63,0, + 10,16,32,12,0,0,48,0,56,0,28,0,12,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,193,192,195,192, + 231,192,126,192,60,192,10,16,32,12,0,0,3,0,7,0, + 14,0,12,0,0,0,0,0,192,192,192,192,192,192,192,192, + 192,192,193,192,195,192,231,192,126,192,60,192,10,16,32,12, + 0,0,12,0,30,0,63,0,51,0,0,0,0,0,192,192, + 192,192,192,192,192,192,192,192,193,192,195,192,231,192,126,192, + 60,192,10,14,28,12,0,0,51,0,51,0,0,0,0,0, + 192,192,192,192,192,192,192,192,192,192,193,192,195,192,231,192, + 126,192,60,192,10,20,40,12,0,252,3,0,7,0,14,0, + 12,0,0,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,224,192,127,192,63,192,0,192,1,192,63,128, + 63,0,10,18,36,12,0,252,192,0,192,0,192,0,192,0, + 255,0,255,128,193,192,192,192,192,192,192,192,192,192,193,192, + 255,128,255,0,192,0,192,0,192,0,192,0,10,18,36,12, + 0,252,51,0,51,0,0,0,0,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,224,192,127,192,63,192,0,192, + 1,192,63,128,63,0}; +/* + Fontname: ProFont22 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=12 h=22 x= 4 y=12 dx=12 dy= 0 ascent=18 len=40 + Font Bounding box w=12 h=21 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =16 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont22r[2719] U8G_FONT_SECTION("u8g_font_profont22r") = { + 0,12,21,0,252,14,3,117,7,113,32,127,252,18,252,16, + 252,0,0,0,12,0,0,2,14,14,12,4,0,192,192,192, + 192,192,192,192,192,192,192,0,0,192,192,6,6,6,12,2, + 10,204,204,204,204,204,204,10,10,20,12,0,4,51,0,51, + 0,255,192,255,192,51,0,51,0,255,192,255,192,51,0,51, + 0,10,18,36,12,0,254,12,0,12,0,63,0,127,128,237, + 192,204,192,204,0,236,0,127,0,63,128,13,192,12,192,204, + 192,237,192,127,128,63,0,12,0,12,0,10,14,28,12,0, + 0,63,192,127,192,204,192,205,192,207,128,207,0,127,0,63, + 128,60,192,124,192,236,192,204,192,199,128,195,0,10,14,28, + 12,0,0,62,0,127,0,227,0,199,0,206,0,252,0,120, + 0,120,0,252,192,207,192,199,128,231,128,127,192,60,192,2, + 6,6,12,4,10,192,192,192,192,192,192,6,18,18,12,2, + 254,12,28,56,112,224,192,192,192,192,192,192,192,192,224,112, + 56,28,12,6,18,18,12,2,254,192,224,112,56,28,12,12, + 12,12,12,12,12,12,28,56,112,224,192,10,10,20,12,0, + 4,12,0,12,0,204,192,255,192,63,0,63,0,255,192,204, + 192,12,0,12,0,10,10,20,12,0,2,12,0,12,0,12, + 0,12,0,255,192,255,192,12,0,12,0,12,0,12,0,5, + 9,9,12,2,252,48,120,120,56,24,56,112,224,64,6,2, + 2,12,2,6,252,252,4,4,4,12,3,1,96,240,240,96, + 11,20,40,12,0,252,0,96,0,96,0,192,0,192,1,128, + 1,128,3,0,3,0,6,0,6,0,12,0,12,0,24,0, + 24,0,48,0,48,0,96,0,96,0,192,0,192,0,10,14, + 28,12,0,0,63,0,127,128,225,192,193,192,195,192,199,192, + 206,192,220,192,248,192,240,192,224,192,225,192,127,128,63,0, + 10,14,28,12,0,0,12,0,12,0,124,0,124,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,255,192, + 255,192,10,14,28,12,0,0,63,0,127,128,225,192,192,192, + 0,192,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,192,255,192,10,14,28,12,0,0,63,0,127,128,225,192, + 192,192,0,192,1,128,15,0,15,128,1,192,0,192,192,192, + 225,192,127,128,63,0,10,14,28,12,0,0,3,0,7,0, + 15,0,31,0,59,0,115,0,227,0,195,0,255,192,255,192, + 3,0,3,0,15,192,15,192,10,14,28,12,0,0,255,192, + 255,192,192,0,192,0,255,0,255,128,1,192,0,192,0,192, + 0,192,192,192,225,192,127,128,63,0,10,14,28,12,0,0, + 63,0,127,0,224,0,192,0,255,0,255,128,193,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,14,28,12, + 0,0,255,192,255,192,0,192,0,192,0,192,1,192,3,128, + 7,0,14,0,12,0,12,0,12,0,12,0,12,0,10,14, + 28,12,0,0,63,0,127,128,225,192,192,192,192,192,97,128, + 63,0,127,128,225,192,192,192,192,192,225,192,127,128,63,0, + 10,14,28,12,0,0,63,0,127,128,225,192,192,192,192,192, + 192,192,192,192,224,192,127,192,63,192,0,192,1,192,63,128, + 63,0,4,10,10,12,3,1,96,240,240,96,0,0,96,240, + 240,96,5,15,15,12,2,252,48,120,120,48,0,0,48,120, + 120,56,24,56,112,224,64,8,14,14,12,2,0,3,7,14, + 28,56,112,224,224,112,56,28,14,7,3,10,6,12,12,0, + 4,255,192,255,192,0,0,0,0,255,192,255,192,8,14,14, + 12,2,0,192,224,112,56,28,14,7,7,14,28,56,112,224, + 192,10,14,28,12,0,0,63,0,127,128,225,192,192,192,0, + 192,1,192,3,128,7,0,14,0,12,0,0,0,0,0,12, + 0,12,0,10,14,28,12,0,0,63,0,127,128,225,192,192, + 192,199,192,207,192,204,192,204,192,207,192,199,128,192,0,224, + 0,127,192,63,192,10,14,28,12,0,0,12,0,30,0,30, + 0,51,0,51,0,97,128,97,128,192,192,255,192,255,192,192, + 192,192,192,192,192,192,192,10,14,28,12,0,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,0,255,128,193,192,192, + 192,192,192,193,192,255,128,255,0,10,14,28,12,0,0,63, + 0,127,128,225,192,192,192,192,0,192,0,192,0,192,0,192, + 0,192,0,192,192,225,192,127,128,63,0,10,14,28,12,0, + 0,255,0,255,128,193,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,193,192,255,128,255,0,10,14,28, + 12,0,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 0,255,0,192,0,192,0,192,0,192,0,255,192,255,192,10, + 14,28,12,0,0,255,192,255,192,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,10,14,28,12,0,0,63,0,127,128,225,192,192,192,192, + 0,192,0,195,192,195,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,255,192,255,192,192,192,192,192,192,192,192, + 192,192,192,192,192,10,14,28,12,0,0,255,192,255,192,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,255,192,255,192,10,14,28,12,0,0,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,192,192,192, + 192,192,192,225,192,127,128,63,0,10,14,28,12,0,0,193, + 192,195,128,199,0,206,0,220,0,248,0,240,0,248,0,220, + 0,206,0,199,0,195,128,193,192,192,192,10,14,28,12,0, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,255,192,255,192,10,14,28, + 12,0,0,192,192,225,192,243,192,255,192,222,192,204,192,204, + 192,204,192,192,192,192,192,192,192,192,192,192,192,192,192,10, + 14,28,12,0,0,192,192,224,192,240,192,248,192,220,192,206, + 192,199,192,195,192,193,192,192,192,192,192,192,192,192,192,192, + 192,10,14,28,12,0,0,63,0,127,128,225,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,0,255,0,255,128,193,192,192, + 192,192,192,193,192,255,128,255,0,192,0,192,0,192,0,192, + 0,192,0,192,0,10,16,32,12,0,254,63,0,127,128,225, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,204, + 192,239,192,127,128,63,128,1,192,0,192,10,14,28,12,0, + 0,255,0,255,128,193,192,192,192,192,192,193,128,255,0,255, + 128,193,192,192,192,192,192,192,192,192,192,192,192,10,14,28, + 12,0,0,63,0,127,128,225,192,192,192,192,0,224,0,127, + 0,63,128,1,192,0,192,192,192,225,192,127,128,63,0,10, + 14,28,12,0,0,255,192,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,10,14,28,12,0,0,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,10,14,28,12,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,204,192,204,192,204,192,222,192,255, + 192,243,192,225,192,192,192,10,14,28,12,0,0,192,192,192, + 192,192,192,225,192,115,128,63,0,30,0,30,0,63,0,115, + 128,225,192,192,192,192,192,192,192,10,14,28,12,0,0,192, + 192,192,192,192,192,192,192,192,192,225,192,115,128,63,0,30, + 0,12,0,12,0,12,0,12,0,12,0,10,14,28,12,0, + 0,255,192,255,192,0,192,1,192,3,128,7,0,14,0,28, + 0,56,0,112,0,224,0,192,0,255,192,255,192,4,18,18, + 12,4,254,240,240,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,240,240,11,20,40,12,1,252,192,0,192,0,96, + 0,96,0,48,0,48,0,24,0,24,0,12,0,12,0,6, + 0,6,0,3,0,3,0,1,128,1,128,0,192,0,192,0, + 96,0,96,4,18,18,12,2,254,240,240,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,240,10,6,12,12,0, + 8,12,0,30,0,63,0,115,128,225,192,64,128,12,2,4, + 12,0,252,255,240,255,240,4,4,4,12,2,12,192,224,112, + 48,10,10,20,12,0,0,63,192,127,192,224,192,192,192,192, + 192,193,192,195,192,231,192,126,192,60,192,10,14,28,12,0, + 0,192,0,192,0,192,0,192,0,255,0,255,128,193,192,192, + 192,192,192,192,192,192,192,193,192,255,128,255,0,10,10,20, + 12,0,0,63,0,127,128,225,192,192,192,192,0,192,0,192, + 0,224,0,127,192,63,192,10,14,28,12,0,0,0,192,0, + 192,0,192,0,192,63,192,127,192,224,192,192,192,192,192,192, + 192,192,192,224,192,127,192,63,192,10,10,20,12,0,0,63, + 0,127,128,225,192,192,192,255,192,255,192,192,0,224,0,127, + 192,63,192,8,14,14,12,2,0,15,31,56,48,252,252,48, + 48,48,48,48,48,48,48,10,14,28,12,0,252,63,192,127, + 192,224,192,192,192,192,192,192,192,192,192,224,192,127,192,63, + 192,0,192,1,192,63,128,63,0,10,14,28,12,0,0,192, + 0,192,0,192,0,192,0,255,0,255,128,193,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,14,14,12,2, + 0,48,48,0,0,240,240,48,48,48,48,48,48,252,252,6, + 18,18,12,0,252,12,12,0,0,60,60,12,12,12,12,12, + 12,12,12,12,28,248,240,10,14,28,12,0,0,192,0,192, + 0,192,0,192,0,195,128,199,0,206,0,220,0,252,0,254, + 0,231,0,195,128,193,192,192,192,6,14,14,12,2,0,240, + 240,48,48,48,48,48,48,48,48,48,48,252,252,10,10,20, + 12,0,0,255,0,255,128,205,192,204,192,204,192,204,192,204, + 192,204,192,204,192,204,192,10,10,20,12,0,0,207,0,223, + 128,249,192,240,192,224,192,192,192,192,192,192,192,192,192,192, + 192,10,10,20,12,0,0,63,0,127,128,225,192,192,192,192, + 192,192,192,192,192,225,192,127,128,63,0,10,14,28,12,0, + 252,255,0,255,128,193,192,192,192,192,192,192,192,192,192,193, + 192,255,128,255,0,192,0,192,0,192,0,192,0,10,14,28, + 12,0,252,63,192,127,192,224,192,192,192,192,192,192,192,192, + 192,224,192,127,192,63,192,0,192,0,192,0,192,0,192,10, + 10,20,12,0,0,207,0,223,128,249,192,240,192,224,0,192, + 0,192,0,192,0,192,0,192,0,10,10,20,12,0,0,63, + 192,127,192,192,0,192,0,127,0,63,128,0,192,0,192,255, + 128,255,0,8,14,14,12,2,0,48,48,48,48,252,252,48, + 48,48,48,48,56,31,15,10,10,20,12,0,0,192,192,192, + 192,192,192,192,192,192,192,193,192,195,192,231,192,126,192,60, + 192,10,10,20,12,0,0,192,192,192,192,192,192,97,128,97, + 128,51,128,51,0,30,0,30,0,12,0,10,10,20,12,0, + 0,204,192,204,192,204,192,204,192,204,192,204,192,204,192,204, + 192,127,128,51,0,10,10,20,12,0,0,192,192,225,192,115, + 128,63,0,30,0,30,0,63,0,115,128,225,192,192,192,10, + 14,28,12,0,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,224,192,127,192,63,192,0,192,1,192,63,128,63, + 0,10,10,20,12,0,0,255,192,255,192,3,128,7,0,14, + 0,28,0,56,0,112,0,255,192,255,192,6,22,22,12,2, + 252,12,28,56,48,48,48,48,48,48,112,224,224,112,48,48, + 48,48,48,48,56,28,12,2,18,18,12,4,254,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,6, + 22,22,12,2,252,192,224,112,48,48,48,48,48,48,56,28, + 28,56,48,48,48,48,48,48,112,224,192,10,4,8,12,0, + 6,48,192,124,192,207,128,195,0,0,0,0,12,0,0}; +/* + Fontname: ProFont29 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 19, '1' Height: 19 + Calculated Max Values w=16 h=29 x= 8 y=16 dx=16 dy= 0 ascent=24 len=58 + Font Bounding box w=16 h=28 x= 0 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =22 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont29[8666] U8G_FONT_SECTION("u8g_font_profont29") = { + 0,16,28,0,251,19,4,198,9,234,32,255,251,24,251,22, + 251,0,0,0,16,0,0,3,19,19,16,5,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,224,224,224, + 9,9,18,16,2,13,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,15,15,30,16,0,5,28,112, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,28,112, + 255,254,255,254,255,254,28,112,28,112,28,112,13,25,50,16, + 0,253,7,0,7,0,7,0,15,128,63,224,127,240,119,112, + 231,56,231,56,231,0,119,0,127,128,63,224,15,240,7,112, + 7,56,231,56,231,56,119,112,127,240,63,224,15,128,7,0, + 7,0,7,0,14,19,38,16,0,0,31,252,63,252,127,252, + 102,28,231,60,231,120,231,240,103,224,127,224,63,192,31,240, + 31,48,63,56,127,56,247,56,227,48,227,240,225,224,224,192, + 14,19,38,16,0,0,15,0,63,192,127,224,112,224,225,224, + 227,192,231,128,127,0,126,0,60,0,126,8,127,28,231,188, + 227,248,225,240,113,240,127,248,63,188,14,24,3,9,9,16, + 5,13,224,224,224,224,224,224,224,224,224,9,25,50,16,3, + 253,3,0,7,128,15,0,30,0,60,0,120,0,240,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,240,0,120,0,60,0,30,0,15,0,7, + 128,3,0,9,25,50,16,2,253,96,0,240,0,120,0,60, + 0,30,0,15,0,7,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,7,128,15, + 0,30,0,60,0,120,0,240,0,96,0,13,13,26,16,0, + 5,7,0,7,0,103,48,247,248,127,240,31,192,31,192,127, + 240,255,248,103,48,7,0,7,0,7,0,13,13,26,16,0, + 3,7,0,7,0,7,0,7,0,7,0,255,248,255,248,255, + 248,7,0,7,0,7,0,7,0,7,0,6,11,11,16,3, + 251,56,124,124,124,60,28,28,60,120,240,96,8,3,3,16, + 3,8,255,255,255,5,5,5,16,4,1,112,248,248,248,112, + 15,26,52,16,0,251,0,14,0,14,0,28,0,28,0,56, + 0,56,0,112,0,112,0,224,0,224,1,192,1,192,3,128, + 3,128,7,0,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,224,0,224,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,60,224,124,224,252,225,252, + 227,220,231,156,239,28,254,28,252,28,248,28,240,28,112,56, + 127,248,63,240,15,192,13,19,38,16,0,0,7,0,7,0, + 15,0,127,0,127,0,127,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,255,248,255,248, + 255,248,14,19,38,16,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,0,28,0,56,0,120,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,127,252,255,252,255,252,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 0,28,0,120,3,240,3,224,3,240,0,120,0,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 0,224,1,224,3,224,7,224,15,224,30,224,60,224,120,224, + 240,224,224,224,255,252,255,252,255,252,0,224,0,224,0,224, + 7,252,7,252,7,252,14,19,38,16,0,0,255,252,255,252, + 255,252,224,0,224,0,255,192,255,240,255,248,0,56,0,28, + 0,28,0,28,0,28,224,28,224,28,112,56,127,248,63,240, + 15,192,14,19,38,16,0,0,15,224,63,224,127,224,112,0, + 224,0,255,192,255,240,255,248,224,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,14,19, + 38,16,0,0,255,252,255,252,255,252,0,28,0,28,0,28, + 0,60,0,120,0,240,1,224,3,192,7,128,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,28,224,28,224,28,120,120, + 63,240,31,224,63,240,120,120,224,28,224,28,224,28,112,56, + 127,248,63,240,15,192,14,19,38,16,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 112,28,127,252,63,252,15,252,0,28,0,56,31,248,31,240, + 31,192,5,13,13,16,4,1,112,248,248,248,112,0,0,0, + 112,248,248,248,112,6,19,19,16,3,251,56,124,124,124,56, + 0,0,0,56,124,124,124,60,28,28,60,120,240,96,12,19, + 38,16,2,0,0,96,0,240,1,224,3,192,7,128,15,0, + 30,0,60,0,120,0,240,0,120,0,60,0,30,0,15,0, + 7,128,3,192,1,224,0,240,0,96,14,9,18,16,0,5, + 255,252,255,252,255,252,0,0,0,0,0,0,255,252,255,252, + 255,252,12,19,38,16,2,0,96,0,240,0,120,0,60,0, + 30,0,15,0,7,128,3,192,1,224,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,120,0,240,0,96,0,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 0,28,0,60,0,120,0,240,1,224,3,192,7,128,7,0, + 0,0,0,0,7,0,7,0,7,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,28,225,252,227,252,231,252, + 231,28,231,28,231,28,231,252,227,248,225,240,224,0,112,0, + 127,252,63,252,15,252,14,19,38,16,0,0,7,128,7,128, + 15,192,15,192,28,224,28,224,56,112,56,112,112,56,112,56, + 224,28,255,252,255,252,255,252,224,28,224,28,224,28,224,28, + 224,28,14,19,38,16,0,0,255,192,255,240,255,248,224,56, + 224,28,224,28,224,28,224,120,255,240,255,224,255,240,224,120, + 224,28,224,28,224,28,224,56,255,248,255,240,255,192,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,14,19,38,16,0,0,255,252,255,252, + 255,252,224,0,224,0,224,0,224,0,224,0,255,224,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,255,252,255,252, + 255,252,14,19,38,16,0,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,255,224,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,252,224,252,224,252,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 255,252,255,252,255,252,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,13,19,38,16,0,0,255,248,255,248, + 255,248,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,255,248,255,248, + 255,248,14,19,38,16,0,0,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,13,19, + 38,16,0,0,224,56,224,120,224,240,225,224,227,192,231,128, + 239,0,254,0,252,0,248,0,252,0,254,0,239,0,231,128, + 227,192,225,224,224,240,224,120,224,56,14,19,38,16,0,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,15,19,38,16,0,0,224,14,240,30, + 248,62,252,126,254,254,239,238,231,206,227,142,227,142,227,142, + 227,142,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,14,19,38,16,0,0,224,28,240,28,248,28,252,28, + 254,28,239,28,231,156,227,220,225,252,224,252,224,124,224,60, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,14,22,44,16,0,253,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,230,28,239,28,119,248,127,248,63,240, + 15,240,0,120,0,60,0,24,14,19,38,16,0,0,255,192, + 255,240,255,248,224,56,224,28,224,28,224,28,224,120,255,240, + 255,224,255,240,224,120,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,14,19,38,16,0,0,15,192,63,240,127,248, + 112,56,224,28,224,28,224,0,112,0,127,192,63,240,15,248, + 0,56,0,28,224,28,224,28,112,56,127,248,63,240,15,192, + 13,19,38,16,0,0,255,248,255,248,255,248,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,14,19,38,16, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 112,56,127,248,63,240,15,192,14,19,38,16,0,0,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,112,56, + 56,112,56,112,28,224,28,224,15,192,15,192,7,128,7,128, + 3,0,3,0,15,19,38,16,0,0,224,14,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,227,142,227,142,227,142, + 227,142,231,206,239,254,254,254,252,126,248,62,240,30,224,14, + 14,19,38,16,0,0,224,28,224,28,224,28,224,28,240,60, + 120,120,60,240,31,224,15,192,7,128,15,192,31,224,60,240, + 120,120,240,60,224,28,224,28,224,28,224,28,13,19,38,16, + 0,0,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,120,240,61,224,31,192,15,128,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,14,19,38,16,0,0,255,252, + 255,252,255,252,0,28,0,60,0,120,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,120,0,240,0,224,0,255,252, + 255,252,255,252,6,25,25,16,5,253,252,252,252,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 252,252,252,15,26,52,16,1,251,224,0,224,0,112,0,112, + 0,56,0,56,0,28,0,28,0,14,0,14,0,7,0,7, + 0,3,128,3,128,1,192,1,192,0,224,0,224,0,112,0, + 112,0,56,0,56,0,28,0,28,0,14,0,14,6,25,25, + 16,2,253,252,252,252,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,252,252,14,8,16,16, + 0,11,3,0,7,128,15,192,31,224,60,240,120,120,240,60, + 96,24,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,16,2,15,96,240,120,60,30,12,14,14,28,16,0,0, + 15,252,63,252,127,252,112,28,224,28,224,28,224,28,224,28, + 224,60,224,124,113,252,127,220,63,156,14,28,14,19,38,16, + 0,0,224,0,224,0,224,0,224,0,224,0,255,192,255,240, + 255,248,224,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,56,255,248,255,240,255,192,14,14,28,16,0,0,15,192, + 63,240,127,248,112,56,224,28,224,28,224,0,224,0,224,0, + 224,0,112,0,127,252,63,252,15,252,14,19,38,16,0,0, + 0,28,0,28,0,28,0,28,0,28,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,14,14,28,16,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,255,252,255,252,255,252,224,0, + 112,0,127,252,63,252,15,252,11,19,38,16,2,0,1,224, + 7,224,15,224,14,0,28,0,255,128,255,128,255,128,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,14,19,38,16,0,251,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,0,28,0,56,31,248,31,240,31,192, + 14,19,38,16,0,0,224,0,224,0,224,0,224,0,224,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,9,19,38,16, + 2,0,28,0,28,0,28,0,0,0,0,0,252,0,252,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,255,128,255,128,8,24,24,16,0,251,7,7, + 7,0,0,63,63,63,7,7,7,7,7,7,7,7,7,7, + 7,7,14,254,252,240,14,19,38,16,0,0,224,0,224,0, + 224,0,224,0,224,0,224,120,224,240,225,224,227,192,231,128, + 239,0,255,0,255,128,251,192,241,224,224,240,224,120,224,60, + 224,28,9,19,38,16,2,0,252,0,252,0,252,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,255,128,255,128,255,128,15,14, + 28,16,0,0,255,224,255,248,255,252,227,156,227,142,227,142, + 227,142,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 14,14,28,16,0,0,225,192,231,240,239,248,254,56,248,28, + 240,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,14,14,28,16,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,127,248, + 63,240,15,192,14,19,38,16,0,251,255,192,255,240,255,248, + 224,56,224,28,224,28,224,28,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 14,19,38,16,0,251,15,252,63,252,127,252,112,28,224,28, + 224,28,224,28,224,28,224,28,224,28,112,28,127,252,63,252, + 15,252,0,28,0,28,0,28,0,28,0,28,14,14,28,16, + 0,0,225,192,231,240,239,248,254,56,248,28,240,28,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,14,14, + 28,16,0,0,15,252,63,252,127,252,240,0,224,0,255,192, + 127,240,31,248,0,60,0,28,0,60,255,248,255,240,255,192, + 11,19,38,16,2,0,28,0,28,0,28,0,28,0,28,0, + 255,128,255,128,255,128,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,14,0,15,224,7,224,1,224,14,14,28,16, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,60,224,124,113,252,127,220,63,156,14,28,14,14, + 28,16,0,0,224,28,224,28,224,28,224,28,224,28,112,56, + 112,56,56,112,56,112,28,224,28,224,15,192,15,192,7,128, + 15,14,28,16,0,0,227,142,227,142,227,142,227,142,227,142, + 227,142,227,142,227,142,227,142,227,142,247,222,127,252,126,252, + 28,112,14,14,28,16,0,0,224,28,224,28,240,60,120,120, + 60,240,31,224,15,192,15,192,31,224,60,240,120,120,240,60, + 224,28,224,28,14,19,38,16,0,251,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,0,28,0,56,31,248,31,240,31,192, + 13,14,28,16,0,0,255,248,255,248,255,248,0,240,1,224, + 3,192,7,128,15,0,30,0,60,0,120,0,255,248,255,248, + 255,248,9,29,58,16,3,251,3,128,15,128,15,128,30,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 60,0,248,0,224,0,248,0,60,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,30,0,15,128,15,128, + 3,128,3,25,25,16,5,253,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,9,29,58,16,2,251,224,0,248,0,248,0,60,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,30, + 0,15,128,3,128,15,128,30,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,60,0,248,0,248,0,224, + 0,13,5,10,16,0,8,60,56,127,56,255,248,231,240,225, + 224,0,0,0,16,0,0,0,0,0,16,0,0,0,0,0, + 16,0,0,5,8,8,16,0,253,56,56,56,56,56,120,240, + 96,13,29,58,16,0,251,0,120,1,248,3,248,3,128,7, + 0,7,0,7,0,7,0,7,0,7,0,31,192,31,192,31, + 192,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,14,0,254,0,252,0,240, + 0,11,8,16,16,0,253,56,224,56,224,56,224,56,224,56, + 224,121,224,243,192,97,128,13,3,6,16,0,0,231,56,231, + 56,231,56,9,14,28,16,2,5,28,0,28,0,28,0,255, + 128,255,128,255,128,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,9,14,28,16,2,5,28,0,28,0,28, + 0,255,128,255,128,255,128,28,0,28,0,255,128,255,128,255, + 128,28,0,28,0,28,0,10,6,12,16,2,16,12,0,30, + 0,63,0,127,128,243,192,97,128,15,22,44,16,0,0,31, + 254,63,254,127,254,119,30,227,60,227,120,227,240,247,224,127, + 192,127,128,63,0,15,56,63,252,127,252,253,238,248,198,216, + 198,152,198,29,238,15,252,15,252,7,56,14,24,48,16,0, + 0,24,192,61,224,31,192,15,128,7,0,15,192,63,240,127, + 248,112,56,224,28,224,28,224,0,112,0,127,192,63,240,15, + 248,0,56,0,28,224,28,224,28,112,56,127,248,63,240,15, + 192,5,13,13,16,0,255,48,56,112,112,224,224,224,224,224, + 112,112,56,48,14,19,38,16,0,0,15,252,63,252,127,252, + 119,0,231,0,231,0,231,0,231,0,231,224,231,224,231,224, + 231,0,231,0,231,0,231,0,119,0,127,252,63,252,15,252, + 0,0,0,16,0,0,0,0,0,16,0,0,0,0,0,16, + 0,0,0,0,0,16,0,0,5,8,8,16,5,11,48,120, + 240,224,224,224,224,224,5,8,8,16,6,11,56,56,56,56, + 56,120,240,96,11,8,16,16,2,11,48,192,121,224,243,192, + 227,128,227,128,227,128,227,128,227,128,11,8,16,16,3,11, + 56,224,56,224,56,224,56,224,56,224,121,224,243,192,97,128, + 13,13,26,16,0,3,15,128,63,224,127,240,127,240,255,248, + 255,248,255,248,255,248,255,248,127,240,127,240,63,224,15,128, + 8,3,3,16,3,8,255,255,255,16,3,6,16,0,8,255, + 255,255,255,255,255,13,5,10,16,0,16,60,56,127,56,255, + 248,231,240,225,224,15,8,16,16,0,11,255,206,255,254,255, + 254,57,254,57,254,57,206,57,206,57,206,14,22,44,16,0, + 0,24,96,60,240,31,224,15,192,7,128,3,0,0,0,0, + 0,15,252,63,252,127,252,240,0,224,0,255,192,127,240,31, + 248,0,60,0,28,0,60,255,248,255,240,255,192,5,13,13, + 16,0,255,96,224,112,112,56,56,56,56,56,120,112,224,96, + 14,14,28,16,0,0,60,240,127,248,127,248,231,28,231,28, + 231,28,231,252,231,252,231,252,231,0,231,0,127,252,127,252, + 60,252,0,0,0,16,0,0,0,0,0,16,0,0,13,24, + 48,16,0,0,56,224,56,224,56,224,0,0,0,0,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,240,120,120,240, + 61,224,31,192,15,128,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,0,0,0,16,0,0,3,19,19,16,8,0, + 224,224,224,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,13,20,40,16,0,253,7,0,7,0,7,0,15, + 128,63,224,127,240,119,112,231,56,231,56,231,0,231,0,231, + 0,231,0,119,0,127,248,63,248,15,248,7,0,7,0,7, + 0,13,22,44,16,0,0,14,0,63,128,127,128,113,192,224, + 224,224,224,224,0,224,0,255,0,255,0,255,0,224,0,224, + 0,224,0,224,0,224,0,224,56,224,56,224,112,255,240,255, + 224,255,128,13,13,26,16,0,0,64,16,224,56,112,112,63, + 224,31,192,29,192,24,192,29,192,31,192,63,224,112,112,224, + 56,64,16,15,19,38,16,0,0,96,12,240,30,120,60,60, + 120,30,240,127,252,127,252,127,252,3,128,3,128,3,128,127, + 252,127,252,127,252,3,128,3,128,3,128,3,128,3,128,3, + 25,25,16,5,253,224,224,224,224,224,224,224,224,224,224,224, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,14,27, + 54,16,0,253,15,192,63,240,63,248,112,56,112,28,120,28, + 60,28,30,28,239,0,231,128,227,192,225,224,240,240,120,120, + 60,60,30,28,15,28,7,156,3,220,225,224,224,240,224,120, + 224,56,112,56,127,240,63,240,15,128,8,3,3,16,3,16, + 231,231,231,14,19,38,16,0,0,28,0,255,128,255,224,193, + 240,0,112,31,56,127,56,127,24,224,28,224,28,224,28,127, + 24,127,56,31,56,0,112,193,240,255,224,255,128,28,0,12, + 16,32,16,2,8,15,240,63,240,127,240,112,112,224,112,224, + 112,224,112,112,112,127,240,63,240,15,240,0,0,0,0,255, + 240,255,240,255,240,13,13,26,16,0,255,48,48,56,56,112, + 112,112,112,224,224,224,224,224,224,224,224,224,224,112,112,112, + 112,56,56,48,48,14,8,16,16,0,3,255,252,255,252,255, + 252,0,28,0,28,0,28,0,28,0,28,13,3,6,16,0, + 8,255,248,255,248,255,248,14,17,34,16,0,2,28,0,255, + 128,255,224,193,240,0,112,248,56,254,56,254,24,231,28,231, + 28,231,28,254,24,254,56,254,56,239,240,231,240,227,192,8, + 3,3,16,3,16,255,255,255,12,12,24,16,2,10,15,0, + 63,192,127,224,112,224,224,112,224,112,224,112,224,112,112,224, + 127,224,63,192,15,0,13,16,32,16,0,0,7,0,7,0, + 7,0,7,0,7,0,255,248,255,248,255,248,7,0,7,0, + 7,0,7,0,7,0,255,248,255,248,255,248,6,9,9,16, + 4,15,120,132,4,4,8,16,32,64,252,6,9,9,16,4, + 15,120,132,4,8,48,8,4,132,120,7,6,6,16,5,16, + 12,30,60,120,240,96,14,18,36,16,0,251,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,225,240, + 255,252,255,188,254,12,224,0,224,0,224,0,224,0,224,0, + 14,22,44,16,0,0,7,252,31,252,63,252,127,28,119,28, + 231,28,231,28,231,28,231,28,119,28,127,28,63,252,31,252, + 7,252,7,28,7,28,7,28,7,28,7,28,7,28,7,28, + 7,28,5,5,5,16,5,6,112,248,248,248,112,6,8,8, + 16,3,251,252,252,252,60,124,248,240,96,7,9,9,16,4, + 15,16,112,16,16,16,16,16,16,254,11,16,32,16,3,8, + 14,0,63,128,127,192,113,192,224,224,224,224,224,224,113,192, + 127,192,63,128,14,0,0,0,0,0,255,224,255,224,255,224, + 13,13,26,16,0,255,96,96,224,224,112,112,112,112,56,56, + 56,56,56,56,56,56,56,56,112,112,112,112,224,224,96,96, + 15,24,48,16,0,0,8,0,56,0,8,0,8,0,8,0, + 8,0,8,2,8,4,127,8,0,16,0,32,0,64,0,128, + 1,0,2,0,4,8,8,24,16,40,32,72,64,136,128,254, + 0,8,0,8,0,62,15,24,48,16,0,0,8,0,56,0, + 8,0,8,0,8,0,8,0,8,2,8,4,127,8,0,16, + 0,32,0,64,0,128,1,0,2,0,4,120,8,132,16,4, + 32,4,64,8,128,16,0,32,0,64,0,252,15,24,48,16, + 0,0,30,0,33,0,1,0,2,0,12,0,2,0,1,2, + 33,4,30,8,0,16,0,32,0,64,0,128,1,0,2,0, + 4,8,8,24,16,40,32,72,64,136,128,254,0,8,0,8, + 0,62,14,19,38,16,0,0,3,128,3,128,3,128,0,0, + 0,0,3,128,7,128,15,0,30,0,60,0,120,0,240,0, + 224,0,224,28,224,28,112,56,127,248,63,240,15,192,14,24, + 48,16,0,0,24,0,60,0,30,0,15,0,7,128,7,128, + 7,128,15,192,15,192,28,224,28,224,56,112,56,112,112,56, + 112,56,224,28,255,252,255,252,255,252,224,28,224,28,224,28, + 224,28,224,28,14,24,48,16,0,0,0,96,0,240,1,224, + 3,192,7,128,7,128,7,128,15,192,15,192,28,224,28,224, + 56,112,56,112,112,56,112,56,224,28,255,252,255,252,255,252, + 224,28,224,28,224,28,224,28,224,28,14,24,48,16,0,0, + 3,0,7,128,15,192,31,224,28,224,11,64,7,128,15,192, + 15,192,28,224,28,224,56,112,56,112,112,56,112,56,224,28, + 255,252,255,252,255,252,224,28,224,28,224,28,224,28,224,28, + 14,24,48,16,0,0,60,56,127,56,255,248,231,240,225,224, + 7,128,7,128,15,192,15,192,28,224,28,224,56,112,56,112, + 112,56,112,56,224,28,255,252,255,252,255,252,224,28,224,28, + 224,28,224,28,224,28,14,24,48,16,0,0,56,112,56,112, + 56,112,0,0,0,0,7,128,7,128,15,192,15,192,28,224, + 28,224,56,112,56,112,112,56,112,56,224,28,255,252,255,252, + 255,252,224,28,224,28,224,28,224,28,224,28,14,24,48,16, + 0,0,7,128,15,192,28,224,24,96,28,224,15,192,7,128, + 15,192,15,192,28,224,28,224,56,112,56,112,112,56,112,56, + 224,28,255,252,255,252,255,252,224,28,224,28,224,28,224,28, + 224,28,14,19,38,16,0,0,15,252,63,252,127,252,119,0, + 231,0,231,0,231,0,231,0,255,224,255,224,255,224,231,0, + 231,0,231,0,231,0,231,0,231,252,231,252,231,252,14,24, + 48,16,0,251,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,28, + 224,28,112,56,127,248,63,240,15,192,7,0,15,0,30,0, + 60,0,24,0,14,24,48,16,0,0,24,0,60,0,30,0, + 15,0,7,128,255,252,255,252,255,252,224,0,224,0,224,0, + 224,0,224,0,255,224,255,224,255,224,224,0,224,0,224,0, + 224,0,224,0,255,252,255,252,255,252,14,24,48,16,0,0, + 0,96,0,240,1,224,3,192,7,128,255,252,255,252,255,252, + 224,0,224,0,224,0,224,0,224,0,255,224,255,224,255,224, + 224,0,224,0,224,0,224,0,224,0,255,252,255,252,255,252, + 14,24,48,16,0,0,3,0,7,128,15,192,31,224,28,224, + 255,252,255,252,255,252,224,0,224,0,224,0,224,0,224,0, + 255,224,255,224,255,224,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,14,24,48,16,0,0,56,112,56,112, + 56,112,0,0,0,0,255,252,255,252,255,252,224,0,224,0, + 224,0,224,0,224,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,224,0,255,252,255,252,255,252,13,24,48,16, + 0,0,24,0,60,0,30,0,15,0,7,0,255,248,255,248, + 255,248,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,255,248,255,248, + 255,248,13,24,48,16,0,0,0,192,1,224,3,192,7,128, + 7,0,255,248,255,248,255,248,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,255,248,255,248,255,248,13,24,48,16,0,0,2,0, + 7,0,15,128,31,192,56,224,255,248,255,248,255,248,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,255,248,255,248,255,248,13,24, + 48,16,0,0,56,224,56,224,56,224,0,0,0,0,255,248, + 255,248,255,248,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,255,248, + 255,248,255,248,14,19,38,16,0,0,31,192,31,240,31,248, + 28,56,28,28,28,28,28,28,28,28,255,156,255,156,255,156, + 28,28,28,28,28,28,28,28,28,56,31,248,31,240,31,192, + 14,24,48,16,0,0,60,56,127,56,255,248,231,240,225,224, + 224,28,240,28,248,28,252,28,254,28,239,28,231,156,227,220, + 225,252,224,252,224,124,224,60,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,14,24,48,16,0,0,12,0,30,0, + 15,0,7,128,3,128,15,192,63,240,127,248,112,56,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,112,56,127,248,63,240,15,192,14,24,48,16, + 0,0,0,192,1,224,3,192,7,128,7,0,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,112,56,127,248,63,240, + 15,192,14,24,48,16,0,0,3,0,7,128,15,192,31,224, + 60,240,24,96,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 112,56,127,248,63,240,15,192,14,24,48,16,0,0,60,56, + 127,56,255,248,231,240,225,224,15,192,63,240,127,248,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,14,24, + 48,16,0,0,56,112,56,112,56,112,0,0,0,0,15,192, + 63,240,127,248,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,127,248, + 63,240,15,192,14,13,26,16,0,3,96,24,240,60,120,120, + 60,240,31,224,15,192,7,128,15,192,31,224,60,240,120,120, + 240,60,96,24,14,19,38,16,0,0,15,192,63,240,127,248, + 112,56,224,60,224,124,224,252,225,252,227,220,231,156,239,28, + 254,28,252,28,248,28,240,28,112,56,127,248,63,240,15,192, + 14,24,48,16,0,0,24,0,60,0,30,0,15,0,7,128, + 227,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,112,56, + 127,248,63,240,15,192,14,24,48,16,0,0,0,96,0,240, + 1,224,3,192,7,128,227,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,112,56,127,248,63,240,15,192,14,24,48,16, + 0,0,3,0,7,128,15,192,31,224,60,240,24,96,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,112,56,127,248,63,240, + 15,192,14,24,48,16,0,0,56,112,56,112,56,112,0,0, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 112,56,127,248,63,240,15,192,13,24,48,16,0,0,0,96, + 0,240,1,224,3,192,7,128,227,56,224,56,224,56,224,56, + 224,56,224,56,224,56,240,120,120,240,61,224,31,192,15,128, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,14,19, + 38,16,0,0,224,0,224,0,224,0,255,192,255,240,255,248, + 224,56,224,28,224,28,224,28,224,56,255,248,255,240,255,192, + 224,0,224,0,224,0,224,0,224,0,13,25,50,16,0,253, + 3,192,7,224,15,240,30,120,60,56,120,56,240,56,224,56, + 224,112,224,224,224,224,224,224,224,224,224,112,224,56,224,56, + 224,56,224,56,224,120,227,240,227,224,227,192,224,0,224,0, + 224,0,14,22,44,16,0,0,6,0,15,0,7,128,3,192, + 1,224,0,192,0,0,0,0,15,252,63,252,127,252,112,28, + 224,28,224,28,224,28,224,28,224,60,224,124,113,252,127,220, + 63,156,14,28,14,22,44,16,0,0,0,96,0,240,1,224, + 3,192,7,128,3,0,0,0,0,0,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,60,224,124,113,252, + 127,220,63,156,14,28,14,22,44,16,0,0,3,0,7,128, + 15,192,31,224,60,240,24,96,0,0,0,0,15,252,63,252, + 127,252,112,28,224,28,224,28,224,28,224,28,224,60,224,124, + 113,252,127,220,63,156,14,28,14,21,42,16,0,0,60,56, + 127,56,255,248,231,240,225,224,0,0,0,0,15,252,63,252, + 127,252,112,28,224,28,224,28,224,28,224,28,224,60,224,124, + 113,252,127,220,63,156,14,28,14,19,38,16,0,0,56,112, + 56,112,56,112,0,0,0,0,15,252,63,252,127,252,112,28, + 224,28,224,28,224,28,224,28,224,60,224,124,113,252,127,220, + 63,156,14,28,14,21,42,16,0,0,7,192,15,224,12,96, + 12,96,12,96,15,224,7,192,15,252,63,252,127,252,112,28, + 224,28,224,28,224,28,224,28,224,60,224,124,113,252,127,220, + 63,156,14,28,14,14,28,16,0,0,15,192,63,240,127,248, + 119,120,231,60,231,28,231,252,231,252,231,252,231,0,119,0, + 127,252,63,252,15,252,14,19,38,16,0,251,15,192,63,240, + 127,248,112,56,224,28,224,28,224,0,224,0,224,0,224,0, + 112,0,127,252,63,252,15,252,7,0,15,0,30,0,60,0, + 24,0,14,22,44,16,0,0,24,0,60,0,30,0,15,0, + 7,128,3,0,0,0,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,255,252,255,252,255,252,224,0,112,0,127,252, + 63,252,15,252,14,22,44,16,0,0,0,96,0,240,1,224, + 3,192,7,128,3,0,0,0,0,0,15,192,63,240,127,248, + 112,56,224,28,224,28,255,252,255,252,255,252,224,0,112,0, + 127,252,63,252,15,252,14,22,44,16,0,0,3,0,7,128, + 15,192,31,224,60,240,24,96,0,0,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,255,252,255,252,255,252,224,0, + 112,0,127,252,63,252,15,252,14,19,38,16,0,0,56,112, + 56,112,56,112,0,0,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,255,252,255,252,255,252,224,0,112,0,127,252, + 63,252,15,252,9,22,44,16,2,0,96,0,240,0,120,0, + 60,0,30,0,12,0,0,0,0,0,252,0,252,0,252,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 255,128,255,128,255,128,9,22,44,16,2,0,3,0,7,128, + 15,0,30,0,60,0,24,0,0,0,0,0,252,0,252,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,255,128,255,128,10,22,44,16,2,0,12,0, + 30,0,63,0,127,128,243,192,97,128,0,0,0,0,252,0, + 252,0,252,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,255,128,255,128,255,128,9,19,38,16,2,0, + 227,128,227,128,227,128,0,0,0,0,252,0,252,0,252,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 255,128,255,128,255,128,14,23,46,16,0,0,49,128,123,192, + 63,128,31,0,31,0,63,128,123,192,49,224,0,240,15,248, + 63,252,127,252,112,60,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,21,42,16,0,0, + 60,56,127,56,255,248,231,240,225,224,0,0,0,0,225,192, + 231,240,239,248,254,56,248,28,240,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,14,22,44,16,0,0, + 24,0,60,0,30,0,15,0,7,128,3,0,0,0,0,0, + 15,192,63,240,127,248,112,56,224,28,224,28,224,28,224,28, + 224,28,224,28,112,56,127,248,63,240,15,192,14,22,44,16, + 0,0,0,96,0,240,1,224,3,192,7,128,3,0,0,0, + 0,0,15,192,63,240,127,248,112,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,14,22, + 44,16,0,0,3,0,7,128,15,192,31,224,60,240,24,96, + 0,0,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,112,56,127,248,63,240,15,192, + 14,21,42,16,0,0,60,56,127,56,255,248,231,240,225,224, + 0,0,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,112,56,127,248,63,240,15,192, + 14,19,38,16,0,0,56,112,56,112,56,112,0,0,0,0, + 15,192,63,240,127,248,112,56,224,28,224,28,224,28,224,28, + 224,28,224,28,112,56,127,248,63,240,15,192,13,14,28,16, + 0,2,7,0,7,0,7,0,0,0,0,0,255,248,255,248, + 255,248,0,0,0,0,0,0,7,0,7,0,7,0,14,14, + 28,16,0,0,15,192,63,240,127,248,112,120,224,252,225,220, + 227,156,231,28,238,28,252,28,120,56,127,248,63,240,15,192, + 14,22,44,16,0,0,24,0,60,0,30,0,15,0,7,128, + 3,0,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,60,224,124,113,252,127,220,63,156, + 14,28,14,22,44,16,0,0,0,96,0,240,1,224,3,192, + 7,128,3,0,0,0,0,0,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,60,224,124,113,252,127,220, + 63,156,14,28,14,22,44,16,0,0,3,0,7,128,15,192, + 31,224,60,240,24,96,0,0,0,0,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,60,224,124,113,252, + 127,220,63,156,14,28,14,19,38,16,0,0,56,112,56,112, + 56,112,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,60,224,124,113,252,127,220,63,156, + 14,28,14,27,54,16,0,251,0,96,0,240,1,224,3,192, + 7,128,3,0,0,0,0,0,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,112,28,127,252, + 63,252,15,252,0,28,0,56,31,248,31,240,31,192,14,24, + 48,16,0,251,224,0,224,0,224,0,224,0,224,0,255,192, + 255,240,255,248,224,56,224,28,224,28,224,28,224,28,224,28, + 224,28,224,56,255,248,255,240,255,192,224,0,224,0,224,0, + 224,0,224,0,14,24,48,16,0,251,56,112,56,112,56,112, + 0,0,0,0,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,112,28,127,252,63,252,31,252, + 0,28,0,56,31,248,31,240,31,224}; +/* + Fontname: ProFont29 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 19, '1' Height: 19 + Calculated Max Values w=16 h=29 x= 5 y=15 dx=16 dy= 0 ascent=24 len=58 + Font Bounding box w=16 h=28 x= 0 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =22 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont29r[3719] U8G_FONT_SECTION("u8g_font_profont29r") = { + 0,16,28,0,251,19,4,198,9,234,32,127,251,24,251,22, + 251,0,0,0,16,0,0,3,19,19,16,5,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,224,224,224, + 9,9,18,16,2,13,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,15,15,30,16,0,5,28,112, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,28,112, + 255,254,255,254,255,254,28,112,28,112,28,112,13,25,50,16, + 0,253,7,0,7,0,7,0,15,128,63,224,127,240,119,112, + 231,56,231,56,231,0,119,0,127,128,63,224,15,240,7,112, + 7,56,231,56,231,56,119,112,127,240,63,224,15,128,7,0, + 7,0,7,0,14,19,38,16,0,0,31,252,63,252,127,252, + 102,28,231,60,231,120,231,240,103,224,127,224,63,192,31,240, + 31,48,63,56,127,56,247,56,227,48,227,240,225,224,224,192, + 14,19,38,16,0,0,15,0,63,192,127,224,112,224,225,224, + 227,192,231,128,127,0,126,0,60,0,126,8,127,28,231,188, + 227,248,225,240,113,240,127,248,63,188,14,24,3,9,9,16, + 5,13,224,224,224,224,224,224,224,224,224,9,25,50,16,3, + 253,3,0,7,128,15,0,30,0,60,0,120,0,240,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,240,0,120,0,60,0,30,0,15,0,7, + 128,3,0,9,25,50,16,2,253,96,0,240,0,120,0,60, + 0,30,0,15,0,7,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,7,128,15, + 0,30,0,60,0,120,0,240,0,96,0,13,13,26,16,0, + 5,7,0,7,0,103,48,247,248,127,240,31,192,31,192,127, + 240,255,248,103,48,7,0,7,0,7,0,13,13,26,16,0, + 3,7,0,7,0,7,0,7,0,7,0,255,248,255,248,255, + 248,7,0,7,0,7,0,7,0,7,0,6,11,11,16,3, + 251,56,124,124,124,60,28,28,60,120,240,96,8,3,3,16, + 3,8,255,255,255,5,5,5,16,4,1,112,248,248,248,112, + 15,26,52,16,0,251,0,14,0,14,0,28,0,28,0,56, + 0,56,0,112,0,112,0,224,0,224,1,192,1,192,3,128, + 3,128,7,0,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,224,0,224,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,60,224,124,224,252,225,252, + 227,220,231,156,239,28,254,28,252,28,248,28,240,28,112,56, + 127,248,63,240,15,192,13,19,38,16,0,0,7,0,7,0, + 15,0,127,0,127,0,127,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,255,248,255,248, + 255,248,14,19,38,16,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,0,28,0,56,0,120,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,127,252,255,252,255,252,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 0,28,0,120,3,240,3,224,3,240,0,120,0,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 0,224,1,224,3,224,7,224,15,224,30,224,60,224,120,224, + 240,224,224,224,255,252,255,252,255,252,0,224,0,224,0,224, + 7,252,7,252,7,252,14,19,38,16,0,0,255,252,255,252, + 255,252,224,0,224,0,255,192,255,240,255,248,0,56,0,28, + 0,28,0,28,0,28,224,28,224,28,112,56,127,248,63,240, + 15,192,14,19,38,16,0,0,15,224,63,224,127,224,112,0, + 224,0,255,192,255,240,255,248,224,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,14,19, + 38,16,0,0,255,252,255,252,255,252,0,28,0,28,0,28, + 0,60,0,120,0,240,1,224,3,192,7,128,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,28,224,28,224,28,120,120, + 63,240,31,224,63,240,120,120,224,28,224,28,224,28,112,56, + 127,248,63,240,15,192,14,19,38,16,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 112,28,127,252,63,252,15,252,0,28,0,56,31,248,31,240, + 31,192,5,13,13,16,4,1,112,248,248,248,112,0,0,0, + 112,248,248,248,112,6,19,19,16,3,251,56,124,124,124,56, + 0,0,0,56,124,124,124,60,28,28,60,120,240,96,12,19, + 38,16,2,0,0,96,0,240,1,224,3,192,7,128,15,0, + 30,0,60,0,120,0,240,0,120,0,60,0,30,0,15,0, + 7,128,3,192,1,224,0,240,0,96,14,9,18,16,0,5, + 255,252,255,252,255,252,0,0,0,0,0,0,255,252,255,252, + 255,252,12,19,38,16,2,0,96,0,240,0,120,0,60,0, + 30,0,15,0,7,128,3,192,1,224,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,120,0,240,0,96,0,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 0,28,0,60,0,120,0,240,1,224,3,192,7,128,7,0, + 0,0,0,0,7,0,7,0,7,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,28,225,252,227,252,231,252, + 231,28,231,28,231,28,231,252,227,248,225,240,224,0,112,0, + 127,252,63,252,15,252,14,19,38,16,0,0,7,128,7,128, + 15,192,15,192,28,224,28,224,56,112,56,112,112,56,112,56, + 224,28,255,252,255,252,255,252,224,28,224,28,224,28,224,28, + 224,28,14,19,38,16,0,0,255,192,255,240,255,248,224,56, + 224,28,224,28,224,28,224,120,255,240,255,224,255,240,224,120, + 224,28,224,28,224,28,224,56,255,248,255,240,255,192,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,14,19,38,16,0,0,255,252,255,252, + 255,252,224,0,224,0,224,0,224,0,224,0,255,224,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,255,252,255,252, + 255,252,14,19,38,16,0,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,255,224,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,252,224,252,224,252,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 255,252,255,252,255,252,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,13,19,38,16,0,0,255,248,255,248, + 255,248,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,255,248,255,248, + 255,248,14,19,38,16,0,0,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,13,19, + 38,16,0,0,224,56,224,120,224,240,225,224,227,192,231,128, + 239,0,254,0,252,0,248,0,252,0,254,0,239,0,231,128, + 227,192,225,224,224,240,224,120,224,56,14,19,38,16,0,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,15,19,38,16,0,0,224,14,240,30, + 248,62,252,126,254,254,239,238,231,206,227,142,227,142,227,142, + 227,142,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,14,19,38,16,0,0,224,28,240,28,248,28,252,28, + 254,28,239,28,231,156,227,220,225,252,224,252,224,124,224,60, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,14,22,44,16,0,253,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,230,28,239,28,119,248,127,248,63,240, + 15,240,0,120,0,60,0,24,14,19,38,16,0,0,255,192, + 255,240,255,248,224,56,224,28,224,28,224,28,224,120,255,240, + 255,224,255,240,224,120,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,14,19,38,16,0,0,15,192,63,240,127,248, + 112,56,224,28,224,28,224,0,112,0,127,192,63,240,15,248, + 0,56,0,28,224,28,224,28,112,56,127,248,63,240,15,192, + 13,19,38,16,0,0,255,248,255,248,255,248,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,14,19,38,16, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 112,56,127,248,63,240,15,192,14,19,38,16,0,0,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,112,56, + 56,112,56,112,28,224,28,224,15,192,15,192,7,128,7,128, + 3,0,3,0,15,19,38,16,0,0,224,14,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,227,142,227,142,227,142, + 227,142,231,206,239,254,254,254,252,126,248,62,240,30,224,14, + 14,19,38,16,0,0,224,28,224,28,224,28,224,28,240,60, + 120,120,60,240,31,224,15,192,7,128,15,192,31,224,60,240, + 120,120,240,60,224,28,224,28,224,28,224,28,13,19,38,16, + 0,0,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,120,240,61,224,31,192,15,128,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,14,19,38,16,0,0,255,252, + 255,252,255,252,0,28,0,60,0,120,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,120,0,240,0,224,0,255,252, + 255,252,255,252,6,25,25,16,5,253,252,252,252,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 252,252,252,15,26,52,16,1,251,224,0,224,0,112,0,112, + 0,56,0,56,0,28,0,28,0,14,0,14,0,7,0,7, + 0,3,128,3,128,1,192,1,192,0,224,0,224,0,112,0, + 112,0,56,0,56,0,28,0,28,0,14,0,14,6,25,25, + 16,2,253,252,252,252,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,252,252,14,8,16,16, + 0,11,3,0,7,128,15,192,31,224,60,240,120,120,240,60, + 96,24,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,16,2,15,96,240,120,60,30,12,14,14,28,16,0,0, + 15,252,63,252,127,252,112,28,224,28,224,28,224,28,224,28, + 224,60,224,124,113,252,127,220,63,156,14,28,14,19,38,16, + 0,0,224,0,224,0,224,0,224,0,224,0,255,192,255,240, + 255,248,224,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,56,255,248,255,240,255,192,14,14,28,16,0,0,15,192, + 63,240,127,248,112,56,224,28,224,28,224,0,224,0,224,0, + 224,0,112,0,127,252,63,252,15,252,14,19,38,16,0,0, + 0,28,0,28,0,28,0,28,0,28,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,14,14,28,16,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,255,252,255,252,255,252,224,0, + 112,0,127,252,63,252,15,252,11,19,38,16,2,0,1,224, + 7,224,15,224,14,0,28,0,255,128,255,128,255,128,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,14,19,38,16,0,251,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,0,28,0,56,31,248,31,240,31,192, + 14,19,38,16,0,0,224,0,224,0,224,0,224,0,224,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,9,19,38,16, + 2,0,28,0,28,0,28,0,0,0,0,0,252,0,252,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,255,128,255,128,8,24,24,16,0,251,7,7, + 7,0,0,63,63,63,7,7,7,7,7,7,7,7,7,7, + 7,7,14,254,252,240,14,19,38,16,0,0,224,0,224,0, + 224,0,224,0,224,0,224,120,224,240,225,224,227,192,231,128, + 239,0,255,0,255,128,251,192,241,224,224,240,224,120,224,60, + 224,28,9,19,38,16,2,0,252,0,252,0,252,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,255,128,255,128,255,128,15,14, + 28,16,0,0,255,224,255,248,255,252,227,156,227,142,227,142, + 227,142,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 14,14,28,16,0,0,225,192,231,240,239,248,254,56,248,28, + 240,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,14,14,28,16,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,127,248, + 63,240,15,192,14,19,38,16,0,251,255,192,255,240,255,248, + 224,56,224,28,224,28,224,28,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 14,19,38,16,0,251,15,252,63,252,127,252,112,28,224,28, + 224,28,224,28,224,28,224,28,224,28,112,28,127,252,63,252, + 15,252,0,28,0,28,0,28,0,28,0,28,14,14,28,16, + 0,0,225,192,231,240,239,248,254,56,248,28,240,28,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,14,14, + 28,16,0,0,15,252,63,252,127,252,240,0,224,0,255,192, + 127,240,31,248,0,60,0,28,0,60,255,248,255,240,255,192, + 11,19,38,16,2,0,28,0,28,0,28,0,28,0,28,0, + 255,128,255,128,255,128,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,14,0,15,224,7,224,1,224,14,14,28,16, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,60,224,124,113,252,127,220,63,156,14,28,14,14, + 28,16,0,0,224,28,224,28,224,28,224,28,224,28,112,56, + 112,56,56,112,56,112,28,224,28,224,15,192,15,192,7,128, + 15,14,28,16,0,0,227,142,227,142,227,142,227,142,227,142, + 227,142,227,142,227,142,227,142,227,142,247,222,127,252,126,252, + 28,112,14,14,28,16,0,0,224,28,224,28,240,60,120,120, + 60,240,31,224,15,192,15,192,31,224,60,240,120,120,240,60, + 224,28,224,28,14,19,38,16,0,251,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,0,28,0,56,31,248,31,240,31,192, + 13,14,28,16,0,0,255,248,255,248,255,248,0,240,1,224, + 3,192,7,128,15,0,30,0,60,0,120,0,255,248,255,248, + 255,248,9,29,58,16,3,251,3,128,15,128,15,128,30,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 60,0,248,0,224,0,248,0,60,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,30,0,15,128,15,128, + 3,128,3,25,25,16,5,253,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,9,29,58,16,2,251,224,0,248,0,248,0,60,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,30, + 0,15,128,3,128,15,128,30,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,60,0,248,0,248,0,224, + 0,13,5,10,16,0,8,60,56,127,56,255,248,231,240,225, + 224,0,0,0,16,0,0}; /* Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 Copyright: Copyright BMoser 2008 @@ -69946,7 +73304,7 @@ const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[1012] U8G_SECTION(".progmem.u8g Max Font ascent =10 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[1376] U8G_SECTION(".progmem.u8g_font_robot_de_niro") = { +const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[1376] U8G_FONT_SECTION("u8g_font_robot_de_niro") = { 0,10,10,255,0,6,1,97,2,193,32,255,1,10,0,9, 0,0,0,0,2,0,0,2,5,5,3,0,3,192,128,128, 0,128,3,2,2,4,0,6,160,160,5,5,5,6,0,3, @@ -70046,8 +73404,8 @@ const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[1376] U8G_SECTION(".progmem.u8g_ Max Font ascent = 9 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[178] U8G_SECTION(".progmem.u8g_font_robot_de_niron") = { - 0,10,10,255,0,5,0,0,0,0,42,57,0,9,0,5, +const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[187] U8G_FONT_SECTION("u8g_font_robot_de_niron") = { + 0,10,10,255,0,5,0,0,0,0,42,58,0,9,0,5, 0,3,3,3,4,0,6,160,64,160,3,3,3,4,0,4, 64,224,64,2,2,2,3,0,2,64,128,3,1,1,4,0, 5,224,1,1,1,2,0,3,128,3,5,5,4,0,3,32, @@ -70058,7 +73416,7 @@ const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[178] U8G_SECTION(".progmem.u8g_ 3,96,128,224,32,224,3,5,5,4,0,3,96,128,224,160, 64,4,5,5,5,0,3,224,32,112,32,32,3,5,5,4, 0,3,96,160,224,160,192,3,5,5,4,0,3,96,160,224, - 32,192}; + 32,192,1,3,3,2,0,4,128,0,128}; /* Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 Copyright: Copyright BMoser 2008 @@ -70071,7 +73429,7 @@ const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[178] U8G_SECTION(".progmem.u8g_ Max Font ascent =10 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[1041] U8G_SECTION(".progmem.u8g_font_robot_de_niror") = { +const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[1041] U8G_FONT_SECTION("u8g_font_robot_de_niror") = { 0,10,10,255,0,6,1,97,2,193,32,127,1,10,0,9, 0,0,0,0,2,0,0,2,5,5,3,0,3,192,128,128, 0,128,3,2,2,4,0,6,160,160,5,5,5,6,0,3, @@ -70150,7 +73508,7 @@ const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[1041] U8G_SECTION(".progmem.u8g Max Font ascent =11 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb08[2612] U8G_SECTION(".progmem.u8g_font_symb08") = { +const u8g_fntpgm_uint8_t u8g_font_symb08[2612] U8G_FONT_SECTION("u8g_font_symb08") = { 0,11,15,255,252,7,1,152,3,60,32,255,254,11,252,7, 254,0,0,0,3,0,1,1,7,7,3,1,0,128,128,128, 128,128,0,128,7,7,7,7,0,0,130,68,124,40,40,16, @@ -70327,7 +73685,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb08[2612] U8G_SECTION(".progmem.u8g_font_sy Max Font ascent =10 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb08r[1211] U8G_SECTION(".progmem.u8g_font_symb08r") = { +const u8g_fntpgm_uint8_t u8g_font_symb08r[1211] U8G_FONT_SECTION("u8g_font_symb08r") = { 0,11,15,255,252,7,1,152,3,60,32,127,254,10,253,7, 254,0,0,0,3,0,1,1,7,7,3,1,0,128,128,128, 128,128,0,128,7,7,7,7,0,0,130,68,124,40,40,16, @@ -70416,7 +73774,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb08r[1211] U8G_SECTION(".progmem.u8g_font_s Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb10[3433] U8G_SECTION(".progmem.u8g_font_symb10") = { +const u8g_fntpgm_uint8_t u8g_font_symb10[3433] U8G_FONT_SECTION("u8g_font_symb10") = { 0,16,15,255,253,10,2,6,4,121,32,255,253,12,253,10, 253,0,0,0,4,0,1,1,10,10,5,2,0,128,128,128, 128,128,128,128,0,128,128,9,10,20,9,0,0,128,128,65, @@ -70644,7 +74002,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb10[3433] U8G_SECTION(".progmem.u8g_font_sy Max Font ascent =12 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb10r[1633] U8G_SECTION(".progmem.u8g_font_symb10r") = { +const u8g_fntpgm_uint8_t u8g_font_symb10r[1633] U8G_FONT_SECTION("u8g_font_symb10r") = { 0,16,15,255,253,10,2,6,4,121,32,127,253,12,253,10, 253,0,0,0,4,0,1,1,10,10,5,2,0,128,128,128, 128,128,128,128,0,128,128,9,10,20,9,0,0,128,128,65, @@ -70760,7 +74118,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb10r[1633] U8G_SECTION(".progmem.u8g_font_s Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb12[4136] U8G_SECTION(".progmem.u8g_font_symb12") = { +const u8g_fntpgm_uint8_t u8g_font_symb12[4136] U8G_FONT_SECTION("u8g_font_symb12") = { 0,20,17,253,252,11,2,70,5,85,32,255,252,13,252,12, 252,0,0,0,4,0,1,3,11,11,5,1,0,64,224,224, 224,64,64,64,0,64,224,64,11,12,24,11,0,0,128,32, @@ -71032,7 +74390,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb12[4136] U8G_SECTION(".progmem.u8g_font_sy Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb12r[1985] U8G_SECTION(".progmem.u8g_font_symb12r") = { +const u8g_fntpgm_uint8_t u8g_font_symb12r[1985] U8G_FONT_SECTION("u8g_font_symb12r") = { 0,20,17,253,252,11,2,70,5,85,32,127,252,13,252,12, 252,0,0,0,4,0,1,3,11,11,5,1,0,64,224,224, 224,64,64,64,0,64,224,64,11,12,24,11,0,0,128,32, @@ -71170,7 +74528,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb12r[1985] U8G_SECTION(".progmem.u8g_font_s Max Font ascent =14 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb14[4665] U8G_SECTION(".progmem.u8g_font_symb14") = { +const u8g_fntpgm_uint8_t u8g_font_symb14[4665] U8G_FONT_SECTION("u8g_font_symb14") = { 0,20,19,255,251,13,2,127,6,16,32,255,252,14,251,13, 252,0,0,0,5,0,1,2,13,13,6,2,0,192,192,192, 192,192,192,192,64,64,0,0,192,192,13,13,26,13,0,0, @@ -71475,7 +74833,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb14[4665] U8G_SECTION(".progmem.u8g_font_sy Max Font ascent =14 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb14r[2261] U8G_SECTION(".progmem.u8g_font_symb14r") = { +const u8g_fntpgm_uint8_t u8g_font_symb14r[2261] U8G_FONT_SECTION("u8g_font_symb14r") = { 0,20,19,255,251,13,2,127,6,16,32,127,252,14,251,13, 252,0,0,0,5,0,1,2,13,13,6,2,0,192,192,192, 192,192,192,192,64,64,0,0,192,192,13,13,26,13,0,0, @@ -71630,7 +74988,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb14r[2261] U8G_SECTION(".progmem.u8g_font_s Max Font ascent =19 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb18[6604] U8G_SECTION(".progmem.u8g_font_symb18") = { +const u8g_fntpgm_uint8_t u8g_font_symb18[6604] U8G_FONT_SECTION("u8g_font_symb18") = { 0,27,24,255,251,17,3,215,8,151,32,255,251,19,251,17, 251,0,0,0,6,0,1,3,17,17,7,2,0,64,224,224, 224,224,224,224,224,64,64,64,64,0,0,0,192,192,15,17, @@ -72056,7 +75414,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb18[6604] U8G_SECTION(".progmem.u8g_font_sy Max Font ascent =19 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb18r[3303] U8G_SECTION(".progmem.u8g_font_symb18r") = { +const u8g_fntpgm_uint8_t u8g_font_symb18r[3303] U8G_FONT_SECTION("u8g_font_symb18r") = { 0,27,24,255,251,17,3,215,8,151,32,127,251,19,251,17, 251,0,0,0,6,0,1,3,17,17,7,2,0,64,224,224, 224,224,224,224,224,64,64,64,64,0,0,0,192,192,15,17, @@ -72276,7 +75634,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb18r[3303] U8G_SECTION(".progmem.u8g_font_s Max Font ascent =27 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb24[10727] U8G_SECTION(".progmem.u8g_font_symb24") = { +const u8g_fntpgm_uint8_t u8g_font_symb24[10727] U8G_FONT_SECTION("u8g_font_symb24") = { 0,40,34,251,249,23,5,133,13,247,32,255,249,27,249,23, 249,0,0,0,8,0,1,4,23,23,11,4,0,96,240,240, 240,240,240,96,96,96,96,96,96,96,96,96,96,0,0,0, @@ -72960,7 +76318,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb24[10727] U8G_SECTION(".progmem.u8g_font_s Max Font ascent =27 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_symb24r[5335] U8G_SECTION(".progmem.u8g_font_symb24r") = { +const u8g_fntpgm_uint8_t u8g_font_symb24r[5335] U8G_FONT_SECTION("u8g_font_symb24r") = { 0,40,34,251,249,23,5,133,13,247,32,127,249,27,249,23, 249,0,0,0,8,0,1,4,23,23,11,4,0,96,240,240, 240,240,240,96,96,96,96,96,96,96,96,96,96,0,0,0, @@ -73307,7 +76665,7 @@ const u8g_fntpgm_uint8_t u8g_font_symb24r[5335] U8G_SECTION(".progmem.u8g_font_s Max Font ascent =10 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB08[2551] U8G_SECTION(".progmem.u8g_font_timB08") = { +const u8g_fntpgm_uint8_t u8g_font_timB08[2551] U8G_FONT_SECTION("u8g_font_timB08") = { 0,13,18,254,251,7,1,164,3,77,32,255,253,10,253,7, 253,0,0,0,2,0,1,2,7,7,4,1,0,192,192,192, 192,0,192,192,3,3,3,5,1,4,160,160,160,5,7,7, @@ -73480,7 +76838,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB08[2551] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent = 8 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB08r[1221] U8G_SECTION(".progmem.u8g_font_timB08r") = { +const u8g_fntpgm_uint8_t u8g_font_timB08r[1221] U8G_FONT_SECTION("u8g_font_timB08r") = { 0,13,18,254,251,7,1,164,3,77,32,127,253,8,253,7, 253,0,0,0,2,0,1,2,7,7,4,1,0,192,192,192, 192,0,192,192,3,3,3,5,1,4,160,160,160,5,7,7, @@ -73570,7 +76928,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB08r[1221] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB10[3539] U8G_SECTION(".progmem.u8g_font_timB10") = { +const u8g_fntpgm_uint8_t u8g_font_timB10[3539] U8G_FONT_SECTION("u8g_font_timB10") = { 0,17,24,254,250,10,2,6,4,148,32,255,253,14,253,10, 253,0,0,0,3,0,1,2,10,10,4,1,0,192,192,192, 192,192,192,192,0,192,192,5,4,4,7,1,6,216,216,216, @@ -73805,7 +77163,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB10[3539] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =11 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB10r[1632] U8G_SECTION(".progmem.u8g_font_timB10r") = { +const u8g_fntpgm_uint8_t u8g_font_timB10r[1632] U8G_FONT_SECTION("u8g_font_timB10r") = { 0,17,24,254,250,10,2,6,4,148,32,127,253,11,253,10, 253,0,0,0,3,0,1,2,10,10,4,1,0,192,192,192, 192,192,192,192,0,192,192,5,4,4,7,1,6,216,216,216, @@ -73921,7 +77279,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB10r[1632] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =16 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB12[3887] U8G_SECTION(".progmem.u8g_font_timB12") = { +const u8g_fntpgm_uint8_t u8g_font_timB12[3887] U8G_FONT_SECTION("u8g_font_timB12") = { 0,19,27,254,249,11,2,42,5,41,32,255,252,16,252,11, 252,0,0,0,5,0,1,2,11,11,6,2,0,192,192,192, 192,192,128,128,0,0,192,192,5,5,5,9,1,6,216,216, @@ -74177,7 +77535,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB12[3887] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =12 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB12r[1834] U8G_SECTION(".progmem.u8g_font_timB12r") = { +const u8g_fntpgm_uint8_t u8g_font_timB12r[1834] U8G_FONT_SECTION("u8g_font_timB12r") = { 0,19,27,254,249,11,2,42,5,41,32,127,252,12,252,11, 252,0,0,0,5,0,1,2,11,11,6,2,0,192,192,192, 192,192,128,128,0,0,192,192,5,5,5,9,1,6,216,216, @@ -74305,7 +77663,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB12r[1834] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =17 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB14[4851] U8G_SECTION(".progmem.u8g_font_timB14") = { +const u8g_fntpgm_uint8_t u8g_font_timB14[4851] U8G_FONT_SECTION("u8g_font_timB14") = { 0,22,28,254,249,13,2,178,6,78,32,255,252,17,252,13, 252,0,0,0,5,0,1,3,13,13,6,1,0,64,224,224, 224,224,224,224,64,64,0,224,224,224,6,6,6,10,2,7, @@ -74622,7 +77980,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB14[4851] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =14 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB14r[2295] U8G_SECTION(".progmem.u8g_font_timB14r") = { +const u8g_fntpgm_uint8_t u8g_font_timB14r[2295] U8G_FONT_SECTION("u8g_font_timB14r") = { 0,22,28,254,249,13,2,178,6,78,32,127,252,14,252,13, 252,0,0,0,5,0,1,3,13,13,6,1,0,64,224,224, 224,224,224,224,64,64,0,224,224,224,6,6,6,10,2,7, @@ -74779,7 +78137,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB14r[2295] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =23 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB18[7223] U8G_SECTION(".progmem.u8g_font_timB18") = { +const u8g_fntpgm_uint8_t u8g_font_timB18[7223] U8G_FONT_SECTION("u8g_font_timB18") = { 0,27,38,254,246,17,4,47,9,109,32,255,251,23,250,17, 251,0,0,0,6,0,1,4,17,17,8,2,0,96,240,240, 240,240,240,96,96,96,96,96,0,0,96,240,240,96,8,8, @@ -75244,7 +78602,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB18[7223] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =18 descent=-5 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB18r[3355] U8G_SECTION(".progmem.u8g_font_timB18r") = { +const u8g_fntpgm_uint8_t u8g_font_timB18r[3355] U8G_FONT_SECTION("u8g_font_timB18r") = { 0,27,38,254,246,17,4,47,9,109,32,127,251,18,251,17, 251,0,0,0,6,0,1,4,17,17,8,2,0,96,240,240, 240,240,240,96,96,96,96,96,0,0,96,240,240,96,8,8, @@ -75467,7 +78825,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB18r[3355] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =30 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB24[10820] U8G_SECTION(".progmem.u8g_font_timB24") = { +const u8g_fntpgm_uint8_t u8g_font_timB24[10820] U8G_FONT_SECTION("u8g_font_timB24") = { 0,38,49,251,244,23,5,149,13,202,32,255,249,30,249,23, 249,0,0,0,8,0,1,5,23,23,11,3,0,112,248,248, 248,248,248,248,112,112,112,112,32,32,32,32,0,0,0,112, @@ -76149,7 +79507,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB24[10820] U8G_SECTION(".progmem.u8g_font_t Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. Capital A Height: 0, '1' Height: 23 - Calculated Max Values w=16 h=25 x= 2 y= 9 dx=19 dy= 0 ascent=25 len=50 + Calculated Max Values w=16 h=25 x= 3 y= 9 dx=19 dy= 0 ascent=25 len=50 Font Bounding box w=38 h=49 x=-5 y=-12 Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 Pure Font ascent =23 descent= 0 @@ -76157,8 +79515,8 @@ const u8g_fntpgm_uint8_t u8g_font_timB24[10820] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =25 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB24n[701] U8G_SECTION(".progmem.u8g_font_timB24n") = { - 0,38,49,251,244,23,0,0,0,0,42,57,0,25,250,23, +const u8g_fntpgm_uint8_t u8g_font_timB24n[723] U8G_FONT_SECTION("u8g_font_timB24n") = { + 0,38,49,251,244,23,0,0,0,0,42,58,0,25,250,23, 0,13,14,28,17,1,9,3,0,7,0,7,0,231,56,242, 120,122,240,15,128,15,128,122,240,242,120,231,56,7,0,7, 0,6,0,15,15,30,19,2,0,3,128,3,128,3,128,3, @@ -76201,7 +79559,9 @@ const u8g_fntpgm_uint8_t u8g_font_timB24n[701] U8G_SECTION(".progmem.u8g_font_ti 60,240,56,120,120,127,240,31,192,14,23,46,16,1,0,15, 192,28,224,56,112,120,120,120,120,248,120,248,124,248,124,248, 124,248,124,120,124,124,124,62,252,31,248,0,248,0,240,1, - 240,1,224,3,192,7,128,15,0,60,0,224,0}; + 240,1,224,3,192,7,128,15,0,60,0,224,0,5,16,16, + 11,3,0,112,248,248,248,112,0,0,0,0,0,0,112,248, + 248,248,112}; /* Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -76214,7 +79574,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB24n[701] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =26 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timB24r[5003] U8G_SECTION(".progmem.u8g_font_timB24r") = { +const u8g_fntpgm_uint8_t u8g_font_timB24r[5003] U8G_FONT_SECTION("u8g_font_timB24r") = { 0,38,49,251,244,23,5,149,13,202,32,127,249,26,249,23, 249,0,0,0,8,0,1,5,23,23,11,3,0,112,248,248, 248,248,248,248,112,112,112,112,32,32,32,32,0,0,0,112, @@ -76540,7 +79900,7 @@ const u8g_fntpgm_uint8_t u8g_font_timB24r[5003] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =10 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR08[2512] U8G_SECTION(".progmem.u8g_font_timR08") = { +const u8g_fntpgm_uint8_t u8g_font_timR08[2512] U8G_FONT_SECTION("u8g_font_timR08") = { 0,12,17,254,252,7,1,147,3,56,32,255,254,10,253,7, 254,0,0,0,2,0,1,1,7,7,3,1,0,128,128,128, 128,128,0,128,3,2,2,4,0,5,160,160,5,7,7,5, @@ -76711,7 +80071,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR08[2512] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent = 8 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR08r[1198] U8G_SECTION(".progmem.u8g_font_timR08r") = { +const u8g_fntpgm_uint8_t u8g_font_timR08r[1198] U8G_FONT_SECTION("u8g_font_timR08r") = { 0,12,17,254,252,7,1,147,3,56,32,127,254,8,253,7, 254,0,0,0,2,0,1,1,7,7,3,1,0,128,128,128, 128,128,0,128,3,2,2,4,0,5,160,160,5,7,7,5, @@ -76799,7 +80159,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR08r[1198] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =14 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR10[3359] U8G_SECTION(".progmem.u8g_font_timR10") = { +const u8g_fntpgm_uint8_t u8g_font_timR10[3359] U8G_FONT_SECTION("u8g_font_timR10") = { 0,17,24,254,250,10,2,4,4,92,32,255,253,14,253,10, 253,0,0,0,3,0,1,1,10,10,5,2,0,128,128,128, 128,128,128,128,0,128,128,3,3,3,6,1,7,160,160,160, @@ -77022,7 +80382,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR10[3359] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =11 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR10r[1571] U8G_SECTION(".progmem.u8g_font_timR10r") = { +const u8g_fntpgm_uint8_t u8g_font_timR10r[1571] U8G_FONT_SECTION("u8g_font_timR10r") = { 0,17,24,254,250,10,2,4,4,92,32,127,253,11,253,10, 253,0,0,0,3,0,1,1,10,10,5,2,0,128,128,128, 128,128,128,128,0,128,128,3,3,3,6,1,7,160,160,160, @@ -77134,7 +80494,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR10r[1571] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =15 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR12[3905] U8G_SECTION(".progmem.u8g_font_timR12") = { +const u8g_fntpgm_uint8_t u8g_font_timR12[3905] U8G_FONT_SECTION("u8g_font_timR12") = { 0,19,26,254,249,11,2,36,5,11,32,255,252,15,252,11, 252,0,0,0,4,0,1,1,11,11,5,2,0,128,128,128, 128,128,128,128,0,0,128,128,4,3,3,7,1,8,144,144, @@ -77392,7 +80752,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR12[3905] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =12 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR12r[1784] U8G_SECTION(".progmem.u8g_font_timR12r") = { +const u8g_fntpgm_uint8_t u8g_font_timR12r[1784] U8G_FONT_SECTION("u8g_font_timR12r") = { 0,19,26,254,249,11,2,36,5,11,32,127,252,12,252,11, 252,0,0,0,4,0,1,1,11,11,5,2,0,128,128,128, 128,128,128,128,0,0,128,128,4,3,3,7,1,8,144,144, @@ -77517,7 +80877,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR12r[1784] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =18 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR14[4577] U8G_SECTION(".progmem.u8g_font_timR14") = { +const u8g_fntpgm_uint8_t u8g_font_timR14[4577] U8G_FONT_SECTION("u8g_font_timR14") = { 0,22,29,253,249,13,2,131,6,16,32,255,252,18,252,13, 252,0,0,0,5,0,1,2,13,13,4,1,0,192,192,192, 192,192,192,64,64,64,0,0,192,192,6,4,4,8,1,9, @@ -77817,7 +81177,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR14[4577] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =14 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR14r[2156] U8G_SECTION(".progmem.u8g_font_timR14r") = { +const u8g_fntpgm_uint8_t u8g_font_timR14r[2156] U8G_FONT_SECTION("u8g_font_timR14r") = { 0,22,29,253,249,13,2,131,6,16,32,127,252,14,252,13, 252,0,0,0,5,0,1,2,13,13,4,1,0,192,192,192, 192,192,192,64,64,64,0,0,192,192,6,4,4,8,1,9, @@ -77965,7 +81325,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR14r[2156] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =23 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR18[6850] U8G_SECTION(".progmem.u8g_font_timR18") = { +const u8g_fntpgm_uint8_t u8g_font_timR18[6850] U8G_FONT_SECTION("u8g_font_timR18") = { 0,29,37,252,247,17,4,9,8,241,32,255,250,23,250,17, 250,0,0,0,6,0,1,3,17,17,8,3,0,64,224,224, 224,224,224,224,224,64,64,64,64,0,0,0,192,192,6,5, @@ -78407,7 +81767,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR18[6850] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =19 descent=-6 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR18r[3208] U8G_SECTION(".progmem.u8g_font_timR18r") = { +const u8g_fntpgm_uint8_t u8g_font_timR18r[3208] U8G_FONT_SECTION("u8g_font_timR18r") = { 0,29,37,252,247,17,4,9,8,241,32,127,250,19,250,17, 250,0,0,0,6,0,1,3,17,17,8,3,0,64,224,224, 224,224,224,224,224,64,64,64,64,0,0,0,192,192,6,5, @@ -78621,7 +81981,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR18r[3208] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =30 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR24[10419] U8G_SECTION(".progmem.u8g_font_timR24") = { +const u8g_fntpgm_uint8_t u8g_font_timR24[10419] U8G_FONT_SECTION("u8g_font_timR24") = { 0,38,48,251,245,23,5,140,13,213,32,255,249,30,249,23, 249,0,0,0,8,0,1,4,23,23,11,3,0,96,240,240, 240,240,240,96,96,96,96,96,96,96,96,96,96,96,0,0, @@ -79286,8 +82646,8 @@ const u8g_fntpgm_uint8_t u8g_font_timR24[10419] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =23 descent=-3 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR24n[696] U8G_SECTION(".progmem.u8g_font_timR24n") = { - 0,38,48,251,245,23,0,0,0,0,42,57,0,23,253,23, +const u8g_fntpgm_uint8_t u8g_font_timR24n[717] U8G_FONT_SECTION("u8g_font_timR24n") = { + 0,38,48,251,245,23,0,0,0,0,42,58,0,23,253,23, 0,12,13,26,17,2,10,6,0,15,0,6,0,198,48,246, 240,118,224,15,0,118,224,246,240,198,48,6,0,15,0,6, 0,16,16,32,19,1,1,1,128,1,128,1,128,1,128,1, @@ -79330,7 +82690,8 @@ const u8g_fntpgm_uint8_t u8g_font_timR24n[696] U8G_SECTION(".progmem.u8g_font_ti 112,224,31,192,14,23,46,16,1,0,7,128,24,224,48,112, 112,56,96,56,224,28,224,28,224,28,224,28,224,28,240,28, 112,28,120,60,62,252,15,184,0,56,0,112,0,112,0,224, - 1,192,3,128,15,0,120,0}; + 1,192,3,128,15,0,120,0,4,15,15,9,2,0,96,240, + 240,96,0,0,0,0,0,0,0,96,240,240,96}; /* Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. @@ -79343,7 +82704,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR24n[696] U8G_SECTION(".progmem.u8g_font_ti Max Font ascent =25 descent=-7 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_timR24r[4764] U8G_SECTION(".progmem.u8g_font_timR24r") = { +const u8g_fntpgm_uint8_t u8g_font_timR24r[4764] U8G_FONT_SECTION("u8g_font_timR24r") = { 0,38,48,251,245,23,5,140,13,213,32,127,249,25,249,23, 249,0,0,0,8,0,1,4,23,23,11,3,0,96,240,240, 240,240,240,96,96,96,96,96,96,96,96,96,96,96,0,0, @@ -79654,7 +83015,7 @@ const u8g_fntpgm_uint8_t u8g_font_timR24r[4764] U8G_SECTION(".progmem.u8g_font_t Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_tpssb[2656] U8G_SECTION(".progmem.u8g_font_tpssb") = { +const u8g_fntpgm_uint8_t u8g_font_tpssb[2656] U8G_FONT_SECTION("u8g_font_tpssb") = { 0,11,17,0,252,9,1,205,3,159,32,255,252,13,252,9, 252,0,0,0,4,0,0,2,9,9,4,1,0,192,192,192, 192,192,192,0,192,192,5,2,2,7,1,7,216,216,5,5, @@ -79834,8 +83195,8 @@ const u8g_fntpgm_uint8_t u8g_font_tpssb[2656] U8G_SECTION(".progmem.u8g_font_tps Max Font ascent = 9 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_tpssbn[230] U8G_SECTION(".progmem.u8g_font_tpssbn") = { - 0,11,17,0,252,9,0,0,0,0,42,57,0,9,255,9, +const u8g_fntpgm_uint8_t u8g_font_tpssbn[240] U8G_FONT_SECTION("u8g_font_tpssbn") = { + 0,11,17,0,252,9,0,0,0,0,42,58,0,9,255,9, 0,5,7,7,7,1,1,32,168,112,32,112,168,32,6,6, 6,8,1,1,48,48,252,252,48,48,3,2,2,5,1,255, 96,192,5,2,2,7,1,3,248,248,2,1,1,4,1,0, @@ -79849,7 +83210,8 @@ const u8g_fntpgm_uint8_t u8g_font_tpssbn[230] U8G_SECTION(".progmem.u8g_font_tps 120,204,192,248,204,204,204,204,120,6,9,9,7,0,0,252, 12,24,48,96,96,96,96,96,6,9,9,7,0,0,120,204, 204,120,204,204,204,204,120,6,9,9,7,0,0,120,204,204, - 204,124,12,12,204,120}; + 204,124,12,12,204,120,2,4,4,4,1,0,192,0,0,192 + }; /* Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 Copyright: © www.orgdot.com @@ -79862,7 +83224,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpssbn[230] U8G_SECTION(".progmem.u8g_font_tps Max Font ascent =12 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_tpssbr[1346] U8G_SECTION(".progmem.u8g_font_tpssbr") = { +const u8g_fntpgm_uint8_t u8g_font_tpssbr[1346] U8G_FONT_SECTION("u8g_font_tpssbr") = { 0,11,17,0,252,9,1,205,3,159,32,127,252,12,252,9, 252,0,0,0,4,0,0,2,9,9,4,1,0,192,192,192, 192,192,192,0,192,192,5,2,2,7,1,7,216,216,5,5, @@ -79960,7 +83322,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpssbr[1346] U8G_SECTION(".progmem.u8g_font_tp Max Font ascent =13 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_tpss[2605] U8G_SECTION(".progmem.u8g_font_tpss") = { +const u8g_fntpgm_uint8_t u8g_font_tpss[2605] U8G_FONT_SECTION("u8g_font_tpss") = { 0,11,17,255,252,9,1,192,3,136,32,255,252,13,252,9, 252,0,0,0,4,0,0,1,9,9,3,1,0,128,128,128, 128,128,128,0,128,128,3,2,2,5,1,7,160,160,5,5, @@ -80136,8 +83498,8 @@ const u8g_fntpgm_uint8_t u8g_font_tpss[2605] U8G_SECTION(".progmem.u8g_font_tpss Max Font ascent = 9 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_tpssn[228] U8G_SECTION(".progmem.u8g_font_tpssn") = { - 0,11,17,255,252,9,0,0,0,0,42,57,0,9,255,9, +const u8g_fntpgm_uint8_t u8g_font_tpssn[238] U8G_FONT_SECTION("u8g_font_tpssn") = { + 0,11,17,255,252,9,0,0,0,0,42,58,0,9,255,9, 0,5,7,7,7,1,1,32,168,112,32,112,168,32,5,5, 5,7,1,1,32,32,248,32,32,2,2,2,4,1,255,64, 128,5,1,1,7,1,3,248,1,1,1,3,1,0,128,5, @@ -80151,7 +83513,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpssn[228] U8G_SECTION(".progmem.u8g_font_tpss 128,240,136,136,136,136,112,5,9,9,6,0,0,248,8,16, 32,64,64,64,64,64,5,9,9,6,0,0,112,136,136,112, 136,136,136,136,112,5,9,9,6,0,0,112,136,136,136,120, - 8,8,136,112}; + 8,8,136,112,1,4,4,3,1,0,128,0,0,128}; /* Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 Copyright: © www.orgdot.com @@ -80164,7 +83526,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpssn[228] U8G_SECTION(".progmem.u8g_font_tpss Max Font ascent =12 descent=-4 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_tpssr[1317] U8G_SECTION(".progmem.u8g_font_tpssr") = { +const u8g_fntpgm_uint8_t u8g_font_tpssr[1317] U8G_FONT_SECTION("u8g_font_tpssr") = { 0,11,17,255,252,9,1,192,3,136,32,127,252,12,252,9, 252,0,0,0,4,0,0,1,9,9,3,1,0,128,128,128, 128,128,128,0,128,128,3,2,2,5,1,7,160,160,5,5, @@ -80260,7 +83622,7 @@ const u8g_fntpgm_uint8_t u8g_font_tpssr[1317] U8G_SECTION(".progmem.u8g_font_tps Max Font ascent = 7 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_trixel_square[1236] U8G_SECTION(".progmem.u8g_font_trixel_square") = { +const u8g_fntpgm_uint8_t u8g_font_trixel_square[1236] U8G_FONT_SECTION("u8g_font_trixel_square") = { 0,5,9,0,254,5,1,91,2,177,32,255,254,7,254,5, 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,255, @@ -80351,8 +83713,8 @@ const u8g_fntpgm_uint8_t u8g_font_trixel_square[1236] U8G_SECTION(".progmem.u8g_ Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[178] U8G_SECTION(".progmem.u8g_font_trixel_squaren") = { - 0,5,9,0,254,5,0,0,0,0,42,57,0,5,255,5, +const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[187] U8G_FONT_SECTION("u8g_font_trixel_squaren") = { + 0,5,9,0,254,5,0,0,0,0,42,58,0,5,255,5, 0,3,3,3,4,0,2,160,64,160,3,3,3,4,0,0, 64,224,64,1,2,2,2,0,255,128,128,3,1,1,4,0, 1,224,1,1,1,2,0,0,128,3,5,5,4,0,0,32, @@ -80363,7 +83725,7 @@ const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[178] U8G_SECTION(".progmem.u8g_ 0,224,128,224,32,224,3,5,5,4,0,0,224,128,224,160, 224,3,5,5,4,0,0,224,32,32,32,32,3,5,5,4, 0,0,224,160,224,160,224,3,5,5,4,0,0,224,160,224, - 32,224}; + 32,224,1,3,3,2,0,0,128,0,128}; /* Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 Copyright: Copyright julischka 2008 @@ -80376,7 +83738,7 @@ const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[178] U8G_SECTION(".progmem.u8g_ Max Font ascent = 6 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[994] U8G_SECTION(".progmem.u8g_font_trixel_squarer") = { +const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[994] U8G_FONT_SECTION("u8g_font_trixel_squarer") = { 0,5,9,0,254,5,1,91,2,177,32,127,254,6,254,5, 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,255, @@ -80445,15 +83807,15 @@ const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[994] U8G_SECTION(".progmem.u8g_ Copyright: public domain Capital A Height: 4, '1' Height: 4 Calculated Max Values w= 8 h= 7 x= 1 y= 4 dx= 9 dy= 0 ascent= 6 len= 7 - Font Bounding box w=10 h= 6 x= 0 y=-1 + Font Bounding box w= 9 h= 6 x= 0 y=-1 Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 Pure Font ascent = 4 descent=-1 X Font ascent = 5 descent=-1 Max Font ascent = 6 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_u8glib_4[1660] U8G_SECTION(".progmem.u8g_font_u8glib_4") = { - 1,10,6,0,255,4,0,233,1,198,32,255,255,6,255,5, +const u8g_fntpgm_uint8_t u8g_font_u8glib_4[1660] U8G_FONT_SECTION("u8g_font_u8glib_4") = { + 1,9,6,0,255,4,0,233,1,198,32,255,255,6,255,5, 255,2,0,32,2,20,36,128,128,0,128,5,50,66,160,160, 1,85,101,80,248,80,248,80,1,86,102,32,120,224,56,240, 32,2,68,84,144,32,64,144,2,69,85,64,160,64,160,240, @@ -80483,7 +83845,7 @@ const u8g_fntpgm_uint8_t u8g_font_u8glib_4[1660] U8G_SECTION(".progmem.u8g_font_ 38,54,192,64,64,64,64,192,5,50,66,64,160,1,65,81, 240,5,34,50,128,64,2,51,67,96,160,224,2,52,68,128, 192,160,192,2,35,51,192,128,192,2,52,68,32,96,160,96, - 2,51,67,224,192,224,2,52,68,32,64,224,64,1,52,68, + 2,51,67,224,160,192,2,52,68,32,64,224,64,1,52,68, 224,224,32,96,2,52,68,128,192,160,160,2,20,36,128,0, 128,128,1,37,53,64,0,64,64,128,2,52,68,128,160,192, 160,2,20,36,128,128,128,128,2,83,99,208,168,168,2,51, @@ -80544,9 +83906,9 @@ const u8g_fntpgm_uint8_t u8g_font_u8glib_4[1660] U8G_SECTION(".progmem.u8g_font_ 70,64,160,0,96,160,224,2,70,70,80,160,0,96,160,224, 2,53,69,160,0,96,160,224,2,54,70,64,160,64,96,160, 224,2,83,99,120,176,248,1,36,52,192,128,192,192,2,54, - 70,64,32,0,224,192,224,2,54,70,64,128,0,224,192,224, - 2,54,70,64,160,0,224,192,224,2,53,69,160,0,224,192, - 224,2,37,53,128,64,0,64,64,2,37,53,64,128,0,128, + 70,64,32,0,224,160,192,2,54,70,64,128,0,224,160,192, + 2,54,70,64,160,0,224,160,192,2,53,69,160,0,224,160, + 192,2,37,53,128,64,0,64,64,2,37,53,64,128,0,128, 128,2,53,69,64,160,0,64,64,2,52,68,160,0,64,64, 2,70,86,96,96,16,112,144,96,2,70,70,80,160,0,192, 160,160,2,54,70,64,32,0,224,160,224,2,54,70,64,128, @@ -80556,21 +83918,21 @@ const u8g_fntpgm_uint8_t u8g_font_u8glib_4[1660] U8G_SECTION(".progmem.u8g_font_ 70,64,32,0,160,160,224,2,54,70,64,128,0,160,160,224, 2,54,70,64,160,0,160,160,224,2,53,69,160,0,160,160, 224,1,55,71,64,128,0,160,224,32,96,1,53,69,128,192, - 160,192,128,1,54,150,160,0,160,224,32,96}; + 160,192,128,1,54,70,160,0,160,224,32,96}; /* Fontname: u8glib_4 Copyright: public domain Capital A Height: 4, '1' Height: 4 Calculated Max Values w= 5 h= 6 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 6 - Font Bounding box w=10 h= 6 x= 0 y=-1 + Font Bounding box w= 9 h= 6 x= 0 y=-1 Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 Pure Font ascent = 4 descent=-1 X Font ascent = 5 descent=-1 Max Font ascent = 5 descent=-1 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[664] U8G_SECTION(".progmem.u8g_font_u8glib_4r") = { - 1,10,6,0,255,4,0,233,1,198,32,127,255,5,255,5, +const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[664] U8G_FONT_SECTION("u8g_font_u8glib_4r") = { + 1,9,6,0,255,4,0,233,1,198,32,127,255,5,255,5, 255,2,0,32,2,20,36,128,128,0,128,5,50,66,160,160, 1,85,101,80,248,80,248,80,1,86,102,32,120,224,56,240, 32,2,68,84,144,32,64,144,2,69,85,64,160,64,160,240, @@ -80600,7 +83962,7 @@ const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[664] U8G_SECTION(".progmem.u8g_font_ 38,54,192,64,64,64,64,192,5,50,66,64,160,1,65,81, 240,5,34,50,128,64,2,51,67,96,160,224,2,52,68,128, 192,160,192,2,35,51,192,128,192,2,52,68,32,96,160,96, - 2,51,67,224,192,224,2,52,68,32,64,224,64,1,52,68, + 2,51,67,224,160,192,2,52,68,32,64,224,64,1,52,68, 224,224,32,96,2,52,68,128,192,160,160,2,20,36,128,0, 128,128,1,37,53,64,0,64,64,128,2,52,68,128,160,192, 160,2,20,36,128,128,128,128,2,83,99,208,168,168,2,51, @@ -80624,7 +83986,342 @@ const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[664] U8G_SECTION(".progmem.u8g_font_ Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[4239] U8G_SECTION(".progmem.u8g_font_unifont_0_8") = { +const u8g_fntpgm_uint8_t u8g_font_unifont_0_10[5136] U8G_FONT_SECTION("u8g_font_unifont_0_10") = { + 0,16,16,0,254,10,5,43,7,25,10,255,254,14,254,11, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,65,241,193,0,65,241,193,0,125,1,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,241,196,64,68,65,168,64,16, + 65,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,125,241,193, + 0,125,241,193,0,65,1,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,61,225,193,16,65,225,193,32,61,17,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,60,225,193,16,57,17,133, + 16,120,225,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,61, + 241,192,64,56,65,132,64,121,241,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,114,57,202,32,74,57,202,32,115,185,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,137,202,24,74, + 9,202,8,113,157,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,113,153,202,4,74,9,202,16,113,157,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,113,153,202,4,74,25,202,4,113, + 153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,113,133,202, + 12,74,21,202,28,113,133,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,73,147,234,84,106,89,219,212,74,83,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,52,83,194,154,49,23,137, + 18,113,19,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,123, + 185,193,36,121,57,193,36,121,57,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,51,37,196,180,71,173,196,164,52,165,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,125,17,193,176,125, + 81,193,16,125,17,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,58,93,194,82,50,93,138,82,113,157,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,121,207,194,16,121,145,192,80,123, + 143,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,121,193,194, + 0,121,129,192,64,67,129,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,57,193,194,0,89,129,200,64,59,129,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,113,193,202,0,113,129,208, + 64,75,129,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,73, + 193,202,0,73,129,200,64,51,129,128,0,0,1,128,0,0, + 1,128,0,85,85,0,0,0,8,0,14,1,10,10,8,4, + 0,128,128,128,128,128,128,128,0,128,128,5,4,4,8,2, + 8,136,136,136,136,6,10,10,8,1,0,36,36,36,252,72, + 72,252,144,144,144,7,10,10,8,1,0,16,124,146,144,112, + 28,18,146,124,16,7,10,10,8,1,0,98,148,148,104,16, + 16,44,82,82,140,7,10,10,8,1,0,56,68,68,68,56, + 114,138,132,140,114,1,4,4,8,4,8,128,128,128,128,3, + 12,12,8,3,255,32,64,64,128,128,128,128,128,128,64,64, + 32,3,12,12,8,2,255,128,64,64,32,32,32,32,32,32, + 64,64,128,7,7,7,8,1,1,16,146,84,56,84,146,16, + 7,7,7,8,1,1,16,16,16,254,16,16,16,2,4,4, + 8,3,254,192,64,64,128,6,1,1,8,1,4,252,2,2, + 2,8,3,0,192,192,6,10,10,8,1,0,4,4,8,16, + 16,32,32,64,128,128,6,10,10,8,1,0,48,72,132,132, + 132,132,132,132,72,48,5,10,10,8,2,0,32,96,160,32, + 32,32,32,32,32,248,6,10,10,8,1,0,120,132,132,4, + 24,32,64,128,128,252,6,10,10,8,1,0,120,132,132,4, + 56,4,4,132,132,120,6,10,10,8,1,0,8,24,40,72, + 136,136,252,8,8,8,6,10,10,8,1,0,252,128,128,128, + 248,4,4,4,132,120,6,10,10,8,1,0,56,64,128,128, + 248,132,132,132,132,120,6,10,10,8,1,0,252,4,4,8, + 8,8,16,16,16,16,6,10,10,8,1,0,120,132,132,132, + 120,132,132,132,132,120,6,10,10,8,1,0,120,132,132,132, + 124,4,4,4,8,112,2,7,7,8,3,1,192,192,0,0, + 0,192,192,2,9,9,8,3,255,192,192,0,0,0,192,64, + 64,128,5,9,9,8,2,0,8,16,32,64,128,64,32,16, + 8,6,5,5,8,1,2,252,0,0,0,252,5,9,9,8, + 1,0,128,64,32,16,8,16,32,64,128,6,10,10,8,1, + 0,120,132,132,4,8,16,16,0,16,16,6,10,10,8,1, + 0,56,68,148,172,164,164,164,156,64,60,6,10,10,8,1, + 0,48,72,72,132,132,252,132,132,132,132,6,10,10,8,1, + 0,248,132,132,132,248,132,132,132,132,248,6,10,10,8,1, + 0,120,132,132,128,128,128,128,132,132,120,6,10,10,8,1, + 0,240,136,132,132,132,132,132,132,136,240,6,10,10,8,1, + 0,252,128,128,128,248,128,128,128,128,252,6,10,10,8,1, + 0,252,128,128,128,248,128,128,128,128,128,6,10,10,8,1, + 0,120,132,132,128,128,156,132,132,140,116,6,10,10,8,1, + 0,132,132,132,132,252,132,132,132,132,132,5,10,10,8,2, + 0,248,32,32,32,32,32,32,32,32,248,7,10,10,8,1, + 0,62,8,8,8,8,8,8,136,136,112,6,10,10,8,1, + 0,132,136,144,160,192,192,160,144,136,132,6,10,10,8,1, + 0,128,128,128,128,128,128,128,128,128,252,6,10,10,8,1, + 0,132,132,204,204,180,180,132,132,132,132,6,10,10,8,1, + 0,132,196,196,164,164,148,148,140,140,132,6,10,10,8,1, + 0,120,132,132,132,132,132,132,132,132,120,6,10,10,8,1, + 0,248,132,132,132,248,128,128,128,128,128,7,11,11,8,1, + 255,120,132,132,132,132,132,132,180,204,120,6,6,10,10,8, + 1,0,248,132,132,132,248,144,136,136,132,132,6,10,10,8, + 1,0,120,132,132,128,96,24,4,132,132,120,7,10,10,8, + 1,0,254,16,16,16,16,16,16,16,16,16,6,10,10,8, + 1,0,132,132,132,132,132,132,132,132,132,120,7,10,10,8, + 1,0,130,130,130,68,68,68,40,40,16,16,6,10,10,8, + 1,0,132,132,132,132,180,180,204,204,132,132,6,10,10,8, + 1,0,132,132,72,72,48,48,72,72,132,132,7,10,10,8, + 1,0,130,130,68,68,40,16,16,16,16,16,6,10,10,8, + 1,0,252,4,4,8,16,32,64,128,128,252,3,12,12,8, + 4,255,224,128,128,128,128,128,128,128,128,128,128,224,6,10, + 10,8,1,0,128,128,64,32,32,16,16,8,4,4,3,12, + 12,8,1,255,224,32,32,32,32,32,32,32,32,32,32,224, + 6,3,3,8,1,9,48,72,132,7,1,1,8,1,255,254, + 3,3,3,8,2,10,128,64,32,6,8,8,8,1,0,120, + 132,4,124,132,132,140,116,6,11,11,8,1,0,128,128,128, + 184,196,132,132,132,132,196,184,6,8,8,8,1,0,120,132, + 128,128,128,128,132,120,6,11,11,8,1,0,4,4,4,116, + 140,132,132,132,132,140,116,6,8,8,8,1,0,120,132,132, + 252,128,128,132,120,5,11,11,8,1,0,24,32,32,32,248, + 32,32,32,32,32,32,6,11,11,8,1,254,4,116,136,136, + 136,112,64,120,132,132,120,6,11,11,8,1,0,128,128,128, + 184,196,132,132,132,132,132,132,5,11,11,8,2,0,32,32, + 0,96,32,32,32,32,32,32,248,5,13,13,8,1,254,8, + 8,0,24,8,8,8,8,8,8,8,144,96,6,10,10,8, + 1,0,128,128,136,144,160,192,160,144,136,132,5,10,10,8, + 2,0,96,32,32,32,32,32,32,32,32,248,7,8,8,8, + 1,0,236,146,146,146,146,146,146,146,6,8,8,8,1,0, + 184,196,132,132,132,132,132,132,6,8,8,8,1,0,120,132, + 132,132,132,132,132,120,6,10,10,8,1,254,184,196,132,132, + 132,132,196,184,128,128,6,10,10,8,1,254,116,140,132,132, + 132,132,140,116,4,4,6,8,8,8,1,0,184,196,132,128, + 128,128,128,128,6,8,8,8,1,0,120,132,128,96,24,4, + 132,120,5,10,10,8,1,0,32,32,248,32,32,32,32,32, + 32,24,6,8,8,8,1,0,132,132,132,132,132,132,140,116, + 6,8,8,8,1,0,132,132,132,72,72,72,48,48,7,8, + 8,8,1,0,130,146,146,146,146,146,146,108,6,8,8,8, + 1,0,132,132,72,48,48,72,132,132,6,10,10,8,1,254, + 132,132,132,132,132,76,52,4,4,120,6,8,8,8,1,0, + 252,4,8,16,32,64,128,252,3,12,12,8,3,255,96,128, + 128,64,64,128,128,64,64,128,128,96,1,14,14,8,4,254, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,3,12, + 12,8,2,255,192,32,32,64,64,32,32,64,64,32,32,192, + 7,3,3,8,1,8,98,146,140,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,115,209,202,16,75,209,202, + 16,115,223,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,113, + 157,202,82,115,211,194,82,66,93,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,73,157,202,82,122,93,202,80,73,145,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,115,147,202,82,115, + 159,202,18,114,19,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,75,147,234,82,91,159,202,82,75,147,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,116,185,166,164,37,165,164,164,116, + 185,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,75,209,234, + 16,91,209,202,16,75,223,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,57,205,194,18,49,159,136,82,115,147,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,121,205,194,18,121,159,192, + 82,123,147,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,75, + 157,201,32,121,25,201,4,73,57,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,75,185,201,8,121,9,201,8,73,49,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,69,205,196,144,68, + 137,168,132,16,153,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,29,202,18,114,19,194,18,67,221,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,114,19,202,18,114,19,194,18,67, + 205,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,14,33,137, + 32,14,33,138,32,9,33,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,57,221,194,2,49,141,136,80,115,159,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,57,221,194,2,49,141,136, + 66,115,157,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,113, + 207,202,16,74,13,202,2,113,221,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,114,69,202,76,114,69,194,68,65,143,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,114,93,202,66,114, + 77,194,80,65,159,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,59,157,193,32,49,25,137,4,113,57,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,211,194,18,66,31,194,18,57, + 211,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,69,17,237, + 16,85,81,197,176,69,17,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,59,141,194,82,51,159,138,18,114,19,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,123,141,194,82,123,159,194, + 18,122,19,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 143,194,80,50,77,138,66,113,157,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,51,155,196,34,37,163,148,162,99,155,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,57,221,194,8,50, + 9,138,8,113,221,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,57,221,194,8,65,137,192,72,59,157,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,14,249,144,32,12,33,130,32,28, + 33,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,49,207,202, + 16,73,145,200,80,51,143,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,114,33,203,96,114,161,194,32,66,33,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,51,143,202,80,123,145,202, + 16,74,15,128,0,0,1,128,0,0,1,128,0,85,85,0, + 0,0,8,0,14,1,10,10,8,4,0,128,128,0,128,128, + 128,128,128,128,128,7,10,10,8,1,0,16,16,124,146,144, + 144,146,124,16,16,7,10,10,8,1,0,28,32,32,32,248, + 32,32,32,124,194,6,8,8,8,1,1,132,72,120,72,72, + 120,72,132,7,10,10,8,1,0,130,68,40,16,254,16,254, + 16,16,16,1,10,10,8,4,0,128,128,128,128,0,0,128, + 128,128,128,6,10,10,8,1,0,120,132,128,120,132,132,120, + 4,132,120,4,2,2,8,2,12,144,144,8,10,10,8,0, + 0,60,66,153,165,161,161,165,153,66,60,5,7,7,8,2, + 5,112,8,120,136,120,0,248,6,9,9,8,1,0,36,36, + 72,72,144,72,72,36,36,6,4,4,8,1,0,252,4,4, + 4,6,1,1,8,1,4,252,8,10,10,8,0,0,60,66, + 185,165,165,185,169,165,66,60,6,1,1,8,1,11,252,3, + 4,4,8,2,10,64,160,160,64,7,9,9,8,1,1,16, + 16,16,254,16,16,16,0,254,5,7,7,8,2,5,112,136, + 8,112,128,128,248,5,7,7,8,2,5,112,136,8,112,8, + 136,112,3,3,3,8,3,10,32,64,128,5,8,8,8,2, + 254,136,136,136,136,216,168,128,128,6,12,12,8,1,255,124, + 244,244,244,244,116,20,20,20,20,20,28,2,2,2,8,3, + 4,192,192,3,2,2,8,2,254,32,192,3,7,7,8,2, + 5,32,96,160,32,32,32,32,5,7,7,8,2,5,112,136, + 136,136,112,0,248,6,9,9,8,1,0,144,144,72,72,36, + 72,72,144,144,6,10,10,8,1,0,68,196,72,80,80,36, + 44,84,156,132,6,10,10,8,1,0,68,196,72,80,80,40, + 52,68,136,156,6,10,10,8,1,0,196,36,72,48,208,36, + 44,84,156,132,6,10,10,8,1,0,16,16,0,16,16,96, + 132,132,132,120,6,14,14,8,1,0,96,24,0,0,48,72, + 72,132,132,252,132,132,132,132,6,14,14,8,1,0,24,96, + 0,0,48,72,72,132,132,252,132,132,132,132,6,14,14,8, + 1,0,48,72,0,0,48,72,72,132,132,252,132,132,132,132, + 6,14,14,8,1,0,100,152,0,0,48,72,72,132,132,252, + 132,132,132,132,6,14,14,8,1,0,72,72,0,0,48,72, + 72,132,132,252,132,132,132,132,6,14,14,8,1,0,48,72, + 48,0,48,72,72,132,132,252,132,132,132,132,7,10,10,8, + 1,0,62,80,144,144,254,144,144,144,144,158,6,12,12,8, + 1,254,120,132,132,128,128,128,128,132,132,120,16,96,6,14, + 14,8,1,0,96,24,0,0,252,128,128,128,248,128,128,128, + 128,252,6,14,14,8,1,0,24,96,0,0,252,128,128,128, + 248,128,128,128,128,252,6,14,14,8,1,0,48,72,0,0, + 252,128,128,128,248,128,128,128,128,252,6,14,14,8,1,0, + 72,72,0,0,252,128,128,128,248,128,128,128,128,252,5,14, + 14,8,2,0,96,24,0,0,248,32,32,32,32,32,32,32, + 32,248,5,14,14,8,2,0,48,192,0,0,248,32,32,32, + 32,32,32,32,32,248,5,14,14,8,2,0,96,144,0,0, + 248,32,32,32,32,32,32,32,32,248,5,14,14,8,2,0, + 144,144,0,0,248,32,32,32,32,32,32,32,32,248,7,10, + 10,8,0,0,120,68,66,66,242,66,66,66,68,120,6,14, + 14,8,1,0,100,152,0,0,132,196,196,164,164,148,148,140, + 140,132,6,14,14,8,1,0,96,24,0,0,120,132,132,132, + 132,132,132,132,132,120,6,14,14,8,1,0,24,96,0,0, + 120,132,132,132,132,132,132,132,132,120,6,14,14,8,1,0, + 48,72,0,0,120,132,132,132,132,132,132,132,132,120,6,14, + 14,8,1,0,100,152,0,0,120,132,132,132,132,132,132,132, + 132,120,6,14,14,8,1,0,72,72,0,0,120,132,132,132, + 132,132,132,132,132,120,6,5,5,8,1,2,132,72,48,72, + 132,6,12,12,8,1,255,4,116,136,140,148,148,164,164,196, + 68,184,128,6,14,14,8,1,0,96,24,0,0,132,132,132, + 132,132,132,132,132,132,120,6,14,14,8,1,0,24,96,0, + 0,132,132,132,132,132,132,132,132,132,120,6,14,14,8,1, + 0,48,72,0,0,132,132,132,132,132,132,132,132,132,120,6, + 14,14,8,1,0,72,72,0,0,132,132,132,132,132,132,132, + 132,132,120,7,14,14,8,1,0,24,96,0,0,130,130,68, + 68,40,16,16,16,16,16,6,11,11,8,1,0,128,128,240, + 136,132,132,136,240,128,128,128,6,10,10,8,1,0,112,136, + 136,136,248,132,132,132,196,184,6,12,12,8,1,0,96,24, + 0,0,120,132,4,124,132,132,140,116,6,12,12,8,1,0, + 24,96,0,0,120,132,4,124,132,132,140,116,6,12,12,8, + 1,0,48,72,0,0,120,132,4,124,132,132,140,116,6,12, + 12,8,1,0,100,152,0,0,120,132,4,124,132,132,140,116, + 6,12,12,8,1,0,72,72,0,0,120,132,4,124,132,132, + 140,116,6,13,13,8,1,0,48,72,48,0,0,120,132,4, + 124,132,132,140,116,7,8,8,8,1,0,124,146,18,126,144, + 144,146,124,6,10,10,8,1,254,120,132,128,128,128,128,132, + 120,16,96,6,12,12,8,1,0,96,24,0,0,120,132,132, + 252,128,128,132,120,6,12,12,8,1,0,24,96,0,0,120, + 132,132,252,128,128,132,120,6,12,12,8,1,0,48,72,0, + 0,120,132,132,252,128,128,132,120,6,12,12,8,1,0,72, + 72,0,0,120,132,132,252,128,128,132,120,5,12,12,8,2, + 0,192,48,0,0,96,32,32,32,32,32,32,248,5,12,12, + 8,2,0,48,192,0,0,96,32,32,32,32,32,32,248,5, + 12,12,8,2,0,96,144,0,0,96,32,32,32,32,32,32, + 248,5,12,12,8,2,0,144,144,0,0,96,32,32,32,32, + 32,32,248,6,12,12,8,1,0,100,24,40,68,4,124,132, + 132,132,132,132,120,6,12,12,8,1,0,100,152,0,0,184, + 196,132,132,132,132,132,132,6,12,12,8,1,0,96,24,0, + 0,120,132,132,132,132,132,132,120,6,12,12,8,1,0,24, + 96,0,0,120,132,132,132,132,132,132,120,6,12,12,8,1, + 0,48,72,0,0,120,132,132,132,132,132,132,120,6,12,12, + 8,1,0,100,152,0,0,120,132,132,132,132,132,132,120,6, + 12,12,8,1,0,72,72,0,0,120,132,132,132,132,132,132, + 120,6,7,7,8,1,1,48,0,0,252,0,0,48,6,10, + 10,8,1,255,4,120,140,148,148,164,164,196,120,128,6,12, + 12,8,1,0,96,24,0,0,132,132,132,132,132,132,140,116, + 6,12,12,8,1,0,24,96,0,0,132,132,132,132,132,132, + 140,116,6,12,12,8,1,0,48,72,0,0,132,132,132,132, + 132,132,140,116,6,12,12,8,1,0,72,72,0,0,132,132, + 132,132,132,132,140,116,6,14,14,8,1,254,24,96,0,0, + 132,132,132,132,132,76,52,4,4,120,5,12,12,8,2,254, + 128,128,240,136,136,136,144,160,192,128,128,128,6,14,14,8, + 1,254,72,72,0,0,132,132,132,132,132,76,52,4,4,120 + }; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 5 y=14 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_0_11[3240] U8G_FONT_SECTION("u8g_font_unifont_0_11") = { 0,16,16,0,254,10,1,231,3,213,32,255,254,14,254,11, 254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, @@ -80717,182 +84414,399 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[4239] U8G_SECTION(".progmem.u8g_fo 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, - 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,113,157,202,82,115, - 211,194,82,66,93,128,0,0,1,128,0,0,1,128,0,85, - 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,73,157,202,82,122,93,202,80,73,145,128,0,0,1,128, - 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,115,147,202,82,115,159,202,18,114, - 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, - 16,0,254,170,170,0,1,128,0,0,1,128,0,75,147,234, - 82,91,159,202,82,75,147,128,0,0,1,128,0,0,1,128, - 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, - 1,128,0,116,185,166,164,37,165,164,164,116,185,128,0,0, - 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,75,209,234,16,91,209,202, - 16,75,223,128,0,0,1,128,0,0,1,128,0,85,85,16, - 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, - 205,194,18,49,159,136,82,115,147,128,0,0,1,128,0,0, - 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,121,205,194,18,121,159,192,82,123,147,128, - 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,75,157,201,32,121, - 25,201,4,73,57,128,0,0,1,128,0,0,1,128,0,85, - 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,75,185,201,8,121,9,201,8,73,49,128,0,0,1,128, - 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,69,205,196,144,68,137,168,132,16, - 153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, - 16,0,254,170,170,0,1,128,0,0,1,128,0,114,29,202, - 18,114,19,194,18,67,221,128,0,0,1,128,0,0,1,128, - 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, - 1,128,0,114,19,202,18,114,19,194,18,67,205,128,0,0, - 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,14,33,137,32,14,33,138, - 32,9,33,128,0,0,1,128,0,0,1,128,0,85,85,16, - 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, - 221,194,2,49,141,136,80,115,159,128,0,0,1,128,0,0, - 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,57,221,194,2,49,141,136,66,115,157,128, - 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,113,207,202,16,74, - 13,202,2,113,221,128,0,0,1,128,0,0,1,128,0,85, - 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,114,69,202,76,114,69,194,68,65,143,128,0,0,1,128, - 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,114,93,202,66,114,77,194,80,65, - 159,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, - 16,0,254,170,170,0,1,128,0,0,1,128,0,59,157,193, - 32,49,25,137,4,113,57,128,0,0,1,128,0,0,1,128, - 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, - 1,128,0,57,211,194,18,66,31,194,18,57,211,128,0,0, - 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,69,17,237,16,85,81,197, - 176,69,17,128,0,0,1,128,0,0,1,128,0,85,85,16, - 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, - 141,194,82,51,159,138,18,114,19,128,0,0,1,128,0,0, - 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,123,141,194,82,123,159,194,18,122,19,128, - 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,57,143,194,80,50, - 77,138,66,113,157,128,0,0,1,128,0,0,1,128,0,85, - 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,51,155,196,34,37,163,148,162,99,155,128,0,0,1,128, - 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,57,221,194,8,50,9,138,8,113, - 221,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, - 16,0,254,170,170,0,1,128,0,0,1,128,0,57,221,194, - 8,65,137,192,72,59,157,128,0,0,1,128,0,0,1,128, - 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, - 1,128,0,14,249,144,32,12,33,130,32,28,33,128,0,0, - 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,49,207,202,16,73,145,200, - 80,51,143,128,0,0,1,128,0,0,1,128,0,85,85,16, - 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,114, - 33,203,96,114,161,194,32,66,33,128,0,0,1,128,0,0, - 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,51,143,202,80,123,145,202,16,74,15,128, - 0,0,1,128,0,0,1,128,0,85,85,6,13,13,8,1, - 0,96,24,0,252,128,128,128,248,128,128,128,128,252,6,14, - 14,8,1,0,72,72,0,0,252,128,128,128,248,128,128,128, - 128,252,7,10,10,8,1,0,252,32,32,32,60,34,34,34, - 34,44,6,14,14,8,1,0,24,96,0,0,252,128,128,128, - 128,128,128,128,128,128,6,10,10,8,1,0,56,68,128,128, - 248,128,128,128,68,56,6,10,10,8,1,0,120,132,132,128, - 96,24,4,132,132,120,5,10,10,8,2,0,248,32,32,32, - 32,32,32,32,32,248,5,14,14,8,2,0,144,144,0,0, - 248,32,32,32,32,32,32,32,32,248,6,10,10,8,1,0, - 28,8,8,8,8,8,8,136,136,112,8,10,10,8,0,0, - 120,72,72,72,78,73,73,73,73,142,7,10,10,8,1,0, - 144,144,144,144,252,146,146,146,146,156,7,10,10,8,1,0, - 252,32,32,32,60,34,34,34,34,34,6,14,14,8,1,0, - 24,96,0,0,128,140,144,160,192,192,160,144,136,132,6,13, - 13,8,1,0,96,24,0,132,140,140,148,148,164,164,196,196, - 132,7,14,14,8,1,0,132,132,120,0,130,130,68,68,40, - 40,16,16,32,96,7,10,10,8,1,0,130,130,130,130,130, - 130,254,16,16,16,6,10,10,8,1,0,48,72,72,132,132, - 132,252,132,132,132,6,10,10,8,1,0,248,128,128,128,248, - 132,132,132,132,248,6,10,10,8,1,0,248,132,132,132,248, - 132,132,132,132,248,6,10,10,8,1,0,252,128,128,128,128, - 128,128,128,128,128,8,12,12,8,0,254,14,18,18,18,34, - 34,34,66,66,255,129,129,6,10,10,8,1,0,252,128,128, - 128,248,128,128,128,128,252,7,10,10,8,1,0,146,146,84, - 84,56,56,84,84,146,146,6,10,10,8,1,0,120,132,4, - 4,120,8,4,4,132,120,6,10,10,8,1,0,132,140,140, - 148,148,164,164,196,196,132,6,13,13,8,1,0,72,48,0, - 132,140,140,148,148,164,164,196,196,132,6,10,10,8,1,0, - 128,140,144,160,192,192,160,144,136,132,6,10,10,8,1,0, - 60,36,36,36,36,36,36,68,68,132,6,10,10,8,1,0, - 132,132,204,204,180,180,132,132,132,132,6,10,10,8,1,0, - 132,132,132,132,252,132,132,132,132,132,6,10,10,8,1,0, - 120,132,132,132,132,132,132,132,132,120,6,10,10,8,1,0, - 252,132,132,132,132,132,132,132,132,132,6,10,10,8,1,0, - 248,132,132,132,248,128,128,128,128,128,6,10,10,8,1,0, - 120,132,132,128,128,128,128,132,132,120,7,10,10,8,1,0, - 254,16,16,16,16,16,16,16,16,16,7,10,10,8,1,0, - 130,130,68,68,40,40,16,16,32,96,7,11,11,8,1,0, - 16,124,146,146,146,146,146,124,16,16,16,6,10,10,8,1, - 0,132,132,72,72,48,48,72,72,132,132,7,12,12,8,1, - 254,132,132,132,132,132,132,132,132,132,254,2,2,6,10,10, - 8,1,0,132,132,132,132,132,252,4,4,4,4,7,10,10, - 8,1,0,146,146,146,146,146,146,146,146,146,254,8,12,12, - 8,0,254,146,146,146,146,146,146,146,146,146,255,1,1,7, - 10,10,8,1,0,224,32,32,32,60,34,34,34,34,60,6, - 10,10,8,1,0,132,132,132,132,228,148,148,148,148,228,6, - 10,10,8,1,0,128,128,128,128,248,132,132,132,132,248,6, - 10,10,8,1,0,112,136,4,4,124,4,4,4,136,112,6, - 10,10,8,1,0,152,164,164,164,228,164,164,164,164,152,6, - 10,10,8,1,0,124,132,132,132,124,36,68,68,132,132,6, - 8,8,8,1,0,120,132,4,124,132,132,140,116,6,12,12, - 8,1,0,4,56,64,128,248,132,132,132,132,132,132,120,6, - 8,8,8,1,0,248,132,132,248,132,132,132,248,6,8,8, - 8,1,0,252,128,128,128,128,128,128,128,7,9,9,8,1, - 255,60,36,68,68,132,132,132,254,130,6,8,8,8,1,0, - 120,132,132,252,128,128,132,120,7,8,8,8,1,0,146,146, - 84,56,56,84,146,146,6,8,8,8,1,0,120,132,4,120, - 8,4,132,120,6,8,8,8,1,0,140,140,148,148,164,164, - 196,196,6,12,12,8,1,0,72,48,0,0,140,140,148,148, - 164,164,196,196,6,8,8,8,1,0,140,144,160,192,160,144, - 136,132,6,8,8,8,1,0,60,36,36,36,36,68,68,132, - 6,8,8,8,1,0,132,204,204,180,180,132,132,132,6,8, - 8,8,1,0,132,132,132,252,132,132,132,132,6,8,8,8, - 1,0,120,132,132,132,132,132,132,120,6,8,8,8,1,0, - 252,132,132,132,132,132,132,132,6,10,10,8,1,254,248,132, - 132,132,132,248,128,128,128,128,6,8,8,8,1,0,120,132, - 128,128,128,128,132,120,7,8,8,8,1,0,254,16,16,16, - 16,16,16,16,6,10,10,8,1,254,132,132,72,72,48,48, - 32,32,64,192,7,10,10,8,1,255,16,16,124,146,146,146, - 146,124,16,16,6,8,8,8,1,0,132,132,72,48,48,72, - 132,132,7,10,10,8,1,254,132,132,132,132,132,132,132,254, - 2,2,6,8,8,8,1,0,132,132,132,132,252,4,4,4, - 7,8,8,8,1,0,146,146,146,146,146,146,146,254,8,10, - 10,8,0,254,146,146,146,146,146,146,146,255,1,1,7,8, - 8,8,1,0,224,32,32,60,34,34,34,60,6,8,8,8, - 1,0,132,132,132,228,148,148,148,228,6,8,8,8,1,0, - 128,128,128,248,132,132,132,248,6,8,8,8,1,0,112,136, - 4,124,4,4,136,112,6,8,8,8,1,0,152,164,164,228, - 164,164,164,152,6,8,8,8,1,0,124,132,132,132,124,36, - 68,132,6,12,12,8,1,0,96,24,0,0,120,132,132,252, - 128,128,132,120,6,12,12,8,1,0,72,72,0,0,120,132, - 132,252,128,128,132,120,6,11,11,8,1,255,64,64,240,64, - 64,120,68,68,68,68,24,6,12,12,8,1,0,24,96,0, - 0,252,128,128,128,128,128,128,128,6,8,8,8,1,0,56, - 68,128,248,128,128,68,56,6,8,8,8,1,0,120,132,128, - 96,24,4,132,120,5,11,11,8,2,0,32,32,0,96,32, - 32,32,32,32,32,248,5,11,11,8,2,0,144,144,0,96, - 32,32,32,32,32,32,248,5,13,13,8,1,254,8,8,0, - 24,8,8,8,8,8,8,8,144,96,8,8,8,8,0,0, - 120,72,72,78,73,73,73,142,7,8,8,8,1,0,144,144, - 144,252,146,146,146,156,6,10,10,8,1,0,64,64,240,64, - 64,88,100,68,68,68,6,12,12,8,1,0,24,96,0,0, - 140,144,160,192,160,144,136,132,6,12,12,8,1,0,96,24, - 0,0,140,140,148,148,164,164,196,196,6,15,15,8,1,254, - 132,132,120,0,0,132,132,72,72,48,48,32,32,64,192,5, - 10,10,8,2,254,136,136,136,136,136,136,248,32,32,32}; + 0,0,1,128,0,0,1,128,0,85,85,6,10,10,8,1, + 254,184,196,132,132,132,132,132,132,128,128,6,10,10,8,1, + 254,116,140,132,132,132,140,116,4,132,120,4,8,8,8,3, + 0,192,64,64,64,64,64,64,112,7,12,12,8,1,254,16, + 16,148,154,146,146,146,146,178,82,16,16,7,11,11,8,1, + 0,28,34,32,32,248,32,32,32,32,32,32,6,8,8,8, + 1,0,120,132,132,132,132,132,132,120,7,12,12,8,1,254, + 112,144,144,112,28,18,18,18,146,124,16,16,7,10,10,8, + 1,0,128,128,128,136,136,136,136,136,136,118,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 2,7,7,8,3,1,192,192,0,0,0,192,192,6,2,2, + 8,1,1,196,120,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,5,4,4, + 8,2,255,32,32,112,136,6,3,3,8,1,9,48,0,204, + 4,6,6,8,2,8,48,192,48,192,48,192,2,3,3,8, + 3,10,192,0,192,4,3,3,8,2,10,176,128,176,3,3, + 3,8,3,255,128,128,96,5,5,5,8,2,9,32,112,248, + 112,32,6,4,4,8,1,9,72,164,148,72,3,3,3,8, + 0,9,192,32,32,2,3,3,8,5,255,64,128,64,4,4, + 4,8,1,254,208,208,16,224,3,3,3,8,3,10,96,128, + 128,3,3,3,8,5,9,96,128,128,5,5,5,8,3,9, + 48,64,152,160,32,8,4,4,8,0,9,66,165,66,36,3, + 4,4,8,5,9,64,160,64,128,4,3,3,8,0,8,80, + 96,128,5,3,3,8,1,254,136,112,32,3,3,3,8,2, + 255,32,32,224,2,3,3,8,3,255,64,128,64,3,3,3, + 8,2,255,32,32,192,5,4,4,8,1,254,40,200,16,96, + 4,5,5,8,2,254,96,128,96,16,96,3,3,3,8,2, + 9,192,32,32,3,4,4,8,1,9,64,160,64,32,5,4, + 4,8,2,254,136,112,32,32,2,3,3,8,2,10,64,128, + 64,3,3,3,8,3,10,32,32,224,3,3,3,8,5,255, + 128,128,96,5,4,4,8,0,9,72,168,168,144,4,4,4, + 8,2,9,96,144,144,96,2,3,3,8,3,255,192,0,192, + 5,3,3,8,2,255,168,0,72,5,3,3,8,2,255,232, + 0,8,5,3,3,8,2,255,232,64,72,2,2,2,8,3, + 0,192,192,6,2,2,8,1,0,204,204,6,3,3,8,1, + 254,204,0,48,4,1,1,8,2,0,240,5,3,3,8,2, + 254,248,32,32,2,2,2,8,2,10,192,192,2,2,2,8, + 1,10,192,192,5,3,3,8,2,255,128,32,8,2,1,1, + 8,3,5,192,1,3,3,8,4,255,128,128,128,6,2,2, + 8,1,10,124,248,4,1,1,8,2,10,240,1,9,9,8, + 4,0,128,128,128,128,128,128,128,128,128,2,2,2,8,5, + 10,192,192,2,2,2,8,1,10,192,192,3,8,8,8,3, + 0,64,224,64,0,0,64,224,64,2,2,2,8,3,10,192, + 192,2,2,2,8,3,10,192,192,4,9,9,8,2,0,224, + 128,128,128,128,128,128,128,240,5,4,4,8,2,254,248,32, + 32,32,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, + 168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255, + 168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, + 168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255, + 168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84,6,9,9,8,1,0,132,132,68,36,88,144,136,132, + 132,7,9,9,8,1,0,248,8,8,8,8,8,8,8,254, + 6,9,9,8,1,0,96,16,16,16,8,24,40,68,132,6, + 9,9,8,1,0,252,8,8,8,8,8,8,8,8,6,9, + 9,8,1,0,252,4,4,68,68,68,68,68,68,3,9,9, + 8,2,0,224,32,32,32,32,32,32,32,32,5,9,9,8, + 2,0,192,48,40,32,32,32,32,32,32,6,9,9,8,1, + 0,252,68,68,68,68,68,68,68,68,6,9,9,8,1,0, + 140,148,132,132,132,132,132,132,252,3,4,4,8,2,5,224, + 32,32,32,6,11,11,8,1,254,252,4,4,4,4,4,4, + 4,4,4,4,6,9,9,8,1,0,252,4,4,4,4,4, + 4,4,248,5,11,11,8,2,0,128,128,248,8,8,8,8, + 16,16,32,192,7,9,9,8,0,0,254,34,34,34,34,34, + 34,34,62,7,9,9,8,1,0,156,98,66,130,130,130,130, + 130,142,3,11,11,8,2,254,224,32,32,32,32,32,32,32, + 32,32,32,4,9,9,8,2,0,112,16,16,16,16,16,16, + 16,240,6,9,9,8,1,0,252,132,132,132,132,132,132,136, + 240,7,9,9,8,0,0,18,18,18,18,18,18,18,18,254, + 6,11,11,8,1,254,252,132,132,132,228,4,4,4,4,4, + 4,6,9,9,8,1,0,252,132,132,132,228,4,4,4,252, + 5,11,11,8,2,254,136,136,144,160,192,128,128,128,128,128, + 128,6,9,9,8,1,0,132,132,72,48,16,8,4,4,252, + 6,11,11,8,1,254,252,68,68,72,72,80,64,64,64,64, + 64,6,9,9,8,1,0,252,4,4,4,4,4,4,4,4, + 7,9,9,8,1,0,146,146,146,146,146,146,146,146,254,6, + 9,9,8,1,0,124,68,68,68,68,68,68,68,196,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, + 168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255, + 168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84,7,9,9,8,1,0,238,34,34,34,34,34,34,34, + 34,7,9,9,8,1,0,238,34,34,34,2,2,2,2,2, + 7,4,4,8,1,5,238,34,34,34,3,3,3,8,4,9, + 32,64,128,6,3,3,8,1,9,36,72,144,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[4249] U8G_FONT_SECTION("u8g_font_unifont_0_8") = { + 0,16,16,0,254,10,1,231,3,213,32,255,254,14,254,11, + 254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,40,48,82,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,4,1,1,8,2,4,240,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,11,11,8,1,0,128,128, + 128,136,144,160,192,160,144,136,132,5,11,11,8,2,0,96, + 32,32,32,32,32,32,32,32,32,248,7,8,8,8,1,0, + 236,146,146,146,146,146,146,146,6,8,8,8,1,0,184,196, + 132,132,132,132,132,132,6,8,8,8,1,0,120,132,132,132, + 132,132,132,120,6,10,10,8,1,254,184,196,132,132,132,132, + 196,184,128,128,6,10,10,8,1,254,116,140,132,132,132,132, + 140,116,4,4,6,8,8,8,1,0,184,196,132,128,128,128, + 128,128,6,8,8,8,1,0,120,132,128,96,24,4,132,120, + 5,10,10,8,1,0,32,32,32,248,32,32,32,32,32,24, + 6,8,8,8,1,0,132,132,132,132,132,132,140,116,6,8, + 8,8,1,0,132,132,132,72,72,72,48,48,7,8,8,8, + 1,0,130,146,146,146,146,146,146,108,6,8,8,8,1,0, + 132,132,72,48,48,72,132,132,6,10,10,8,1,254,132,132, + 132,132,132,76,52,4,4,120,6,8,8,8,1,0,252,4, + 8,16,32,64,128,252,3,12,12,8,3,255,96,128,128,64, + 64,128,128,64,64,128,128,96,1,14,14,8,4,254,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,3,12,12,8, + 2,255,192,32,32,64,64,32,32,64,64,32,32,192,7,3, + 3,8,1,8,98,146,140,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,115,209,202,16,75,209,202,16,115, + 223,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,113,157,202, + 82,115,211,194,82,66,93,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,73,157,202,82,122,93,202,80,73,145,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,115,147,202,82,115,159,202, + 18,114,19,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,75, + 147,234,82,91,159,202,82,75,147,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,116,185,166,164,37,165,164,164,116,185,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,75,209,234,16,91, + 209,202,16,75,223,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,57,205,194,18,49,159,136,82,115,147,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,121,205,194,18,121,159,192,82,123, + 147,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,75,157,201, + 32,121,25,201,4,73,57,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,37,221,164,132,60,133,164,132,36,153,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,69,205,196,144,68,137,168, + 132,16,153,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,114, + 29,202,18,114,19,194,18,67,221,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,114,19,202,18,114,19,194,18,67,205,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,14,33,137,32,14, + 33,138,32,9,33,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,57,221,194,2,49,141,136,80,115,159,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,221,194,2,49,141,136,66,115, + 157,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,113,207,202, + 16,74,13,202,2,113,221,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,114,69,202,76,114,69,194,68,65,143,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,114,93,202,66,114,77,194, + 80,65,159,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, + 157,193,32,49,25,137,4,113,57,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,57,211,194,18,66,31,194,18,57,211,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,34,137,182,136,42, + 169,162,216,34,137,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,59,141,194,82,51,159,138,18,114,19,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,123,141,194,82,123,159,194,18,122, + 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,57,143,194, + 80,50,77,138,66,113,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,51,155,196,34,37,163,148,162,99,155,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,57,221,194,8,50,9,138, + 8,113,221,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 221,194,8,65,137,192,72,59,157,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,14,249,144,32,12,33,130,32,28,33,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,49,207,202,16,73, + 145,200,80,51,143,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,28,137,146,216,28,169,144,136,16,137,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,51,143,202,80,123,145,202,16,74, + 15,128,0,0,1,128,0,0,1,128,0,85,85,6,13,13, + 8,1,0,96,24,0,252,128,128,128,248,128,128,128,128,252, + 6,14,14,8,1,0,72,72,0,0,252,128,128,128,248,128, + 128,128,128,252,7,10,10,8,1,0,252,32,32,32,60,34, + 34,34,34,44,6,14,14,8,1,0,24,96,0,0,252,128, + 128,128,128,128,128,128,128,128,6,10,10,8,1,0,56,68, + 128,128,248,128,128,128,68,56,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,5,10,10,8,2,0,248,32, + 32,32,32,32,32,32,32,248,5,14,14,8,2,0,144,144, + 0,0,248,32,32,32,32,32,32,32,32,248,6,10,10,8, + 1,0,28,8,8,8,8,8,8,136,136,112,8,10,10,8, + 0,0,120,72,72,72,78,73,73,73,73,142,7,10,10,8, + 1,0,144,144,144,144,252,146,146,146,146,156,7,10,10,8, + 1,0,252,32,32,32,60,34,34,34,34,34,6,14,14,8, + 1,0,24,96,0,0,128,140,144,160,192,192,160,144,136,132, + 6,13,13,8,1,0,96,24,0,132,140,140,148,148,164,164, + 196,196,132,7,14,14,8,1,0,132,132,120,0,130,130,68, + 68,40,40,16,16,32,96,7,12,12,8,1,254,130,130,130, + 130,130,130,130,130,130,254,16,16,6,10,10,8,1,0,48, + 72,72,132,132,252,132,132,132,132,6,10,10,8,1,0,248, + 128,128,128,248,132,132,132,132,248,6,10,10,8,1,0,248, + 132,132,132,248,132,132,132,132,248,6,10,10,8,1,0,252, + 128,128,128,128,128,128,128,128,128,8,12,12,8,0,254,14, + 18,18,18,34,34,34,66,66,255,129,129,6,10,10,8,1, + 0,252,128,128,128,248,128,128,128,128,252,7,10,10,8,1, + 0,146,146,84,84,56,56,84,84,146,146,6,10,10,8,1, + 0,120,132,4,4,120,8,4,4,132,120,6,10,10,8,1, + 0,132,140,140,148,148,164,164,196,196,132,6,13,13,8,1, + 0,72,48,0,132,140,140,148,148,164,164,196,196,132,6,10, + 10,8,1,0,140,144,144,160,160,192,160,144,136,132,6,10, + 10,8,1,0,60,36,36,36,36,36,36,68,68,132,6,10, + 10,8,1,0,132,132,204,204,180,180,132,132,132,132,6,10, + 10,8,1,0,132,132,132,132,252,132,132,132,132,132,6,10, + 10,8,1,0,120,132,132,132,132,132,132,132,132,120,6,10, + 10,8,1,0,252,132,132,132,132,132,132,132,132,132,6,10, + 10,8,1,0,248,132,132,132,248,128,128,128,128,128,6,10, + 10,8,1,0,120,132,132,128,128,128,128,132,132,120,7,10, + 10,8,1,0,254,16,16,16,16,16,16,16,16,16,7,10, + 10,8,1,0,130,130,68,68,40,40,16,16,32,96,7,11, + 11,8,1,0,16,124,146,146,146,146,146,124,16,16,16,6, + 10,10,8,1,0,132,132,72,72,48,48,72,72,132,132,7, + 12,12,8,1,254,132,132,132,132,132,132,132,132,132,254,2, + 2,6,10,10,8,1,0,132,132,132,132,132,252,4,4,4, + 4,7,10,10,8,1,0,146,146,146,146,146,146,146,146,146, + 254,8,12,12,8,0,254,146,146,146,146,146,146,146,146,146, + 255,1,1,7,10,10,8,1,0,224,32,32,32,60,34,34, + 34,34,60,6,10,10,8,1,0,132,132,132,132,228,148,148, + 148,148,228,6,10,10,8,1,0,128,128,128,128,248,132,132, + 132,132,248,6,10,10,8,1,0,112,136,4,4,124,4,4, + 4,136,112,6,10,10,8,1,0,152,164,164,164,228,164,164, + 164,164,152,6,10,10,8,1,0,124,132,132,132,124,36,68, + 68,132,132,6,8,8,8,1,0,120,132,4,124,132,132,140, + 116,6,12,12,8,1,0,4,56,64,128,248,132,132,132,132, + 132,132,120,6,8,8,8,1,0,248,132,132,248,132,132,132, + 248,6,8,8,8,1,0,252,128,128,128,128,128,128,128,7, + 9,9,8,1,255,60,36,68,68,132,132,132,254,130,6,8, + 8,8,1,0,120,132,132,252,128,128,132,120,7,8,8,8, + 1,0,146,146,84,56,56,84,146,146,6,8,8,8,1,0, + 120,132,4,120,8,4,132,120,6,8,8,8,1,0,140,140, + 148,148,164,164,196,196,6,12,12,8,1,0,72,48,0,0, + 140,140,148,148,164,164,196,196,6,8,8,8,1,0,140,144, + 160,192,160,144,136,132,6,8,8,8,1,0,60,36,36,36, + 36,68,68,132,6,8,8,8,1,0,132,204,204,180,180,132, + 132,132,6,8,8,8,1,0,132,132,132,252,132,132,132,132, + 6,8,8,8,1,0,120,132,132,132,132,132,132,120,6,8, + 8,8,1,0,252,132,132,132,132,132,132,132,6,10,10,8, + 1,254,184,196,132,132,132,132,196,184,128,128,6,8,8,8, + 1,0,120,132,128,128,128,128,132,120,7,8,8,8,1,0, + 254,16,16,16,16,16,16,16,6,10,10,8,1,254,132,132, + 72,72,48,48,32,32,64,192,7,13,13,8,1,254,16,16, + 16,124,146,146,146,146,146,146,124,16,16,6,8,8,8,1, + 0,132,132,72,48,48,72,132,132,7,10,10,8,1,254,132, + 132,132,132,132,132,132,254,2,2,6,8,8,8,1,0,132, + 132,132,132,252,4,4,4,7,8,8,8,1,0,146,146,146, + 146,146,146,146,254,8,10,10,8,0,254,146,146,146,146,146, + 146,146,255,1,1,7,8,8,8,1,0,224,32,32,60,34, + 34,34,60,6,8,8,8,1,0,132,132,132,228,148,148,148, + 228,6,8,8,8,1,0,128,128,128,248,132,132,132,248,6, + 8,8,8,1,0,112,136,4,124,4,4,136,112,6,8,8, + 8,1,0,152,164,164,228,164,164,164,152,6,8,8,8,1, + 0,124,132,132,132,124,36,68,132,6,12,12,8,1,0,96, + 24,0,0,120,132,132,252,128,128,132,120,6,12,12,8,1, + 0,72,72,0,0,120,132,132,252,128,128,132,120,7,13,13, + 8,0,254,64,240,64,92,98,66,66,66,66,66,66,2,12, + 6,12,12,8,1,0,24,96,0,0,252,128,128,128,128,128, + 128,128,6,8,8,8,1,0,56,68,128,248,128,128,68,56, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,11, + 11,8,2,0,32,32,0,96,32,32,32,32,32,32,248,5, + 11,11,8,2,0,144,144,0,96,32,32,32,32,32,32,248, + 5,13,13,8,1,254,8,8,0,24,8,8,8,8,8,8, + 8,144,96,8,8,8,8,0,0,120,72,72,78,73,73,73, + 142,7,8,8,8,1,0,144,144,144,252,146,146,146,156,7, + 11,11,8,0,0,64,240,64,92,98,66,66,66,66,66,66, + 6,12,12,8,1,0,24,96,0,0,140,144,160,192,160,144, + 136,132,6,12,12,8,1,0,96,24,0,0,140,140,148,148, + 164,164,196,196,6,15,15,8,1,254,132,132,120,0,0,132, + 132,72,72,48,48,32,32,64,192,5,10,10,8,2,254,136, + 136,136,136,136,136,136,248,32,32}; +/* + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 8, '1' Height: 7 Calculated Max Values w=16 h=16 x= 9 y=11 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 @@ -80902,8 +84816,8 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[4239] U8G_SECTION(".progmem.u8g_fo Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[3934] U8G_SECTION(".progmem.u8g_font_unifont_12_13") = { - 0,16,16,0,254,8,4,93,5,214,0,255,2,14,254,13, +const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[3987] U8G_FONT_SECTION("u8g_font_unifont_12_13") = { + 0,16,16,0,254,8,4,155,6,11,0,255,2,14,254,13, 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, 0,0,1,128,0,85,85,16,16,32,16,0,254,85,85,128, @@ -80913,245 +84827,249 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[3934] U8G_SECTION(".progmem.u8g_ 1,128,0,0,1,142,0,14,25,135,224,0,1,128,0,0, 1,170,170,16,16,32,16,0,254,85,85,128,0,0,1,128, 0,0,1,128,0,0,25,128,36,0,69,129,68,1,73,158, - 240,0,1,128,0,0,1,170,170,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,12,14,28,16,1,255,1,80,225,80,33,160,17,0,17, - 0,9,0,8,0,4,224,4,128,2,128,3,0,3,0,2, - 0,2,0,11,15,30,16,1,255,0,64,0,128,225,0,33, - 64,16,128,17,32,8,192,8,0,4,224,4,128,2,128,3, - 0,3,0,2,0,2,0,12,7,14,16,2,3,1,144,58, - 96,202,192,17,64,16,64,32,128,31,0,5,10,10,8,1, - 1,8,8,80,16,32,32,64,64,136,160,7,10,10,8,1, - 1,8,8,80,16,32,32,64,66,136,160,10,10,20,16,3, - 2,48,0,48,0,6,0,9,0,7,0,1,0,14,0,240, - 128,0,64,0,64,2,4,4,8,3,3,64,128,192,192,5, - 4,4,8,1,2,24,48,64,128,12,4,8,16,3,1,112, - 0,136,0,136,48,127,192,7,11,11,16,2,0,24,32,32, - 24,32,76,82,98,36,88,128,6,4,4,8,2,9,24,36, - 228,88,9,6,12,16,4,7,3,0,4,0,39,128,56,0, - 64,0,128,0,10,5,10,16,3,8,252,64,16,64,32,128, - 71,0,64,0,11,4,8,16,2,9,24,32,36,32,228,64, - 89,128,10,4,8,16,3,8,0,64,254,64,1,64,0,128, - 7,4,4,16,4,9,64,92,98,252,8,6,6,16,3,8, - 40,40,40,104,128,127,3,5,5,16,6,8,32,0,32,32, - 192,4,2,2,16,6,10,48,192,5,5,5,16,5,8,16, - 40,48,96,144,4,13,13,16,6,254,240,0,0,0,0,0, - 0,0,0,0,0,48,192,2,5,5,8,3,2,64,128,192, - 0,192,6,14,14,8,1,255,168,84,168,84,168,84,168,84, - 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, - 168,84,168,84,168,84,168,84,168,84,3,3,3,16,7,0, - 64,0,160,7,9,9,8,1,2,124,130,128,64,32,16,16, - 0,16,6,14,14,8,1,255,168,84,168,84,168,84,168,84, - 168,84,168,84,168,84,4,5,5,8,2,2,112,128,240,64, - 128,7,10,10,8,1,3,2,124,128,16,16,16,16,16,16, - 16,3,11,11,8,2,3,96,128,96,128,32,32,32,32,32, - 32,32,6,13,13,8,1,255,24,32,24,32,0,24,36,36, - 60,4,8,144,96,3,12,12,8,3,254,64,64,64,64,64, - 64,64,0,96,128,96,128,6,11,11,8,1,255,48,64,48, - 64,0,140,144,144,140,132,120,1,8,8,8,4,3,128,128, - 128,128,128,128,128,128,6,7,7,8,1,0,8,68,132,120, - 0,0,16,5,8,8,8,2,3,144,0,0,96,144,136,136, - 112,6,7,7,8,1,3,40,0,0,8,68,132,120,6,9, - 9,8,1,3,32,0,80,0,0,8,68,132,120,6,8,8, - 8,1,254,252,32,64,128,144,128,68,56,6,8,8,8,1, - 254,252,32,64,128,128,128,68,56,6,11,11,8,1,254,32, - 0,0,252,32,64,128,128,128,68,56,6,5,5,8,1,3, - 16,8,4,132,248,6,7,7,8,1,3,64,0,16,8,4, - 132,248,6,7,7,8,1,255,8,4,4,4,8,144,96,6, - 10,10,8,1,255,32,0,0,8,4,4,4,8,144,96,7, - 7,7,8,1,255,2,42,42,188,144,144,96,7,12,12,8, - 1,255,16,0,36,0,0,2,42,42,188,144,144,96,7,6, - 6,8,1,0,12,50,156,144,144,96,7,9,9,8,1,0, - 8,0,0,12,50,156,144,144,96,6,8,8,8,1,3,64, - 64,64,64,88,100,68,248,6,8,8,8,1,3,64,72,64, - 64,88,100,68,248,6,9,9,8,1,254,48,72,64,56,64, - 128,128,132,120,6,12,12,8,1,254,16,0,0,48,72,64, - 56,64,128,128,132,120,7,9,9,8,0,3,80,4,8,16, - 32,64,60,130,126,7,12,12,8,0,255,4,8,16,32,64, - 60,130,126,0,40,0,16,6,10,10,8,1,255,64,160,160, - 8,148,144,136,132,132,120,6,9,9,8,1,255,160,0,8, - 148,144,136,132,132,120,6,10,10,8,1,255,64,0,160,8, - 148,144,136,132,132,120,8,1,1,8,0,3,255,6,8,8, - 8,1,3,16,0,12,20,12,132,132,120,6,10,10,8,1, - 0,72,0,0,56,36,20,76,132,136,112,6,8,8,8,1, - 3,4,20,36,20,68,132,132,120,6,11,11,8,1,0,4, - 4,4,4,4,4,68,132,132,136,120,5,8,8,8,2,254, - 112,24,120,128,128,128,128,128,6,9,9,8,1,0,32,0, - 0,8,68,132,132,136,112,10,9,18,16,1,1,4,0,3, - 0,6,128,10,64,10,64,6,64,25,128,96,0,128,0,6, - 8,8,8,1,255,24,36,36,60,4,8,144,96,6,7,7, - 8,1,255,8,148,144,136,132,132,120,6,8,8,8,1,254, - 8,148,144,136,132,120,0,80,4,4,4,8,2,9,48,192, - 48,192,5,5,5,8,2,8,24,24,200,80,224,4,4,4, - 8,2,0,32,192,48,192,4,2,2,8,2,9,48,192,4, - 6,6,8,2,6,64,160,160,112,64,128,4,2,2,8,2, - 254,48,192,5,4,4,8,1,7,8,40,176,192,4,4,4, - 8,2,7,96,144,144,96,7,3,3,8,1,9,2,124,128, - 3,4,4,8,2,10,96,128,96,128,3,4,4,8,2,254, - 96,128,96,128,2,3,3,16,9,254,128,64,64,5,5,5, - 16,5,9,8,16,32,224,96,4,3,3,16,6,9,144,144, - 96,4,1,1,16,6,10,240,5,4,4,16,5,9,136,80, - 32,32,5,4,4,16,5,9,32,32,80,136,2,2,2,16, - 7,0,192,192,5,5,5,16,5,9,96,224,32,16,8,4, - 4,4,16,6,9,144,96,96,144,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,3,3,3, - 8,2,5,64,224,64,4,9,9,8,2,2,128,128,64,64, - 32,32,16,16,16,5,9,9,8,2,2,136,144,96,64,32, - 32,16,16,16,7,9,9,8,1,2,146,164,120,64,32,32, - 16,16,16,6,9,9,8,1,2,8,16,32,64,48,64,128, - 132,120,6,9,9,8,1,2,48,72,72,132,132,132,132,72, - 48,7,9,9,8,1,2,128,120,8,8,4,4,4,2,2, - 7,9,9,8,1,2,130,130,68,68,40,40,16,16,16,7, - 9,9,8,1,2,16,16,16,40,40,68,68,130,130,7,9, - 9,8,1,2,48,72,136,152,104,4,4,2,2,5,10,10, - 8,1,2,8,8,144,144,32,32,72,72,128,128,2,4,4, - 8,3,1,192,192,64,128,2,4,4,8,3,7,192,192,64, - 128,7,6,6,8,1,3,16,16,254,56,108,68,6,4,4, - 8,1,3,8,68,132,120,8,7,7,16,1,3,6,9,9, - 7,65,130,124,1,4,4,8,4,7,128,128,128,128,5,11, - 11,8,2,3,16,40,120,128,32,32,32,32,32,32,32,6, - 11,11,8,1,3,12,16,76,176,0,16,16,16,16,16,16, - 6,12,12,8,1,254,16,16,16,16,16,16,16,0,12,16, - 76,176,3,4,4,8,2,10,96,128,96,128,5,11,11,8, - 2,3,24,32,24,32,128,128,128,128,128,128,128,7,13,13, - 8,1,255,6,8,6,8,0,24,36,36,60,4,8,144,96, - 7,13,13,8,1,255,102,104,38,72,128,24,36,36,60,4, - 8,144,96,7,11,11,8,1,255,6,8,6,8,0,140,144, - 144,140,132,120,6,9,9,8,1,3,64,64,112,112,0,8, - 68,132,120,6,9,9,8,1,3,32,0,32,0,0,8,68, - 132,120,6,8,8,8,1,255,8,68,132,120,0,16,0,16, - 6,10,10,8,1,0,40,0,0,8,68,132,120,16,40,16, - 6,9,9,8,1,3,80,0,32,0,0,8,68,132,120,6, - 8,8,8,1,255,8,68,132,120,0,40,0,16,6,9,9, - 8,1,3,80,0,80,0,0,8,68,132,120,6,8,8,8, - 1,255,8,68,132,120,0,40,0,40,6,13,13,8,1,254, - 48,64,48,64,0,252,32,64,128,128,128,68,56,6,13,13, - 8,1,254,32,0,32,0,0,252,32,64,128,128,128,68,56, - 6,8,8,8,1,254,252,32,64,128,168,128,68,56,6,8, - 8,8,1,254,252,32,64,144,128,144,68,56,6,13,13,8, - 1,254,32,0,72,0,0,252,32,64,128,128,128,68,56,6, - 8,8,8,1,254,252,64,128,168,128,144,68,56,6,8,8, - 8,1,254,252,64,128,168,128,168,68,56,6,10,10,8,1, - 3,64,64,112,112,0,16,8,4,132,248,6,8,8,8,1, - 0,16,8,4,132,248,16,40,16,6,7,7,8,1,1,16, - 8,4,132,248,0,16,6,12,12,8,1,1,64,64,112,112, - 0,16,8,4,132,248,0,16,6,8,8,8,1,3,80,0, - 0,16,8,4,132,248,6,7,7,8,1,1,16,8,4,132, - 248,0,80,6,9,9,8,1,3,32,0,80,0,16,8,4, - 132,248,6,9,9,8,1,3,80,0,32,0,16,8,4,132, - 248,6,9,9,8,1,3,80,0,80,0,16,8,4,132,248, - 6,13,13,8,1,255,16,16,28,28,0,0,8,4,4,4, - 8,144,96,7,13,13,8,1,255,34,20,8,8,0,0,8, - 4,4,4,8,144,96,6,8,8,8,1,254,8,4,4,4, - 8,152,116,8,6,7,7,8,1,255,8,4,4,4,8,144, - 100,7,8,8,8,1,254,16,8,8,8,16,144,106,4,6, - 7,7,8,1,255,8,4,4,36,8,144,100,6,10,10,8, - 1,255,36,0,0,8,4,4,4,8,144,96,6,12,12,8, - 1,255,16,0,40,0,0,8,4,4,4,8,144,96,6,12, - 12,8,1,255,36,0,36,0,0,8,4,4,4,8,144,96, - 7,10,10,8,1,0,8,0,0,2,42,42,188,144,148,96, - 7,8,8,8,1,255,2,42,42,188,160,170,64,4,7,13, - 13,8,1,255,16,0,36,0,0,2,42,42,188,160,170,64, - 4,7,6,6,8,1,0,12,50,156,160,170,64,7,11,11, - 8,1,0,16,0,36,0,0,12,50,156,144,144,96,6,8, - 8,8,1,3,72,64,84,64,88,100,68,248,6,14,14,8, - 1,254,32,0,72,0,0,48,72,64,56,64,128,128,132,120, - 6,6,6,8,1,3,12,20,12,132,132,120,6,8,8,8, - 1,1,12,20,12,132,132,120,0,16,6,11,11,8,1,1, - 8,0,0,12,20,12,132,132,120,0,16,6,10,10,8,1, - 3,16,0,36,0,12,20,12,132,132,120,6,10,10,8,1, - 255,12,20,12,132,132,120,0,72,0,32,6,10,10,8,1, - 3,20,0,20,0,12,20,12,132,132,120,6,10,10,8,1, - 0,8,0,0,56,36,20,76,132,136,112,6,12,12,8,1, - 0,32,0,72,0,0,56,36,20,76,132,136,112,7,8,8, - 8,0,3,4,8,16,32,64,60,130,126,14,8,16,16,1, - 3,0,48,0,192,3,0,12,0,16,0,15,248,128,4,127, - 248,7,8,8,8,0,3,4,12,26,36,64,60,130,126,6, - 10,10,8,1,3,16,0,4,20,36,20,68,132,132,120,6, - 11,11,8,1,3,32,0,80,4,20,36,20,68,132,132,120, - 6,12,12,8,1,255,4,20,36,20,68,132,132,120,0,40, - 0,16,7,10,10,8,0,3,8,16,36,72,16,32,64,60, - 130,126,7,10,10,8,0,3,8,16,36,76,26,36,64,60, - 130,126,7,10,10,8,0,3,80,6,24,98,12,48,64,60, - 130,126,7,12,12,8,0,1,8,16,36,72,16,32,64,60, - 130,126,0,40,7,14,14,8,0,255,8,16,36,72,16,32, - 64,60,130,126,0,16,0,16,7,11,11,8,0,3,64,0, - 166,24,98,12,48,64,60,130,126,7,14,14,8,1,0,34, - 20,8,8,0,4,4,4,4,68,132,132,136,120,6,13,13, - 8,1,0,4,0,4,4,4,4,4,4,68,132,132,136,120, - 7,14,14,8,1,0,8,0,18,0,4,4,4,4,4,68, - 132,132,136,120,6,13,13,8,1,254,4,4,4,4,4,4, - 68,132,120,0,40,0,16,6,11,11,8,1,254,16,0,0, - 8,68,132,132,136,112,0,16,6,6,6,8,1,0,8,68, - 132,132,136,112,6,12,12,8,1,0,32,32,56,56,0,0, - 8,68,132,132,136,112,6,11,11,8,1,254,16,0,0,8, - 68,132,132,136,120,20,8,6,11,11,8,1,0,32,0,72, - 0,0,8,68,132,132,136,112,6,6,6,8,1,2,32,88, - 84,52,72,128,6,11,11,8,1,254,32,0,0,252,64,128, - 168,128,144,68,56,4,10,10,8,2,3,96,128,96,128,0, - 64,96,144,144,240,6,3,3,8,1,2,32,92,128,6,8, - 8,8,1,2,48,64,48,64,0,32,92,128,6,6,6,8, - 1,2,80,0,0,32,92,128,6,8,8,8,1,255,24,36, - 36,28,68,164,72,240,6,8,8,8,1,255,24,36,36,60, - 4,56,144,96,6,13,13,8,1,255,68,40,16,16,0,24, - 36,36,60,4,8,144,96,6,14,14,8,1,255,32,80,80, - 56,32,64,152,36,36,60,4,8,144,96,6,12,12,8,1, - 255,16,8,8,0,24,36,36,60,4,8,144,96,6,12,12, - 8,1,255,16,40,68,0,24,36,36,60,4,8,144,96,6, - 11,11,8,1,255,40,0,0,24,36,36,60,4,8,144,96, - 6,13,13,8,1,255,16,0,36,0,0,24,36,36,60,4, - 8,144,96,6,7,7,8,1,255,8,148,144,136,132,132,120, - 7,7,7,8,0,255,4,42,104,164,34,34,28,6,12,12, - 8,1,255,136,80,32,32,0,8,148,144,136,132,132,120,6, - 11,11,8,1,255,16,0,0,24,36,36,60,4,8,144,96, - 6,9,9,8,1,254,24,164,144,136,112,0,32,0,32,6, - 9,9,8,1,254,24,164,144,136,112,0,80,0,32,7,6, - 6,8,1,255,16,40,32,64,128,254,7,10,10,8,1,255, - 96,128,96,128,16,40,32,64,128,254,4,1,1,8,2,3, - 240,4,5,5,8,2,3,64,96,144,144,240,11,5,10,16, - 3,9,16,64,18,224,127,224,128,0,254,0,10,5,10,16, - 3,9,18,64,17,0,127,0,128,0,254,0,6,4,4,16, - 5,9,8,20,60,192,5,5,5,16,4,9,136,72,48,16, - 48,8,5,5,16,3,9,252,32,72,33,30,3,3,3,16, - 4,8,160,0,128,9,4,8,16,4,9,18,128,159,128,144, - 0,96,0,16,16,32,16,0,254,85,85,128,0,1,193,134, - 48,11,233,140,24,16,5,144,4,16,5,140,24,11,233,134, - 48,1,193,128,0,0,1,170,170,15,15,30,16,1,254,1, - 0,2,128,63,248,40,40,48,24,35,136,100,76,164,74,100, - 76,35,136,48,24,40,40,63,248,2,128,1,0,3,4,4, - 16,6,9,96,160,160,96,4,5,5,16,6,9,96,144,144, - 144,96,6,3,3,16,5,10,252,48,64,3,5,5,16,6, - 9,96,224,128,128,64,9,4,8,16,4,254,18,128,159,128, - 144,0,96,0,6,2,2,16,5,10,12,240,5,4,4,8, - 2,9,24,24,16,224,7,4,4,8,1,9,32,64,128,254, - 7,4,4,16,3,9,32,64,128,254,6,4,4,16,5,9, - 16,132,132,124,15,15,30,16,1,254,1,0,2,128,5,64, - 10,160,21,80,42,168,84,84,42,168,42,168,42,168,43,168, - 40,40,47,232,96,12,255,254,5,5,5,16,5,9,32,80, - 136,80,32,5,5,5,16,5,254,32,80,136,80,32,2,2, - 2,16,7,11,192,192,2,4,4,16,7,254,192,128,128,64, - 6,9,9,8,1,3,16,40,68,0,16,8,4,132,248,7, - 11,11,8,1,255,8,20,34,0,8,4,4,4,8,144,96, - 3,3,3,8,2,5,64,224,64,4,9,9,8,2,2,128, - 128,64,64,32,32,16,16,16,5,9,9,8,2,2,136,144, - 96,64,32,32,16,16,16,7,9,9,8,1,2,146,164,120, - 64,32,32,16,16,16,6,9,9,8,1,2,48,72,192,228, - 88,64,32,32,32,7,9,9,8,1,1,16,16,40,40,68, - 68,146,170,198,6,8,8,8,1,2,56,68,64,64,48,12, - 48,192,7,9,9,8,1,2,130,130,68,68,40,40,16,16, - 16,7,9,9,8,1,2,16,16,16,40,40,68,68,130,130, - 7,9,9,8,1,2,48,72,136,152,104,4,4,2,2,7, - 12,12,8,1,0,16,0,36,0,0,2,42,42,188,144,148, - 96,7,9,9,8,1,0,8,0,0,12,50,156,144,148,96, - 6,12,12,8,1,254,16,0,0,48,72,64,56,64,144,128, - 132,120,4,10,10,8,2,254,112,128,240,64,128,0,80,80, - 80,80,6,8,8,8,1,254,56,12,124,128,148,148,148,148, - 10,12,24,16,1,1,4,0,10,0,17,0,4,0,3,0, - 6,128,10,64,10,64,6,64,25,128,96,0,128,0}; + 240,0,1,128,0,0,1,170,170,16,16,32,16,0,254,85, + 85,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0, + 1,128,0,1,149,130,124,2,1,191,0,0,1,170,170,16, + 16,32,16,0,254,85,85,128,0,0,1,136,4,22,25,161, + 224,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128, + 0,0,1,170,170,12,14,28,16,1,255,1,80,225,80,33, + 160,17,0,17,0,9,0,8,0,4,224,4,128,2,128,3, + 0,3,0,2,0,2,0,11,15,30,16,1,255,0,64,0, + 128,225,0,33,64,16,128,17,32,8,192,8,0,4,224,4, + 128,2,128,3,0,3,0,2,0,2,0,12,7,14,16,2, + 3,1,144,58,96,202,192,17,64,16,64,32,128,31,0,5, + 10,10,8,1,1,8,8,80,16,32,32,64,64,136,160,7, + 10,10,8,1,1,8,8,80,16,32,32,64,66,136,160,10, + 10,20,16,3,2,48,0,48,0,6,0,9,0,7,0,1, + 0,14,0,240,128,0,64,0,64,2,4,4,8,3,3,64, + 128,192,192,5,4,4,8,1,2,24,48,64,128,12,4,8, + 16,3,1,112,0,136,0,136,48,127,192,7,11,11,16,2, + 0,24,32,32,24,32,76,82,98,36,88,128,6,4,4,8, + 2,9,24,36,228,88,9,6,12,16,4,7,3,0,4,0, + 39,128,56,0,64,0,128,0,10,5,10,16,3,8,252,64, + 16,64,32,128,71,0,64,0,11,4,8,16,2,9,24,32, + 36,32,228,64,89,128,10,4,8,16,3,8,0,64,254,64, + 1,64,0,128,7,4,4,16,4,9,64,92,98,252,8,6, + 6,16,3,8,40,40,40,104,128,127,3,5,5,16,6,8, + 32,0,32,32,192,4,2,2,16,6,10,48,192,5,5,5, + 16,5,8,16,40,48,96,144,4,13,13,16,6,254,240,0, + 0,0,0,0,0,0,0,0,0,48,192,2,5,5,8,3, + 2,64,128,192,0,192,16,16,32,16,0,254,170,170,0,1, + 128,0,0,1,178,34,74,55,250,42,74,35,203,162,0,1, + 128,0,0,1,128,0,0,1,128,0,85,85,14,14,28,16, + 1,255,255,252,231,156,219,124,219,28,219,108,231,156,255,252, + 255,252,247,28,231,108,247,108,247,108,227,28,255,252,3,3, + 3,16,7,0,64,0,160,7,9,9,8,1,2,124,130,128, + 64,32,16,16,0,16,6,8,8,8,1,255,24,164,144,136, + 112,32,80,32,4,5,5,8,2,2,112,128,240,64,128,7, + 10,10,8,1,3,2,124,128,16,16,16,16,16,16,16,3, + 11,11,8,2,3,96,128,96,128,32,32,32,32,32,32,32, + 6,13,13,8,1,255,24,32,24,32,0,24,36,36,60,4, + 8,144,96,3,12,12,8,3,254,64,64,64,64,64,64,64, + 0,96,128,96,128,6,11,11,8,1,255,48,64,48,64,0, + 140,144,144,140,132,120,1,8,8,8,4,3,128,128,128,128, + 128,128,128,128,6,7,7,8,1,0,8,68,132,120,0,0, + 16,5,8,8,8,2,3,144,0,0,96,144,136,136,112,6, + 7,7,8,1,3,40,0,0,8,68,132,120,6,9,9,8, + 1,3,32,0,80,0,0,8,68,132,120,6,8,8,8,1, + 254,252,32,64,128,144,128,68,56,6,8,8,8,1,254,252, + 32,64,128,128,128,68,56,6,11,11,8,1,254,32,0,0, + 252,32,64,128,128,128,68,56,6,5,5,8,1,3,16,8, + 4,132,248,6,7,7,8,1,3,64,0,16,8,4,132,248, + 6,7,7,8,1,255,8,4,4,4,8,144,96,6,10,10, + 8,1,255,32,0,0,8,4,4,4,8,144,96,7,7,7, + 8,1,255,2,42,42,188,144,144,96,7,12,12,8,1,255, + 16,0,36,0,0,2,42,42,188,144,144,96,7,6,6,8, + 1,0,12,50,156,144,144,96,7,9,9,8,1,0,8,0, + 0,12,50,156,144,144,96,6,8,8,8,1,3,64,64,64, + 64,88,100,68,248,6,8,8,8,1,3,64,72,64,64,88, + 100,68,248,6,9,9,8,1,254,48,72,64,56,64,128,128, + 132,120,6,12,12,8,1,254,16,0,0,48,72,64,56,64, + 128,128,132,120,7,9,9,8,0,3,80,4,8,16,32,64, + 60,130,126,7,12,12,8,0,255,4,8,16,32,64,60,130, + 126,0,40,0,16,6,10,10,8,1,255,64,160,160,8,148, + 144,136,132,132,120,6,9,9,8,1,255,160,0,8,148,144, + 136,132,132,120,6,10,10,8,1,255,64,0,160,8,148,144, + 136,132,132,120,8,1,1,8,0,3,255,6,8,8,8,1, + 3,16,0,12,20,12,132,132,120,6,10,10,8,1,0,72, + 0,0,56,36,20,76,132,136,112,6,8,8,8,1,3,4, + 20,36,20,68,132,132,120,6,11,11,8,1,0,4,4,4, + 4,4,4,68,132,132,136,120,5,8,8,8,2,254,112,24, + 120,128,128,128,128,128,6,9,9,8,1,0,32,0,0,8, + 68,132,132,136,112,10,9,18,16,1,1,4,0,3,0,6, + 128,10,64,10,64,6,64,25,128,96,0,128,0,6,8,8, + 8,1,255,24,36,36,60,4,8,144,96,6,7,7,8,1, + 255,8,148,144,136,132,132,120,6,8,8,8,1,254,8,148, + 144,136,132,120,0,80,4,4,4,8,2,9,48,192,48,192, + 5,5,5,8,2,8,24,24,200,80,224,4,4,4,8,2, + 0,32,192,48,192,4,2,2,8,2,9,48,192,4,6,6, + 8,2,6,64,160,160,112,64,128,4,2,2,8,2,254,48, + 192,5,4,4,8,1,7,8,40,176,192,4,4,4,8,2, + 7,96,144,144,96,7,3,3,8,1,9,2,124,128,3,4, + 4,8,2,10,96,128,96,128,3,4,4,8,2,254,96,128, + 96,128,2,3,3,16,9,254,128,64,64,5,5,5,16,5, + 9,8,16,32,224,96,4,3,3,16,6,9,144,144,96,4, + 1,1,16,6,10,240,5,4,4,16,5,9,136,80,32,32, + 5,4,4,16,5,9,32,32,80,136,2,2,2,16,7,0, + 192,192,5,5,5,16,5,9,96,224,32,16,8,4,4,4, + 16,6,9,144,96,96,144,4,5,5,8,2,254,112,128,240, + 64,128,3,3,3,8,2,5,64,224,64,4,9,9,8,2, + 2,128,128,64,64,32,32,16,16,16,5,9,9,8,2,2, + 136,144,96,64,32,32,16,16,16,7,9,9,8,1,2,146, + 164,120,64,32,32,16,16,16,6,9,9,8,1,2,8,16, + 32,64,48,64,128,132,120,6,9,9,8,1,2,48,72,72, + 132,132,132,132,72,48,7,9,9,8,1,2,128,120,8,8, + 4,4,4,2,2,7,9,9,8,1,2,130,130,68,68,40, + 40,16,16,16,7,9,9,8,1,2,16,16,16,40,40,68, + 68,130,130,7,9,9,8,1,2,48,72,136,152,104,4,4, + 2,2,5,10,10,8,1,2,8,8,144,144,32,32,72,72, + 128,128,4,4,4,8,2,1,16,16,16,224,2,4,4,8, + 3,7,192,192,64,128,7,6,6,8,1,3,16,16,254,56, + 108,68,6,4,4,8,1,3,8,68,132,120,6,7,7,8, + 1,0,56,36,20,76,132,136,112,1,4,4,8,4,7,128, + 128,128,128,5,11,11,8,2,3,16,40,120,128,32,32,32, + 32,32,32,32,6,11,11,8,1,3,12,16,76,176,0,16, + 16,16,16,16,16,6,12,12,8,1,254,16,16,16,16,16, + 16,16,0,12,16,76,176,3,4,4,8,2,10,96,128,96, + 128,5,11,11,8,2,3,24,32,24,32,128,128,128,128,128, + 128,128,7,13,13,8,1,255,6,8,6,8,0,24,36,36, + 60,4,8,144,96,7,13,13,8,1,255,102,104,38,72,128, + 24,36,36,60,4,8,144,96,7,11,11,8,1,255,6,8, + 6,8,0,140,144,144,140,132,120,6,9,9,8,1,3,64, + 64,112,112,0,8,68,132,120,6,9,9,8,1,3,32,0, + 32,0,0,8,68,132,120,6,8,8,8,1,255,8,68,132, + 120,0,16,0,16,6,10,10,8,1,0,40,0,0,8,68, + 132,120,16,40,16,6,9,9,8,1,3,80,0,32,0,0, + 8,68,132,120,6,8,8,8,1,255,8,68,132,120,0,40, + 0,16,6,9,9,8,1,3,80,0,80,0,0,8,68,132, + 120,6,8,8,8,1,255,8,68,132,120,0,40,0,40,6, + 13,13,8,1,254,48,64,48,64,0,252,32,64,128,128,128, + 68,56,6,13,13,8,1,254,32,0,32,0,0,252,32,64, + 128,128,128,68,56,6,8,8,8,1,254,252,32,64,128,168, + 128,68,56,6,8,8,8,1,254,252,32,64,144,128,144,68, + 56,6,13,13,8,1,254,32,0,72,0,0,252,32,64,128, + 128,128,68,56,6,8,8,8,1,254,252,64,128,168,128,144, + 68,56,6,8,8,8,1,254,252,64,128,168,128,168,68,56, + 6,10,10,8,1,3,64,64,112,112,0,16,8,4,132,248, + 6,8,8,8,1,0,16,8,4,132,248,16,40,16,6,7, + 7,8,1,1,16,8,4,132,248,0,16,6,12,12,8,1, + 1,64,64,112,112,0,16,8,4,132,248,0,16,6,8,8, + 8,1,3,80,0,0,16,8,4,132,248,6,7,7,8,1, + 1,16,8,4,132,248,0,80,6,9,9,8,1,3,32,0, + 80,0,16,8,4,132,248,6,9,9,8,1,3,80,0,32, + 0,16,8,4,132,248,6,9,9,8,1,3,80,0,80,0, + 16,8,4,132,248,6,13,13,8,1,255,16,16,28,28,0, + 0,8,4,4,4,8,144,96,7,13,13,8,1,255,34,20, + 8,8,0,0,8,4,4,4,8,144,96,6,8,8,8,1, + 254,8,4,4,4,8,152,116,8,6,7,7,8,1,255,8, + 4,4,4,8,144,100,7,8,8,8,1,254,16,8,8,8, + 16,144,106,4,6,7,7,8,1,255,8,4,4,36,8,144, + 100,6,10,10,8,1,255,36,0,0,8,4,4,4,8,144, + 96,6,12,12,8,1,255,16,0,40,0,0,8,4,4,4, + 8,144,96,6,12,12,8,1,255,36,0,36,0,0,8,4, + 4,4,8,144,96,7,10,10,8,1,0,8,0,0,2,42, + 42,188,144,148,96,7,8,8,8,1,255,2,42,42,188,160, + 170,64,4,7,13,13,8,1,255,16,0,36,0,0,2,42, + 42,188,160,170,64,4,7,6,6,8,1,0,12,50,156,160, + 170,64,7,11,11,8,1,0,16,0,36,0,0,12,50,156, + 144,144,96,6,8,8,8,1,3,72,64,84,64,88,100,68, + 248,6,14,14,8,1,254,32,0,72,0,0,48,72,64,56, + 64,128,128,132,120,6,6,6,8,1,3,12,20,12,132,132, + 120,6,8,8,8,1,1,12,20,12,132,132,120,0,16,6, + 11,11,8,1,1,8,0,0,12,20,12,132,132,120,0,16, + 6,10,10,8,1,3,16,0,36,0,12,20,12,132,132,120, + 6,10,10,8,1,255,12,20,12,132,132,120,0,72,0,32, + 6,10,10,8,1,3,20,0,20,0,12,20,12,132,132,120, + 6,10,10,8,1,0,8,0,0,56,36,20,76,132,136,112, + 6,12,12,8,1,0,32,0,72,0,0,56,36,20,76,132, + 136,112,7,8,8,8,0,3,4,8,16,32,64,60,130,126, + 14,8,16,16,1,3,0,48,0,192,3,0,12,0,16,0, + 15,248,128,4,127,248,7,8,8,8,0,3,4,12,26,36, + 64,60,130,126,6,10,10,8,1,3,16,0,4,20,36,20, + 68,132,132,120,6,11,11,8,1,3,32,0,80,4,20,36, + 20,68,132,132,120,6,12,12,8,1,255,4,20,36,20,68, + 132,132,120,0,40,0,16,7,10,10,8,0,3,8,16,36, + 72,16,32,64,60,130,126,7,10,10,8,0,3,8,16,36, + 76,26,36,64,60,130,126,7,10,10,8,0,3,80,6,24, + 98,12,48,64,60,130,126,7,12,12,8,0,1,8,16,36, + 72,16,32,64,60,130,126,0,40,7,14,14,8,0,255,8, + 16,36,72,16,32,64,60,130,126,0,16,0,16,7,11,11, + 8,0,3,64,0,166,24,98,12,48,64,60,130,126,7,14, + 14,8,1,0,34,20,8,8,0,4,4,4,4,68,132,132, + 136,120,6,13,13,8,1,0,4,0,4,4,4,4,4,4, + 68,132,132,136,120,7,14,14,8,1,0,8,0,18,0,4, + 4,4,4,4,68,132,132,136,120,6,13,13,8,1,254,4, + 4,4,4,4,4,68,132,120,0,40,0,16,6,11,11,8, + 1,254,16,0,0,8,68,132,132,136,112,0,16,6,6,6, + 8,1,0,8,68,132,132,136,112,6,12,12,8,1,0,32, + 32,56,56,0,0,8,68,132,132,136,112,6,11,11,8,1, + 254,16,0,0,8,68,132,132,136,120,20,8,6,11,11,8, + 1,0,32,0,72,0,0,8,68,132,132,136,112,6,6,6, + 8,1,2,32,88,84,52,72,128,6,11,11,8,1,254,32, + 0,0,252,64,128,168,128,144,68,56,4,10,10,8,2,3, + 96,128,96,128,0,64,96,144,144,240,6,3,3,8,1,2, + 32,92,128,6,8,8,8,1,2,48,64,48,64,0,32,92, + 128,6,6,6,8,1,2,80,0,0,32,92,128,6,8,8, + 8,1,255,24,36,36,28,68,164,72,240,6,8,8,8,1, + 255,24,36,36,60,4,56,144,96,6,13,13,8,1,255,68, + 40,16,16,0,24,36,36,60,4,8,144,96,6,14,14,8, + 1,255,32,80,80,56,32,64,152,36,36,60,4,8,144,96, + 6,12,12,8,1,255,16,8,8,0,24,36,36,60,4,8, + 144,96,6,12,12,8,1,255,16,40,68,0,24,36,36,60, + 4,8,144,96,6,11,11,8,1,255,40,0,0,24,36,36, + 60,4,8,144,96,6,13,13,8,1,255,16,0,36,0,0, + 24,36,36,60,4,8,144,96,6,7,7,8,1,255,8,148, + 144,136,132,132,120,7,7,7,8,0,255,4,42,104,164,34, + 34,28,6,12,12,8,1,255,136,80,32,32,0,8,148,144, + 136,132,132,120,6,11,11,8,1,255,16,0,0,24,36,36, + 60,4,8,144,96,6,9,9,8,1,254,24,164,144,136,112, + 0,32,0,32,6,9,9,8,1,254,24,164,144,136,112,0, + 80,0,32,7,6,6,8,1,255,16,40,32,64,128,254,7, + 10,10,8,1,255,96,128,96,128,16,40,32,64,128,254,4, + 1,1,8,2,3,240,4,5,5,8,2,3,64,96,144,144, + 240,11,5,10,16,3,9,16,64,18,224,127,224,128,0,254, + 0,10,5,10,16,3,9,18,64,17,0,127,0,128,0,254, + 0,6,4,4,16,5,9,8,20,60,192,5,5,5,16,4, + 9,136,72,48,16,48,8,5,5,16,3,9,252,32,72,33, + 30,3,3,3,8,4,8,160,0,128,9,4,8,16,4,9, + 18,128,159,128,144,0,96,0,16,16,32,16,0,254,85,85, + 128,0,1,193,134,48,11,233,140,24,16,5,144,4,16,5, + 140,24,11,233,134,48,1,193,128,0,0,1,170,170,15,15, + 30,16,1,254,1,0,2,128,63,248,40,40,48,24,35,136, + 100,76,164,74,100,76,35,136,48,24,40,40,63,248,2,128, + 1,0,3,4,4,16,6,9,96,160,160,96,4,5,5,16, + 6,9,96,144,144,144,96,6,3,3,16,5,10,252,8,96, + 3,5,5,16,6,9,96,224,128,128,64,9,4,8,16,4, + 254,18,128,159,128,144,0,96,0,6,2,2,16,5,10,12, + 240,5,4,4,8,2,9,24,24,16,224,7,4,4,8,1, + 9,32,64,128,254,7,4,4,16,3,9,32,64,128,254,6, + 4,4,16,5,9,16,132,132,124,15,15,30,16,1,254,1, + 0,2,128,5,64,10,160,21,80,42,168,84,84,42,168,42, + 168,42,168,43,168,40,40,47,232,96,12,255,254,5,5,5, + 16,5,9,32,80,136,80,32,5,5,5,16,5,254,32,80, + 136,80,32,2,2,2,16,7,11,192,192,2,4,4,16,7, + 254,192,128,128,64,6,9,9,8,1,3,16,40,68,0,16, + 8,4,132,248,7,11,11,8,1,255,8,20,34,0,8,4, + 4,4,8,144,96,3,3,3,8,2,5,64,224,64,4,9, + 9,8,2,2,128,128,64,64,32,32,16,16,16,5,9,9, + 8,2,2,136,144,96,64,32,32,16,16,16,7,9,9,8, + 1,2,146,164,120,64,32,32,16,16,16,6,9,9,8,1, + 2,48,72,192,228,88,64,32,32,32,7,9,9,8,1,1, + 16,16,40,40,68,68,146,170,198,6,8,8,8,1,2,56, + 68,64,64,48,12,48,192,7,9,9,8,1,2,130,130,68, + 68,40,40,16,16,16,7,9,9,8,1,2,16,16,16,40, + 40,68,68,130,130,7,9,9,8,1,2,48,72,136,152,104, + 4,4,2,2,7,12,12,8,1,0,16,0,36,0,0,2, + 42,42,188,144,148,96,7,9,9,8,1,0,8,0,0,12, + 50,156,144,148,96,6,12,12,8,1,254,16,0,0,48,72, + 64,56,64,144,128,132,120,4,10,10,8,2,254,112,128,240, + 64,128,0,80,80,80,80,6,8,8,8,1,254,56,12,124, + 128,148,148,148,148,10,12,24,16,1,1,4,0,10,0,17, + 0,4,0,3,0,6,128,10,64,10,64,6,64,25,128,96, + 0,128,0}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 3, '1' Height: 12 Calculated Max Values w=16 h=16 x=12 y=11 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 @@ -81161,8 +85079,8 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[3934] U8G_SECTION(".progmem.u8g_ Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[6498] U8G_SECTION(".progmem.u8g_font_unifont_18_19") = { - 0,16,16,0,254,3,7,129,10,5,0,255,254,14,254,12, +const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[7078] U8G_FONT_SECTION("u8g_font_unifont_18_19") = { + 0,16,16,0,254,3,7,121,9,233,0,255,254,14,254,12, 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, 0,0,1,128,0,85,85,8,4,4,16,4,9,152,91,35, @@ -81272,308 +85190,344 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[6498] U8G_SECTION(".progmem.u8g_ 0,255,255,255,3,24,3,24,3,24,11,24,15,24,14,248, 4,24,4,24,2,24,1,24,0,136,16,12,24,16,0,255, 255,255,0,24,0,24,7,248,12,0,12,0,6,240,1,152, - 3,16,3,0,1,128,0,252,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 2,2,2,16,7,255,192,192,9,11,22,16,7,0,63,128, - 64,0,64,0,96,0,48,0,24,0,8,0,12,0,12,0, - 156,0,120,0,6,13,13,16,10,254,252,48,48,48,48,48, - 48,48,48,48,48,48,16,8,14,14,16,0,0,60,98,49, - 252,48,48,48,48,48,48,48,48,48,16,9,16,32,16,7, - 254,120,0,132,0,132,0,31,128,6,0,6,0,6,0,6, - 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,2, - 0,6,3,3,16,4,255,152,68,56,6,3,3,16,6,255, - 112,136,100,4,3,3,16,6,255,96,128,112,3,5,5,16, - 6,255,96,128,96,128,96,5,3,3,16,5,10,136,72,48, - 5,3,3,16,4,10,128,112,8,5,3,3,16,4,10,224, - 16,8,6,4,4,16,3,9,112,8,228,28,6,16,16,16, - 10,254,136,120,0,252,48,48,48,48,48,48,48,48,48,48, - 48,16,8,16,16,16,8,254,128,120,4,63,12,12,12,12, - 12,12,12,12,12,12,12,4,8,16,16,16,8,254,240,8, - 4,63,12,12,12,12,12,12,12,12,12,12,12,4,9,16, - 32,16,7,254,120,0,244,0,10,0,31,128,6,0,6,0, - 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, - 6,0,2,0,5,3,3,16,6,255,224,16,8,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,14,14,28,16,1,0,0,96,0,96,0, - 0,113,8,248,240,4,0,4,24,24,60,48,36,8,36,132, - 124,135,216,121,128,48,0,1,3,3,16,8,10,128,128,128, - 4,1,1,16,6,0,240,3,3,3,16,6,10,128,64,32, - 3,3,3,16,7,10,32,64,128,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,16,13,26,16,0,254,255,255,0,192,0, - 192,14,192,25,248,17,200,19,204,14,204,0,204,0,204,4, - 192,14,64,4,0,16,13,26,16,0,254,255,255,8,24,8, - 24,9,216,59,56,58,24,18,56,17,216,8,24,4,24,0, - 152,1,200,0,128,16,13,26,16,0,254,255,255,1,152,1, - 152,1,152,1,152,7,152,3,152,1,152,0,152,0,24,0, - 152,1,200,0,128,16,13,26,16,0,254,255,255,0,24,0, - 24,0,24,3,248,17,152,8,216,8,216,7,152,0,24,0, - 152,1,200,0,128,16,13,26,16,0,254,255,255,0,24,0, - 24,3,248,6,0,6,0,3,240,0,24,4,24,3,240,0, - 0,0,192,0,192,16,13,26,16,0,254,255,255,0,96,0, - 96,7,224,12,0,24,224,25,144,25,16,13,48,7,224,0, - 0,1,128,1,128,16,13,26,16,0,254,255,255,49,128,49, - 128,49,128,49,240,49,200,19,132,15,132,1,132,1,140,9, - 140,28,128,8,0,16,13,26,16,0,254,255,255,3,24,3, - 24,3,24,3,24,6,24,4,56,4,120,3,216,0,24,1, - 24,3,136,1,0,16,13,26,16,0,254,255,255,3,0,3, - 0,51,24,75,40,7,240,15,24,51,8,67,24,3,48,3, - 28,1,16,0,14,16,13,26,16,0,254,255,255,0,32,0, - 32,30,112,49,152,49,152,16,48,8,96,4,192,0,60,0, - 192,0,192,0,60,8,5,5,16,4,255,72,146,130,68,3, - 8,6,6,16,4,254,72,146,132,67,4,3,2,12,12,16, - 7,255,128,192,192,192,192,192,192,192,192,192,192,64,5,12, - 12,16,6,255,144,216,216,216,216,216,216,216,216,216,216,72, - 8,7,7,16,4,2,60,78,199,195,227,114,60,6,13,13, - 16,5,254,112,232,204,204,76,60,24,48,96,32,16,8,4, - 9,13,26,16,4,254,252,0,226,0,1,0,1,0,1,0, - 3,0,54,0,44,0,56,0,4,0,2,0,1,0,0,128, - 8,13,13,16,4,254,252,226,2,2,60,2,1,51,46,60, - 4,2,1,12,12,24,16,2,255,128,16,64,48,32,96,16, - 192,9,128,7,0,6,0,13,0,9,128,9,128,9,128,7, - 0,8,13,13,16,4,254,192,195,195,67,62,12,12,104,88, - 120,4,2,1,8,13,13,16,4,254,60,192,128,192,124,16, - 32,35,51,15,4,4,2,11,11,22,16,3,0,128,0,135, - 0,142,192,140,64,68,96,67,224,64,32,32,32,32,64,24, - 192,7,0,10,10,20,16,3,1,255,192,32,0,64,0,128, - 0,128,0,131,0,135,128,124,128,56,128,0,128,8,12,12, - 16,4,255,56,100,98,97,32,56,72,192,192,192,32,31,5, - 4,4,16,6,3,112,136,136,112,2,2,2,16,8,6,192, - 192,15,15,30,16,1,255,2,0,1,32,0,192,57,254,68, - 192,4,192,12,192,56,192,8,192,135,192,134,192,78,192,60, - 192,0,192,0,64,6,14,14,8,1,255,168,84,168,84,168, - 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, - 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,16,12,24,16,0,255,255,255,1,152,1, - 152,1,152,1,152,7,152,3,152,1,152,0,152,0,24,0, - 24,15,248,16,12,24,16,0,255,255,255,0,24,0,24,0, - 24,3,248,17,152,8,216,8,216,7,152,0,24,0,24,31, - 248,8,13,13,16,4,254,124,226,193,1,1,3,62,60,48, - 48,48,48,16,16,13,26,16,0,254,255,255,0,24,0,24, - 3,248,6,0,6,0,3,240,0,24,4,24,2,24,1,240, - 0,0,15,254,16,12,24,16,0,255,255,255,0,24,0,24, - 7,216,14,120,13,24,12,152,12,120,7,248,0,24,0,24, - 15,248,6,14,14,8,1,255,168,84,168,84,168,84,168,84, - 168,84,168,84,168,84,6,4,4,16,5,9,48,180,132,120, + 3,16,3,0,1,128,0,252,2,4,4,16,7,10,192,192, + 192,192,6,16,16,16,10,254,48,48,48,252,48,48,48,48, + 48,48,48,48,48,48,48,16,2,2,2,16,7,255,192,192, + 9,11,22,16,7,0,63,128,64,0,64,0,96,0,48,0, + 24,0,8,0,12,0,12,0,156,0,120,0,6,13,13,16, + 10,254,252,48,48,48,48,48,48,48,48,48,48,48,16,8, + 14,14,16,0,0,60,98,49,252,48,48,48,48,48,48,48, + 48,48,16,9,16,32,16,7,254,120,0,132,0,132,0,31, + 128,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,2,0,6,3,3,16,4,255,152, + 68,56,6,3,3,16,6,255,112,136,100,4,3,3,16,6, + 255,96,128,112,3,5,5,16,6,255,96,128,96,128,96,5, + 3,3,16,5,10,136,72,48,5,3,3,16,4,10,128,112, + 8,5,3,3,16,4,10,224,16,8,6,4,4,16,3,9, + 112,8,228,28,6,16,16,16,10,254,136,120,0,252,48,48, + 48,48,48,48,48,48,48,48,48,16,8,16,16,16,8,254, + 128,120,4,63,12,12,12,12,12,12,12,12,12,12,12,4, + 8,16,16,16,8,254,240,8,4,63,12,12,12,12,12,12, + 12,12,12,12,12,4,9,16,32,16,7,254,120,0,244,0, + 10,0,31,128,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,2,0,5,3,3,16, + 6,255,224,16,8,4,13,13,16,2,254,240,192,192,192,192, + 192,192,192,192,192,192,192,128,9,15,30,16,7,255,32,0, + 30,0,129,0,125,128,3,0,31,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,1,0,14,12,24,16, + 1,1,4,192,2,216,57,24,68,224,4,0,12,56,56,76, + 8,204,135,156,134,120,78,0,60,0,1,3,3,16,8,10, + 128,128,128,4,1,1,16,6,0,240,3,3,3,16,6,10, + 128,64,32,3,3,3,16,7,10,32,64,128,5,5,5,16, + 5,8,136,72,48,0,248,6,2,2,16,3,254,132,120,8, + 4,4,16,2,254,66,60,129,126,16,13,26,16,0,254,255, + 255,0,192,0,192,14,192,25,248,17,200,19,204,14,204,0, + 204,0,204,4,192,14,64,4,0,16,13,26,16,0,254,255, + 255,8,24,8,24,9,216,59,56,58,24,18,56,17,216,8, + 24,4,24,0,152,1,200,0,128,16,13,26,16,0,254,255, + 255,1,152,1,152,1,152,1,152,7,152,3,152,1,152,0, + 152,0,24,0,152,1,200,0,128,16,13,26,16,0,254,255, + 255,0,24,0,24,0,24,3,248,17,152,8,216,8,216,7, + 152,0,24,0,152,1,200,0,128,16,13,26,16,0,254,255, + 255,0,24,0,24,3,248,6,0,6,0,3,240,0,24,4, + 24,3,240,0,0,0,192,0,192,16,13,26,16,0,254,255, + 255,0,96,0,96,7,224,12,0,24,224,25,144,25,16,13, + 48,7,224,0,0,1,128,1,128,16,13,26,16,0,254,255, + 255,49,128,49,128,49,128,49,240,49,200,19,132,15,132,1, + 132,1,140,9,140,28,128,8,0,16,13,26,16,0,254,255, + 255,3,24,3,24,3,24,3,24,6,24,4,56,4,120,3, + 216,0,24,1,24,3,136,1,0,16,13,26,16,0,254,255, + 255,3,0,3,0,51,24,75,40,7,240,15,24,51,8,67, + 24,3,48,3,28,1,16,0,14,16,13,26,16,0,254,255, + 255,0,32,0,32,30,112,49,152,49,152,16,48,8,96,4, + 192,0,60,0,192,0,192,0,60,8,5,5,16,4,255,72, + 146,130,68,3,8,6,6,16,4,254,72,146,132,67,4,3, + 2,12,12,16,7,255,128,192,192,192,192,192,192,192,192,192, + 192,64,5,12,12,16,6,255,144,216,216,216,216,216,216,216, + 216,216,216,72,8,7,7,16,4,2,60,78,199,195,227,114, + 60,6,13,13,16,5,254,112,232,204,204,76,60,24,48,96, + 32,16,8,4,9,13,26,16,4,254,252,0,226,0,1,0, + 1,0,1,0,3,0,54,0,44,0,56,0,4,0,2,0, + 1,0,0,128,8,13,13,16,4,254,252,226,2,2,60,2, + 1,51,46,60,4,2,1,12,12,24,16,2,255,128,16,64, + 48,32,96,16,192,9,128,7,0,6,0,13,0,9,128,9, + 128,9,128,7,0,8,13,13,16,4,254,192,195,195,67,62, + 12,12,104,88,120,4,2,1,8,13,13,16,4,254,60,192, + 128,192,124,16,32,35,51,15,4,4,2,11,11,22,16,3, + 0,128,0,135,0,142,192,140,64,68,96,67,224,64,32,32, + 32,32,64,24,192,7,0,10,10,20,16,3,1,255,192,32, + 0,64,0,128,0,128,0,131,0,135,128,124,128,56,128,0, + 128,8,12,12,16,4,255,56,100,98,97,32,56,72,192,192, + 192,32,31,5,4,4,16,6,3,112,136,136,112,2,2,2, + 16,8,6,192,192,15,15,30,16,1,255,2,0,1,32,0, + 192,57,254,68,192,4,192,12,192,56,192,8,192,135,192,134, + 192,78,192,60,192,0,192,0,64,15,15,30,16,1,255,0, + 192,0,192,0,192,57,254,68,192,4,192,12,192,56,192,8, + 192,135,192,134,192,78,192,60,192,0,192,0,64,15,15,30, + 16,1,255,0,12,0,12,0,12,57,254,68,204,4,204,12, + 204,56,204,8,204,135,204,134,204,78,204,60,204,0,204,0, + 68,15,15,30,16,1,255,0,128,0,120,2,4,57,246,68, + 12,4,124,12,204,56,204,8,204,135,204,134,204,78,204,60, + 204,0,204,0,68,15,16,32,16,1,254,2,0,1,32,0, + 192,57,254,68,192,4,192,12,192,56,192,8,192,135,192,134, + 192,78,192,60,192,0,64,33,0,30,0,15,16,32,16,1, + 254,2,0,1,32,0,192,57,254,68,192,4,192,12,192,56, + 192,8,192,135,192,78,192,60,192,33,192,30,0,64,128,63, + 0,16,12,24,16,0,255,255,255,24,0,24,0,24,0,63, + 224,56,112,0,48,0,48,0,48,0,48,0,96,0,64,16, + 12,24,16,0,255,255,255,0,24,0,24,0,24,3,248,17, + 152,8,216,8,216,7,152,0,24,8,152,2,8,16,12,24, + 16,0,255,255,255,3,24,3,24,3,24,3,152,6,88,4, + 56,4,120,3,216,0,24,0,24,0,8,16,12,24,16,0, + 255,255,255,1,152,1,152,1,152,1,152,7,152,3,152,1, + 152,0,152,0,24,0,24,15,248,16,12,24,16,0,255,255, + 255,0,24,0,24,0,24,3,248,17,152,8,216,8,216,7, + 152,0,24,0,24,31,248,8,13,13,16,4,254,124,226,193, + 1,1,3,62,60,48,48,48,48,16,16,13,26,16,0,254, + 255,255,0,24,0,24,3,248,6,0,6,0,3,240,0,24, + 4,24,2,24,1,240,0,0,15,254,16,12,24,16,0,255, + 255,255,0,24,0,24,7,216,14,120,13,24,12,152,12,120, + 7,248,0,24,0,24,15,248,11,12,24,16,2,255,30,0, + 55,0,97,128,193,128,193,128,89,128,57,128,1,128,1,128, + 1,160,1,160,0,192,6,4,4,16,5,9,48,180,132,120, 5,8,8,16,11,0,96,144,96,0,192,96,48,8,4,7, - 7,16,11,1,96,144,96,0,96,144,96,6,14,14,8,1, - 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,16, - 12,24,16,0,255,255,255,0,12,64,12,67,140,71,204,71, - 236,99,44,32,108,48,124,24,220,15,140,0,4,16,13,26, - 16,0,255,0,6,255,247,0,110,64,102,70,102,79,102,79, - 102,69,102,65,102,97,102,51,230,30,102,0,34,16,15,30, - 16,0,255,32,0,31,192,0,32,255,255,0,0,15,192,24, - 96,60,48,60,48,24,48,0,96,63,192,7,0,1,192,0, - 124,16,15,30,16,0,255,32,0,31,240,0,8,255,255,30, - 0,63,12,59,30,25,56,1,248,1,240,3,144,79,16,60, - 16,16,24,0,14,16,15,30,16,0,255,16,0,15,224,0, - 16,255,255,3,0,3,0,67,0,67,16,67,56,99,108,33, - 204,48,12,24,12,14,24,3,240,16,15,30,16,0,255,16, - 0,15,224,0,16,255,255,3,0,3,0,83,0,83,16,83, - 56,83,108,73,204,40,12,36,12,18,24,15,240,15,14,28, - 16,1,255,64,0,228,0,230,206,133,204,121,204,3,204,14, - 204,120,204,96,236,120,252,14,220,3,204,1,204,0,68,14, - 14,28,16,1,255,64,0,128,0,128,0,64,0,127,192,31, - 240,0,56,15,12,24,140,56,76,56,76,56,76,16,216,3, - 240,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, - 84,168,84,168,84,168,84,168,84,14,13,26,16,1,255,0, - 48,0,248,1,140,3,12,135,140,135,140,131,12,128,12,192, - 12,64,108,96,156,51,12,14,4,14,15,30,16,1,255,0, - 8,0,16,0,16,0,216,3,236,6,52,140,52,158,52,158, - 52,140,56,192,48,65,176,98,112,60,48,24,16,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,14,13,26,16,1,255,0,240,3,24,6, - 12,14,12,142,12,134,120,192,248,64,120,96,12,48,12,24, - 12,12,24,7,240,14,15,30,16,1,255,0,8,0,16,0, - 16,7,216,8,108,28,52,28,52,156,52,137,228,131,248,193, - 224,64,48,96,48,48,112,31,224,16,12,24,16,0,255,255, - 255,0,96,0,96,1,248,7,100,60,98,48,98,60,110,7, - 108,1,224,0,224,0,32,14,13,26,16,2,255,64,0,226, - 60,227,48,197,48,121,48,1,48,6,48,120,48,126,48,1, - 176,0,112,0,48,0,16,14,12,24,16,2,255,62,124,113, - 96,224,224,224,96,252,96,70,96,6,96,6,96,28,96,120, - 96,32,96,0,32,16,12,24,16,0,255,255,255,24,24,48, - 24,56,24,31,152,1,152,6,24,12,24,31,24,1,216,0, - 56,0,8,12,13,26,16,2,255,32,0,35,192,22,64,12, - 64,15,128,140,0,136,32,136,112,199,176,64,48,96,48,48, - 96,31,128,16,12,24,16,0,255,255,255,24,0,24,0,28, - 0,27,0,24,252,24,12,24,12,24,12,24,24,28,48,15, - 192,16,12,24,16,0,255,255,255,24,0,24,0,28,0,27, - 224,24,56,24,104,28,200,15,16,0,96,1,248,0,14,16, - 12,24,16,0,255,255,255,1,240,3,28,70,15,76,2,76, - 196,79,36,102,44,32,44,48,100,24,196,15,131,16,12,24, - 16,0,255,255,231,0,102,0,102,1,230,7,102,60,102,48, - 102,60,102,7,126,1,238,0,230,0,34,14,13,26,16,1, - 255,7,0,13,128,25,176,49,248,57,204,185,140,145,184,129, - 140,193,204,199,248,111,176,121,128,48,128,16,15,30,16,0, - 255,16,0,15,192,0,32,255,255,24,0,24,0,24,0,24, - 96,24,240,24,112,24,48,24,96,24,192,15,128,7,0,16, - 15,30,16,0,255,16,0,15,0,0,128,255,255,0,128,0, - 128,0,192,1,192,1,96,35,48,58,24,20,24,24,24,12, - 48,7,224,16,12,24,16,0,255,255,255,3,0,3,0,67, - 0,67,16,67,56,99,108,33,204,48,12,24,12,14,24,3, - 240,16,12,24,16,0,255,255,255,24,0,24,0,24,0,24, - 96,24,240,24,112,24,48,24,96,24,192,15,128,7,0,13, - 13,26,16,3,255,28,96,62,120,97,96,192,224,192,224,224, - 96,224,96,64,96,0,96,0,96,0,96,0,96,0,32,16, - 12,24,16,0,255,255,255,0,0,65,248,67,12,67,132,67, - 134,99,134,33,6,48,6,24,12,12,28,7,240,15,13,26, - 16,1,255,60,0,98,62,241,48,241,48,97,48,1,48,6, - 48,120,48,126,48,1,176,0,112,0,48,0,16,16,12,24, - 16,0,255,255,255,12,0,12,0,12,120,12,240,13,224,13, - 96,15,96,14,96,14,96,12,48,8,28,12,13,26,16,4, - 255,96,0,240,240,224,192,128,192,99,192,30,192,56,192,224, - 192,248,192,14,192,3,192,1,192,0,64,16,12,24,16,0, - 255,255,255,0,24,0,24,0,24,0,24,30,24,63,152,60, - 216,56,120,0,56,0,24,0,8,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,15,13,26, - 16,1,255,14,48,31,190,48,240,96,112,240,240,155,176,14, - 48,24,48,32,48,0,48,0,48,0,48,0,16,16,12,24, - 16,0,255,255,255,16,0,56,120,12,100,6,98,12,98,24, - 110,48,108,63,96,1,224,0,96,0,32,16,12,24,16,0, - 255,255,255,0,24,0,24,0,120,3,216,7,24,28,24,31, + 7,16,11,1,96,144,96,0,96,144,96,14,14,28,16,1, + 255,255,252,231,156,219,108,219,140,219,236,231,156,255,252,255, + 252,231,108,219,108,231,12,219,236,231,236,255,252,16,12,24, + 16,0,255,255,255,0,12,64,12,67,140,71,204,71,236,99, + 44,32,108,48,124,24,220,15,140,0,4,16,13,26,16,0, + 255,0,6,255,247,0,110,64,102,70,102,79,102,79,102,69, + 102,65,102,97,102,51,230,30,102,0,34,16,15,30,16,0, + 255,32,0,31,192,0,32,255,255,0,0,15,192,24,96,60, + 48,60,48,24,48,0,96,63,192,7,0,1,192,0,124,16, + 15,30,16,0,255,32,0,31,240,0,8,255,255,30,0,63, + 12,59,30,25,56,1,248,1,240,3,144,79,16,60,16,16, + 24,0,14,16,15,30,16,0,255,16,0,15,224,0,16,255, + 255,3,0,3,0,67,0,67,16,67,56,99,108,33,204,48, + 12,24,12,14,24,3,240,16,15,30,16,0,255,16,0,15, + 224,0,16,255,255,3,0,3,0,83,0,83,16,83,56,83, + 108,73,204,40,12,36,12,18,24,15,240,15,14,28,16,1, + 255,64,0,228,0,230,206,133,204,121,204,3,204,14,204,120, + 204,96,236,120,252,14,220,3,204,1,204,0,68,14,14,28, + 16,1,255,64,0,128,0,128,0,64,0,127,192,31,240,0, + 56,15,12,24,140,56,76,56,76,56,76,16,216,3,240,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,231,28,219,108,231,108,219,108,231,28,255, + 252,14,14,28,16,1,255,255,252,231,156,219,108,219,140,219, + 236,231,156,255,252,255,252,231,12,219,124,231,28,219,124,231, + 12,255,252,14,13,26,16,1,255,0,48,0,248,1,140,3, + 12,135,140,135,140,131,12,128,12,192,12,64,108,96,156,51, + 12,14,4,14,15,30,16,1,255,0,8,0,16,0,16,0, + 216,3,236,6,52,140,52,158,52,158,52,140,56,192,48,65, + 176,98,112,60,48,24,16,14,14,28,16,1,255,255,252,231, + 156,219,108,219,140,219,236,231,156,255,252,255,252,231,220,219, + 156,227,220,251,220,231,140,255,252,14,14,28,16,1,255,255, + 252,231,156,219,108,219,140,219,236,231,156,255,252,255,252,231, + 12,219,236,227,12,251,124,231,12,255,252,14,13,26,16,1, + 255,0,240,3,24,6,12,14,12,142,12,134,120,192,248,64, + 120,96,12,48,12,24,12,12,24,7,240,14,15,30,16,1, + 255,0,8,0,16,0,16,7,216,8,108,28,52,28,52,156, + 52,137,228,131,248,193,224,64,48,96,48,48,112,31,224,16, + 12,24,16,0,255,255,255,0,96,0,96,1,248,7,100,60, + 98,48,98,60,110,7,108,1,224,0,224,0,32,14,13,26, + 16,2,255,64,0,226,60,227,48,197,48,121,48,1,48,6, + 48,120,48,126,48,1,176,0,112,0,48,0,16,14,12,24, + 16,2,255,62,124,113,96,224,224,224,96,252,96,70,96,6, + 96,6,96,28,96,120,96,32,96,0,32,16,12,24,16,0, + 255,255,255,24,24,48,24,56,24,31,152,1,152,6,24,12, + 24,31,24,1,216,0,56,0,8,12,13,26,16,2,255,32, + 0,35,192,22,64,12,64,15,128,140,0,136,32,136,112,199, + 176,64,48,96,48,48,96,31,128,16,12,24,16,0,255,255, + 255,24,0,24,0,28,0,27,0,24,252,24,12,24,12,24, + 12,24,24,28,48,15,192,16,12,24,16,0,255,255,255,24, + 0,24,0,28,0,27,224,24,56,24,104,28,200,15,16,0, + 96,1,248,0,14,16,12,24,16,0,255,255,255,1,240,3, + 28,70,15,76,2,76,196,79,36,102,44,32,44,48,100,24, + 196,15,131,16,12,24,16,0,255,255,231,0,102,0,102,1, + 230,7,102,60,102,48,102,60,102,7,126,1,238,0,230,0, + 34,14,13,26,16,1,255,7,0,13,128,25,176,49,248,57, + 204,185,140,145,184,129,140,193,204,199,248,111,176,121,128,48, + 128,16,15,30,16,0,255,16,0,15,192,0,32,255,255,24, + 0,24,0,24,0,24,96,24,240,24,112,24,48,24,96,24, + 192,15,128,7,0,16,15,30,16,0,255,16,0,15,0,0, + 128,255,255,0,128,0,128,0,192,1,192,1,96,35,48,58, + 24,20,24,24,24,12,48,7,224,16,12,24,16,0,255,255, + 255,3,0,3,0,67,0,67,16,67,56,99,108,33,204,48, + 12,24,12,14,24,3,240,16,12,24,16,0,255,255,255,24, + 0,24,0,24,0,24,96,24,240,24,112,24,48,24,96,24, + 192,15,128,7,0,13,13,26,16,3,255,28,96,62,120,97, + 96,192,224,192,224,224,96,224,96,64,96,0,96,0,96,0, + 96,0,96,0,32,16,12,24,16,0,255,255,255,0,0,65, + 248,67,12,67,132,67,134,99,134,33,6,48,6,24,12,12, + 28,7,240,15,13,26,16,1,255,60,0,98,62,241,48,241, + 48,97,48,1,48,6,48,120,48,126,48,1,176,0,112,0, + 48,0,16,16,12,24,16,0,255,255,255,12,0,12,0,12, + 120,12,240,13,224,13,96,15,96,14,96,14,96,12,48,8, + 28,12,13,26,16,4,255,96,0,240,240,224,192,128,192,99, + 192,30,192,56,192,224,192,248,192,14,192,3,192,1,192,0, + 64,16,12,24,16,0,255,255,255,0,24,0,24,0,24,0, + 24,30,24,63,152,60,216,56,120,0,56,0,24,0,8,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,195,156,219,108,195,140,219,236,219,156,255, + 252,15,13,26,16,1,255,14,48,31,190,48,240,96,112,240, + 240,155,176,14,48,24,48,32,48,0,48,0,48,0,48,0, + 16,16,12,24,16,0,255,255,255,16,0,56,120,12,100,6, + 98,12,98,24,110,48,108,63,96,1,224,0,96,0,32,16, + 12,24,16,0,255,255,255,0,24,0,24,0,120,3,216,7, + 24,28,24,31,24,1,216,0,120,0,56,0,8,16,12,24, + 16,0,255,255,255,0,0,66,16,71,8,71,12,70,20,99, + 230,32,6,48,6,24,12,12,28,7,240,16,12,24,16,0, + 255,255,255,12,24,28,24,14,24,3,24,3,24,3,24,15, + 216,30,120,12,56,0,24,0,8,16,12,24,16,0,255,255, + 255,8,48,28,48,6,48,3,48,6,48,12,48,24,48,31, + 176,0,240,0,48,0,16,16,12,24,16,0,255,255,255,0, + 24,0,120,3,216,7,24,28,24,31,24,1,216,2,120,7, + 56,7,24,2,8,14,14,28,16,1,255,255,252,231,156,219, + 108,219,140,219,236,231,156,255,252,255,252,199,220,219,156,199, + 220,219,220,199,140,255,252,16,12,24,16,0,255,255,255,0, + 6,0,6,28,22,62,62,99,102,65,198,65,198,64,134,124, + 6,60,6,24,2,14,14,28,16,1,255,255,252,231,156,219, + 108,219,140,219,236,231,156,255,252,255,252,199,28,219,236,199, + 140,219,236,199,28,255,252,14,14,28,16,1,255,255,252,231, + 156,219,108,219,140,219,236,231,156,255,252,255,252,199,108,219, + 108,199,12,219,236,199,236,255,252,14,14,28,16,1,255,255, + 252,231,156,219,108,219,140,219,236,231,156,255,252,255,252,199, + 12,219,124,199,12,219,236,199,12,255,252,15,13,26,16,1, + 255,112,204,249,238,143,60,143,28,31,140,63,204,25,140,0, + 12,0,12,0,12,0,12,0,12,0,4,16,12,24,16,0, + 255,255,255,28,24,14,24,7,152,1,216,6,120,28,24,31, 24,1,216,0,120,0,56,0,8,16,12,24,16,0,255,255, - 255,0,0,66,16,71,8,71,12,70,20,99,230,32,6,48, - 6,24,12,12,28,7,240,16,12,24,16,0,255,255,255,12, - 24,28,24,14,24,3,24,3,24,3,24,15,216,30,120,12, - 56,0,24,0,8,16,12,24,16,0,255,255,255,8,48,28, - 48,6,48,3,48,6,48,12,48,24,48,31,176,0,240,0, - 48,0,16,16,12,24,16,0,255,255,255,0,24,0,120,3, - 216,7,24,28,24,31,24,1,216,2,120,7,56,7,24,2, - 8,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,16,12,24,16,0,255,255,255,0,6,0, - 6,28,22,62,62,99,102,65,198,65,198,64,134,124,6,60, - 6,24,2,6,14,14,8,1,255,168,84,168,84,168,84,168, - 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, - 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, - 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,15, - 13,26,16,1,255,112,204,249,238,143,60,143,28,31,140,63, - 204,25,140,0,12,0,12,0,12,0,12,0,12,0,4,16, - 12,24,16,0,255,255,255,28,24,14,24,7,152,1,216,6, - 120,28,24,31,24,1,216,0,120,0,56,0,8,16,12,24, - 16,0,255,255,255,16,12,56,12,28,12,6,12,2,204,1, - 236,3,28,102,12,60,12,24,12,0,4,16,12,24,16,0, - 255,255,255,0,0,15,192,24,96,60,48,60,48,24,48,0, - 96,63,192,7,0,1,192,0,124,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,2,2,2,16,7,255,192,192,14,12,24,16,0,255,240, - 0,8,0,15,192,28,96,60,48,60,48,24,48,0,96,63, - 192,7,0,1,192,0,124,5,10,10,16,11,255,48,184,112, - 48,48,48,48,48,48,16,13,14,28,16,0,255,15,128,63, - 224,96,16,96,8,32,0,248,0,48,0,48,0,48,0,48, - 0,48,0,48,0,48,0,16,0,12,14,28,16,4,255,63, - 0,65,128,128,192,190,64,65,64,1,240,0,192,0,192,0, - 192,0,192,0,192,0,192,0,192,0,64,6,5,5,16,5, - 254,4,104,144,104,4,6,5,5,16,6,254,96,128,112,8, - 4,5,5,5,16,5,254,24,96,128,96,24,3,5,5,16, - 6,255,96,128,96,128,64,6,14,14,8,1,255,168,84,168, - 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, - 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,5, - 9,9,16,0,255,248,24,48,96,64,64,64,88,56,5,12, - 12,16,0,255,128,112,8,248,24,48,96,64,64,64,88,56, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,16,10,20,16,0,255,0,6, + 255,16,12,56,12,28,12,6,12,2,204,1,236,3,28,102, + 12,60,12,24,12,0,4,16,12,24,16,0,255,255,255,0, + 0,15,192,24,96,60,48,60,48,24,48,0,96,63,192,7, + 0,1,192,0,124,14,14,28,16,1,255,255,252,231,156,219, + 108,219,140,219,236,231,156,255,252,255,252,199,12,219,108,199, + 12,219,108,199,108,255,252,14,14,28,16,1,255,255,252,231, + 156,219,108,219,140,219,236,231,156,255,252,255,252,199,28,219, + 108,199,28,219,108,199,28,255,252,2,2,2,16,7,255,192, + 192,14,12,24,16,0,255,240,0,8,0,15,192,28,96,60, + 48,60,48,24,48,0,96,63,192,7,0,1,192,0,124,5, + 10,10,16,11,255,48,184,112,48,48,48,48,48,48,16,13, + 14,28,16,0,255,15,128,63,224,96,16,96,8,32,0,248, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,16, + 0,12,14,28,16,4,255,63,0,65,128,128,192,190,64,65, + 64,1,240,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,64,6,5,5,16,5,254,4,104,144,104,4,6,5, + 5,16,6,254,96,128,112,8,4,5,5,5,16,5,254,24, + 96,128,96,24,3,5,5,16,6,255,96,128,96,128,64,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,227,12,223,124,223,12,223,236,227,12,255, + 252,14,14,28,16,1,255,255,252,231,156,219,108,219,140,219, + 236,231,156,255,252,255,252,227,156,223,124,223,28,223,108,227, + 156,255,252,5,9,9,16,0,255,248,24,48,96,64,64,64, + 88,56,5,12,12,16,0,255,128,112,8,248,24,48,96,64, + 64,64,88,56,14,14,28,16,1,255,255,252,231,156,219,108, + 219,140,219,236,231,156,255,252,255,252,227,156,223,108,223,140, + 223,236,227,156,255,252,14,14,28,16,1,255,255,252,231,156, + 219,108,219,140,219,236,231,156,255,252,255,252,227,12,223,108, + 223,12,223,108,227,108,255,252,16,10,20,16,0,255,0,6, 248,23,24,14,48,6,96,6,64,6,64,6,64,6,88,6, 56,2,16,13,26,16,0,255,0,128,0,112,0,8,0,4, 248,23,24,14,48,6,96,6,64,6,64,6,64,6,88,6, 56,2,5,3,3,16,6,0,192,48,8,8,12,12,16,4, - 255,56,92,204,236,216,192,96,56,12,6,3,1,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, - 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, - 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,8,13,13, + 255,56,92,204,236,216,192,96,56,12,6,3,1,14,14,28, + 16,1,255,255,252,231,156,219,108,219,140,219,236,231,156,255, + 252,255,252,227,12,223,124,223,28,223,124,227,124,255,252,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,199,156,219,108,219,108,219,108,199,156,255, + 252,14,14,28,16,1,255,255,252,231,156,219,108,219,140,219, + 236,231,156,255,252,255,252,199,220,219,156,219,220,219,220,199, + 140,255,252,14,14,28,16,1,255,255,252,231,156,219,108,219, + 140,219,236,231,156,255,252,255,252,199,12,219,236,219,12,219, + 124,199,12,255,252,14,14,28,16,1,255,255,252,231,156,219, + 108,219,140,219,236,231,156,255,252,255,252,199,28,219,236,219, + 140,219,236,199,28,255,252,14,14,28,16,1,255,255,252,231, + 156,219,108,219,140,219,236,231,156,255,252,255,252,199,108,219, + 108,219,12,219,236,199,236,255,252,14,14,28,16,1,255,255, + 252,231,156,219,108,219,140,219,236,231,156,255,252,255,252,199, + 12,219,124,219,12,219,236,199,12,255,252,14,14,28,16,1, + 255,255,252,231,156,219,108,219,140,219,236,231,156,255,252,255, + 252,199,156,219,124,219,28,219,108,199,156,255,252,8,13,13, 16,8,255,128,112,8,4,23,14,6,6,6,6,6,6,2, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 16,13,26,16,0,254,255,255,3,0,67,16,67,56,99,108, - 35,204,49,140,24,12,14,24,3,240,0,0,0,192,0,192, - 16,13,26,16,0,254,255,255,12,0,12,0,12,0,12,48, - 12,120,12,56,12,48,7,224,3,192,0,0,1,128,1,128, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,16,13,26,16,0,254,255,255,4,24,14,24, - 3,24,1,152,3,24,6,24,12,24,15,216,0,120,1,24, - 3,136,1,0,15,15,30,16,1,254,64,0,228,0,230,206, - 133,204,121,204,3,204,14,204,120,204,96,236,120,252,14,220, - 123,204,97,204,120,68,14,0,8,14,14,16,4,255,128,124, - 3,121,197,205,158,128,124,3,121,197,205,158,7,5,5,16, - 5,255,124,2,114,202,220,10,6,12,16,5,255,3,128,112, - 64,10,64,77,64,173,128,176,0,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,10,11,22,16,3,0,30,0,63,0,97,128,192,192,192, - 192,192,192,192,192,192,192,97,128,63,0,30,0,9,12,24, - 16,4,0,64,0,64,0,96,0,56,0,14,0,3,0,1, - 128,97,128,225,128,225,128,195,0,126,0,10,11,22,16,3, - 0,224,0,56,0,14,0,3,0,3,0,227,0,126,0,28, - 0,6,0,1,128,0,64,12,12,24,16,2,255,131,192,132, - 96,136,48,140,48,142,48,142,48,134,48,64,48,64,96,32, - 96,17,192,15,0,11,13,26,16,2,255,31,0,63,128,96, - 192,64,64,96,192,49,128,31,0,96,192,192,96,192,96,224, - 224,127,192,31,0,11,13,26,16,2,255,7,0,30,0,57, - 96,112,192,97,128,195,0,198,0,198,0,198,0,198,0,99, - 96,48,192,31,128,12,12,24,16,2,255,28,0,12,0,12, - 0,140,0,140,96,140,160,141,176,199,48,64,48,96,48,48, - 96,31,192,9,13,26,16,4,255,60,0,126,0,195,0,195, - 0,199,0,127,0,59,0,3,0,3,0,3,0,3,0,3, - 0,1,128,13,13,26,16,1,255,224,0,96,0,96,0,96, - 8,103,240,127,192,112,96,96,96,96,96,96,96,112,192,63, - 128,30,0,12,15,30,16,2,254,128,0,128,0,96,0,60, - 0,15,0,3,192,0,224,0,48,60,48,66,48,225,48,225, - 48,225,96,65,192,1,0,16,12,24,16,0,255,255,255,0, - 24,0,24,0,120,3,216,7,152,28,120,31,24,1,216,0, - 120,0,56,0,8,16,13,26,16,0,254,255,255,0,24,0, - 24,0,120,3,216,7,24,28,24,31,24,1,216,28,120,7, - 56,1,136,0,64,9,8,16,16,3,3,224,0,248,0,124, - 0,14,0,3,0,1,0,0,128,0,128,12,13,26,16,1, - 255,48,0,120,0,204,0,12,0,31,240,12,0,12,96,12, - 240,12,240,12,48,12,96,7,192,3,128,9,8,16,16,3, - 2,0,128,0,128,1,0,3,0,14,0,124,0,248,0,224, - 0,12,9,18,16,2,2,56,16,124,16,226,32,242,96,242, - 192,98,192,7,128,15,0,14,0,12,13,26,16,2,255,0, - 16,0,16,0,16,56,16,124,16,126,16,62,16,6,48,12, - 96,248,224,193,192,127,128,30,0,2,13,13,16,8,255,128, - 192,192,192,192,192,192,192,192,192,192,192,64,11,13,26,16, - 2,255,224,0,96,0,96,192,97,192,99,192,98,192,102,192, - 108,192,120,192,112,192,96,192,0,192,0,96,11,10,20,16, - 3,1,31,0,63,128,96,192,192,96,192,96,192,96,192,96, - 96,192,63,128,31,0,14,9,18,16,1,255,0,4,2,4, - 135,8,135,8,66,16,96,48,48,96,31,192,15,0,6,14, - 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, - 168,84,6,14,14,8,1,255,168,84,168,84,168,84,168,84, - 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, - 168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255, - 168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14, - 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, - 168,84}; + 14,14,28,16,1,255,255,252,231,156,219,108,219,140,219,236, + 231,156,255,252,255,252,199,156,219,108,219,156,219,108,199,156, + 255,252,14,14,28,16,1,255,255,252,231,156,219,108,219,140, + 219,236,231,156,255,252,255,252,199,156,219,108,219,140,219,236, + 199,156,255,252,14,14,28,16,1,255,255,252,231,156,219,108, + 219,140,219,236,231,156,255,252,255,252,199,12,219,108,219,12, + 219,108,199,108,255,252,14,14,28,16,1,255,255,252,231,156, + 219,108,219,140,219,236,231,156,255,252,255,252,199,28,219,108, + 219,28,219,108,199,28,255,252,16,13,26,16,0,254,255,255, + 3,0,67,16,67,56,99,108,35,204,49,140,24,12,14,24, + 3,240,0,0,0,192,0,192,16,13,26,16,0,254,255,255, + 12,0,12,0,12,0,12,48,12,120,12,56,12,48,7,224, + 3,192,0,0,1,128,1,128,14,14,28,16,1,255,255,252, + 231,156,219,108,219,140,219,236,231,156,255,252,255,252,199,12, + 219,124,219,28,219,124,199,12,255,252,16,13,26,16,0,254, + 255,255,4,24,14,24,3,24,1,152,3,24,6,24,12,24, + 15,216,0,120,1,24,3,136,1,0,15,15,30,16,1,254, + 64,0,228,0,230,206,133,204,121,204,3,204,14,204,120,204, + 96,236,120,252,14,220,123,204,97,204,120,68,14,0,8,14, + 14,16,4,255,128,124,3,121,197,205,158,128,124,3,121,197, + 205,158,7,5,5,16,5,255,124,2,114,202,220,10,6,12, + 16,5,255,3,128,112,64,10,64,77,64,173,128,176,0,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,195,108,223,108,199,12,223,236,195,236,255, + 252,14,14,28,16,1,255,255,252,231,156,219,108,219,140,219, + 236,231,156,255,252,255,252,195,12,223,124,199,12,223,236,195, + 12,255,252,10,11,22,16,3,0,30,0,63,0,97,128,192, + 192,192,192,192,192,192,192,192,192,97,128,63,0,30,0,9, + 12,24,16,4,0,64,0,64,0,96,0,56,0,14,0,3, + 0,1,128,97,128,225,128,225,128,195,0,126,0,10,11,22, + 16,3,0,224,0,56,0,14,0,3,0,3,0,227,0,126, + 0,28,0,6,0,1,128,0,64,12,12,24,16,2,255,131, + 192,132,96,136,48,140,48,142,48,142,48,134,48,64,48,64, + 96,32,96,17,192,15,0,11,13,26,16,2,255,31,0,63, + 128,96,192,64,64,96,192,49,128,31,0,96,192,192,96,192, + 96,224,224,127,192,31,0,11,13,26,16,2,255,7,0,30, + 0,57,96,112,192,97,128,195,0,198,0,198,0,198,0,198, + 0,99,96,48,192,31,128,12,12,24,16,2,255,28,0,12, + 0,12,0,140,0,140,96,140,160,141,176,199,48,64,48,96, + 48,48,96,31,192,9,13,26,16,4,255,60,0,126,0,195, + 0,195,0,199,0,127,0,59,0,3,0,3,0,3,0,3, + 0,3,0,1,128,13,13,26,16,1,255,224,0,96,0,96, + 0,96,8,103,240,127,192,112,96,96,96,96,96,96,96,112, + 192,63,128,30,0,12,15,30,16,2,254,128,0,128,0,96, + 0,60,0,15,0,3,192,0,224,0,48,60,48,66,48,225, + 48,225,48,225,96,65,192,1,0,16,12,24,16,0,255,255, + 255,0,24,0,24,0,120,3,216,7,152,28,120,31,24,1, + 216,0,120,0,56,0,8,16,13,26,16,0,254,255,255,0, + 24,0,24,0,120,3,216,7,24,28,24,31,24,1,216,28, + 120,7,56,1,136,0,64,9,8,16,16,3,3,224,0,248, + 0,124,0,14,0,3,0,1,0,0,128,0,128,12,13,26, + 16,1,255,48,0,120,0,204,0,12,0,31,240,12,0,12, + 96,12,240,12,240,12,48,12,96,7,192,3,128,9,8,16, + 16,3,2,0,128,0,128,1,0,3,0,14,0,124,0,248, + 0,224,0,12,9,18,16,2,2,56,16,124,16,226,32,242, + 96,242,192,98,192,7,128,15,0,14,0,12,13,26,16,2, + 255,0,16,0,16,0,16,56,16,124,16,126,16,62,16,6, + 48,12,96,248,224,193,192,127,128,30,0,2,13,13,16,8, + 255,128,192,192,192,192,192,192,192,192,192,192,192,64,11,13, + 26,16,2,255,224,0,96,0,96,192,97,192,99,192,98,192, + 102,192,108,192,120,192,112,192,96,192,0,192,0,96,11,10, + 20,16,3,1,31,0,63,128,96,192,192,96,192,96,192,96, + 192,96,96,192,63,128,31,0,14,9,18,16,1,255,0,4, + 2,4,135,8,135,8,66,16,96,48,48,96,31,192,15,0, + 6,8,8,16,5,254,96,128,128,64,32,16,8,4,14,14, + 28,16,1,255,255,252,231,156,219,108,219,140,219,236,231,156, + 255,252,255,252,195,140,223,124,199,124,223,124,223,140,255,252, + 14,14,28,16,1,255,255,252,231,156,219,108,219,140,219,236, + 231,156,255,252,255,252,195,28,223,108,199,108,223,108,223,28, + 255,252,14,14,28,16,1,255,255,252,231,156,219,108,219,140, + 219,236,231,156,255,252,255,252,195,12,223,124,199,28,223,124, + 223,12,255,252,14,14,28,16,1,255,255,252,231,156,219,108, + 219,140,219,236,231,156,255,252,255,252,195,12,223,124,199,28, + 223,124,223,124,255,252}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 10, '1' Height: 8 - Calculated Max Values w=16 h=16 x= 4 y= 1 dx=16 dy= 0 ascent=14 len=32 + Calculated Max Values w=16 h=16 x= 4 y= 0 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 Pure Font ascent =10 descent= 0 @@ -81581,8 +85535,8 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[6498] U8G_SECTION(".progmem.u8g_ Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[4628] U8G_SECTION(".progmem.u8g_font_unifont_2_3") = { - 0,16,16,0,254,10,4,220,7,27,0,255,0,14,254,14, +const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[4633] U8G_FONT_SECTION("u8g_font_unifont_2_3") = { + 0,16,16,0,254,10,4,222,7,30,0,255,0,14,254,14, 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, 0,0,1,128,0,85,85,6,11,11,8,1,0,120,0,0, @@ -81604,277 +85558,277 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[4628] U8G_SECTION(".progmem.u8g_fo 96,0,0,240,136,132,132,132,132,132,132,136,240,6,14,14, 8,1,0,72,48,0,4,4,4,116,140,132,132,132,132,140, 116,7,10,10,8,0,0,120,68,66,66,242,66,66,66,68, - 120,7,12,12,8,1,0,4,30,4,4,116,140,132,132,132, - 132,140,116,6,13,13,8,1,0,120,0,0,252,128,128,128, - 248,128,128,128,128,252,6,11,11,8,1,0,120,0,0,120, - 132,132,252,128,128,132,120,6,14,14,8,1,0,132,132,120, - 0,252,128,128,128,248,128,128,128,128,252,6,12,12,8,1, - 0,132,132,120,0,120,132,132,252,128,128,132,120,6,14,14, - 8,1,0,32,32,0,0,252,128,128,128,248,128,128,128,128, - 252,6,12,12,8,1,0,32,32,0,0,120,132,132,252,128, - 128,132,120,6,12,12,8,1,254,252,128,128,128,248,128,128, - 128,128,252,16,12,6,10,10,8,1,254,120,132,132,252,128, - 128,132,120,32,24,6,14,14,8,1,0,72,48,0,0,252, - 128,128,128,248,128,128,128,128,252,6,12,12,8,1,0,72, - 48,0,0,120,132,132,252,128,128,132,120,6,14,14,8,1, - 0,48,72,0,0,120,132,132,128,128,156,132,132,140,116,6, - 14,14,8,1,254,48,72,0,4,116,136,136,136,112,64,120, - 132,132,120,6,14,14,8,1,0,132,132,120,0,120,132,132, - 128,128,156,132,132,140,116,6,15,15,8,1,254,132,132,120, - 0,4,116,136,136,136,112,64,120,132,132,120,6,14,14,8, - 1,0,32,32,0,0,120,132,132,128,128,156,132,132,140,116, - 6,14,14,8,1,254,32,32,0,4,116,136,136,136,112,64, - 120,132,132,120,6,12,12,8,1,254,120,132,132,128,128,156, - 132,132,140,116,16,96,6,14,14,8,1,254,24,32,0,4, - 116,136,136,136,112,64,120,132,132,120,6,14,14,8,1,0, - 48,72,0,0,132,132,132,132,252,132,132,132,132,132,6,14, - 14,8,1,0,96,144,0,128,128,128,184,196,132,132,132,132, - 132,132,8,10,10,8,0,0,66,66,255,66,66,126,66,66, - 66,66,7,11,11,8,0,1,64,240,64,64,92,98,66,66, - 66,66,66,6,14,14,8,1,0,100,152,0,0,124,16,16, - 16,16,16,16,16,16,124,6,12,12,8,1,0,100,152,0, - 0,48,16,16,16,16,16,16,124,5,13,13,8,2,0,240, - 0,0,248,32,32,32,32,32,32,32,32,248,5,11,11,8, - 2,0,240,0,0,96,32,32,32,32,32,32,248,6,14,14, - 8,1,0,132,132,120,0,124,16,16,16,16,16,16,16,16, - 124,6,12,12,8,1,0,132,132,120,0,48,16,16,16,16, - 16,16,124,5,12,12,8,2,254,248,32,32,32,32,32,32, - 32,32,248,32,24,5,13,13,8,2,254,32,32,0,96,32, - 32,32,32,32,32,248,32,24,5,14,14,8,2,0,32,32, - 0,0,248,32,32,32,32,32,32,32,32,248,5,8,8,8, - 2,0,96,32,32,32,32,32,32,248,6,10,10,8,1,0, - 132,132,132,132,132,132,4,4,132,120,5,14,14,8,2,254, - 136,136,0,0,136,136,136,136,136,136,104,8,136,112,7,14, - 14,8,1,0,24,36,0,0,62,8,8,8,8,8,8,136, - 136,112,6,14,14,8,1,254,24,36,0,0,24,8,8,8, - 8,8,8,8,144,96,7,12,12,8,0,254,66,68,72,80, - 96,96,80,72,68,66,32,192,7,12,12,8,0,254,64,64, + 120,7,11,11,8,1,0,4,30,4,116,140,132,132,132,132, + 140,116,6,13,13,8,1,0,120,0,0,252,128,128,128,248, + 128,128,128,128,252,6,11,11,8,1,0,120,0,0,120,132, + 132,252,128,128,132,120,6,14,14,8,1,0,132,132,120,0, + 252,128,128,128,248,128,128,128,128,252,6,12,12,8,1,0, + 132,132,120,0,120,132,132,252,128,128,132,120,6,14,14,8, + 1,0,32,32,0,0,252,128,128,128,248,128,128,128,128,252, + 6,12,12,8,1,0,32,32,0,0,120,132,132,252,128,128, + 132,120,6,12,12,8,1,254,252,128,128,128,248,128,128,128, + 128,252,16,12,6,10,10,8,1,254,120,132,132,252,128,128, + 132,120,32,24,6,14,14,8,1,0,72,48,0,0,252,128, + 128,128,248,128,128,128,128,252,6,12,12,8,1,0,72,48, + 0,0,120,132,132,252,128,128,132,120,6,14,14,8,1,0, + 48,72,0,0,120,132,132,128,128,156,132,132,140,116,6,14, + 14,8,1,254,48,72,0,4,116,136,136,136,112,64,120,132, + 132,120,6,14,14,8,1,0,132,132,120,0,120,132,132,128, + 128,156,132,132,140,116,6,15,15,8,1,254,132,132,120,0, + 4,116,136,136,136,112,64,120,132,132,120,6,14,14,8,1, + 0,32,32,0,0,120,132,132,128,128,156,132,132,140,116,6, + 14,14,8,1,254,32,32,0,4,116,136,136,136,112,64,120, + 132,132,120,6,12,12,8,1,254,120,132,132,128,128,156,132, + 132,140,116,16,96,6,14,14,8,1,254,24,32,0,4,116, + 136,136,136,112,64,120,132,132,120,6,14,14,8,1,0,48, + 72,0,0,132,132,132,132,252,132,132,132,132,132,6,14,14, + 8,1,0,96,144,0,128,128,128,184,196,132,132,132,132,132, + 132,8,10,10,8,0,0,66,66,255,66,66,126,66,66,66, + 66,7,11,11,8,0,0,64,240,64,92,98,66,66,66,66, + 66,66,6,14,14,8,1,0,100,152,0,0,124,16,16,16, + 16,16,16,16,16,124,6,12,12,8,1,0,100,152,0,0, + 48,16,16,16,16,16,16,124,5,13,13,8,2,0,240,0, + 0,248,32,32,32,32,32,32,32,32,248,5,11,11,8,2, + 0,240,0,0,96,32,32,32,32,32,32,248,6,14,14,8, + 1,0,132,132,120,0,124,16,16,16,16,16,16,16,16,124, + 6,12,12,8,1,0,132,132,120,0,48,16,16,16,16,16, + 16,124,5,12,12,8,2,254,248,32,32,32,32,32,32,32, + 32,248,32,24,5,13,13,8,2,254,32,32,0,96,32,32, + 32,32,32,32,248,32,24,5,14,14,8,2,0,32,32,0, + 0,248,32,32,32,32,32,32,32,32,248,5,8,8,8,2, + 0,96,32,32,32,32,32,32,248,6,10,10,8,1,0,132, + 132,132,132,132,132,4,4,132,120,5,14,14,8,2,254,136, + 136,0,0,136,136,136,136,136,136,104,8,136,112,7,14,14, + 8,1,0,24,36,0,0,62,8,8,8,8,8,8,136,136, + 112,6,14,14,8,1,254,24,36,0,0,24,8,8,8,8, + 8,8,8,144,96,7,12,12,8,0,254,66,68,72,80,96, + 96,80,72,68,66,32,192,7,13,13,8,0,254,64,64,64, 68,72,80,96,80,72,68,66,32,192,6,8,8,8,1,0, 132,136,144,224,224,144,136,132,6,14,14,8,1,0,48,192, 0,0,128,128,128,128,128,128,128,128,128,252,5,14,14,8, - 2,0,48,192,0,0,96,32,32,32,32,32,32,32,32,248, + 2,0,48,192,0,96,32,32,32,32,32,32,32,32,32,248, 6,12,12,8,1,254,128,128,128,128,128,128,128,128,128,252, - 16,96,5,12,12,8,2,254,96,32,32,32,32,32,32,32, - 32,248,32,192,6,14,14,8,1,0,72,48,0,0,128,128, - 128,128,128,128,128,128,128,252,5,14,14,8,2,0,144,96, - 0,0,96,32,32,32,32,32,32,32,32,248,6,10,10,8, - 1,0,128,128,128,128,136,136,128,128,128,252,5,10,10,8, - 1,0,96,32,32,32,40,40,32,32,32,248,7,10,10,8, - 0,0,64,64,72,80,96,192,64,64,64,126,5,10,10,8, - 2,0,96,32,40,48,96,160,32,32,32,248,6,14,14,8, - 1,0,24,96,0,0,132,196,196,164,164,148,148,140,140,132, - 6,12,12,8,1,0,24,96,0,0,184,196,132,132,132,132, - 132,132,7,12,12,8,0,254,66,98,98,82,82,74,74,70, - 70,66,32,192,7,10,10,8,0,254,92,98,66,66,66,66, - 66,66,32,192,6,14,14,8,1,0,72,48,0,0,132,196, - 196,164,164,148,148,140,140,132,6,12,12,8,1,0,72,48, - 0,0,184,196,132,132,132,132,132,132,6,13,13,8,1,0, - 192,64,64,128,0,184,196,132,132,132,132,132,132,6,10,10, - 8,1,0,184,196,132,132,132,132,132,132,132,152,6,10,10, - 8,1,254,184,196,132,132,132,132,132,132,4,24,6,13,13, - 8,1,0,120,0,0,120,132,132,132,132,132,132,132,132,120, - 6,11,11,8,1,0,120,0,0,120,132,132,132,132,132,132, - 120,6,14,14,8,1,0,132,132,120,0,120,132,132,132,132, - 132,132,132,132,120,6,12,12,8,1,0,132,132,120,0,120, - 132,132,132,132,132,132,120,7,14,14,8,1,0,102,136,0, - 0,120,132,132,132,132,132,132,132,132,120,7,12,12,8,1, - 0,102,136,0,0,120,132,132,132,132,132,132,120,7,10,10, - 8,1,0,110,144,144,144,156,144,144,144,144,110,7,8,8, - 8,1,0,108,146,146,158,144,144,146,108,6,14,14,8,1, - 0,24,96,0,0,248,132,132,132,248,144,136,136,132,132,6, - 12,12,8,1,0,24,96,0,0,184,196,132,128,128,128,128, - 128,7,12,12,8,0,254,124,66,66,66,124,72,68,68,66, - 66,32,192,7,10,10,8,0,254,92,98,66,64,64,64,64, - 64,32,192,6,14,14,8,1,0,72,48,0,0,248,132,132, - 132,248,144,136,136,132,132,6,12,12,8,1,0,72,48,0, - 0,184,196,132,128,128,128,128,128,6,14,14,8,1,0,24, - 96,0,0,120,132,132,128,96,24,4,132,132,120,6,12,12, - 8,1,0,24,96,0,0,120,132,128,96,24,132,132,120,6, - 14,14,8,1,0,48,72,0,0,120,132,132,128,96,24,4, - 132,132,120,6,12,12,8,1,0,48,72,0,0,120,132,128, - 96,24,4,132,120,6,12,12,8,1,254,120,132,132,128,96, - 24,4,132,132,120,16,96,6,10,10,8,1,254,120,132,128, - 96,24,4,132,120,16,96,6,14,14,8,1,0,72,48,0, - 0,120,132,132,128,96,24,4,132,132,120,6,12,12,8,1, - 0,72,48,0,0,120,132,128,96,24,4,132,120,7,12,12, - 8,1,254,254,16,16,16,16,16,16,16,16,16,16,96,5, - 12,12,8,1,254,32,32,248,32,32,32,32,32,32,24,16, - 96,7,14,14,8,1,0,72,48,0,0,254,16,16,16,16, - 16,16,16,16,16,5,14,14,8,1,0,72,48,0,0,32, - 32,248,32,32,32,32,32,32,24,7,10,10,8,1,0,254, - 16,16,20,24,48,80,16,16,16,5,10,10,8,1,0,32, - 32,248,32,40,48,96,160,32,24,6,14,14,8,1,0,100, - 152,0,0,132,132,132,132,132,132,132,132,132,120,6,12,12, - 8,1,0,100,152,0,0,132,132,132,132,132,132,140,116,6, - 13,13,8,1,0,120,0,0,132,132,132,132,132,132,132,132, - 132,120,6,11,11,8,1,0,120,0,0,132,132,132,132,132, - 132,140,116,6,14,14,8,1,0,132,132,120,0,132,132,132, - 132,132,132,132,132,132,120,6,13,13,8,1,0,132,132,120, - 0,0,132,132,132,132,132,132,140,116,6,14,14,8,1,0, - 48,72,48,0,132,132,132,132,132,132,132,132,132,120,6,12, - 12,8,1,0,48,72,48,0,132,132,132,132,132,132,140,116, - 7,14,14,8,1,0,102,136,0,0,132,132,132,132,132,132, - 132,132,132,120,7,12,12,8,1,0,102,136,0,0,132,132, - 132,132,132,132,140,116,6,12,12,8,1,254,132,132,132,132, - 132,132,132,132,132,120,32,24,7,10,10,8,1,254,132,132, - 132,132,132,132,140,116,8,6,6,14,14,8,1,0,48,72, - 0,0,132,132,132,132,180,180,204,204,132,132,7,12,12,8, - 1,0,48,72,0,0,130,146,146,146,146,146,146,108,7,14, - 14,8,1,0,48,72,0,0,130,130,68,68,40,16,16,16, - 16,16,6,14,14,8,1,254,48,72,0,0,132,132,132,132, - 132,76,52,4,4,120,7,14,14,8,1,0,72,72,0,0, - 130,130,68,68,40,16,16,16,16,16,6,14,14,8,1,0, - 24,96,0,0,252,4,4,8,16,32,64,128,128,252,6,12, - 12,8,1,0,24,96,0,0,252,4,8,16,32,64,128,252, - 6,14,14,8,1,0,32,32,0,0,252,4,4,8,16,32, - 64,128,128,252,6,12,12,8,1,0,32,32,0,0,252,4, - 8,16,32,64,128,252,6,14,14,8,1,0,72,48,0,0, - 252,4,4,8,16,32,64,128,128,252,6,12,12,8,1,0, - 72,48,0,0,252,4,8,16,32,64,128,252,4,11,11,8, - 2,0,48,64,64,64,192,64,64,64,64,64,64,7,11,11, - 8,0,0,64,240,64,92,98,66,66,66,66,98,92,7,10, - 10,8,0,0,124,162,162,34,60,34,34,34,34,60,6,10, - 10,8,1,0,252,128,128,128,248,132,132,132,132,248,6,10, - 10,8,1,0,252,128,128,184,196,132,132,132,196,184,6,10, - 10,8,1,0,192,64,64,64,120,68,68,68,68,120,6,8, - 8,8,1,0,192,64,64,64,120,68,68,120,6,10,10,8, - 1,0,120,132,132,4,4,4,4,132,132,248,7,12,12,8, - 1,0,6,8,120,136,136,128,128,128,128,136,136,112,7,10, - 10,8,1,0,6,8,120,136,128,128,128,128,136,112,7,10, - 10,8,0,0,120,68,66,66,242,66,66,66,68,120,7,10, - 10,8,0,0,120,164,162,34,34,34,34,34,36,56,6,10, - 10,8,1,0,252,4,4,4,124,132,132,132,132,124,6,10, - 10,8,1,0,252,4,4,116,140,132,132,132,140,116,6,10, - 10,8,1,254,120,132,132,132,132,72,48,8,8,112,6,10, - 10,8,1,0,252,4,4,4,124,4,4,4,4,252,6,10, - 10,8,1,0,48,72,132,4,4,252,132,132,72,48,6,10, - 10,8,1,0,120,132,132,128,112,128,128,132,132,120,7,11, - 11,8,1,255,62,32,32,32,60,32,32,32,32,32,192,5, - 12,12,8,1,255,24,32,32,32,248,32,32,32,32,32,32, - 192,7,11,11,8,1,0,6,120,136,136,128,128,184,136,136, - 152,104,6,10,10,8,1,0,132,132,132,72,72,48,48,72, - 72,48,6,11,11,8,1,0,128,128,128,128,228,148,148,148, - 148,148,136,5,10,10,8,1,0,224,32,32,32,32,32,32, - 32,32,24,5,10,10,8,2,0,248,32,32,32,248,32,32, - 32,32,248,6,10,10,8,1,0,140,148,160,160,192,192,160, - 144,136,132,6,11,11,8,1,0,96,128,128,136,144,160,192, - 160,144,136,132,5,10,10,8,2,0,96,32,32,32,248,32, - 32,32,32,248,6,10,10,8,1,0,72,80,32,96,144,48, - 72,72,132,132,7,10,10,8,1,0,146,146,146,146,146,146, - 146,146,146,110,7,11,11,8,0,255,34,34,50,50,42,42, - 38,38,34,34,192,6,10,10,8,1,254,184,196,132,132,132, - 132,132,132,4,4,6,10,10,8,1,0,120,132,132,132,252, - 132,132,132,132,120,6,11,11,8,1,0,4,116,136,136,136, - 136,136,136,136,136,112,6,9,9,8,1,0,4,116,136,136, - 136,136,136,136,112,6,12,12,8,1,254,108,148,148,148,148, - 148,148,148,148,100,4,4,6,10,10,8,1,254,108,148,148, - 148,148,148,148,100,4,4,7,10,10,8,1,0,124,162,162, - 34,60,32,32,32,32,32,7,11,11,8,1,254,6,184,200, - 136,136,136,136,200,176,128,128,7,10,10,8,1,0,224,64, - 120,68,68,120,80,72,68,66,6,10,10,8,1,0,120,132, - 132,4,24,96,128,132,132,120,6,8,8,8,1,0,120,132, - 4,24,96,128,132,120,6,10,10,8,1,0,252,128,64,32, - 16,16,32,64,128,252,5,12,12,8,1,255,64,160,160,96, - 32,32,32,32,32,32,32,24,5,12,12,8,1,254,32,32, - 248,32,32,32,32,32,32,24,8,48,7,10,10,8,1,0, - 126,144,144,16,16,16,16,16,16,16,5,11,11,8,1,0, - 24,32,32,32,248,32,32,32,32,32,24,7,11,11,8,1, - 255,254,16,16,16,16,16,16,16,16,16,12,7,12,12,8, - 1,0,2,2,140,136,136,136,136,136,136,136,136,112,7,10, - 10,8,1,0,2,2,140,136,136,136,136,136,152,104,6,10, - 10,8,1,0,132,72,72,132,132,132,132,132,72,48,6,10, - 10,8,1,0,152,132,132,132,132,132,132,136,144,96,7,10, - 10,8,1,0,98,162,34,20,20,8,8,8,8,8,7,11, - 11,8,1,254,6,136,136,136,136,136,72,56,8,8,112,6, - 10,10,8,1,0,252,4,8,16,120,32,64,128,128,252,6, - 8,8,8,1,0,252,8,16,120,32,64,128,252,6,10,10, - 8,1,0,252,8,16,32,56,4,4,4,140,120,6,10,10, - 8,1,0,252,64,32,16,112,128,128,128,196,120,6,10,10, - 8,1,254,248,64,32,16,112,128,128,128,132,120,6,10,10, - 8,1,254,124,8,16,56,4,4,120,128,132,120,6,10,10, - 8,1,0,120,132,132,8,16,252,64,128,128,252,6,10,10, - 8,1,0,252,64,64,64,120,4,4,4,132,120,6,8,8, - 8,1,0,252,64,64,120,4,4,132,120,5,10,10,8,1, - 0,32,32,248,32,32,48,8,8,136,112,6,10,10,8,1, - 254,184,196,132,132,136,144,160,192,128,128,1,11,11,8,3, - 0,128,128,128,128,128,128,128,128,128,128,128,3,11,11,8, - 2,0,160,160,160,160,160,160,160,160,160,160,160,5,11,11, - 8,1,0,32,32,32,32,248,32,248,32,32,32,32,1,10, - 10,8,4,0,128,128,128,128,128,128,128,0,128,128,7,14, - 14,8,1,0,10,4,0,0,206,162,162,162,164,164,168,168, - 168,206,7,12,12,8,1,0,10,4,192,160,174,162,162,164, - 164,168,168,206,7,12,12,8,1,0,10,36,32,32,110,162, - 162,164,164,168,168,110,7,10,10,8,1,0,142,130,130,130, - 130,130,130,146,146,236,7,13,13,8,1,254,2,130,128,134, - 130,130,130,130,130,130,242,4,24,8,13,13,8,0,254,1, - 97,32,35,33,33,33,33,33,33,249,2,12,7,10,10,8, - 1,0,150,146,146,210,210,178,178,154,154,148,7,13,13,8, - 1,254,2,146,144,214,210,210,178,178,178,146,146,36,24,7, - 13,13,8,1,254,2,2,0,166,210,146,146,146,146,146,146, - 36,24,6,14,14,8,1,0,72,48,0,0,48,72,72,132, - 132,252,132,132,132,132,6,12,12,8,1,0,72,48,0,0, - 120,132,4,124,132,132,140,116,5,14,14,8,2,0,144,96, - 0,0,248,32,32,32,32,32,32,32,32,248,5,12,12,8, - 2,0,144,96,0,0,96,32,32,32,32,32,32,248,6,14, - 14,8,1,0,72,48,0,0,120,132,132,132,132,132,132,132, - 132,120,6,12,12,8,1,0,72,48,0,0,120,132,132,132, - 132,132,132,120,6,14,14,8,1,0,72,48,0,0,132,132, - 132,132,132,132,132,132,132,120,6,12,12,8,1,0,72,48, - 0,0,132,132,132,132,132,132,140,116,6,14,14,8,1,0, - 120,0,72,0,132,132,132,132,132,132,132,132,132,120,6,13, - 13,8,1,0,120,0,72,72,0,132,132,132,132,132,132,140, - 116,6,14,14,8,1,0,24,96,0,72,0,132,132,132,132, - 132,132,132,132,120,6,14,14,8,1,0,24,96,0,72,72, - 0,132,132,132,132,132,132,140,116,6,14,14,8,1,0,72, - 48,0,72,0,132,132,132,132,132,132,132,132,120,6,14,14, - 8,1,0,72,48,0,72,72,0,132,132,132,132,132,132,140, - 116,6,14,14,8,1,0,96,24,0,72,0,132,132,132,132, - 132,132,132,132,120,6,14,14,8,1,0,96,24,0,72,72, - 0,132,132,132,132,132,132,140,116,6,8,8,8,1,0,120, - 132,4,4,252,132,132,120,6,14,14,8,1,0,120,0,72, - 0,48,72,72,132,132,252,132,132,132,132,6,13,13,8,1, - 0,120,0,72,72,0,120,132,4,124,132,132,140,116,6,14, - 14,8,1,0,120,0,48,0,48,72,72,132,132,252,132,132, - 132,132,6,13,13,8,1,0,120,0,32,32,0,120,132,4, - 124,132,132,140,116,7,13,13,8,1,0,120,0,0,62,80, - 144,144,254,144,144,144,144,158,7,11,11,8,1,0,120,0, - 0,124,146,18,126,144,144,146,124,7,10,10,8,1,0,120, - 132,132,128,128,156,132,158,132,124,7,11,11,8,1,254,4, - 116,136,136,136,112,64,120,158,132,120,6,14,14,8,1,0, - 72,48,0,0,120,132,132,128,128,156,132,132,140,116,6,14, - 14,8,1,254,72,48,0,4,116,136,136,136,112,64,120,132, - 132,120,6,14,14,8,1,0,72,48,0,0,132,136,144,160, - 192,192,160,144,136,132,6,14,14,8,1,0,144,96,0,0, - 128,128,136,144,160,192,160,144,136,132,6,12,12,8,1,254, - 120,132,132,132,132,132,132,132,132,120,32,24,6,10,10,8, - 1,254,120,132,132,132,132,132,132,120,32,24,6,15,15,8, - 1,254,120,0,0,120,132,132,132,132,132,132,132,132,120,32, - 24,6,13,13,8,1,254,120,0,0,120,132,132,132,132,132, - 132,120,32,24,6,14,14,8,1,0,72,48,0,0,252,8, - 16,32,56,4,4,4,140,120,6,14,14,8,1,254,72,48, - 0,0,124,8,16,32,56,4,4,4,132,120,6,14,14,8, - 1,254,36,24,0,0,24,8,8,8,8,8,8,8,144,96, - 7,10,10,8,1,0,206,162,162,162,164,164,168,168,168,206, - 7,10,10,8,1,0,192,160,174,162,162,164,164,168,168,206, - 7,11,11,8,1,0,32,32,32,110,162,162,164,164,168,168, - 110,6,14,14,8,1,0,24,96,0,0,120,132,132,128,128, - 156,132,132,140,116,6,14,14,8,1,254,24,96,0,4,116, - 136,136,136,112,64,120,132,132,120,6,10,10,8,1,0,144, - 144,144,148,244,148,148,148,148,136,6,11,11,8,1,255,184, - 196,132,132,136,144,160,192,128,128,128,6,13,13,8,1,0, - 96,24,0,132,196,196,164,164,148,148,140,140,132,6,11,11, - 8,1,0,96,24,0,184,196,132,132,132,132,132,132,6,14, - 14,8,1,0,24,96,48,72,48,48,72,72,132,252,132,132, - 132,132,6,14,14,8,1,0,24,96,0,48,72,48,0,120, - 132,4,124,132,140,116,7,14,14,8,1,0,12,48,0,0, - 62,80,144,144,254,144,144,144,144,158,7,12,12,8,1,0, - 12,48,0,0,124,146,18,126,144,144,146,124,6,15,15,8, - 1,255,24,96,0,4,116,136,140,148,148,164,164,196,68,184, - 128,6,13,13,8,1,255,24,96,0,4,120,140,148,148,164, - 164,196,120,128}; + 16,96,5,13,13,8,2,254,96,32,32,32,32,32,32,32, + 32,32,248,32,192,6,14,14,8,1,0,72,48,0,0,128, + 128,128,128,128,128,128,128,128,252,5,14,14,8,2,0,144, + 96,0,96,32,32,32,32,32,32,32,32,32,248,6,10,10, + 8,1,0,128,128,128,128,136,136,128,128,128,252,5,11,11, + 8,1,0,96,32,32,32,32,40,40,32,32,32,248,7,10, + 10,8,0,0,64,64,72,80,96,192,64,64,64,126,5,11, + 11,8,2,0,96,32,32,40,48,96,160,32,32,32,248,6, + 14,14,8,1,0,24,96,0,0,132,196,196,164,164,148,148, + 140,140,132,6,12,12,8,1,0,24,96,0,0,184,196,132, + 132,132,132,132,132,7,12,12,8,0,254,66,98,98,82,82, + 74,74,70,70,66,32,192,7,10,10,8,0,254,92,98,66, + 66,66,66,66,66,32,192,6,14,14,8,1,0,72,48,0, + 0,132,196,196,164,164,148,148,140,140,132,6,12,12,8,1, + 0,72,48,0,0,184,196,132,132,132,132,132,132,6,13,13, + 8,1,0,192,64,64,128,0,184,196,132,132,132,132,132,132, + 6,10,10,8,1,0,184,196,132,132,132,132,132,132,132,152, + 6,10,10,8,1,254,184,196,132,132,132,132,132,132,4,24, + 6,13,13,8,1,0,120,0,0,120,132,132,132,132,132,132, + 132,132,120,6,11,11,8,1,0,120,0,0,120,132,132,132, + 132,132,132,120,6,14,14,8,1,0,132,132,120,0,120,132, + 132,132,132,132,132,132,132,120,6,12,12,8,1,0,132,132, + 120,0,120,132,132,132,132,132,132,120,7,14,14,8,1,0, + 102,136,0,0,120,132,132,132,132,132,132,132,132,120,7,12, + 12,8,1,0,102,136,0,0,120,132,132,132,132,132,132,120, + 7,10,10,8,1,0,110,144,144,144,156,144,144,144,144,110, + 7,8,8,8,1,0,108,146,146,158,144,144,146,108,6,14, + 14,8,1,0,24,96,0,0,248,132,132,132,248,144,136,136, + 132,132,6,12,12,8,1,0,24,96,0,0,184,196,132,128, + 128,128,128,128,7,12,12,8,0,254,124,66,66,66,124,72, + 68,68,66,66,32,192,7,10,10,8,0,254,92,98,66,64, + 64,64,64,64,32,192,6,14,14,8,1,0,72,48,0,0, + 248,132,132,132,248,144,136,136,132,132,6,12,12,8,1,0, + 72,48,0,0,184,196,132,128,128,128,128,128,6,14,14,8, + 1,0,24,96,0,0,120,132,132,128,96,24,4,132,132,120, + 6,12,12,8,1,0,24,96,0,0,120,132,128,96,24,132, + 132,120,6,14,14,8,1,0,48,72,0,0,120,132,132,128, + 96,24,4,132,132,120,6,12,12,8,1,0,48,72,0,0, + 120,132,128,96,24,4,132,120,6,12,12,8,1,254,120,132, + 132,128,96,24,4,132,132,120,16,96,6,10,10,8,1,254, + 120,132,128,96,24,4,132,120,16,96,6,14,14,8,1,0, + 72,48,0,0,120,132,132,128,96,24,4,132,132,120,6,12, + 12,8,1,0,72,48,0,0,120,132,128,96,24,4,132,120, + 7,12,12,8,1,254,254,16,16,16,16,16,16,16,16,16, + 16,96,5,12,12,8,1,254,32,32,32,248,32,32,32,32, + 32,24,16,96,7,14,14,8,1,0,72,48,0,0,254,16, + 16,16,16,16,16,16,16,16,5,14,14,8,1,0,72,48, + 0,0,32,32,32,248,32,32,32,32,32,24,7,10,10,8, + 1,0,254,16,16,20,24,48,80,16,16,16,5,10,10,8, + 1,0,32,32,32,248,32,40,48,96,160,24,6,14,14,8, + 1,0,100,152,0,0,132,132,132,132,132,132,132,132,132,120, + 6,12,12,8,1,0,100,152,0,0,132,132,132,132,132,132, + 140,116,6,13,13,8,1,0,120,0,0,132,132,132,132,132, + 132,132,132,132,120,6,11,11,8,1,0,120,0,0,132,132, + 132,132,132,132,140,116,6,14,14,8,1,0,132,132,120,0, + 132,132,132,132,132,132,132,132,132,120,6,13,13,8,1,0, + 132,132,120,0,0,132,132,132,132,132,132,140,116,6,14,14, + 8,1,0,48,72,48,0,132,132,132,132,132,132,132,132,132, + 120,6,12,12,8,1,0,48,72,48,0,132,132,132,132,132, + 132,140,116,7,14,14,8,1,0,102,136,0,0,132,132,132, + 132,132,132,132,132,132,120,7,12,12,8,1,0,102,136,0, + 0,132,132,132,132,132,132,140,116,6,12,12,8,1,254,132, + 132,132,132,132,132,132,132,132,120,32,24,7,10,10,8,1, + 254,132,132,132,132,132,132,140,116,8,6,6,14,14,8,1, + 0,48,72,0,0,132,132,132,132,180,180,204,204,132,132,7, + 12,12,8,1,0,48,72,0,0,130,146,146,146,146,146,146, + 108,7,14,14,8,1,0,48,72,0,0,130,130,68,68,40, + 16,16,16,16,16,6,14,14,8,1,254,48,72,0,0,132, + 132,132,132,132,76,52,4,4,120,7,14,14,8,1,0,72, + 72,0,0,130,130,68,68,40,16,16,16,16,16,6,14,14, + 8,1,0,24,96,0,0,252,4,4,8,16,32,64,128,128, + 252,6,12,12,8,1,0,24,96,0,0,252,4,8,16,32, + 64,128,252,6,14,14,8,1,0,32,32,0,0,252,4,4, + 8,16,32,64,128,128,252,6,12,12,8,1,0,32,32,0, + 0,252,4,8,16,32,64,128,252,6,14,14,8,1,0,72, + 48,0,0,252,4,4,8,16,32,64,128,128,252,6,12,12, + 8,1,0,72,48,0,0,252,4,8,16,32,64,128,252,4, + 11,11,8,2,0,48,64,64,64,192,64,64,64,64,64,64, + 7,11,11,8,0,0,64,240,64,92,98,66,66,66,66,98, + 92,7,10,10,8,0,0,124,162,162,34,60,34,34,34,34, + 60,6,10,10,8,1,0,252,128,128,128,248,132,132,132,132, + 248,6,10,10,8,1,0,252,128,128,184,196,132,132,132,196, + 184,6,10,10,8,1,0,192,64,64,64,120,68,68,68,68, + 120,6,8,8,8,1,0,192,64,64,64,120,68,68,120,6, + 10,10,8,1,0,120,132,132,4,4,4,4,132,132,248,7, + 12,12,8,1,0,6,8,120,136,136,128,128,128,128,136,136, + 112,7,10,10,8,1,0,6,8,120,136,128,128,128,128,136, + 112,7,10,10,8,0,0,120,68,66,66,242,66,66,66,68, + 120,7,10,10,8,0,0,120,164,162,34,34,34,34,34,36, + 56,6,10,10,8,1,0,252,4,4,4,124,132,132,132,132, + 124,6,10,10,8,1,0,252,4,4,116,140,132,132,132,140, + 116,6,10,10,8,1,254,120,132,132,132,132,72,48,8,8, + 112,6,10,10,8,1,0,252,4,4,4,124,4,4,4,4, + 252,6,10,10,8,1,0,48,72,132,4,4,252,132,132,72, + 48,6,10,10,8,1,0,120,132,132,128,112,128,128,132,132, + 120,7,11,11,8,1,255,62,32,32,32,60,32,32,32,32, + 32,192,5,12,12,8,1,255,24,32,32,32,248,32,32,32, + 32,32,32,192,7,11,11,8,1,0,6,120,136,136,128,128, + 184,136,136,152,104,6,10,10,8,1,0,132,132,132,72,72, + 48,48,72,72,48,6,11,11,8,1,0,128,128,128,128,228, + 148,148,148,148,148,136,5,11,11,8,1,0,224,32,32,32, + 32,32,32,32,32,32,24,5,10,10,8,2,0,248,32,32, + 32,248,32,32,32,32,248,6,10,10,8,1,0,140,148,160, + 160,192,192,160,144,136,132,6,11,11,8,1,0,96,144,128, + 136,144,160,192,160,144,136,132,5,11,11,8,2,0,96,32, + 32,32,248,32,32,32,32,32,248,6,10,10,8,1,0,72, + 80,32,96,144,48,72,72,132,132,7,10,10,8,1,0,146, + 146,146,146,146,146,146,146,146,110,7,11,11,8,0,255,34, + 34,50,50,42,42,38,38,34,34,192,6,10,10,8,1,254, + 184,196,132,132,132,132,132,132,4,4,6,10,10,8,1,0, + 120,132,132,132,252,132,132,132,132,120,6,11,11,8,1,0, + 4,116,136,136,136,136,136,136,136,136,112,6,9,9,8,1, + 0,4,116,136,136,136,136,136,136,112,6,12,12,8,1,254, + 108,148,148,148,148,148,148,148,148,100,4,4,6,10,10,8, + 1,254,108,148,148,148,148,148,148,100,4,4,7,10,10,8, + 1,0,124,162,162,34,60,32,32,32,32,32,7,11,11,8, + 1,254,6,184,200,136,136,136,136,200,176,128,128,7,10,10, + 8,1,0,224,64,120,68,68,120,80,72,68,66,6,10,10, + 8,1,0,120,132,132,4,24,96,128,132,132,120,6,8,8, + 8,1,0,120,132,4,24,96,128,132,120,6,10,10,8,1, + 0,252,128,64,32,16,16,32,64,128,252,5,12,12,8,1, + 255,64,160,160,96,32,32,32,32,32,32,32,24,5,12,12, + 8,1,254,32,32,32,248,32,32,32,32,32,24,8,48,7, + 10,10,8,1,0,126,144,144,16,16,16,16,16,16,16,5, + 11,11,8,1,0,24,32,32,32,248,32,32,32,32,32,24, + 7,11,11,8,1,255,254,16,16,16,16,16,16,16,16,16, + 12,7,12,12,8,1,0,2,2,140,136,136,136,136,136,136, + 136,136,112,7,10,10,8,1,0,2,2,140,136,136,136,136, + 136,152,104,6,10,10,8,1,0,132,72,72,132,132,132,132, + 132,72,48,6,10,10,8,1,0,152,132,132,132,132,132,132, + 136,144,96,7,10,10,8,1,0,140,138,136,80,80,32,32, + 32,32,32,7,11,11,8,1,254,6,136,136,136,136,136,72, + 56,8,8,112,6,10,10,8,1,0,252,4,8,16,120,32, + 64,128,128,252,6,8,8,8,1,0,252,8,16,120,32,64, + 128,252,6,10,10,8,1,0,252,8,16,32,56,4,4,4, + 140,120,6,10,10,8,1,0,252,64,32,16,112,128,128,128, + 196,120,6,10,10,8,1,254,248,64,32,16,112,128,128,128, + 132,120,6,10,10,8,1,254,124,8,16,56,4,4,120,128, + 132,120,6,10,10,8,1,0,120,132,132,8,16,252,64,128, + 128,252,6,10,10,8,1,0,252,64,64,64,120,4,4,4, + 132,120,6,8,8,8,1,0,252,64,64,120,4,4,132,120, + 5,10,10,8,1,0,32,32,248,32,32,48,8,8,136,112, + 6,10,10,8,1,254,184,196,132,132,136,144,160,192,128,128, + 1,11,11,8,3,0,128,128,128,128,128,128,128,128,128,128, + 128,3,11,11,8,2,0,160,160,160,160,160,160,160,160,160, + 160,160,5,11,11,8,1,0,32,32,32,32,248,32,248,32, + 32,32,32,1,10,10,8,4,0,128,128,128,128,128,128,128, + 0,128,128,7,14,14,8,1,0,10,4,0,0,206,162,162, + 162,164,164,168,168,168,206,7,12,12,8,1,0,10,4,192, + 160,174,162,162,164,164,168,168,206,7,12,12,8,1,0,10, + 36,32,32,110,162,162,164,164,168,168,110,7,10,10,8,1, + 0,142,130,130,130,130,130,130,146,146,236,7,13,13,8,1, + 254,2,130,128,134,130,130,130,130,130,130,242,4,24,8,13, + 13,8,0,254,97,33,32,35,33,33,33,33,33,33,249,2, + 12,7,10,10,8,1,0,150,146,146,210,210,178,178,154,154, + 148,7,13,13,8,1,254,2,146,144,214,210,210,178,178,178, + 146,146,36,24,7,13,13,8,1,254,2,2,0,166,210,146, + 146,146,146,146,146,36,24,6,14,14,8,1,0,72,48,0, + 0,48,72,72,132,132,252,132,132,132,132,6,12,12,8,1, + 0,72,48,0,0,120,132,4,124,132,132,140,116,5,14,14, + 8,2,0,144,96,0,0,248,32,32,32,32,32,32,32,32, + 248,5,12,12,8,2,0,144,96,0,0,96,32,32,32,32, + 32,32,248,6,14,14,8,1,0,72,48,0,0,120,132,132, + 132,132,132,132,132,132,120,6,12,12,8,1,0,72,48,0, + 0,120,132,132,132,132,132,132,120,6,14,14,8,1,0,72, + 48,0,0,132,132,132,132,132,132,132,132,132,120,6,12,12, + 8,1,0,72,48,0,0,132,132,132,132,132,132,140,116,6, + 14,14,8,1,0,120,0,72,0,132,132,132,132,132,132,132, + 132,132,120,6,13,13,8,1,0,120,0,72,72,0,132,132, + 132,132,132,132,140,116,6,14,14,8,1,0,24,96,0,72, + 0,132,132,132,132,132,132,132,132,120,6,14,14,8,1,0, + 24,96,0,72,72,0,132,132,132,132,132,132,140,116,6,14, + 14,8,1,0,72,48,0,72,0,132,132,132,132,132,132,132, + 132,120,6,14,14,8,1,0,72,48,0,72,72,0,132,132, + 132,132,132,132,140,116,6,14,14,8,1,0,96,24,0,72, + 0,132,132,132,132,132,132,132,132,120,6,14,14,8,1,0, + 96,24,0,72,72,0,132,132,132,132,132,132,140,116,6,8, + 8,8,1,0,120,132,4,4,252,132,132,120,6,14,14,8, + 1,0,120,0,72,0,48,72,72,132,132,252,132,132,132,132, + 6,13,13,8,1,0,120,0,72,72,0,120,132,4,124,132, + 132,140,116,6,14,14,8,1,0,120,0,48,0,48,72,72, + 132,132,252,132,132,132,132,6,13,13,8,1,0,120,0,32, + 32,0,120,132,4,124,132,132,140,116,7,13,13,8,1,0, + 120,0,0,62,80,144,144,254,144,144,144,144,158,7,11,11, + 8,1,0,120,0,0,124,146,18,126,144,144,146,124,7,10, + 10,8,1,0,120,132,132,128,128,156,132,158,132,124,7,11, + 11,8,1,254,4,116,136,136,136,112,64,120,158,132,120,6, + 14,14,8,1,0,72,48,0,0,120,132,132,128,128,156,132, + 132,140,116,6,14,14,8,1,254,72,48,0,4,116,136,136, + 136,112,64,120,132,132,120,6,14,14,8,1,0,72,48,0, + 0,132,136,144,160,192,192,160,144,136,132,6,14,14,8,1, + 0,72,48,0,128,128,128,136,144,160,192,160,144,136,132,6, + 12,12,8,1,254,120,132,132,132,132,132,132,132,132,120,32, + 24,6,10,10,8,1,254,120,132,132,132,132,132,132,120,32, + 24,6,15,15,8,1,254,120,0,0,120,132,132,132,132,132, + 132,132,132,120,32,24,6,13,13,8,1,254,120,0,0,120, + 132,132,132,132,132,132,120,32,24,6,14,14,8,1,0,72, + 48,0,0,252,8,16,32,56,4,4,4,140,120,6,14,14, + 8,1,254,72,48,0,0,124,8,16,32,56,4,4,4,132, + 120,6,14,14,8,1,254,36,24,0,0,24,8,8,8,8, + 8,8,8,144,96,7,10,10,8,1,0,206,162,162,162,164, + 164,168,168,168,206,7,10,10,8,1,0,192,160,174,162,162, + 164,164,168,168,206,7,11,11,8,1,0,32,32,32,110,162, + 162,164,164,168,168,110,6,14,14,8,1,0,24,96,0,0, + 120,132,132,128,128,156,132,132,140,116,6,14,14,8,1,254, + 24,96,0,4,116,136,136,136,112,64,120,132,132,120,6,10, + 10,8,1,0,144,144,144,148,244,148,148,148,148,136,6,11, + 11,8,1,255,184,196,132,132,136,144,160,192,128,128,128,6, + 13,13,8,1,0,96,24,0,132,196,196,164,164,148,148,140, + 140,132,6,11,11,8,1,0,96,24,0,184,196,132,132,132, + 132,132,132,6,14,14,8,1,0,24,96,48,72,48,48,72, + 72,132,252,132,132,132,132,6,14,14,8,1,0,24,96,0, + 48,72,48,0,120,132,4,124,132,140,116,7,14,14,8,1, + 0,12,48,0,0,62,80,144,144,254,144,144,144,144,158,7, + 12,12,8,1,0,12,48,0,0,124,146,18,126,144,144,146, + 124,6,15,15,8,1,255,24,96,0,4,116,136,140,148,148, + 164,164,196,68,184,128,6,13,13,8,1,255,24,96,0,4, + 120,140,148,148,164,164,196,120,128}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 10, '1' Height: 12 Calculated Max Values w=16 h=16 x= 4 y=10 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 @@ -81884,8 +85838,8 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[4628] U8G_SECTION(".progmem.u8g_fo Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[3783] U8G_SECTION(".progmem.u8g_font_unifont_4_5") = { - 0,16,16,0,254,10,4,176,6,163,0,255,0,14,254,12, +const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[3791] U8G_FONT_SECTION("u8g_font_unifont_4_5") = { + 0,16,16,0,254,10,4,177,6,164,0,255,0,14,254,12, 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, 0,0,1,128,0,85,85,7,12,12,8,0,0,204,34,0, @@ -81919,7 +85873,7 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[3783] U8G_SECTION(".progmem.u8g_fo 254,120,132,132,128,96,24,4,132,132,120,16,32,6,10,10, 8,1,254,120,132,128,96,24,4,132,120,16,32,7,12,12, 8,1,254,254,16,16,16,16,16,16,16,16,16,4,8,5, - 12,12,8,1,254,32,32,248,32,32,32,32,32,32,24,64, + 12,12,8,1,254,32,32,32,248,32,32,32,32,32,24,64, 128,6,10,10,8,1,0,120,132,132,4,24,104,4,4,4, 120,6,8,8,8,1,0,120,132,4,24,100,4,24,96,6, 13,13,8,1,0,72,48,0,132,132,132,132,252,132,132,132, @@ -81946,423 +85900,414 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[3783] U8G_SECTION(".progmem.u8g_fo 12,12,8,1,0,120,0,16,0,120,132,132,132,132,132,132, 120,7,12,12,8,1,0,124,0,130,130,68,68,40,16,16, 16,16,16,6,12,12,8,1,254,120,0,132,132,132,132,132, - 76,52,4,4,120,4,12,12,8,2,254,96,32,32,32,32, - 32,32,32,48,48,64,128,7,10,10,8,1,254,184,196,132, - 132,132,132,134,134,4,8,6,12,12,8,1,254,32,32,248, - 32,32,32,32,32,44,28,16,32,5,10,10,8,1,254,24, - 8,8,8,8,8,8,8,144,96,7,11,11,8,0,0,16, - 16,16,84,186,146,146,146,146,186,84,7,10,10,8,0,254, - 84,186,146,146,146,146,186,84,16,16,7,11,11,8,0,0, - 2,26,36,44,74,82,126,98,66,66,194,7,12,12,8,0, - 255,2,60,70,74,72,80,80,96,98,66,124,128,7,11,11, - 8,0,255,2,4,60,74,80,80,96,96,66,124,128,6,10, - 10,8,1,0,64,64,64,64,240,64,64,64,64,124,7,12, - 12,8,1,0,2,4,254,24,24,16,16,48,48,80,80,144, - 7,10,10,8,1,254,120,132,128,96,24,4,132,120,18,12, - 6,10,10,8,1,254,252,4,8,16,32,64,128,192,32,28, - 6,10,10,8,1,0,120,132,132,4,8,16,16,16,16,16, - 6,8,8,8,1,0,120,132,132,4,8,16,16,16,6,10, - 10,8,1,0,120,68,68,68,120,68,244,68,68,120,7,10, - 10,8,0,0,68,68,68,68,68,254,68,68,68,56,6,10, - 10,8,1,0,48,48,48,72,72,72,72,132,132,132,6,14, - 14,8,1,254,8,8,252,144,144,160,248,160,160,192,192,252, - 128,128,7,10,10,8,0,255,2,60,70,74,126,80,96,66, - 124,128,7,10,10,8,1,0,62,8,8,8,8,62,8,136, - 136,112,7,13,13,8,1,254,8,8,0,24,8,8,62,8, - 8,8,8,144,96,7,12,12,8,1,254,112,136,136,136,136, - 136,136,136,152,104,8,6,7,10,10,8,1,254,104,152,136, - 136,136,136,152,104,8,6,6,10,10,8,1,0,120,68,68, - 68,248,80,72,72,68,68,6,8,8,8,1,0,88,100,68, - 224,64,64,64,64,7,10,10,8,1,0,130,130,68,254,40, - 16,16,16,16,16,7,10,10,8,1,254,68,68,68,254,68, - 36,28,4,4,56,6,8,8,8,1,0,184,196,132,132,248, - 128,132,120,6,8,8,8,1,0,116,140,132,132,132,140,148, - 100,6,8,8,8,1,0,152,164,196,132,132,132,196,184,6, - 11,11,8,1,0,112,128,128,184,196,132,132,132,132,196,184, - 6,8,8,8,1,0,120,132,4,4,4,4,132,120,6,9, - 9,8,1,255,120,132,128,128,128,152,164,120,128,7,12,12, - 8,1,255,8,8,8,104,152,136,136,136,136,152,104,6,7, - 11,11,8,1,0,6,8,8,104,152,136,136,136,136,152,104, - 6,8,8,8,1,0,120,132,132,252,4,4,132,120,6,8, - 8,8,1,0,120,132,4,4,252,132,132,120,7,8,8,8, - 1,0,114,140,8,8,248,136,136,112,6,8,8,8,1,0, - 120,132,128,120,128,128,132,120,6,8,8,8,1,0,120,132, - 4,120,4,4,132,120,7,8,8,8,1,0,114,140,8,112, - 8,8,136,112,6,8,8,8,1,0,120,132,132,184,132,132, - 132,120,7,10,10,8,1,254,24,8,8,8,62,8,8,8, - 144,96,7,11,11,8,1,254,6,104,152,136,136,136,152,104, - 8,136,112,6,10,10,8,1,254,116,140,132,132,132,140,116, - 4,132,120,6,8,8,8,1,0,120,132,128,128,156,132,132, - 124,6,10,10,8,1,254,132,132,132,72,72,48,48,72,72, - 48,6,8,8,8,1,0,132,132,72,72,48,48,72,48,6, - 11,11,8,1,254,132,132,132,132,132,132,140,116,4,4,4, - 6,11,11,8,1,0,112,128,128,184,196,132,132,132,132,132, - 132,6,11,11,8,1,0,112,128,128,184,196,132,132,132,132, - 132,152,5,11,11,8,2,0,32,32,0,96,32,32,248,32, - 32,32,248,3,8,8,8,3,0,128,128,128,128,128,128,128, - 96,5,8,8,8,2,0,248,32,32,32,32,32,32,248,6, - 10,10,8,1,0,48,16,16,16,116,152,16,16,16,124,6, - 10,10,8,1,0,48,16,16,112,144,124,16,16,16,124,4, - 11,11,8,3,255,192,64,64,64,64,64,64,64,64,64,48, - 7,12,12,8,1,254,96,32,62,34,36,40,44,34,34,250, - 18,12,7,8,8,8,1,0,146,146,146,146,146,146,146,110, - 7,10,10,8,1,254,146,146,146,146,146,146,146,110,2,2, - 7,9,9,8,1,255,236,146,146,146,146,146,146,130,12,7, - 9,9,8,1,255,44,50,34,34,34,34,34,34,192,7,9, - 9,8,1,255,176,200,136,136,136,136,136,136,6,6,8,8, - 8,1,0,132,132,196,164,148,140,132,132,6,8,8,8,1, - 0,120,132,132,252,132,132,132,120,7,8,8,8,1,0,110, - 144,144,156,144,144,144,110,7,8,8,8,1,0,124,130,130, - 146,146,146,146,108,7,12,12,8,1,254,16,16,124,146,146, - 146,146,146,146,124,16,16,6,8,8,8,1,0,4,4,4, - 4,4,132,140,116,6,10,10,8,1,0,4,4,4,4,4, - 4,4,132,140,116,7,9,9,8,1,255,8,8,8,8,8, - 136,152,104,6,6,10,10,8,1,254,184,196,132,128,128,128, - 128,128,128,128,6,9,9,8,1,255,184,196,132,128,128,128, - 128,128,96,6,8,8,8,1,0,120,132,132,128,128,128,128, - 128,6,8,8,8,1,0,120,132,132,4,4,4,4,4,6, - 8,8,8,1,0,248,132,132,248,136,132,132,132,6,8,8, - 8,1,0,132,132,132,136,248,132,132,248,6,10,10,8,1, - 254,120,132,128,96,24,4,132,248,128,96,5,12,12,8,1, - 255,24,32,32,32,32,32,32,32,32,32,32,192,5,12,12, - 8,1,255,24,32,32,32,32,32,32,248,32,32,32,192,5, - 9,9,8,1,255,192,32,32,32,32,32,32,32,24,6,12, - 12,8,1,255,12,16,16,16,16,16,16,16,16,112,156,96, - 5,10,10,8,1,0,192,32,32,32,32,32,32,248,32,32, - 6,11,11,8,1,255,32,32,248,32,32,32,32,32,32,32, - 28,7,8,8,8,1,0,68,68,68,254,68,68,76,52,6, - 8,8,8,1,0,132,72,132,132,132,132,72,48,6,8,8, - 8,1,0,152,132,132,132,132,136,144,96,6,8,8,8,1, - 0,48,48,72,72,72,132,132,132,7,8,8,8,1,0,108, - 146,146,146,146,146,146,130,6,10,10,8,1,254,120,128,128, - 176,200,132,132,132,132,132,7,8,8,8,1,0,130,130,68, - 40,16,16,16,16,7,10,10,8,1,254,248,16,16,32,32, - 64,64,248,8,6,7,9,9,8,1,255,252,4,8,16,32, - 76,146,252,32,6,10,10,8,1,254,124,8,16,32,56,4, - 4,4,132,120,6,10,10,8,1,254,124,8,16,32,56,4, - 4,100,148,120,6,10,10,8,1,0,120,132,132,4,8,16, - 16,16,16,16,6,10,10,8,1,0,120,132,132,128,64,32, - 32,32,32,32,6,10,10,8,1,0,16,16,16,16,16,8, - 4,132,132,120,6,10,10,8,1,254,120,132,128,128,128,128, - 128,128,132,120,6,8,8,8,1,0,120,132,132,180,180,132, - 132,120,6,8,8,8,1,0,248,132,132,248,132,132,132,248, - 6,8,8,8,1,0,120,132,132,116,132,132,132,120,7,8, - 8,8,1,0,118,136,128,128,152,136,136,120,5,8,8,8, - 2,0,136,136,136,248,136,136,136,136,6,13,13,8,1,254, - 8,8,0,24,8,8,8,8,8,8,124,144,96,6,10,10, - 8,1,254,132,68,36,20,12,20,36,68,4,4,6,8,8, - 8,1,0,128,128,128,128,128,128,128,252,7,11,11,8,1, - 254,6,104,152,136,136,136,136,152,104,8,8,6,10,10,8, - 1,0,120,132,132,4,8,16,16,124,16,16,6,10,10,8, - 1,0,120,132,132,128,64,32,32,248,32,32,7,11,11,8, - 1,0,32,32,32,126,162,164,164,168,168,176,126,7,13,13, - 8,1,254,32,32,32,126,162,164,168,172,162,162,98,18,12, - 7,12,12,8,1,255,32,32,32,126,162,164,168,176,180,170, - 124,8,7,10,10,8,1,0,64,64,236,80,80,72,68,66, - 66,60,7,13,13,8,1,254,6,72,72,248,72,72,72,72, - 72,72,56,8,48,7,11,11,8,1,255,64,64,236,82,80, - 80,80,84,90,60,8,7,12,12,8,1,254,96,144,128,220, - 162,162,162,162,162,162,4,24,6,10,10,8,2,0,128,128, - 128,156,160,160,152,132,132,248,6,10,10,8,1,0,128,128, - 128,128,252,136,144,160,192,252,7,11,11,8,1,0,130,146, - 146,146,108,0,130,146,146,146,108,6,10,10,8,1,0,252, - 132,132,132,0,0,252,132,132,132,5,10,10,8,1,254,200, - 72,72,72,72,72,88,40,8,8,7,10,10,8,1,254,200, - 72,72,72,72,72,88,40,8,6,5,6,6,8,2,4,128, - 128,176,200,136,136,5,7,7,8,2,4,112,136,128,176,200, - 136,136,4,7,7,8,2,4,16,0,16,16,16,144,96,5, - 5,5,8,2,5,176,200,128,128,128,5,5,5,8,1,5, - 8,8,8,152,104,7,6,6,8,1,4,8,8,8,152,104, - 6,5,6,6,8,1,4,136,144,240,136,136,240,5,4,4, - 8,1,6,136,168,168,80,5,5,5,8,1,5,136,136,120, - 8,112,3,3,3,8,2,7,32,64,128,6,3,3,8,1, - 7,36,72,144,2,4,4,8,3,6,64,128,128,192,2,4, - 4,8,3,6,192,64,64,128,2,4,4,8,3,6,192,128, - 128,64,4,6,6,8,2,5,192,32,16,16,32,192,4,6, - 6,8,2,5,48,64,128,128,64,48,6,7,7,8,1,4, - 120,132,4,4,56,32,32,6,7,7,8,1,4,120,132,128, - 128,112,16,16,4,7,7,8,2,4,16,32,64,128,64,32, - 16,4,7,7,8,2,4,128,64,32,16,32,64,128,7,4, - 4,8,1,6,16,40,68,130,7,4,4,8,1,6,130,68, - 40,16,4,2,2,8,2,8,96,144,4,2,2,8,2,8, - 144,96,1,3,3,8,4,7,128,128,128,4,1,1,8,2, - 9,240,4,2,2,8,2,8,48,192,4,2,2,8,2,8, - 192,48,1,4,4,8,4,0,128,128,128,128,4,1,1,8, - 2,0,240,4,2,2,8,2,255,192,48,4,2,2,8,2, - 255,48,192,3,6,6,8,2,1,224,64,0,0,64,224,3, - 2,2,8,2,4,224,64,4,6,6,8,2,2,192,32,16, - 16,32,192,4,6,6,8,2,2,48,64,128,128,64,48,5, - 5,5,8,1,2,32,32,32,32,248,5,5,5,8,1,2, - 248,32,32,32,32,5,5,5,8,1,2,32,32,248,32,32, - 5,1,1,8,1,4,248,6,3,3,8,1,9,132,132,120, - 2,2,2,8,3,10,192,192,4,3,3,8,2,9,96,144, - 96,3,2,2,8,4,254,128,96,6,2,2,8,1,10,100, - 152,7,2,2,8,1,10,102,136,7,4,4,8,0,3,32, - 96,162,28,6,5,5,8,1,5,132,72,48,72,132,5,6, - 6,8,1,4,136,80,32,80,80,32,3,6,6,8,2,6, - 192,64,64,64,64,224,5,5,5,8,1,5,120,128,112,8, - 240,5,5,5,8,1,5,136,80,32,80,136,5,5,5,8, - 1,7,120,128,128,112,16,5,11,11,8,1,0,248,8,8, - 8,8,8,8,8,8,8,8,5,11,11,8,1,0,8,8, - 248,8,8,8,8,8,8,8,8,5,11,11,8,1,0,8, - 8,8,8,8,248,8,8,8,8,8,5,11,11,8,1,0, - 8,8,8,8,8,8,8,8,248,8,8,5,11,11,8,1, - 0,8,8,8,8,8,8,8,8,8,8,248,5,6,6,8, - 1,0,128,128,128,128,128,248,4,7,7,8,1,0,128,128, - 128,240,128,128,128,5,3,3,8,1,0,136,80,32,6,3, - 3,8,1,9,252,0,252,6,4,4,8,1,8,204,68,68, - 136,5,3,3,8,1,255,136,80,32,5,3,3,8,1,255, - 32,80,136,3,5,5,8,3,255,32,64,128,64,32,3,5, - 5,8,3,255,128,64,32,64,128,4,3,3,8,2,255,96, - 144,96,3,3,3,8,2,9,128,64,32,6,3,3,8,1, - 9,144,72,36,6,3,3,8,1,9,36,72,144,6,2,2, - 8,1,254,100,152,2,7,7,8,3,4,192,192,0,0,0, - 192,192,3,4,4,8,2,7,224,128,128,128,3,4,4,8, - 2,7,224,32,32,32,3,4,4,8,2,0,128,128,128,224, - 3,4,4,8,2,0,32,32,32,224,6,3,3,8,1,254, - 132,132,252,6,3,3,8,1,254,128,128,252,6,5,5,8, - 1,3,32,64,252,64,32}; + 76,52,4,4,120,4,13,13,8,2,254,96,32,32,32,32, + 32,32,32,32,48,48,64,128,7,10,10,8,1,254,184,196, + 132,132,132,132,134,134,4,8,6,12,12,8,1,254,32,32, + 32,248,32,32,32,32,44,28,16,32,5,10,10,8,1,254, + 24,8,8,8,8,8,8,8,144,96,7,11,11,8,0,0, + 16,16,16,84,186,146,146,146,146,186,84,7,10,10,8,0, + 254,84,186,146,146,146,146,186,84,16,16,7,11,11,8,0, + 0,2,26,36,44,74,82,126,98,66,66,194,7,12,12,8, + 0,255,2,60,70,74,72,80,80,96,98,66,124,128,7,11, + 11,8,0,255,2,4,60,74,80,80,96,96,66,124,128,6, + 10,10,8,1,0,64,64,64,64,240,64,64,64,64,124,7, + 12,12,8,1,0,2,4,254,24,24,16,16,48,48,80,80, + 144,7,10,10,8,1,254,120,132,128,96,24,4,132,120,18, + 12,6,10,10,8,1,254,252,4,8,16,32,64,128,192,32, + 28,6,10,10,8,1,0,120,132,132,4,8,16,16,16,16, + 16,6,8,8,8,1,0,120,132,132,4,8,16,16,16,6, + 10,10,8,1,0,120,68,68,68,120,68,244,68,68,120,7, + 10,10,8,0,0,68,68,68,68,68,254,68,68,68,56,6, + 10,10,8,1,0,48,48,48,72,72,72,72,132,132,132,6, + 14,14,8,1,254,8,8,252,144,144,160,248,160,160,192,192, + 252,128,128,7,10,10,8,0,255,2,60,70,74,126,80,96, + 66,124,128,7,10,10,8,1,0,62,8,8,8,8,62,8, + 136,136,112,7,13,13,8,1,254,8,8,0,24,8,8,62, + 8,8,8,8,144,96,7,12,12,8,1,254,112,136,136,136, + 136,136,136,136,152,104,8,6,7,10,10,8,1,254,104,152, + 136,136,136,136,152,104,8,6,6,10,10,8,1,0,120,68, + 68,68,248,80,72,72,68,68,6,8,8,8,1,0,88,100, + 68,224,64,64,64,64,7,10,10,8,1,0,130,130,68,254, + 40,16,16,16,16,16,7,10,10,8,1,254,68,68,68,254, + 68,36,28,4,4,56,6,8,8,8,1,0,184,196,132,132, + 248,128,132,120,6,8,8,8,1,0,116,140,132,132,132,140, + 148,100,6,8,8,8,1,0,152,164,196,132,132,132,196,184, + 6,11,11,8,1,0,112,128,128,184,196,132,132,132,132,196, + 184,6,8,8,8,1,0,120,132,4,4,4,4,132,120,6, + 9,9,8,1,255,120,132,128,128,128,152,164,120,128,7,12, + 12,8,1,255,8,8,8,104,152,136,136,136,136,152,104,6, + 7,11,11,8,1,0,6,8,8,104,152,136,136,136,136,152, + 104,6,8,8,8,1,0,120,132,132,252,4,4,132,120,6, + 8,8,8,1,0,120,132,4,4,252,132,132,120,7,8,8, + 8,1,0,114,140,8,8,248,136,136,112,6,8,8,8,1, + 0,120,132,128,120,128,128,132,120,6,8,8,8,1,0,120, + 132,4,120,4,4,132,120,7,8,8,8,1,0,114,140,8, + 112,8,8,136,112,6,8,8,8,1,0,120,132,132,184,132, + 132,132,120,7,10,10,8,1,254,24,8,8,8,62,8,8, + 8,144,96,7,11,11,8,1,254,6,104,152,136,136,136,152, + 104,8,136,112,6,10,10,8,1,254,116,140,132,132,132,140, + 116,4,132,120,6,8,8,8,1,0,120,132,128,128,156,132, + 132,124,6,10,10,8,1,254,132,132,132,72,72,48,48,72, + 72,48,6,8,8,8,1,0,132,132,72,72,48,48,72,48, + 6,11,11,8,1,254,132,132,132,132,132,132,140,116,4,4, + 4,6,11,11,8,1,0,112,128,128,184,196,132,132,132,132, + 132,132,6,11,11,8,1,0,112,128,128,184,196,132,132,132, + 132,132,152,5,11,11,8,2,0,32,32,0,96,32,32,248, + 32,32,32,248,3,8,8,8,3,0,128,128,128,128,128,128, + 128,96,5,8,8,8,2,0,248,32,32,32,32,32,32,248, + 6,11,11,8,1,0,48,16,16,16,116,152,16,16,16,16, + 124,6,11,11,8,1,0,48,16,16,112,144,124,16,16,16, + 16,124,4,12,12,8,3,255,192,64,64,64,64,64,64,64, + 64,64,64,48,7,13,13,8,1,254,96,32,32,62,34,36, + 40,44,34,34,250,18,12,7,8,8,8,1,0,146,146,146, + 146,146,146,146,110,7,10,10,8,1,254,146,146,146,146,146, + 146,146,110,2,2,7,9,9,8,1,255,236,146,146,146,146, + 146,146,130,12,7,9,9,8,1,255,44,50,34,34,34,34, + 34,34,192,7,9,9,8,1,255,176,200,136,136,136,136,136, + 136,6,6,8,8,8,1,0,132,132,196,164,148,140,132,132, + 6,8,8,8,1,0,120,132,132,252,132,132,132,120,7,8, + 8,8,1,0,110,144,144,156,144,144,144,110,7,8,8,8, + 1,0,124,130,130,146,146,146,146,108,7,12,12,8,1,254, + 16,16,124,146,146,146,146,146,146,124,16,16,6,8,8,8, + 1,0,4,4,4,4,4,132,140,116,6,10,10,8,1,0, + 4,4,4,4,4,4,4,132,140,116,7,9,9,8,1,255, + 8,8,8,8,8,136,152,104,6,6,10,10,8,1,254,184, + 196,132,128,128,128,128,128,128,128,6,9,9,8,1,255,184, + 196,132,128,128,128,128,128,96,6,8,8,8,1,0,120,132, + 132,128,128,128,128,128,6,8,8,8,1,0,120,132,132,4, + 4,4,4,4,6,8,8,8,1,0,248,132,132,248,136,132, + 132,132,6,8,8,8,1,0,132,132,132,136,248,132,132,248, + 6,10,10,8,1,254,120,132,128,96,24,4,132,248,128,96, + 5,12,12,8,1,255,24,32,32,32,32,32,32,32,32,32, + 32,192,5,12,12,8,1,255,24,32,32,32,32,32,32,248, + 32,32,32,192,5,9,9,8,1,255,192,32,32,32,32,32, + 32,32,24,6,12,12,8,1,255,12,16,16,16,16,16,16, + 16,16,112,156,96,5,10,10,8,1,0,192,32,32,32,32, + 32,32,248,32,32,6,11,11,8,1,255,32,32,32,248,32, + 32,32,32,32,32,28,7,8,8,8,1,0,68,68,68,254, + 68,68,76,52,6,8,8,8,1,0,132,72,132,132,132,132, + 72,48,6,8,8,8,1,0,152,132,132,132,132,136,144,96, + 6,8,8,8,1,0,48,48,72,72,72,132,132,132,7,8, + 8,8,1,0,108,146,146,146,146,146,146,130,6,10,10,8, + 1,254,120,128,128,176,200,132,132,132,132,132,7,8,8,8, + 1,0,130,130,68,40,16,16,16,16,7,10,10,8,1,254, + 248,16,16,32,32,64,64,248,8,6,7,9,9,8,1,255, + 252,4,8,16,32,76,146,252,32,6,10,10,8,1,254,124, + 8,16,32,56,4,4,4,132,120,6,10,10,8,1,254,124, + 8,16,32,56,4,4,100,148,120,6,10,10,8,1,0,120, + 132,132,4,8,16,16,16,16,16,6,10,10,8,1,0,120, + 132,132,128,64,32,32,32,32,32,6,10,10,8,1,0,16, + 16,16,16,16,8,4,132,132,120,6,10,10,8,1,254,120, + 132,128,128,128,128,128,128,132,120,6,8,8,8,1,0,120, + 132,132,180,180,132,132,120,6,8,8,8,1,0,248,132,132, + 248,132,132,132,248,6,8,8,8,1,0,120,132,132,116,132, + 132,132,120,7,8,8,8,1,0,118,136,128,128,152,136,136, + 120,5,8,8,8,2,0,136,136,136,248,136,136,136,136,6, + 13,13,8,1,254,8,8,0,24,8,8,8,8,8,8,124, + 144,96,6,11,11,8,1,254,132,68,36,20,12,20,36,68, + 4,4,4,6,8,8,8,1,0,128,128,128,128,128,128,128, + 252,7,11,11,8,1,254,6,104,152,136,136,136,136,152,104, + 8,8,6,10,10,8,1,0,120,132,132,4,8,16,16,124, + 16,16,6,10,10,8,1,0,120,132,132,128,64,32,32,248, + 32,32,7,11,11,8,1,0,32,32,32,126,162,164,164,168, + 168,176,126,7,13,13,8,1,254,32,32,32,126,162,164,168, + 172,162,162,98,18,12,7,12,12,8,1,255,32,32,32,126, + 162,164,168,176,180,170,124,8,8,10,10,8,0,0,64,64, + 70,248,72,68,66,65,65,62,7,13,13,8,1,254,6,72, + 72,72,248,72,72,72,72,72,56,8,48,8,11,11,8,0, + 255,64,64,70,249,72,72,72,74,77,62,4,7,12,12,8, + 1,254,96,144,128,220,162,162,162,162,162,162,4,24,7,11, + 11,8,1,0,192,64,64,64,78,80,80,76,66,66,124,7, + 11,11,8,0,0,192,64,64,64,64,126,68,72,80,96,126, + 7,11,11,8,1,0,130,146,146,146,108,0,130,146,146,146, + 108,6,10,10,8,1,0,252,132,132,132,0,0,252,132,132, + 132,5,10,10,8,1,254,200,72,72,72,72,72,88,40,8, + 8,7,10,10,8,1,254,200,72,72,72,72,72,88,40,8, + 6,5,6,6,8,2,4,128,128,176,200,136,136,5,7,7, + 8,2,4,112,136,128,176,200,136,136,4,7,7,8,2,4, + 16,0,16,16,16,144,96,5,5,5,8,2,5,176,200,128, + 128,128,5,5,5,8,1,5,8,8,8,152,104,7,6,6, + 8,1,4,8,8,8,152,104,6,5,6,6,8,1,4,136, + 144,240,136,136,240,5,4,4,8,1,6,136,168,168,80,5, + 5,5,8,1,5,136,136,120,8,112,3,3,3,8,2,7, + 32,64,128,6,3,3,8,1,7,36,72,144,2,4,4,8, + 3,6,64,128,128,192,2,4,4,8,3,6,192,64,64,128, + 2,4,4,8,3,6,192,128,128,64,4,6,6,8,2,5, + 192,32,16,16,32,192,4,6,6,8,2,5,48,64,128,128, + 64,48,6,7,7,8,1,4,120,132,4,4,56,32,32,6, + 7,7,8,1,4,120,132,128,128,112,16,16,4,7,7,8, + 2,4,16,32,64,128,64,32,16,4,7,7,8,2,4,128, + 64,32,16,32,64,128,7,4,4,8,1,6,16,40,68,130, + 7,4,4,8,1,6,130,68,40,16,4,2,2,8,2,8, + 96,144,4,2,2,8,2,8,144,96,1,3,3,8,4,7, + 128,128,128,4,1,1,8,2,9,240,4,2,2,8,2,8, + 48,192,4,2,2,8,2,8,192,48,1,4,4,8,4,0, + 128,128,128,128,4,1,1,8,2,0,240,4,2,2,8,2, + 255,192,48,4,2,2,8,2,255,48,192,3,6,6,8,2, + 1,224,64,0,0,64,224,3,2,2,8,2,4,224,64,4, + 6,6,8,2,2,192,32,16,16,32,192,4,6,6,8,2, + 2,48,64,128,128,64,48,5,5,5,8,1,2,32,32,32, + 32,248,5,5,5,8,1,2,248,32,32,32,32,5,5,5, + 8,1,2,32,32,248,32,32,5,1,1,8,1,4,248,6, + 3,3,8,1,9,132,132,120,2,2,2,8,3,10,192,192, + 4,3,3,8,2,9,96,144,96,3,2,2,8,4,254,128, + 96,6,2,2,8,1,10,100,152,7,2,2,8,1,10,102, + 136,7,4,4,8,0,3,32,96,162,28,6,5,5,8,1, + 5,132,72,48,72,132,5,6,6,8,1,4,136,80,32,80, + 80,32,3,6,6,8,2,6,192,64,64,64,64,224,5,5, + 5,8,1,5,120,128,112,8,240,5,5,5,8,1,5,136, + 80,32,80,136,5,5,5,8,1,7,120,128,128,112,16,5, + 11,11,8,1,0,248,8,8,8,8,8,8,8,8,8,8, + 5,11,11,8,1,0,8,8,248,8,8,8,8,8,8,8, + 8,5,11,11,8,1,0,8,8,8,8,8,248,8,8,8, + 8,8,5,11,11,8,1,0,8,8,8,8,8,8,8,8, + 248,8,8,5,11,11,8,1,0,8,8,8,8,8,8,8, + 8,8,8,248,5,6,6,8,1,0,128,128,128,128,128,248, + 4,7,7,8,1,0,128,128,128,240,128,128,128,5,3,3, + 8,1,0,136,80,32,6,3,3,8,1,9,252,0,252,6, + 4,4,8,1,8,204,68,68,136,5,3,3,8,1,255,136, + 80,32,5,3,3,8,1,255,32,80,136,3,5,5,8,3, + 255,32,64,128,64,32,3,5,5,8,3,255,128,64,32,64, + 128,4,3,3,8,2,255,96,144,96,3,3,3,8,2,9, + 128,64,32,6,3,3,8,1,9,144,72,36,6,3,3,8, + 1,9,36,72,144,6,2,2,8,1,254,100,152,2,7,7, + 8,3,4,192,192,0,0,0,192,192,3,4,4,8,2,7, + 224,128,128,128,3,4,4,8,2,7,224,32,32,32,3,4, + 4,8,2,0,128,128,128,224,3,4,4,8,2,0,32,32, + 32,224,6,3,3,8,1,254,132,132,252,6,3,3,8,1, + 254,128,128,252,6,5,5,8,1,3,32,64,252,64,32}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: - Capital A Height: 3, '1' Height: 10 - Calculated Max Values w=16 h=16 x=14 y=12 dx=16 dy= 0 ascent=14 len=32 + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + Capital A Height: 3, '1' Height: 9 + Calculated Max Values w=15 h=16 x= 7 y=12 dx=16 dy= 0 ascent=14 len=16 Font Bounding box w=16 h=16 x= 0 y=-2 Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 Pure Font ascent = 3 descent= 0 - X Font ascent =10 descent= 0 + X Font ascent =12 descent= 0 Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[3556] U8G_SECTION(".progmem.u8g_font_unifont_67_75") = { - 0,16,16,0,254,3,2,120,4,26,16,255,0,14,254,10, - 0,6,5,5,8,1,4,32,64,252,64,32,5,6,6,8, - 2,3,32,112,168,32,32,32,6,5,5,8,1,3,16,8, - 252,8,16,5,6,6,8,2,3,32,32,32,168,112,32,8, - 5,5,8,0,3,36,66,255,66,36,5,9,9,8,2,1, - 32,112,168,32,32,32,168,112,32,6,6,6,8,1,3,240, - 192,160,144,8,4,6,6,6,8,1,3,60,12,20,36,64, - 128,6,6,6,8,1,3,128,64,36,20,12,60,6,6,6, - 8,1,2,4,8,144,160,192,240,7,9,9,8,1,1,8, - 8,40,72,254,72,40,8,8,7,9,9,8,1,1,32,32, - 40,36,254,36,40,32,32,7,5,5,8,1,3,32,76,242, - 64,32,7,5,5,8,1,3,8,100,158,4,8,8,5,5, - 8,0,3,36,72,255,72,36,5,9,9,8,2,1,32,112, - 168,32,112,168,32,32,32,8,5,5,8,0,3,36,18,255, - 18,36,5,9,9,8,2,1,32,32,32,168,112,32,168,112, - 32,7,5,5,8,1,3,34,68,248,68,34,7,5,5,8, - 1,3,136,68,62,68,136,6,5,5,8,1,3,36,68,252, - 68,36,5,6,6,8,2,3,32,112,168,32,32,248,6,5, - 5,8,1,3,144,136,252,136,144,5,6,6,8,2,3,248, - 32,32,168,112,32,5,10,10,8,2,0,32,112,168,32,32, - 32,168,112,32,248,7,6,6,8,1,3,4,34,66,252,64, - 32,7,6,6,8,1,3,64,136,132,126,4,8,7,6,6, - 8,1,3,4,42,74,252,72,40,7,6,6,8,1,3,64, - 168,164,126,36,40,8,5,5,8,0,3,36,90,231,66,36, - 8,9,9,8,0,1,8,8,44,74,255,74,44,8,8,6, - 10,10,8,1,0,128,128,144,176,208,144,16,84,56,16,5, - 10,10,8,1,0,32,64,240,72,40,8,8,8,8,8,5, - 10,10,8,2,0,32,16,120,144,160,128,128,128,128,128,5, - 10,10,8,1,0,8,8,8,8,8,40,72,240,64,32,5, - 10,10,8,2,0,128,128,128,128,128,160,144,120,16,32,7, - 5,5,8,1,1,248,8,42,28,8,5,8,8,8,1,2, - 8,8,8,40,72,248,64,32,8,5,5,8,0,3,30,33, - 169,113,32,8,5,5,8,0,3,120,132,149,142,4,6,8, - 8,8,1,3,252,0,240,192,160,144,8,4,6,11,11,8, - 1,0,160,192,252,192,160,0,20,12,252,12,20,6,6,6, - 8,1,2,92,152,148,132,132,120,6,6,6,8,1,2,232, - 100,164,132,132,120,6,3,3,8,1,5,32,64,252,6,3, - 3,8,1,3,252,64,32,3,6,6,8,4,3,128,192,160, - 128,128,128,3,6,6,8,2,3,32,96,160,32,32,32,6, - 3,3,8,1,5,16,8,252,6,3,3,8,1,3,252,8, - 16,3,6,6,8,4,2,128,128,128,160,192,128,3,6,6, - 8,2,3,32,32,32,160,96,32,6,11,11,8,1,0,16, - 8,252,8,16,0,32,64,252,64,32,8,6,6,8,0,3, - 36,116,164,37,46,36,6,11,11,8,1,0,32,64,252,64, - 32,0,16,8,252,8,16,6,11,11,8,1,0,32,64,252, - 64,32,0,32,64,252,64,32,8,6,6,8,0,3,36,126, - 165,36,36,36,6,11,11,8,1,0,16,8,252,8,16,0, - 16,8,252,8,16,8,6,6,8,0,3,36,36,36,165,126, - 36,6,7,7,8,1,2,32,64,252,0,252,8,16,6,7, - 7,8,1,2,16,8,252,0,252,64,32,7,9,9,8,0, - 1,8,8,40,126,136,126,40,8,8,8,9,9,8,0,1, - 8,8,44,126,137,126,44,8,8,7,9,9,8,1,1,32, - 32,40,252,34,252,40,32,32,6,5,5,8,1,3,32,124, - 128,124,32,5,6,6,8,2,3,32,80,216,80,80,80,6, - 5,5,8,1,3,16,248,4,248,16,5,6,6,8,2,3, - 80,80,80,216,80,32,8,5,5,8,0,3,36,126,129,126, - 36,5,8,8,8,2,2,32,80,216,80,80,216,80,32,6, - 6,6,8,1,3,240,160,208,168,20,8,6,6,6,8,1, - 3,60,20,44,84,160,64,6,6,6,8,1,3,8,20,168, - 208,160,240,6,6,6,8,1,3,64,160,84,44,20,60,7, - 7,7,8,0,2,16,62,64,254,64,62,16,7,7,7,8, - 1,2,16,248,4,254,4,248,16,8,5,5,8,0,3,32, - 66,245,72,32,8,5,5,8,0,3,4,66,175,18,4,5, - 10,10,8,2,0,32,112,168,32,32,248,32,248,32,32,5, - 10,10,8,2,0,32,32,248,32,248,32,32,168,112,32,7, - 5,5,8,1,3,32,64,238,64,32,5,10,10,8,2,0, - 32,112,168,0,32,32,32,0,32,32,7,5,5,8,1,3, - 8,4,238,4,8,5,10,10,8,2,0,32,32,0,32,32, - 32,0,168,112,32,6,5,5,8,1,3,160,192,252,192,160, - 6,5,5,8,1,3,20,12,252,12,20,8,7,7,8,0, - 2,16,48,95,129,95,48,16,7,10,10,8,1,0,16,40, - 68,238,40,40,40,40,40,56,8,7,7,8,0,2,8,12, - 250,129,250,12,8,7,10,10,8,1,0,56,40,40,40,40, - 40,238,68,40,16,7,12,12,8,1,0,16,40,68,238,40, - 40,40,40,56,0,56,56,7,12,12,8,1,0,16,40,68, - 198,68,68,68,68,68,198,130,254,7,12,12,8,1,0,16, - 40,124,198,68,68,68,68,68,198,130,254,7,12,12,8,1, - 0,16,56,84,214,84,84,84,84,84,214,146,254,7,14,14, - 8,1,0,16,40,84,238,68,198,68,68,68,68,68,68,68, - 124,7,14,14,8,1,0,16,40,84,238,68,198,68,68,68, - 68,68,198,130,254,7,7,7,8,1,2,16,216,244,130,244, - 216,16,7,9,9,8,1,0,254,128,184,176,168,132,130,128, - 128,7,9,9,8,1,0,2,2,130,66,42,26,58,2,254, - 5,11,11,8,2,0,32,80,216,80,80,80,80,80,216,80, - 32,13,5,10,16,1,3,14,32,17,16,255,248,17,16,14, - 32,8,10,10,8,0,0,36,46,53,36,36,36,36,172,116, - 36,8,15,15,8,0,254,4,2,255,2,4,4,2,255,2, - 4,4,2,255,2,4,8,5,5,8,0,3,36,68,255,68, - 36,8,5,5,8,0,3,36,34,255,34,36,11,5,10,16, - 2,3,36,128,68,64,255,224,68,64,36,128,12,5,10,16, - 1,3,37,0,69,0,255,240,69,0,37,0,12,5,10,16, - 2,3,10,64,10,32,255,240,10,32,10,64,13,5,10,16, - 1,3,37,32,69,16,255,248,69,16,37,32,8,5,5,8, - 0,3,32,96,191,96,32,8,5,5,8,0,3,4,6,253, - 6,4,12,5,10,16,2,3,32,64,96,96,191,208,96,96, - 32,64,16,8,16,16,0,6,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,16,2,4,16,0,254,255,255, - 255,255,16,4,8,16,0,254,255,255,255,255,255,255,255,255, - 16,6,12,16,0,254,255,255,255,255,255,255,255,255,255,255, - 255,255,16,8,16,16,0,254,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,16,10,20,16,0,254,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,16,12,24,16,0,254,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 16,14,28,16,0,254,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,16,16,32,16,0,254,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,14,16,32,16,0,254,255,252, - 255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,252, - 255,252,255,252,255,252,255,252,255,252,255,252,255,252,12,16, - 32,16,0,254,255,240,255,240,255,240,255,240,255,240,255,240, - 255,240,255,240,255,240,255,240,255,240,255,240,255,240,255,240, - 255,240,255,240,10,16,32,16,0,254,255,192,255,192,255,192, - 255,192,255,192,255,192,255,192,255,192,255,192,255,192,255,192, - 255,192,255,192,255,192,255,192,255,192,8,16,16,16,0,254, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 6,16,16,16,0,254,252,252,252,252,252,252,252,252,252,252, - 252,252,252,252,252,252,4,16,16,16,0,254,240,240,240,240, - 240,240,240,240,240,240,240,240,240,240,240,240,2,16,16,16, - 0,254,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 192,192,8,16,16,16,8,254,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,15,16,32,16,0,254,136,136, - 34,34,136,136,34,34,136,136,34,34,136,136,34,34,136,136, - 34,34,136,136,34,34,136,136,34,34,136,136,34,34,16,16, - 32,16,0,254,170,170,85,85,170,170,85,85,170,170,85,85, - 170,170,85,85,170,170,85,85,170,170,85,85,170,170,85,85, - 170,170,85,85,16,16,32,16,0,254,238,238,187,187,238,238, - 187,187,238,238,187,187,238,238,187,187,238,238,187,187,238,238, - 187,187,238,238,187,187,238,238,187,187,16,2,4,16,0,12, - 255,255,255,255,2,16,16,16,14,254,192,192,192,192,192,192, - 192,192,192,192,192,192,192,192,192,192,8,8,8,16,0,254, - 255,255,255,255,255,255,255,255,8,8,8,16,8,254,255,255, - 255,255,255,255,255,255,8,8,8,16,0,6,255,255,255,255, - 255,255,255,255,16,16,32,16,0,254,255,0,255,0,255,0, - 255,0,255,0,255,0,255,0,255,0,255,255,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,16,16,32,16,0,254, - 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, - 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, - 16,16,32,16,0,254,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,255,0,255,0,255,0,255,0,255,0, - 255,0,255,0,255,0,16,16,32,16,0,254,255,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,255,0,255,0,255, - 0,255,0,255,0,255,0,255,0,255,0,255,8,8,8,16, - 8,6,255,255,255,255,255,255,255,255,16,16,32,16,0,254, - 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, - 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, - 16,16,32,16,0,254,0,255,0,255,0,255,0,255,0,255, - 0,255,0,255,0,255,255,255,255,255,255,255,255,255,255,255, - 255,255,255,255,255,255,7,7,7,8,1,1,254,254,254,254, - 254,254,254,7,7,7,8,1,1,254,130,130,130,130,130,254, - 7,7,7,8,1,1,124,130,130,130,130,130,124,7,7,7, - 8,1,1,254,130,186,186,186,130,254,7,7,7,8,1,1, - 254,130,254,130,254,130,254,7,7,7,8,1,1,254,170,170, - 170,170,170,254,7,7,7,8,1,1,254,170,254,170,254,170, - 254,7,7,7,8,1,1,254,166,146,202,166,146,254,7,7, - 7,8,1,1,254,202,146,166,202,146,254,7,7,7,8,1, - 1,254,170,214,170,214,170,254,4,4,4,8,2,4,240,240, - 240,240,4,4,4,8,2,4,240,144,144,240,7,4,4,8, - 1,4,254,254,254,254,7,4,4,8,1,4,254,130,130,254, - 4,7,7,8,2,2,240,240,240,240,240,240,240,4,7,7, - 8,2,2,240,144,144,144,144,144,240,8,3,3,8,0,4, - 63,126,252,8,3,3,8,0,4,63,66,252,6,6,6,8, - 1,3,48,48,120,120,252,252,6,6,6,8,1,3,48,48, - 72,72,132,252,6,3,3,8,1,3,48,120,252,6,3,3, - 8,1,3,48,72,252,6,6,6,8,1,3,192,240,252,252, - 240,192,6,6,6,8,1,3,192,176,140,140,176,192,4,4, - 4,8,2,4,192,240,240,192,4,4,4,8,2,4,192,176, - 176,192,6,5,5,8,1,3,192,240,252,240,192,6,5,5, - 8,1,3,192,176,140,176,192,6,6,6,8,1,3,252,252, - 120,120,48,48,6,6,6,8,1,3,252,132,72,72,48,48, - 6,3,3,8,1,3,252,120,48,6,3,3,8,1,3,252, - 72,48,6,6,6,8,1,3,12,60,252,252,60,12,6,6, - 6,8,1,3,12,52,196,196,52,12,4,4,4,8,2,4, - 48,240,240,48,4,4,4,8,2,4,48,208,208,48,6,5, - 5,8,1,3,12,60,252,60,12,6,5,5,8,1,3,12, - 52,196,52,12,7,7,7,8,1,2,16,56,124,254,124,56, - 16,7,7,7,8,1,2,16,40,68,130,68,40,16,7,7, - 7,8,1,2,16,40,84,186,84,40,16,7,7,7,8,1, - 2,56,68,178,186,154,68,56,6,10,10,8,1,1,48,48, - 72,72,132,132,72,72,48,48,7,7,7,8,1,2,56,68, - 130,130,130,68,56,7,7,7,8,1,2,40,0,130,0,130, - 0,40,7,7,7,8,1,2,56,108,170,170,170,108,56,7, - 7,7,8,1,2,56,68,146,170,146,68,56,7,7,7,8, - 1,2,56,124,254,254,254,124,56,7,7,7,8,1,2,56, - 100,226,226,226,100,56,7,7,7,8,1,2,56,76,142,142, - 142,76,56,7,7,7,8,1,2,56,68,130,130,254,124,56, - 7,7,7,8,1,2,56,124,254,130,130,68,56,7,7,7, - 8,1,2,56,92,158,158,130,68,56,7,7,7,8,1,2, - 56,76,142,142,254,124,56,4,7,7,8,1,2,48,112,240, - 240,240,112,48,4,7,7,8,4,2,192,224,240,240,240,224, - 192,8,16,16,8,0,254,255,255,255,255,255,255,231,195,195, - 231,255,255,255,255,255,255,8,16,16,8,0,254,255,255,255, - 255,255,231,219,189,189,219,231,255,255,255,255,255,8,8,8, - 8,0,6,255,255,255,255,255,231,219,189,8,8,8,8,0, - 254,189,219,231,255,255,255,255,255,4,4,4,8,1,5,48, - 64,128,128,4,4,4,8,4,5,192,32,16,16,4,4,4, - 8,4,2,16,16,32,192,4,4,4,8,1,2,128,128,64, - 48,7,4,4,8,1,5,56,68,130,130,7,4,4,8,1, - 2,130,130,68,56,6,6,6,8,1,255,4,12,28,60,124, - 252,6,6,6,8,1,255,128,192,224,240,248,252,6,6,6, - 8,1,6,252,248,240,224,192,128,6,6,6,8,1,6,252, - 124,60,28,12,4,5,5,5,8,1,2,112,136,136,136,112, - 6,6,6,8,1,3,252,228,228,228,228,252,6,6,6,8, - 1,3,252,156,156,156,156,252,6,6,6,8,1,3,252,244, - 228,196,132,252,6,6,6,8,1,3,252,132,140,156,188,252, - 7,6,6,8,1,3,254,146,146,146,146,254,7,7,7,8, - 1,2,16,40,40,68,84,130,254,6,6,6,8,1,2,48, - 48,104,104,228,252,6,7,7,8,1,2,48,48,88,88,156, - 156,252,8,8,8,8,0,2,60,66,129,129,129,129,66,60, - 6,6,6,8,1,0,252,164,228,132,132,252,6,6,6,8, - 1,0,252,132,132,228,164,252,6,6,6,8,1,0,252,132, - 132,156,148,252,6,6,6,8,1,0,252,148,156,132,132,252, - 8,8,8,8,0,0,60,82,145,241,129,129,66,60,8,8, - 8,8,0,0,60,66,129,129,241,145,82,60,8,8,8,8, - 0,0,60,66,129,129,143,137,74,60,8,8,8,8,0,0, - 60,74,137,143,129,129,66,60,6,6,6,8,1,6,252,136, - 144,160,192,128,6,6,6,8,1,6,252,68,36,20,12,4, - 6,6,6,8,1,255,128,192,160,144,136,252,6,6,6,8, - 1,255,252,132,132,132,132,252,6,6,6,8,1,255,252,252, - 252,252,252,252,4,4,4,8,2,0,240,144,144,240,4,4, - 4,8,2,0,240,240,240,240,6,6,6,8,1,255,4,12, - 20,36,68,252}; +const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[3421] U8G_FONT_SECTION("u8g_font_unifont_67_75") = { + 0,16,16,0,254,3,2,188,4,152,16,255,0,14,254,12, + 0,7,5,5,8,1,2,32,64,254,64,32,5,14,14,8, + 2,254,32,112,168,32,32,32,32,32,32,32,32,32,32,32, + 7,5,5,8,0,2,8,4,254,4,8,5,14,14,8,2, + 0,32,32,32,32,32,32,32,32,32,32,32,168,112,32,8, + 5,5,8,0,2,36,66,255,66,36,5,12,12,8,2,0, + 32,112,168,32,32,32,32,32,32,168,112,32,6,6,6,8, + 1,3,240,192,160,144,8,4,6,6,6,8,1,3,60,12, + 20,36,64,128,6,6,6,8,1,3,128,64,36,20,12,60, + 6,6,6,8,1,2,4,8,144,160,192,240,7,9,9,8, + 1,0,8,8,40,72,254,72,40,8,8,7,9,9,8,0, + 0,32,32,40,36,254,36,40,32,32,7,5,5,8,1,2, + 32,76,242,64,32,7,5,5,8,0,2,8,100,158,4,8, + 8,5,5,8,0,3,36,72,255,72,36,5,14,14,8,2, + 254,32,112,168,32,112,168,32,32,32,32,32,32,32,32,8, + 5,5,8,0,2,36,18,255,18,36,5,15,15,8,2,255, + 32,32,32,32,32,32,32,32,32,168,112,32,168,112,32,7, + 5,5,8,1,2,34,68,248,68,34,7,5,5,8,0,2, + 136,68,62,68,136,6,5,5,8,1,2,36,68,252,68,36, + 5,12,12,8,2,0,32,112,168,32,32,32,32,32,32,32, + 32,248,6,5,5,8,1,2,144,136,252,136,144,5,12,12, + 8,2,0,248,32,32,32,32,32,32,32,32,168,112,32,5, + 12,12,8,2,0,32,112,168,32,32,32,32,32,168,112,32, + 248,7,6,6,8,1,2,4,34,66,252,64,32,7,6,6, + 8,1,2,64,136,132,126,4,8,7,6,6,8,1,2,4, + 42,74,252,72,40,7,6,6,8,1,2,64,168,164,126,36, + 40,8,5,5,8,0,2,36,90,231,66,36,8,9,9,8, + 0,0,8,8,44,74,255,74,44,8,8,6,12,12,8,1, + 0,128,128,128,144,176,208,144,16,16,84,56,16,5,9,9, + 8,1,254,32,64,240,72,40,8,8,8,8,5,9,9,8, + 2,254,32,16,120,144,160,128,128,128,128,5,12,12,8,1, + 2,8,8,8,8,8,8,8,40,72,240,64,32,5,12,12, + 8,2,2,128,128,128,128,128,128,128,160,144,120,16,32,8, + 5,5,8,0,0,252,4,21,14,4,5,12,12,8,1,2, + 8,8,8,8,8,8,8,40,72,248,64,32,8,5,5,8, + 0,1,30,33,169,113,32,8,5,5,8,0,1,120,132,149, + 142,4,6,8,8,8,1,3,252,0,240,192,160,144,8,4, + 6,11,11,8,1,0,160,192,252,192,160,0,20,12,252,12, + 20,6,6,6,8,1,1,92,152,148,132,132,120,6,6,6, + 8,1,1,232,100,164,132,132,120,7,3,3,8,1,4,32, + 64,254,7,3,3,8,1,2,254,64,32,3,14,14,8,4, + 254,128,192,160,128,128,128,128,128,128,128,128,128,128,128,3, + 14,14,8,2,254,32,96,160,32,32,32,32,32,32,32,32, + 32,32,32,7,3,3,8,0,4,8,4,254,7,3,3,8, + 0,2,254,4,8,3,14,14,8,4,0,128,128,128,128,128, + 128,128,128,128,128,128,160,192,128,3,14,14,8,2,0,32, + 32,32,32,32,32,32,32,32,32,32,160,96,32,6,11,11, + 8,1,0,16,8,252,8,16,0,32,64,252,64,32,8,12, + 12,8,0,0,36,116,172,36,36,36,36,36,36,53,46,36, + 6,11,11,8,1,0,32,64,252,64,32,0,16,8,252,8, + 16,6,11,11,8,1,0,32,64,252,64,32,0,32,64,252, + 64,32,8,12,12,8,0,0,36,126,165,36,36,36,36,36, + 36,36,36,36,6,11,11,8,1,0,16,8,252,8,16,0, + 16,8,252,8,16,8,12,12,8,0,0,36,36,36,36,36, + 36,36,36,36,165,126,36,6,7,7,8,1,1,32,64,252, + 0,252,8,16,6,7,7,8,1,1,16,8,252,0,252,64, + 32,7,9,9,8,0,0,8,8,40,126,136,126,40,8,8, + 8,9,9,8,0,0,8,8,44,126,137,126,44,8,8,7, + 9,9,8,1,0,32,32,40,252,34,252,40,32,32,6,5, + 5,8,1,2,32,124,128,124,32,5,12,12,8,2,0,32, + 80,216,80,80,80,80,80,80,80,80,80,6,5,5,8,1, + 2,16,248,4,248,16,5,12,12,8,2,0,80,80,80,80, + 80,80,80,80,80,216,80,32,8,5,5,8,0,2,36,126, + 129,126,36,5,12,12,8,2,0,32,80,216,80,80,80,80, + 80,80,216,80,32,6,6,6,8,1,3,240,160,208,168,20, + 8,6,6,6,8,1,3,60,20,44,84,160,64,6,6,6, + 8,1,3,8,20,168,208,160,240,6,6,6,8,1,3,64, + 160,84,44,20,60,7,7,7,8,0,1,16,62,64,254,64, + 62,16,7,7,7,8,1,1,16,248,4,254,4,248,16,8, + 5,5,8,0,2,32,66,245,72,32,8,5,5,8,0,2, + 4,66,175,18,4,5,14,14,8,2,254,32,112,168,32,32, + 32,248,32,248,32,32,32,32,32,5,14,14,8,2,0,32, + 32,32,32,32,248,32,248,32,32,32,168,112,32,7,5,5, + 8,1,2,32,64,238,64,32,5,14,14,8,2,254,32,112, + 168,32,32,0,32,32,32,32,0,32,32,32,8,5,5,8, + 0,2,4,2,239,2,4,5,14,14,8,2,0,32,32,32, + 0,32,32,32,32,0,32,32,168,112,32,7,5,5,8,1, + 2,160,192,254,192,160,7,5,5,8,0,2,10,6,254,6, + 10,8,7,7,8,0,1,16,48,95,129,95,48,16,7,12, + 12,8,1,0,16,40,68,238,40,40,40,40,40,40,40,56, + 8,7,7,8,0,2,8,12,250,129,250,12,8,7,12,12, + 8,1,0,56,40,40,40,40,40,40,40,238,68,40,16,7, + 12,12,8,1,0,16,40,68,238,40,40,40,56,0,56,40, + 56,7,12,12,8,1,0,16,40,68,198,68,68,68,68,68, + 198,130,254,7,12,12,8,1,0,16,40,124,198,68,68,68, + 68,68,198,130,254,7,12,12,8,1,0,16,56,84,214,84, + 84,84,84,84,214,146,254,7,13,13,8,1,0,16,40,84, + 238,68,198,68,68,68,68,68,68,124,7,13,13,8,1,0, + 16,40,84,238,68,198,68,68,68,68,198,130,254,7,7,7, + 8,1,1,16,216,244,130,244,216,16,7,9,9,8,1,0, + 254,128,184,176,168,132,130,128,128,7,9,9,8,1,0,2, + 2,130,66,42,26,58,2,254,5,12,12,8,2,0,32,80, + 216,80,80,80,80,80,80,216,80,32,13,5,10,16,1,2, + 14,32,17,16,255,248,17,16,14,32,8,12,12,8,0,0, + 36,46,53,36,36,36,36,36,36,172,116,36,8,15,15,8, + 0,254,4,2,255,2,4,4,2,255,2,4,4,2,255,2, + 4,8,5,5,8,0,2,36,68,255,68,36,8,5,5,8, + 0,2,36,34,255,34,36,11,5,10,16,2,2,36,128,68, + 64,255,224,68,64,36,128,15,5,10,16,1,2,34,128,66, + 128,255,254,66,128,34,128,15,5,10,16,0,2,2,136,2, + 132,255,254,2,132,2,136,13,5,10,16,1,2,37,32,69, + 16,255,248,69,16,37,32,8,5,5,8,0,2,32,96,191, + 96,32,8,5,5,8,0,2,4,6,253,6,4,12,5,10, + 16,2,2,32,64,96,96,191,208,96,96,32,64,8,8,8, + 8,0,6,255,255,255,255,255,255,255,255,8,2,2,8,0, + 254,255,255,8,4,4,8,0,254,255,255,255,255,8,6,6, + 8,0,254,255,255,255,255,255,255,8,8,8,8,0,254,255, + 255,255,255,255,255,255,255,8,10,10,8,0,254,255,255,255, + 255,255,255,255,255,255,255,8,12,12,8,0,254,255,255,255, + 255,255,255,255,255,255,255,255,255,8,14,14,8,0,254,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,8,16,16, + 8,0,254,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,7,16,16,8,0,254,254,254,254,254,254,254,254, + 254,254,254,254,254,254,254,254,254,6,16,16,8,0,254,252, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,5, + 16,16,8,0,254,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,4,16,16,8,0,254,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,3,16,16,8,0, + 254,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,2,16,16,8,0,254,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,1,16,16,8,0,254,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,4,16,16, + 8,4,254,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,7,16,16,8,0,254,136,34,136,34,136,34,136, + 34,136,34,136,34,136,34,136,34,8,16,16,8,0,254,170, + 85,170,85,170,85,170,85,170,85,170,85,170,85,170,85,8, + 16,16,8,0,254,238,187,238,187,238,187,238,187,238,187,238, + 187,238,187,238,187,8,2,2,8,0,12,255,255,1,16,16, + 8,7,254,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,4,8,8,8,0,254,240,240,240,240,240,240,240, + 240,4,8,8,8,4,254,240,240,240,240,240,240,240,240,4, + 8,8,8,0,6,240,240,240,240,240,240,240,240,8,16,16, + 8,0,254,240,240,240,240,240,240,240,240,255,255,255,255,255, + 255,255,255,8,16,16,8,0,254,240,240,240,240,240,240,240, + 240,15,15,15,15,15,15,15,15,8,16,16,8,0,254,255, + 255,255,255,255,255,255,255,240,240,240,240,240,240,240,240,8, + 16,16,8,0,254,255,255,255,255,255,255,255,255,15,15,15, + 15,15,15,15,15,4,8,8,8,4,6,240,240,240,240,240, + 240,240,240,8,16,16,8,0,254,15,15,15,15,15,15,15, + 15,240,240,240,240,240,240,240,240,8,16,16,8,0,254,15, + 15,15,15,15,15,15,15,255,255,255,255,255,255,255,255,7, + 7,7,8,1,1,254,254,254,254,254,254,254,7,7,7,8, + 1,1,254,130,130,130,130,130,254,7,7,7,8,1,1,124, + 130,130,130,130,130,124,7,7,7,8,1,1,254,130,186,186, + 186,130,254,7,7,7,8,1,1,254,130,254,130,254,130,254, + 7,7,7,8,1,1,254,170,170,170,170,170,254,7,7,7, + 8,1,1,254,170,254,170,254,170,254,7,7,7,8,1,1, + 254,166,146,202,166,146,254,7,7,7,8,1,1,254,202,146, + 166,202,146,254,7,7,7,8,1,1,254,170,214,170,214,170, + 254,4,4,4,8,2,4,240,240,240,240,4,4,4,8,2, + 4,240,144,144,240,7,4,4,8,1,4,254,254,254,254,7, + 4,4,8,1,4,254,130,130,254,4,7,7,8,2,2,240, + 240,240,240,240,240,240,4,7,7,8,2,2,240,144,144,144, + 144,144,240,8,3,3,8,0,4,63,126,252,8,3,3,8, + 0,4,63,66,252,6,6,6,8,1,3,48,48,120,120,252, + 252,6,6,6,8,1,3,48,48,72,72,132,252,6,3,3, + 8,1,3,48,120,252,6,3,3,8,1,3,48,72,252,6, + 6,6,8,1,3,192,240,252,252,240,192,6,6,6,8,1, + 3,192,176,140,140,176,192,4,4,4,8,2,4,192,240,240, + 192,4,4,4,8,2,4,192,176,176,192,6,5,5,8,1, + 3,192,240,252,240,192,6,5,5,8,1,3,192,176,140,176, + 192,6,6,6,8,1,3,252,252,120,120,48,48,6,6,6, + 8,1,3,252,132,72,72,48,48,6,3,3,8,1,3,252, + 120,48,6,3,3,8,1,3,252,72,48,6,6,6,8,1, + 3,12,60,252,252,60,12,6,6,6,8,1,3,12,52,196, + 196,52,12,4,4,4,8,2,4,48,240,240,48,4,4,4, + 8,2,4,48,208,208,48,6,5,5,8,1,3,12,60,252, + 60,12,6,5,5,8,1,3,12,52,196,52,12,7,7,7, + 8,1,2,16,56,124,254,124,56,16,7,7,7,8,1,2, + 16,40,68,130,68,40,16,7,7,7,8,1,2,16,40,84, + 186,84,40,16,7,7,7,8,1,2,56,68,178,186,154,68, + 56,6,10,10,8,1,1,48,48,72,72,132,132,72,72,48, + 48,7,7,7,8,1,2,56,68,130,130,130,68,56,7,7, + 7,8,1,2,40,0,130,0,130,0,40,7,7,7,8,1, + 2,56,108,170,170,170,108,56,7,7,7,8,1,2,56,68, + 146,170,146,68,56,7,7,7,8,1,2,56,124,254,254,254, + 124,56,7,7,7,8,1,2,56,100,226,226,226,100,56,7, + 7,7,8,1,2,56,76,142,142,142,76,56,7,7,7,8, + 1,2,56,68,130,130,254,124,56,7,7,7,8,1,2,56, + 124,254,130,130,68,56,7,7,7,8,1,2,56,92,158,158, + 130,68,56,7,7,7,8,1,2,56,76,142,142,254,124,56, + 4,7,7,8,1,2,48,112,240,240,240,112,48,4,7,7, + 8,4,2,192,224,240,240,240,224,192,8,16,16,8,0,254, + 255,255,255,255,255,255,231,195,195,231,255,255,255,255,255,255, + 8,16,16,8,0,254,255,255,255,255,255,231,219,189,189,219, + 231,255,255,255,255,255,8,8,8,8,0,6,255,255,255,255, + 255,231,219,189,8,8,8,8,0,254,189,219,231,255,255,255, + 255,255,4,4,4,8,1,5,48,64,128,128,4,4,4,8, + 4,5,192,32,16,16,4,4,4,8,4,2,16,16,32,192, + 4,4,4,8,1,2,128,128,64,48,7,4,4,8,1,5, + 56,68,130,130,7,4,4,8,1,2,130,130,68,56,6,6, + 6,8,1,255,4,12,28,60,124,252,6,6,6,8,1,255, + 128,192,224,240,248,252,6,6,6,8,1,6,252,248,240,224, + 192,128,6,6,6,8,1,6,252,124,60,28,12,4,5,5, + 5,8,1,2,112,136,136,136,112,6,6,6,8,1,3,252, + 228,228,228,228,252,6,6,6,8,1,3,252,156,156,156,156, + 252,6,6,6,8,1,3,252,244,228,196,132,252,6,6,6, + 8,1,3,252,132,140,156,188,252,7,6,6,8,1,3,254, + 146,146,146,146,254,7,7,7,8,1,2,16,40,40,68,84, + 130,254,6,6,6,8,1,2,48,48,104,104,228,252,6,7, + 7,8,1,2,48,48,88,88,156,156,252,8,8,8,8,0, + 2,60,66,129,129,129,129,66,60,6,6,6,8,1,0,252, + 164,228,132,132,252,6,6,6,8,1,0,252,132,132,228,164, + 252,6,6,6,8,1,0,252,132,132,156,148,252,6,6,6, + 8,1,0,252,148,156,132,132,252,8,8,8,8,0,0,60, + 82,145,241,129,129,66,60,8,8,8,8,0,0,60,66,129, + 129,241,145,82,60,8,8,8,8,0,0,60,66,129,129,143, + 137,74,60,8,8,8,8,0,0,60,74,137,143,129,129,66, + 60,6,6,6,8,1,6,252,136,144,160,192,128,6,6,6, + 8,1,6,252,68,36,20,12,4,6,6,6,8,1,255,128, + 192,160,144,136,252,6,6,6,8,1,255,252,132,132,132,132, + 252,6,6,6,8,1,255,252,252,252,252,252,252,4,4,4, + 8,2,0,240,144,144,240,4,4,4,8,2,0,240,240,240, + 240,6,6,6,8,1,255,4,12,20,36,68,252}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 10, '1' Height: 14 - Calculated Max Values w=16 h=16 x= 4 y= 5 dx=16 dy= 0 ascent=14 len=32 + Calculated Max Values w=16 h=16 x= 5 y= 5 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 Pure Font ascent =10 descent=-1 @@ -82370,8 +86315,8 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[3556] U8G_SECTION(".progmem.u8g_ Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[7240] U8G_SECTION(".progmem.u8g_font_unifont_72_73") = { - 0,16,16,0,254,10,4,144,6,240,0,255,255,14,254,14, +const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[7568] U8G_FONT_SECTION("u8g_font_unifont_72_73") = { + 0,16,16,0,254,10,5,238,9,116,0,255,255,14,254,14, 255,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, 0,0,1,128,0,85,85,14,5,10,16,1,4,115,36,132, @@ -82381,15 +86326,15 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[7240] U8G_SECTION(".progmem.u8g_ 144,244,144,132,144,243,16,14,5,10,16,1,4,244,152,132, 164,246,164,133,172,244,156,13,5,10,16,1,4,99,72,148, 80,244,96,148,80,147,72,14,5,10,16,1,4,231,160,148, - 32,231,160,148,32,231,188,10,5,10,16,1,4,241,192,138, - 0,241,128,136,64,243,128,11,5,10,16,1,4,139,224,136, - 128,248,128,136,128,136,128,11,5,10,16,1,4,131,224,130, - 0,131,224,130,0,250,0,11,5,10,16,1,4,139,224,136, - 128,136,128,80,128,32,128,11,5,10,16,1,4,251,224,130, - 0,251,224,130,0,130,0,11,5,10,16,1,4,123,192,130, - 32,131,192,130,64,122,32,11,5,10,16,1,4,121,192,130, - 32,114,32,10,32,241,192,11,5,10,16,1,4,123,224,128, - 128,112,128,8,128,243,224,12,5,10,16,1,4,228,112,148, + 32,231,160,148,32,231,188,10,5,10,16,3,4,241,192,138, + 0,241,128,136,64,243,128,11,5,10,16,2,4,139,224,136, + 128,248,128,136,128,136,128,11,5,10,16,2,4,131,224,130, + 0,131,224,130,0,250,0,11,5,10,16,2,4,139,224,136, + 128,136,128,80,128,32,128,11,5,10,16,2,4,251,224,130, + 0,251,224,130,0,130,0,11,5,10,16,2,4,123,192,130, + 32,131,192,130,64,122,32,11,5,10,16,2,4,121,192,130, + 32,114,32,10,32,241,192,11,5,10,16,2,4,123,224,128, + 128,112,128,8,128,243,224,12,5,10,16,2,4,228,112,148, 64,148,112,148,64,231,112,13,5,10,16,1,4,227,16,148, 48,148,16,148,16,227,56,13,5,10,16,1,4,227,48,148, 8,148,16,148,32,227,56,13,5,10,16,1,4,227,48,148, @@ -82398,435 +86343,456 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[7240] U8G_SECTION(".progmem.u8g_ 168,212,176,183,168,148,164,14,5,10,16,1,4,104,164,133, 52,98,44,18,36,226,36,13,5,10,16,1,4,247,112,130, 72,242,112,130,72,242,112,13,5,10,16,1,4,102,72,137, - 104,143,88,137,72,105,72,11,5,10,16,1,4,250,32,131, + 104,143,88,137,72,105,72,11,5,10,16,2,4,250,32,131, 96,250,160,130,32,250,32,14,5,10,16,1,4,116,184,132, 164,100,184,20,164,227,56,14,5,10,16,1,4,243,156,132, - 32,243,32,128,160,247,28,9,5,10,16,1,4,243,128,132, - 0,243,0,128,128,135,0,9,5,10,16,1,4,115,128,132, - 0,179,0,144,128,119,0,9,5,10,16,1,4,227,128,148, - 0,227,0,160,128,151,0,9,5,10,16,1,4,147,128,148, + 32,243,32,128,160,247,28,9,5,10,16,3,4,243,128,132, + 0,243,0,128,128,135,0,9,5,10,16,3,4,115,128,132, + 0,179,0,144,128,119,0,9,5,10,16,3,4,227,128,148, + 0,227,0,160,128,151,0,9,5,10,16,3,4,147,128,148, 0,147,0,144,128,103,0,9,5,10,16,1,4,119,0,132, 128,103,0,20,0,228,0,14,5,10,16,1,4,231,160,148, 32,151,160,148,32,231,188,6,10,10,8,1,0,40,48,32, 96,184,36,36,36,36,56,6,2,2,8,1,0,132,252,6, 9,9,8,1,1,144,208,176,144,0,32,32,32,60,7,7, 7,8,1,2,2,20,42,84,168,80,128,6,11,11,8,1, - 0,120,132,132,128,64,32,16,16,0,16,16,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 5,10,10,8,2,0,56,40,40,40,32,32,160,160,160,224, - 5,10,10,8,2,0,8,8,8,8,8,248,136,136,136,136, - 5,10,10,8,2,0,136,136,136,136,136,248,32,32,32,32, - 5,10,10,8,2,0,32,32,32,32,32,248,136,136,136,136, - 5,10,10,8,2,0,248,168,168,168,32,32,168,168,168,248, - 5,5,5,8,2,5,136,216,168,216,136,6,8,8,8,1, - 1,28,220,220,192,192,220,220,28,8,10,10,8,0,0,3, - 3,3,27,24,24,216,192,192,192,7,10,10,8,1,0,14, - 174,174,160,160,160,160,160,160,160,7,9,9,8,1,0,218, - 218,218,218,218,218,218,218,218,8,10,10,8,0,0,160,160, - 80,40,40,20,20,10,5,5,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,15,15,30,16, - 0,255,7,192,24,48,32,8,65,4,67,4,133,2,129,2, - 129,2,129,2,129,2,65,4,71,196,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,71,196,72,36, - 128,34,128,34,128,194,131,2,132,2,72,36,79,228,32,8, + 0,120,132,132,128,64,32,16,16,0,16,16,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,195,12,251,236,195,220,223,188,195,188,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,195,156,251,108,195,156,223,108,195,156,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,195,156,251,108,195,140,223,236,195,156, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,195,12,251,108,195,12,223,108, + 195,108,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,195,28,251,108,195,28, + 223,108,195,28,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,195,140,251,124, + 195,124,223,124,195,140,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,195,28, + 251,108,195,108,223,108,195,28,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 195,12,251,124,195,28,223,124,195,12,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,195,12,251,124,195,28,223,124,195,124,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,199,156,251,108,227,108,251,108,199,156,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,199,220,251,156,227,220,251,220,199,140, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,199,12,251,236,227,12,251,124, + 199,12,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,199,28,251,236,227,140, + 251,236,199,28,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,199,108,251,108, + 227,12,251,236,199,236,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,199,12, + 251,124,227,12,251,236,199,12,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 199,156,251,124,227,28,251,108,199,156,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,199,12,251,236,227,220,251,188,199,188,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,199,156,251,108,227,156,251,108,199,156,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,199,156,251,108,227,140,251,236,199,156, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,199,12,251,108,227,12,251,108, + 199,108,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,199,28,251,108,227,28, + 251,108,199,28,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,199,140,251,124, + 227,124,251,124,199,140,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,199,28, + 251,108,227,108,251,108,199,28,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 199,12,251,124,227,28,251,124,199,12,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,199,12,251,124,227,28,251,124,199,124,255,252,5,10, + 10,8,2,0,56,40,40,40,32,32,160,160,160,224,5,10, + 10,8,2,0,8,8,8,8,8,248,136,136,136,136,5,10, + 10,8,2,0,136,136,136,136,136,248,32,32,32,32,5,10, + 10,8,2,0,32,32,32,32,32,248,136,136,136,136,5,10, + 10,8,2,0,248,168,168,168,32,32,168,168,168,248,5,5, + 5,8,2,5,136,216,168,216,136,6,8,8,8,1,1,28, + 220,220,192,192,220,220,28,8,10,10,8,0,0,3,3,3, + 27,24,24,216,192,192,192,7,10,10,8,1,0,14,174,174, + 160,160,160,160,160,160,160,7,9,9,8,1,0,218,218,218, + 218,218,218,218,218,218,8,10,10,8,0,0,160,160,80,40, + 40,20,20,10,5,5,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,219,28,219,108, + 195,28,251,108,251,28,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,219,140, + 219,124,195,124,251,124,251,140,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 219,28,219,108,195,108,251,108,251,28,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,219,12,219,124,195,28,251,124,251,12,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,219,12,219,124,195,28,251,124,251,124,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,195,156,223,108,195,108,251,108,195,156, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,195,220,223,156,195,220,251,220, + 195,140,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,195,12,223,236,195,12, + 251,124,195,12,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,195,28,223,236, + 195,140,251,236,195,28,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,195,108, + 223,108,195,12,251,236,195,236,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 195,12,223,124,195,12,251,236,195,12,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,195,156,223,124,195,28,251,108,195,156,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,195,12,223,236,195,220,251,188,195,188,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,195,156,223,108,195,156,251,108,195,156, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,195,156,223,108,195,140,251,236, + 195,156,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,195,12,223,108,195,12, + 251,108,195,108,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,195,28,223,108, + 195,28,251,108,195,28,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,195,140, + 223,124,195,124,251,124,195,140,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 195,28,223,108,195,108,251,108,195,28,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,195,12,223,124,195,28,251,124,195,12,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,195,12,223,124,195,28,251,124,195,124,255,252, + 15,15,30,16,0,255,7,192,24,48,32,8,65,4,67,4, + 133,2,129,2,129,2,129,2,129,2,65,4,71,196,32,8, 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 71,196,72,36,128,34,128,34,128,194,128,34,128,34,72,36, + 67,132,68,68,132,66,128,66,128,130,129,2,130,2,68,4, 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,64,68,64,196,129,66,130,66,132,66,136,66, - 159,242,64,68,65,244,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,79,228,72,4,136,2,143,194, - 128,34,128,34,128,34,72,36,71,196,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,71,196,72,36, - 136,2,136,2,143,194,136,34,136,34,72,36,71,196,32,8, + 24,48,32,8,67,132,68,68,132,66,128,66,129,130,128,66, + 132,66,68,68,67,132,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,132,65,132,130,130,132,130, + 136,130,143,194,128,130,64,132,64,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,68,4, + 132,2,132,2,135,130,128,66,128,66,68,68,67,132,32,8, 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 79,228,72,36,128,66,128,66,128,130,129,2,129,2,66,4, - 66,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,71,196,72,36,136,34,136,34,135,194,136,34, - 136,34,72,36,71,196,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,71,196,72,36,136,34,136,34, - 135,226,128,34,128,34,72,36,71,196,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,72,228,89,20, - 137,18,137,18,137,18,137,18,137,18,73,20,92,228,32,8, - 24,48,7,192,14,14,28,16,1,255,31,224,32,16,72,72, - 152,196,136,68,136,68,136,68,136,68,136,68,136,68,156,228, - 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, - 73,200,154,36,139,36,136,36,136,196,137,4,138,4,138,20, - 159,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, - 32,16,73,200,154,36,136,36,136,36,136,196,136,36,138,36, - 138,36,157,196,64,8,32,16,31,224,14,14,28,16,1,255, - 31,224,32,16,72,72,152,196,136,196,137,68,137,68,138,68, - 143,244,136,68,156,228,64,8,32,16,31,224,14,14,28,16, - 1,255,31,224,32,16,75,40,154,196,138,4,138,196,139,36, - 136,36,136,36,138,36,157,196,64,8,32,16,31,224,14,14, - 28,16,1,255,31,224,32,16,72,200,153,36,138,4,138,196, - 139,36,138,36,138,36,138,36,157,196,64,8,32,16,31,224, - 14,14,28,16,1,255,31,224,32,16,75,232,154,36,136,36, - 136,68,136,132,136,132,136,132,136,132,157,196,64,8,32,16, - 31,224,14,14,28,16,1,255,31,224,32,16,73,200,154,36, - 138,36,138,36,137,196,138,36,138,36,138,36,157,196,64,8, - 32,16,31,224,14,14,28,16,1,255,31,224,32,16,73,200, - 154,36,138,36,138,36,137,228,136,36,136,36,138,36,157,196, - 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, - 88,200,165,36,133,36,133,36,137,36,145,36,161,36,165,36, - 188,196,64,8,32,16,31,224,15,14,28,16,0,255,64,4, - 129,2,129,2,129,2,129,2,129,2,129,2,129,2,129,2, - 129,2,129,2,129,2,129,2,64,4,15,14,28,16,0,255, - 64,4,135,130,136,66,136,66,128,66,128,66,128,66,128,130, - 131,2,132,2,136,66,136,66,143,194,64,4,15,14,28,16, - 0,255,64,4,135,130,136,66,136,66,128,66,128,130,131,2, - 128,130,128,66,128,66,136,66,136,66,135,130,64,4,15,14, - 28,16,0,255,65,132,130,130,130,130,130,130,132,130,132,130, - 136,130,136,130,143,226,128,130,128,130,128,130,128,130,64,4, - 15,14,28,16,0,255,64,4,143,194,136,2,136,2,136,2, - 139,130,140,66,136,66,128,66,128,66,136,66,136,66,135,130, - 64,4,15,14,28,16,0,255,64,4,135,130,136,66,136,66, - 136,2,136,2,139,130,140,66,136,66,136,66,136,66,136,66, - 135,130,64,4,15,14,28,16,0,255,64,4,143,226,136,34, - 136,34,128,66,128,130,128,130,128,130,129,2,129,2,129,2, - 129,2,129,2,64,4,15,14,28,16,0,255,64,4,135,130, - 136,66,136,66,136,66,136,66,135,130,136,66,136,66,136,66, - 136,66,136,66,135,130,64,4,15,14,28,16,0,255,64,4, - 135,130,136,66,136,66,136,66,136,66,136,194,135,66,128,66, - 128,66,136,66,136,66,135,130,64,4,15,14,28,16,0,255, - 64,4,136,226,137,18,137,18,137,18,137,18,137,18,137,18, - 137,18,137,18,137,18,137,18,136,226,64,4,15,14,28,16, - 0,255,64,4,136,34,136,34,136,34,136,34,136,34,136,34, - 136,34,136,34,136,34,136,34,136,34,136,34,64,4,15,14, - 28,16,0,255,64,4,145,226,146,18,146,18,144,18,144,18, - 144,34,144,194,145,2,146,2,146,18,146,18,147,242,64,4, - 15,14,28,16,0,255,64,4,145,226,146,18,146,18,144,18, - 144,34,144,194,144,34,144,18,144,18,146,18,146,18,145,226, - 64,4,15,14,28,16,0,255,64,4,144,98,144,162,144,162, - 144,162,145,34,145,34,146,34,146,34,147,250,144,34,144,34, - 144,34,64,4,15,14,28,16,0,255,64,4,147,242,146,2, - 146,2,146,2,146,226,147,18,146,18,144,18,144,18,146,18, - 146,18,145,226,64,4,15,14,28,16,0,255,64,4,145,226, - 146,18,146,18,146,2,146,2,146,226,147,18,146,18,146,18, - 146,18,146,18,145,226,64,4,15,14,28,16,0,255,64,4, - 147,242,146,18,146,18,144,34,144,66,144,66,144,66,144,130, - 144,130,144,130,144,130,144,130,64,4,15,14,28,16,0,255, - 64,4,145,226,146,18,146,18,146,18,146,18,145,226,146,18, - 146,18,146,18,146,18,146,18,145,226,64,4,15,14,28,16, - 0,255,64,4,145,226,146,18,146,18,146,18,146,18,146,50, - 145,210,144,18,144,18,146,18,146,18,145,226,64,4,15,14, - 28,16,0,255,64,4,156,114,162,138,162,138,130,138,130,138, - 132,138,136,138,144,138,160,138,162,138,162,138,190,114,64,4, - 6,14,14,16,4,255,32,96,160,32,32,32,32,32,32,32, - 32,32,32,36,9,14,28,16,3,255,120,0,132,0,132,0, - 4,0,4,0,4,0,8,0,48,0,64,0,128,0,128,0, - 132,0,132,0,252,128,9,14,28,16,3,255,120,0,132,0, - 132,0,4,0,4,0,8,0,48,0,8,0,4,0,4,0, - 132,0,132,0,132,0,120,128,10,15,30,16,3,254,24,0, - 40,0,40,0,40,0,72,0,72,0,72,0,136,0,136,0, - 254,0,8,0,8,0,8,0,8,64,8,0,9,14,28,16, - 3,255,252,0,128,0,128,0,128,0,128,0,128,0,184,0, - 196,0,132,0,4,0,4,0,132,0,132,0,120,128,9,14, - 28,16,3,255,120,0,132,0,132,0,132,0,128,0,128,0, - 184,0,196,0,132,0,132,0,132,0,132,0,132,0,120,128, - 10,14,28,16,3,255,254,0,130,0,130,0,4,0,8,0, - 8,0,8,0,16,0,16,0,16,0,16,0,16,0,16,0, - 16,64,9,14,28,16,3,255,120,0,132,0,132,0,132,0, - 132,0,72,0,48,0,72,0,132,0,132,0,132,0,132,0, - 132,0,120,128,9,14,28,16,3,255,120,0,132,0,132,0, - 132,0,132,0,132,0,140,0,116,0,4,0,4,0,132,0, - 132,0,132,0,120,128,13,14,28,16,0,255,35,192,100,32, - 164,32,36,32,36,32,36,32,36,32,36,32,36,32,36,32, - 36,32,36,32,36,32,35,200,12,14,28,16,0,255,32,128, - 97,128,162,128,32,128,32,128,32,128,32,128,32,128,32,128, - 32,128,32,128,32,128,32,128,32,144,14,14,28,16,0,255, - 35,192,100,32,164,32,32,32,32,32,32,32,32,64,33,128, - 34,0,36,0,36,0,36,32,36,32,39,228,14,14,28,16, - 0,255,35,192,100,32,164,32,32,32,32,32,32,64,33,128, - 32,64,32,32,32,32,36,32,36,32,36,32,35,196,13,14, - 28,16,0,255,32,192,97,64,161,64,33,64,34,64,34,64, - 34,64,36,64,36,64,39,240,32,64,32,64,32,64,32,72, - 14,14,28,16,0,255,39,224,100,0,164,0,36,0,36,0, - 36,0,37,192,38,32,36,32,32,32,32,32,36,32,36,32, - 35,196,14,14,28,16,0,255,35,192,100,32,164,32,36,32, - 36,0,36,0,37,192,38,32,36,32,36,32,36,32,36,32, - 36,32,35,196,14,14,28,16,0,255,39,240,100,16,164,16, - 32,32,32,64,32,64,32,64,32,128,32,128,32,128,32,128, - 32,128,32,128,32,132,14,14,28,16,0,255,35,192,100,32, - 164,32,36,32,36,32,34,64,33,128,34,64,36,32,36,32, - 36,32,36,32,36,32,35,196,14,14,28,16,0,255,35,192, - 100,32,164,32,36,32,36,32,36,32,36,96,35,160,32,32, - 32,32,36,32,36,32,36,32,35,196,13,14,28,16,1,255, - 113,192,138,32,138,32,10,32,10,32,10,32,50,32,66,32, - 130,32,130,32,130,32,138,32,138,32,249,200,14,14,28,16, - 1,255,48,48,64,8,128,4,128,4,135,132,136,68,128,68, - 135,196,136,68,136,68,135,180,128,4,64,8,48,48,14,14, - 28,16,1,255,48,48,72,8,152,4,136,4,139,132,140,68, - 136,36,136,36,136,36,140,68,155,132,128,4,64,8,48,48, - 14,14,28,16,1,255,48,48,64,8,128,4,128,4,135,132, - 136,68,144,4,144,4,144,36,136,68,135,132,128,4,64,8, - 48,48,14,14,28,16,1,255,48,48,64,72,128,196,128,68, - 135,68,136,196,144,68,144,68,144,68,136,196,135,100,128,4, - 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, - 128,4,143,132,144,68,144,68,159,196,144,4,144,68,143,132, - 128,4,64,8,48,48,14,14,28,16,1,255,48,48,65,136, - 130,196,130,4,143,132,130,4,130,4,130,4,130,4,130,4, - 135,4,128,4,64,8,48,48,14,14,28,16,1,255,48,48, - 64,8,128,4,128,100,135,132,136,68,136,68,159,132,144,4, - 143,196,144,36,144,36,79,200,48,48,14,14,28,16,1,255, - 48,48,72,8,152,4,136,4,137,196,142,68,136,68,136,68, - 136,68,136,68,156,228,128,4,64,8,48,48,14,14,28,16, - 1,255,49,48,65,8,128,4,128,4,129,4,131,4,129,4, - 129,4,129,4,129,4,131,132,128,4,64,8,48,48,14,14, - 28,16,1,255,49,48,65,8,128,4,128,4,129,4,131,4, - 129,4,129,4,129,4,129,4,129,4,137,4,70,8,48,48, - 14,14,28,16,1,255,48,48,72,8,152,4,136,4,137,196, - 136,132,137,4,143,4,137,132,136,196,156,228,128,4,64,8, - 48,48,14,14,28,16,1,255,48,48,66,8,134,4,130,4, - 130,4,130,4,130,4,130,4,130,4,130,4,135,4,128,4, - 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, - 128,4,150,196,187,68,146,68,146,68,146,68,146,68,187,100, - 128,4,64,8,48,48,14,14,28,16,1,255,48,48,64,8, - 128,4,128,4,137,196,158,68,136,68,136,68,136,68,136,68, - 156,228,128,4,64,8,48,48,14,14,28,16,1,255,48,48, - 64,8,128,4,128,4,143,132,144,68,144,68,144,68,144,68, - 144,68,143,132,128,4,64,8,48,48,14,14,28,16,1,255, - 48,48,64,8,128,4,128,4,139,132,156,68,136,36,136,36, - 136,36,140,68,139,132,136,4,92,8,48,48,14,14,28,16, - 1,255,48,48,64,8,128,4,128,4,135,68,136,196,144,68, - 144,68,144,68,136,196,135,68,128,68,64,232,48,48,14,14, - 28,16,1,255,48,48,64,8,128,4,128,4,137,196,158,100, - 136,4,136,4,136,4,136,4,156,4,128,4,64,8,48,48, - 14,14,28,16,1,255,48,48,64,8,128,4,128,4,135,196, - 136,36,136,4,135,196,128,36,136,36,135,196,128,4,64,8, - 48,48,14,14,28,16,1,255,48,48,64,8,128,4,130,4, - 130,4,143,132,130,4,130,4,130,4,130,68,131,132,128,4, - 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, - 128,4,136,68,152,196,136,68,136,68,136,68,136,196,143,100, - 128,4,64,8,48,48,14,14,28,16,1,255,48,48,64,8, - 128,4,128,4,156,116,136,36,132,68,132,68,130,132,130,132, - 129,4,128,4,64,8,48,48,14,14,28,16,1,255,48,48, - 64,8,128,4,128,4,191,116,146,36,146,36,137,68,139,68, - 132,132,132,132,128,4,64,8,48,48,14,14,28,16,1,255, - 48,48,64,8,128,4,128,4,156,228,136,68,132,132,131,4, - 132,132,136,68,156,228,128,4,64,8,48,48,14,14,28,16, - 1,255,48,48,64,8,128,4,128,4,184,228,144,68,136,132, - 133,4,130,4,130,4,135,4,128,4,64,8,48,48,14,14, - 28,16,1,255,48,48,64,8,128,4,128,4,135,228,132,68, - 136,132,129,4,130,4,132,36,143,196,128,4,64,8,48,48, - 15,15,30,16,0,255,7,192,24,48,33,8,66,132,68,68, - 132,66,132,66,135,194,132,66,132,66,68,68,76,100,32,8, - 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 79,132,68,68,132,34,132,66,135,130,132,66,132,34,68,68, - 79,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,67,196,68,36,132,2,132,2,132,2,132,2, - 132,2,68,36,67,196,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,79,132,68,68,132,34,132,34, - 132,34,132,34,132,34,68,68,79,132,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,79,228,68,36, - 132,2,132,2,135,130,132,2,132,2,68,36,79,228,32,8, - 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 79,228,68,36,132,2,132,2,135,130,132,2,132,2,68,4, - 78,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,67,196,68,36,132,2,132,2,132,226,132,34, - 132,34,68,100,67,164,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,78,228,68,68,132,66,132,66, - 135,194,132,66,132,66,68,68,78,228,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,67,132,65,4, - 129,2,129,2,129,2,129,2,129,2,65,4,67,132,32,8, - 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 65,196,64,132,128,130,128,130,128,130,128,130,128,130,72,132, - 71,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,78,100,68,68,132,130,133,2,134,2,133,2, - 132,130,68,68,78,100,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,78,4,68,4,132,2,132,2, - 132,2,132,2,132,2,68,36,79,196,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,76,100,70,196, - 134,194,133,66,133,66,132,66,132,66,68,68,78,228,32,8, - 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 76,100,68,68,134,66,134,66,133,66,133,66,132,194,68,196, - 76,100,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,67,132,68,68,136,34,136,34,136,34,136,34, - 136,34,68,68,67,132,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,79,132,68,68,132,66,132,66, - 135,130,132,2,132,2,68,4,78,4,32,8,24,48,7,192, + 65,132,66,4,132,2,132,2,135,130,132,66,132,66,68,68, + 67,132,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,64,68,128,66,128,130,128,130,128,130, + 129,2,65,4,65,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,68,68,132,66,132,66, + 131,130,132,66,132,66,68,68,67,132,32,8,24,48,7,192, 15,15,30,16,0,255,7,192,24,48,32,8,67,132,68,68, - 136,34,136,34,136,34,136,34,137,162,68,68,67,164,32,8, + 132,66,132,66,131,194,128,66,128,66,64,132,67,4,32,8, 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 79,132,68,68,132,66,132,66,135,130,133,2,132,130,68,68, - 78,36,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,67,132,68,68,132,2,132,2,131,130,128,66, - 128,66,68,68,67,132,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,79,228,73,36,129,2,129,2, - 129,2,129,2,129,2,65,4,67,132,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,78,228,68,68, - 132,66,132,66,132,66,132,66,132,66,68,68,67,132,32,8, + 64,4,68,100,140,146,148,146,132,146,132,146,132,146,95,100, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,68,140,194,149,66,132,66,132,66, + 132,66,95,244,64,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,68,100,140,146,148,18, + 132,34,132,66,132,130,95,244,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,68,100, + 140,146,148,18,132,34,132,18,132,146,95,100,64,4,32,8, 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 76,100,68,68,132,66,132,66,130,130,130,130,130,130,65,4, + 64,4,68,20,140,50,148,82,132,146,132,250,132,18,95,20, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,244,140,130,148,130,132,226,132,18, + 132,146,95,100,64,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,68,116,140,130,148,130, + 132,226,132,146,132,146,95,100,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,68,244, + 140,18,148,18,132,34,132,34,132,66,95,68,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,68,100,140,146,148,146,132,98,132,146,132,146,95,100, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,100,140,146,148,146,132,114,132,18, + 132,18,95,100,64,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,76,100,146,146,130,146, + 132,146,136,146,144,146,94,100,64,4,32,8,24,48,7,192, + 14,12,24,16,1,0,32,16,65,8,67,8,133,4,129,4, + 129,4,129,4,129,4,129,4,65,8,71,200,32,16,14,12, + 24,16,1,0,32,16,71,136,72,72,136,68,128,68,129,132, + 130,4,132,4,136,4,72,8,79,200,32,16,14,12,24,16, + 1,0,32,16,71,136,72,72,136,68,128,68,131,132,128,68, + 128,68,136,68,72,72,71,136,32,16,14,12,24,16,1,0, + 32,16,64,136,65,136,130,132,132,132,136,132,136,132,143,196, + 128,132,64,136,64,136,32,16,14,12,24,16,1,0,32,16, + 79,200,72,8,136,4,136,4,143,132,128,68,128,68,128,68, + 72,72,71,136,32,16,14,12,24,16,1,0,32,16,67,136, + 68,8,136,4,136,4,143,132,136,68,136,68,136,68,72,72, + 71,136,32,16,14,12,24,16,1,0,32,16,79,200,64,72, + 128,68,128,132,128,132,128,132,129,4,129,4,65,8,65,8, + 32,16,14,12,24,16,1,0,32,16,71,136,72,72,136,68, + 136,68,135,132,136,68,136,68,136,68,72,72,71,136,32,16, + 14,12,24,16,1,0,32,16,71,136,72,72,136,68,136,68, + 135,196,128,68,128,68,128,68,64,136,71,8,32,16,16,12, + 24,16,0,0,64,2,136,49,152,73,168,133,136,133,136,133, + 136,133,136,133,136,133,136,73,190,49,64,2,16,12,24,16, + 0,0,64,2,136,17,152,49,168,81,136,17,136,17,136,17, + 136,17,136,17,136,17,190,125,64,2,16,12,24,16,0,0, + 64,2,136,121,152,133,168,133,136,5,136,25,136,33,136,65, + 136,129,136,129,190,253,64,2,16,12,24,16,0,0,64,2, + 136,121,152,133,168,133,136,5,136,57,136,5,136,5,136,133, + 136,133,190,121,64,2,16,12,24,16,0,0,64,2,136,9, + 152,25,168,41,136,73,136,137,136,137,136,253,136,9,136,9, + 190,9,64,2,16,12,24,16,0,0,64,2,136,253,152,129, + 168,129,136,129,136,249,136,5,136,5,136,5,136,133,190,121, + 64,2,16,12,24,16,0,0,64,2,136,57,152,65,168,129, + 136,129,136,249,136,133,136,133,136,133,136,133,190,121,64,2, + 16,12,24,16,0,0,64,2,137,249,152,9,168,9,136,17, + 136,17,136,17,136,33,136,33,136,33,190,33,64,2,16,12, + 24,16,0,0,64,2,136,121,152,133,168,133,136,133,136,121, + 136,133,136,133,136,133,136,133,190,121,64,2,16,12,24,16, + 0,0,64,2,136,121,152,133,168,133,136,133,136,125,136,5, + 136,5,136,5,136,9,190,113,64,2,16,12,24,16,0,0, + 64,2,156,49,162,73,162,133,130,133,132,133,136,133,144,133, + 160,133,160,73,190,49,64,2,7,10,10,16,5,0,32,96, + 160,32,32,32,32,32,32,250,8,10,10,16,4,0,120,132, + 132,4,24,32,64,128,128,253,8,10,10,16,4,0,120,132, + 132,4,56,4,4,132,132,121,8,10,10,16,4,0,8,24, + 40,72,136,136,252,8,8,9,8,10,10,16,4,0,252,128, + 128,128,248,4,4,4,132,121,8,10,10,16,4,0,56,64, + 128,128,248,132,132,132,132,121,8,10,10,16,4,0,252,4, + 4,8,8,8,16,16,16,17,8,10,10,16,4,0,120,132, + 132,132,120,132,132,132,132,121,8,10,10,16,4,0,120,132, + 132,132,124,4,4,4,8,113,14,10,20,16,1,0,32,192, + 97,32,162,16,34,16,34,16,34,16,34,16,34,16,33,32, + 248,196,14,10,20,16,1,0,32,64,96,192,161,64,32,64, + 32,64,32,64,32,64,32,64,32,64,249,244,14,10,20,16, + 1,0,33,224,98,16,162,16,32,16,32,96,32,128,33,0, + 34,0,34,0,251,244,14,10,20,16,1,0,33,224,98,16, + 162,16,32,16,32,224,32,16,32,16,34,16,34,16,249,228, + 14,10,20,16,1,0,32,32,96,96,160,160,33,32,34,32, + 34,32,35,240,32,32,32,32,248,36,14,10,20,16,1,0, + 35,240,98,0,162,0,34,0,35,224,32,16,32,16,32,16, + 34,16,249,228,14,10,20,16,1,0,32,224,97,0,162,0, + 34,0,35,224,34,16,34,16,34,16,34,16,249,228,14,10, + 20,16,1,0,35,240,96,16,160,16,32,32,32,32,32,32, + 32,64,32,64,32,64,248,68,14,10,20,16,1,0,33,224, + 98,16,162,16,34,16,33,224,34,16,34,16,34,16,34,16, + 249,228,14,10,20,16,1,0,33,224,98,16,162,16,34,16, + 33,240,32,16,32,16,32,16,32,32,249,196,15,10,20,16, + 1,0,120,96,132,144,133,8,5,8,25,8,33,8,65,8, + 129,8,128,144,252,98,14,12,24,16,1,0,32,16,64,8, + 71,136,136,68,128,68,135,196,136,68,136,68,136,196,71,72, + 64,8,32,16,14,12,24,16,1,0,40,16,72,8,72,8, + 139,132,140,68,136,68,136,68,136,68,136,68,76,72,75,136, + 32,16,14,12,24,16,1,0,32,16,64,8,71,136,136,68, + 136,4,136,4,136,4,136,4,136,68,71,136,64,8,32,16, + 14,12,24,16,1,255,32,80,64,72,64,72,135,68,136,196, + 136,68,136,68,136,68,136,68,72,200,71,72,32,16,14,12, + 24,16,1,0,32,16,64,8,71,136,136,68,136,68,143,196, + 136,4,136,4,136,68,71,136,64,8,32,16,14,12,24,16, + 1,255,33,144,66,8,66,8,130,4,143,132,130,4,130,4, + 130,4,130,4,66,8,66,8,32,16,14,12,24,16,1,0, + 32,16,64,72,71,72,136,132,136,132,136,132,135,4,132,4, + 135,132,72,72,72,72,39,144,14,12,24,16,1,255,40,16, + 72,8,72,8,139,132,140,68,136,68,136,68,136,68,136,68, + 72,72,72,72,32,16,13,12,24,16,1,0,34,32,66,16, + 64,16,134,8,130,8,130,8,130,8,130,8,130,8,66,16, + 79,144,32,32,13,13,26,16,1,255,32,160,64,144,64,16, + 129,136,128,136,128,136,128,136,128,136,128,136,64,144,64,144, + 41,32,6,0,14,12,24,16,1,255,32,16,72,8,72,8, + 136,132,137,4,138,4,140,4,138,4,137,4,72,136,72,72, + 32,16,13,12,24,16,1,0,32,32,70,16,66,16,130,8, + 130,8,130,8,130,8,130,8,130,8,66,16,79,144,32,32, + 15,12,24,16,1,0,32,8,64,4,78,196,137,34,137,34, + 137,34,137,34,137,34,137,34,73,36,64,4,32,8,14,12, + 24,16,1,255,32,16,64,8,75,136,140,68,136,68,136,68, + 136,68,136,68,136,68,72,72,64,8,32,16,14,12,24,16, + 1,0,32,16,64,8,71,136,136,68,136,68,136,68,136,68, + 136,68,136,68,71,136,64,8,32,16,14,12,24,16,1,0, + 32,16,64,8,75,136,140,68,136,68,136,68,136,68,136,68, + 140,68,75,136,72,8,40,16,14,12,24,16,1,255,32,16, + 64,8,71,72,136,196,136,68,136,68,136,68,136,68,136,196, + 71,72,64,72,32,80,14,12,24,16,1,0,32,16,64,8, + 75,136,140,68,136,68,136,4,136,4,136,4,136,4,72,8, + 64,8,32,16,14,12,24,16,1,0,32,16,64,8,71,136, + 136,68,136,4,134,4,129,132,128,68,136,68,71,136,64,8, + 32,16,14,12,24,16,1,255,32,16,66,8,66,8,143,132, + 130,4,130,4,130,4,130,4,130,4,66,8,65,136,32,16, + 14,12,24,16,1,0,32,16,64,8,72,72,136,68,136,68, + 136,68,136,68,136,68,136,196,71,72,64,8,32,16,14,12, + 24,16,1,255,32,16,64,8,72,72,136,68,136,68,132,132, + 132,132,132,132,131,4,67,8,64,8,32,16,15,12,24,16, + 1,0,32,8,64,4,72,36,137,34,137,34,137,34,137,34, + 137,34,137,34,70,196,64,4,32,8,14,12,24,16,1,255, + 32,16,64,8,72,72,136,68,132,132,131,4,131,4,132,132, + 136,68,72,72,64,8,32,16,14,12,24,16,1,0,32,16, + 64,8,72,72,136,68,136,68,136,68,136,68,132,196,131,68, + 64,72,64,72,39,144,14,12,24,16,1,0,32,16,64,8, + 79,200,128,68,128,132,129,4,130,4,132,4,136,4,79,200, + 64,8,32,16,15,15,30,16,0,255,7,192,24,48,32,8, + 65,4,66,132,130,130,132,66,132,66,135,194,132,66,68,68, + 68,68,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,132,68,68,132,66,132,66,135,130,132,66, + 132,66,68,68,71,132,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,68,68,132,66,132,2, + 132,2,132,2,132,66,68,68,67,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,4,68,132, + 132,66,132,66,132,66,132,66,132,66,68,132,71,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,68,4,132,2,132,2,135,130,132,2,132,2,68,4, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,68,4,132,2,132,2,135,130,132,2, + 132,2,68,4,68,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,68,68,132,66,132,2, + 133,194,132,66,132,66,68,196,67,68,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,68,68,68,68, + 132,66,132,66,135,194,132,66,132,66,68,68,68,68,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,65,4,129,2,129,2,129,2,129,2,129,2,65,4, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,228,64,132,128,130,128,130,128,130,128,130, + 132,130,68,132,67,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,68,68,68,68,132,130,133,2, + 134,2,133,2,132,130,68,68,68,68,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,68,4,68,4, + 132,2,132,2,132,2,132,2,132,2,68,4,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 68,68,68,68,134,194,134,194,133,66,133,66,132,66,68,68, + 68,68,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,68,134,66,134,66,133,66,133,66, + 132,194,68,196,68,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,68,68,132,66,132,66, + 132,66,132,66,132,66,68,68,67,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,132,68,68, + 132,66,132,66,135,130,132,2,132,2,68,4,68,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 67,132,68,68,132,66,132,66,132,66,132,66,133,66,70,196, + 67,132,32,104,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,132,68,68,132,66,132,66,135,130,133,2, + 132,130,68,132,68,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,68,68,132,66,132,2, + 131,130,128,66,132,66,68,68,67,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,79,228,65,4, + 129,2,129,2,129,2,129,2,129,2,65,4,65,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 68,68,68,68,132,66,132,66,132,66,132,66,132,66,68,68, + 67,132,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,72,36,72,36,132,66,132,66,132,66,130,130, + 130,130,65,4,65,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,68,68,68,68,132,66,133,66, + 133,66,134,194,134,194,68,68,68,68,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,68,68,68,68, + 130,130,130,130,129,2,130,130,130,130,68,68,68,68,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 72,36,72,36,132,66,132,66,130,130,129,2,129,2,65,4, 65,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,76,100,69,68,133,66,133,66,133,66,133,66, - 134,194,68,68,68,68,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,78,228,68,68,132,66,130,130, - 129,2,130,130,132,66,68,68,78,228,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,78,228,68,68, - 132,66,130,130,129,2,129,2,129,2,65,4,67,132,32,8, + 24,48,32,8,71,196,64,68,128,66,128,130,129,2,130,2, + 132,2,68,4,71,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,67,132,132,66,128,66, + 131,194,132,66,132,194,67,68,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,36,8,68,4,68,4, + 133,130,134,66,132,66,132,66,132,66,70,68,69,132,32,8, 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 79,228,72,36,128,66,128,130,129,2,130,2,132,2,72,36, - 79,228,32,8,24,48,7,192,14,14,28,16,1,255,31,224, - 32,16,64,8,128,4,143,132,144,68,128,68,143,196,144,68, - 144,68,143,180,64,8,32,16,31,224,14,14,28,16,1,255, - 31,224,40,16,88,8,136,4,139,132,140,68,136,36,136,36, - 136,36,140,68,155,132,64,8,32,16,31,224,14,14,28,16, - 1,255,31,224,32,16,64,8,128,4,135,132,136,68,144,4, - 144,4,144,4,136,100,135,132,64,8,32,16,31,224,14,14, - 28,16,1,255,31,224,32,80,64,200,128,68,135,68,136,196, - 144,68,144,68,144,68,144,68,143,164,64,8,32,16,31,224, - 14,14,28,16,1,255,31,224,32,16,64,8,128,4,135,132, - 136,68,144,36,159,228,144,4,136,36,135,196,64,8,32,16, - 31,224,14,14,28,16,1,255,31,224,35,144,66,200,130,4, - 143,132,130,4,130,4,130,4,130,4,130,4,135,4,64,8, - 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, - 128,196,135,132,136,68,136,68,143,132,144,4,159,196,144,36, - 80,40,47,208,31,224,14,14,28,16,1,255,31,224,40,16, - 88,8,136,4,139,196,140,68,136,68,136,68,136,68,136,68, - 156,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, - 33,16,65,8,128,4,129,4,131,4,129,4,129,4,129,4, - 129,4,131,132,64,8,32,16,31,224,14,14,28,16,1,255, - 31,224,33,16,65,8,128,4,129,4,131,4,129,4,129,4, - 129,4,129,4,129,4,89,8,38,16,31,224,14,14,28,16, - 1,255,31,224,40,16,88,8,136,4,137,228,136,132,139,4, - 141,132,136,196,136,100,156,244,64,8,32,16,31,224,14,14, - 28,16,1,255,31,224,34,16,70,8,130,4,130,4,130,4, - 130,4,130,4,130,4,130,4,135,4,64,8,32,16,31,224, - 14,14,28,16,1,255,31,224,32,16,64,8,128,4,150,196, - 187,68,146,68,146,68,146,68,146,68,187,100,64,8,32,16, - 31,224,14,14,28,16,1,255,31,224,32,16,64,8,128,4, - 139,196,156,68,136,68,136,68,136,68,136,68,156,228,64,8, - 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, - 128,4,135,196,136,36,136,36,136,36,136,36,136,36,135,196, - 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, - 64,8,128,4,139,132,156,68,136,36,136,36,136,36,140,68, - 139,132,72,8,40,16,31,224,14,14,28,16,1,255,31,224, - 32,16,64,8,128,4,135,68,136,196,144,68,144,68,144,68, - 136,196,135,68,64,72,32,80,31,224,14,14,28,16,1,255, - 31,224,32,16,64,8,128,4,137,196,158,100,136,4,136,4, - 136,4,136,4,156,4,64,8,32,16,31,224,14,14,28,16, - 1,255,31,224,32,16,64,8,128,4,135,196,136,36,140,4, - 131,132,128,100,136,36,135,196,64,8,32,16,31,224,14,14, - 28,16,1,255,31,224,32,16,64,8,130,4,130,4,143,132, - 130,4,130,4,130,4,130,68,131,132,64,8,32,16,31,224, - 14,14,28,16,1,255,31,224,32,16,64,8,128,4,136,68, - 152,196,136,68,136,68,136,68,136,68,143,164,64,8,32,16, - 31,224,14,14,28,16,1,255,31,224,32,16,64,8,128,4, - 156,116,136,36,132,68,132,68,130,132,130,132,129,4,64,8, - 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, - 128,4,247,116,162,36,162,36,147,68,149,68,136,132,136,132, - 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, - 64,8,128,4,184,228,136,132,133,4,130,4,133,4,136,132, - 184,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, - 32,16,64,8,128,4,184,228,144,68,136,132,133,4,130,4, - 130,4,135,4,64,8,32,16,31,224,14,14,28,16,1,255, - 31,224,32,16,64,8,128,4,143,196,136,68,144,132,131,4, - 132,4,136,68,159,132,64,8,32,16,31,224,16,15,30,16, - 0,254,7,224,24,24,32,4,67,194,68,34,132,33,132,33, - 132,33,132,33,132,33,68,34,67,194,32,4,24,24,7,224, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,188, - 231,60,247,188,247,188,227,28,127,248,127,248,63,240,15,192, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, - 231,220,247,188,247,124,227,28,127,248,127,248,63,240,15,192, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, - 231,220,247,60,247,220,227,60,127,248,127,248,63,240,15,192, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,246,188, - 230,188,246,28,247,188,227,188,127,248,127,248,63,240,15,192, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,28, - 231,124,247,60,247,220,227,60,127,248,127,248,63,240,15,192, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, - 230,252,246,60,246,220,227,60,127,248,127,248,63,240,15,192, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,246,60, - 231,188,247,188,247,124,227,124,127,248,127,248,63,240,15,192, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, - 230,220,247,60,246,220,227,60,127,248,127,248,63,240,15,192, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, - 230,220,247,28,247,220,227,60,127,248,127,248,63,240,15,192, - 14,13,26,16,1,255,15,192,63,240,127,248,127,248,231,156, - 251,108,247,108,239,108,227,156,127,248,127,248,63,240,15,192, - 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, - 144,137,161,133,160,133,160,133,145,201,80,10,76,50,35,196, - 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, - 76,50,80,10,145,137,160,69,160,133,161,5,145,201,80,10, + 64,4,67,132,132,66,132,2,132,2,132,2,132,66,67,132, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,72,64,68,64,68,131,66,132,194,132,66,132,66, + 132,66,68,196,67,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,67,132,132,66,132,66, + 135,194,132,2,132,66,67,132,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,196,65,4, + 129,2,129,2,135,194,129,2,129,2,65,4,65,4,33,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,68,67,68,132,130,132,130,131,2,130,2,131,130,68,68, + 68,68,35,136,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,36,8,68,4,68,4,133,130,134,66,132,66,132,66, + 132,66,68,68,68,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,33,8,65,4,64,4,131,2,129,2, + 129,2,129,2,129,2,65,4,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,72,64,68,64,4, + 128,194,128,66,128,66,128,66,128,66,64,68,68,132,35,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 68,4,68,4,132,130,133,2,134,2,134,2,133,2,68,132, + 68,68,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,4,65,4,129,2,129,2,129,2,129,2, + 129,2,65,4,71,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,78,196,137,34,137,34, + 137,34,137,34,137,34,73,36,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,69,132, + 134,66,132,66,132,66,132,66,132,66,68,68,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,67,132,132,66,132,66,132,66,132,66,132,66,67,132, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,69,132,134,66,132,66,132,66,132,66, + 134,66,69,132,68,4,36,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,67,68,132,194,132,66, + 132,66,132,66,132,66,68,196,67,68,32,72,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,69,132, + 134,66,132,66,132,2,132,2,132,2,68,4,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,67,132,132,66,132,2,131,130,128,66,132,66,67,132, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,65,4,65,4,135,194,129,2,129,2,129,2, + 129,2,65,4,64,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,68,68,132,66,132,66, + 132,66,132,66,132,194,67,68,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,68,68, + 132,66,130,130,130,130,130,130,129,2,65,4,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,72,36,137,34,137,34,137,34,137,34,137,34,70,196, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,68,132,66,130,130,129,2,130,130, + 132,66,68,68,64,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,68,68,132,66,132,66, + 132,66,130,194,129,66,64,68,64,68,35,136,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,71,196, + 128,66,128,130,129,2,130,2,132,2,71,196,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 65,4,66,132,132,66,132,66,132,66,132,66,132,66,66,132, + 65,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,127,252,123,188,243,62,234,190,251,190,251,190, + 251,190,96,12,127,252,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,127,252,123,156,243,110,235,238, + 251,222,251,190,251,126,96,12,127,252,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,127,252,123,156, + 243,110,235,238,251,222,251,238,251,110,96,156,127,252,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 127,252,123,236,243,206,235,174,251,110,251,6,251,238,96,236, + 127,252,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,127,252,123,12,243,126,235,126,251,30,251,238, + 251,110,96,156,127,252,63,248,31,240,7,192,13,13,26,16, + 1,0,15,128,63,224,127,240,119,16,230,248,214,248,246,56, + 246,216,246,216,65,48,127,240,63,224,15,128,13,13,26,16, + 1,0,15,128,63,224,127,240,118,16,231,216,215,216,247,184, + 247,184,247,120,65,112,127,240,63,224,15,128,13,13,26,16, + 1,0,15,128,63,224,127,240,119,48,230,216,214,216,247,56, + 246,216,246,216,65,48,127,240,63,224,15,128,15,15,30,16, + 0,255,7,192,31,240,63,248,127,252,123,156,243,110,235,110, + 251,142,251,238,251,238,96,156,127,252,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,127,252,115,156, + 237,110,253,110,251,110,247,110,239,110,97,156,127,252,63,248, + 31,240,7,192,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,144,137,161,133,160,133,160,133,145,201,80,10, 76,50,35,196,24,24,7,224,16,15,30,16,0,254,7,224, - 24,24,35,196,76,50,80,10,145,137,160,69,161,133,160,69, + 24,24,35,196,76,50,80,10,145,137,160,69,160,133,161,5, + 145,201,80,10,76,50,35,196,24,24,7,224,16,15,30,16, + 0,254,7,224,24,24,35,196,76,50,80,10,145,137,160,69, + 161,133,160,69,145,137,80,10,76,50,35,196,24,24,7,224, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 146,137,162,133,163,197,160,133,144,137,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,145,201,161,5,161,133,160,69,145,137,80,10, + 76,50,35,196,24,24,7,224,16,15,30,16,0,254,7,224, + 24,24,35,196,76,50,80,10,145,137,162,5,163,133,162,69, 145,137,80,10,76,50,35,196,24,24,7,224,16,15,30,16, - 0,254,7,224,24,24,35,196,76,50,80,10,146,137,162,133, - 163,197,160,133,144,137,80,10,76,50,35,196,24,24,7,224, + 0,254,7,224,24,24,35,196,76,50,80,10,145,201,160,69, + 160,69,160,133,144,137,80,10,76,50,35,196,24,24,7,224, 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, - 145,201,161,5,161,133,160,69,145,137,80,10,76,50,35,196, + 145,137,162,69,161,133,162,69,145,137,80,10,76,50,35,196, 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, - 76,50,80,10,145,137,162,5,163,133,162,69,145,137,80,10, + 76,50,80,10,145,137,162,69,161,197,160,69,145,137,80,10, 76,50,35,196,24,24,7,224,16,15,30,16,0,254,7,224, - 24,24,35,196,76,50,80,10,145,201,160,69,160,69,160,133, - 144,137,80,10,76,50,35,196,24,24,7,224,16,15,30,16, - 0,254,7,224,24,24,35,196,76,50,80,10,145,137,162,69, - 161,133,162,69,145,137,80,10,76,50,35,196,24,24,7,224, - 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, - 145,137,162,69,161,197,160,69,145,137,80,10,76,50,35,196, - 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, - 76,50,80,10,146,105,166,149,162,149,162,149,151,105,80,10, - 76,50,35,196,24,24,7,224,14,13,26,16,1,255,15,192, - 63,240,127,248,127,248,252,252,251,124,251,124,251,124,252,252, - 127,248,127,248,63,240,15,192}; + 24,24,35,196,76,50,80,10,146,105,166,149,162,149,162,149, + 151,105,80,10,76,50,35,196,24,24,7,224,15,15,30,16, + 0,255,7,192,31,240,63,248,126,252,125,124,251,190,251,190, + 251,190,251,190,251,190,125,124,126,252,63,248,31,240,7,192 + }; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 6, '1' Height: 3 Calculated Max Values w= 8 h=10 x= 2 y= 4 dx= 8 dy= 0 ascent=11 len=10 Font Bounding box w=16 h=16 x= 0 y=-2 @@ -82836,7 +86802,7 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[7240] U8G_SECTION(".progmem.u8g_ Max Font ascent =11 descent= 0 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_75r[580] U8G_SECTION(".progmem.u8g_font_unifont_75r") = { +const u8g_fntpgm_uint8_t u8g_font_unifont_75r[580] U8G_FONT_SECTION("u8g_font_unifont_75r") = { 0,16,16,0,254,6,1,137,0,0,32,79,0,11,0,8, 0,7,7,7,8,1,1,254,254,254,254,254,254,254,7,7, 7,8,1,1,254,130,130,130,130,130,254,7,7,7,8,1, @@ -82875,8 +86841,8 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_75r[580] U8G_SECTION(".progmem.u8g_fon 56,68,146,170,146,68,56,7,7,7,8,1,2,56,124,254, 254,254,124,56}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 10, '1' Height: 8 Calculated Max Values w=16 h=16 x= 3 y= 6 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 @@ -82886,8 +86852,8 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_75r[580] U8G_SECTION(".progmem.u8g_fon Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_76[2532] U8G_SECTION(".progmem.u8g_font_unifont_76") = { - 0,16,16,0,254,10,2,68,4,220,32,159,0,14,254,10, +const u8g_fntpgm_uint8_t u8g_font_unifont_76[2540] U8G_FONT_SECTION("u8g_font_unifont_76") = { + 0,16,16,0,254,10,2,62,4,228,32,159,0,14,254,10, 0,7,12,12,8,1,0,16,146,68,0,56,124,124,56,0, 68,146,16,8,4,4,8,0,6,32,118,255,126,7,8,8, 8,1,2,56,124,254,16,16,16,16,32,16,16,32,16,0, @@ -82915,24 +86881,24 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_76[2532] U8G_SECTION(".progmem.u8g_fon 2,0,4,0,14,0,31,0,63,128,127,192,255,224,255,224, 255,224,255,224,255,224,255,224,255,224,255,224,13,13,26,16, 1,255,5,0,15,128,15,128,103,48,242,120,127,240,242,120, - 98,48,4,0,4,0,4,0,8,0,16,0,14,15,30,16, - 1,254,102,24,79,24,223,176,159,160,255,160,255,32,255,56, - 126,228,127,36,127,40,63,152,63,144,31,176,15,32,6,0, - 7,4,4,8,1,2,252,62,62,28,7,4,4,8,1,2, - 126,248,248,112,7,4,4,8,1,2,252,34,50,28,4,7, - 7,8,2,2,16,16,112,208,144,144,96,7,4,4,8,1, - 2,126,136,152,112,4,7,7,8,2,0,96,144,144,208,112, - 16,16,8,12,12,8,0,0,231,165,126,129,165,165,129,90, - 90,66,189,231,4,10,10,8,2,0,224,16,16,32,32,64, - 64,128,128,112,13,13,26,16,1,0,31,192,32,32,69,16, - 141,136,157,200,189,232,255,248,130,8,135,8,143,136,95,208, - 32,32,31,192,15,13,26,16,0,255,4,64,8,32,16,16, + 98,48,4,0,4,0,4,0,8,0,16,0,13,12,24,16, + 1,0,0,8,3,144,71,208,143,208,159,208,255,176,127,184, + 31,200,15,200,7,200,3,136,0,16,7,4,4,8,1,2, + 252,62,62,28,7,4,4,8,1,2,126,248,248,112,7,4, + 4,8,1,2,252,34,50,28,4,7,7,8,2,2,16,16, + 112,208,144,144,96,7,4,4,8,1,2,126,136,152,112,4, + 7,7,8,2,0,96,144,144,208,112,16,16,8,12,12,8, + 0,0,231,165,126,129,165,165,129,90,90,66,189,231,4,10, + 10,8,2,0,224,16,16,32,32,64,64,128,128,112,16,16, + 32,16,0,254,7,224,24,24,36,36,92,58,92,58,190,125, + 190,125,190,125,129,129,129,129,131,193,67,194,71,226,35,196, + 24,24,7,224,15,13,26,16,0,255,4,64,8,32,16,16, 16,16,19,144,12,96,62,248,68,68,133,66,131,130,2,128, 4,64,24,48,13,15,30,16,1,254,6,0,2,0,255,248, 71,16,63,224,2,0,26,192,34,32,31,192,18,64,15,128, 10,128,7,0,10,128,2,0,5,8,8,8,2,0,112,136, 80,32,248,32,32,32,5,9,9,8,2,0,32,112,32,248, - 32,48,96,32,32,6,10,10,8,1,0,56,36,36,56,32, + 32,96,48,32,32,6,10,10,8,1,0,56,36,36,56,32, 168,112,32,112,168,5,9,9,8,2,0,32,112,32,248,32, 32,32,32,32,7,7,7,8,1,0,56,16,146,254,146,16, 56,8,9,9,8,0,1,30,33,64,194,199,194,64,33,30, @@ -82941,114 +86907,114 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_76[2532] U8G_SECTION(".progmem.u8g_fon 3,255,4,0,21,0,36,128,78,64,213,96,213,96,206,96, 228,224,223,96,142,32,21,0,4,0,8,8,8,8,0,0, 12,2,57,121,13,62,99,193,7,8,8,8,1,0,124,146, - 146,146,186,214,146,124,13,12,24,16,1,0,31,192,32,32, - 64,16,64,16,152,72,188,8,254,24,239,56,255,248,127,240, - 63,224,31,192,13,10,20,16,1,0,255,248,255,248,0,0, - 0,0,255,248,255,248,0,0,0,0,255,248,255,248,13,10, - 20,16,1,0,248,248,248,248,0,0,0,0,255,248,255,248, - 0,0,0,0,255,248,255,248,13,10,20,16,1,0,255,248, - 255,248,0,0,0,0,248,248,248,248,0,0,0,0,255,248, - 255,248,13,10,20,16,1,0,248,248,248,248,0,0,0,0, - 248,248,248,248,0,0,0,0,255,248,255,248,13,10,20,16, + 146,146,186,214,146,124,16,16,32,16,0,254,7,224,24,24, + 32,4,64,2,64,2,156,49,190,49,255,3,231,131,231,199, + 255,255,127,254,127,254,63,252,31,248,7,224,13,10,20,16, 1,0,255,248,255,248,0,0,0,0,255,248,255,248,0,0, - 0,0,248,248,248,248,13,10,20,16,1,0,248,248,248,248, - 0,0,0,0,255,248,255,248,0,0,0,0,248,248,248,248, + 0,0,255,248,255,248,13,10,20,16,1,0,248,248,248,248, + 0,0,0,0,255,248,255,248,0,0,0,0,255,248,255,248, 13,10,20,16,1,0,255,248,255,248,0,0,0,0,248,248, - 248,248,0,0,0,0,248,248,248,248,13,10,20,16,1,0, + 248,248,0,0,0,0,255,248,255,248,13,10,20,16,1,0, 248,248,248,248,0,0,0,0,248,248,248,248,0,0,0,0, - 248,248,248,248,7,7,7,8,1,0,146,124,124,238,124,124, - 146,8,10,10,8,0,1,60,66,129,165,129,153,165,129,66, - 60,8,9,9,8,0,1,60,66,129,165,129,165,153,66,60, - 8,9,9,8,0,1,60,126,255,219,255,219,231,126,60,7, - 7,7,8,1,2,146,84,56,238,56,84,146,6,10,10,8, - 2,0,224,48,24,20,20,20,20,24,48,224,6,10,10,8, - 1,0,28,48,96,160,160,160,160,96,48,28,5,11,11,8, - 2,0,136,136,112,136,136,136,112,32,248,32,32,5,9,9, - 8,2,0,112,136,136,136,112,32,248,32,32,5,10,10,8, - 2,1,32,32,248,32,32,112,136,136,136,112,7,8,8,8, - 1,1,14,6,10,112,136,136,136,112,6,10,10,8,1,0, - 4,4,4,116,140,12,20,252,4,4,6,10,10,8,1,0, - 64,64,224,64,88,100,68,72,72,72,7,9,9,8,1,0, - 214,84,124,84,214,16,56,40,56,8,11,11,8,0,255,8, - 89,203,73,73,73,62,8,62,8,8,6,10,10,8,1,0, - 248,132,132,132,248,128,128,128,128,252,7,10,10,8,1,0, - 68,170,40,40,16,16,16,16,16,16,7,7,7,8,1,0, - 130,68,56,68,68,68,56,7,10,10,8,1,0,130,124,40, - 40,40,40,40,40,124,130,7,8,8,8,1,0,124,146,144, - 96,12,18,146,124,8,9,9,8,0,0,28,34,34,18,116, - 148,148,101,2,7,10,10,8,1,0,168,248,170,174,170,170, - 170,170,12,248,7,6,6,8,1,1,56,68,68,238,0,254, - 7,10,10,8,1,0,168,248,168,168,168,168,168,168,170,6, - 7,7,7,8,1,0,30,6,138,82,32,80,136,6,10,10, - 8,1,0,128,240,144,144,156,20,28,16,16,96,6,6,6, - 8,1,2,84,168,0,0,84,168,6,9,9,8,1,0,132, - 132,72,72,252,72,72,132,132,7,13,13,8,1,0,16,56, - 146,186,198,130,68,68,68,130,130,130,254,7,11,11,8,1, - 0,16,56,198,130,68,68,68,130,130,130,254,7,9,9,8, - 1,0,170,254,130,130,68,68,130,130,254,7,10,10,8,1, - 0,16,40,68,68,68,68,40,238,130,254,6,11,11,8,1, - 0,4,60,68,132,132,116,36,68,132,132,252,6,8,8,8, - 1,0,48,72,72,48,72,72,132,252,7,13,13,8,1,0, - 16,56,146,186,254,254,124,124,124,254,254,254,254,7,11,11, - 8,1,0,16,56,254,238,124,124,124,254,254,254,254,7,8, - 8,8,1,0,170,254,254,124,124,254,254,254,7,10,10,8, - 1,0,16,56,108,68,108,124,56,254,254,254,6,11,11,8, - 1,0,4,60,108,252,252,124,60,124,252,252,252,6,8,8, - 8,1,0,48,120,120,48,120,120,252,252,7,10,10,8,1, - 0,16,16,56,124,254,254,254,124,16,56,7,9,9,8,1, - 0,108,146,130,130,130,68,40,16,16,5,10,10,8,2,0, - 32,32,80,80,136,136,80,80,32,32,7,10,10,8,1,0, - 56,56,56,16,254,254,214,16,16,56,7,10,10,8,1,0, - 16,16,40,68,130,130,130,124,16,56,7,9,9,8,1,0, - 108,254,254,254,254,124,56,16,16,5,10,10,8,2,0,32, - 32,112,112,248,248,112,112,32,32,7,10,10,8,1,0,56, - 40,56,16,238,186,214,16,16,56,8,11,11,8,0,0,8, - 81,146,146,146,73,73,73,82,129,126,4,10,10,8,1,0, - 16,16,16,16,16,16,16,112,240,224,6,10,10,8,1,0, - 16,24,20,20,16,16,16,112,240,224,8,11,11,8,0,0, - 28,23,17,17,17,17,113,241,231,15,14,8,11,11,8,0, - 0,28,23,17,29,23,17,113,241,231,15,14,6,12,12,8, - 1,0,128,128,128,128,128,184,204,140,136,144,160,192,6,11, - 11,8,1,0,128,128,156,252,228,132,156,252,228,4,4,6, - 13,13,8,1,255,8,72,76,124,248,200,72,76,124,248,200, - 72,64,7,10,10,8,1,0,40,16,16,146,124,146,16,16, - 16,40,7,10,10,8,1,0,56,40,16,214,186,214,16,16, - 40,16,16,16,32,16,0,254,3,184,4,165,8,179,5,9, - 18,5,40,9,68,31,238,0,40,15,48,73,36,201,13,101, - 22,19,37,120,60,192,0,64,15,16,32,16,0,254,3,128, - 4,64,4,64,8,32,0,40,57,24,27,56,41,0,33,8, - 67,132,64,4,128,34,128,66,126,252,0,64,0,32,15,16, - 32,16,0,254,3,128,4,64,4,64,8,32,0,40,59,24, - 24,184,41,0,34,8,67,132,64,4,128,34,128,66,126,252, - 0,64,0,32,15,16,32,16,0,254,3,128,4,64,4,64, - 8,32,0,40,57,24,24,184,43,0,32,136,67,4,64,4, - 128,34,128,66,126,252,0,64,0,32,15,16,32,16,0,254, - 3,128,4,64,4,64,8,32,0,40,58,152,26,184,43,128, - 32,136,64,132,64,4,128,34,128,66,126,252,0,64,0,32, + 255,248,255,248,13,10,20,16,1,0,255,248,255,248,0,0, + 0,0,255,248,255,248,0,0,0,0,248,248,248,248,13,10, + 20,16,1,0,248,248,248,248,0,0,0,0,255,248,255,248, + 0,0,0,0,248,248,248,248,13,10,20,16,1,0,255,248, + 255,248,0,0,0,0,248,248,248,248,0,0,0,0,248,248, + 248,248,13,10,20,16,1,0,248,248,248,248,0,0,0,0, + 248,248,248,248,0,0,0,0,248,248,248,248,7,7,7,8, + 1,0,146,124,124,238,124,124,146,8,10,10,8,0,1,60, + 66,129,165,129,153,165,129,66,60,8,9,9,8,0,1,60, + 66,129,165,129,165,153,66,60,8,9,9,8,0,1,60,126, + 255,219,255,219,231,126,60,7,7,7,8,1,2,146,84,56, + 238,56,84,146,6,10,10,8,2,0,224,48,24,20,20,20, + 20,24,48,224,6,10,10,8,1,0,28,48,96,160,160,160, + 160,96,48,28,5,11,11,8,2,0,136,136,112,136,136,136, + 112,32,248,32,32,5,9,9,8,2,0,112,136,136,136,112, + 32,248,32,32,5,10,10,8,2,1,32,32,248,32,32,112, + 136,136,136,112,7,8,8,8,1,1,14,6,10,112,136,136, + 136,112,6,10,10,8,1,0,4,4,4,116,140,12,20,252, + 4,4,6,10,10,8,1,0,64,64,224,64,88,100,68,72, + 72,72,7,9,9,8,1,0,214,84,124,84,214,16,56,40, + 56,8,11,11,8,0,255,8,89,203,73,73,73,62,8,62, + 8,8,6,10,10,8,1,0,248,132,132,132,248,128,128,128, + 128,252,7,10,10,8,1,0,68,170,40,40,16,16,16,16, + 16,16,7,7,7,8,1,0,130,68,56,68,68,68,56,7, + 10,10,8,1,0,130,124,40,40,40,40,40,40,124,130,7, + 8,8,8,1,0,124,146,144,96,12,18,146,124,8,9,9, + 8,0,0,28,34,34,18,116,148,148,101,2,7,10,10,8, + 1,0,168,248,170,174,170,170,170,170,12,248,7,6,6,8, + 1,1,56,68,68,238,0,254,7,10,10,8,1,0,168,248, + 168,168,168,168,168,168,170,6,7,7,7,8,1,0,30,6, + 138,82,32,80,136,8,10,10,8,0,0,49,78,132,8,16, + 60,98,162,162,28,6,6,6,8,1,2,84,168,0,0,84, + 168,6,9,9,8,1,0,132,132,72,72,252,72,72,132,132, + 7,13,13,8,1,0,16,56,146,186,198,130,68,68,68,130, + 130,130,254,7,11,11,8,1,0,16,56,198,130,68,68,68, + 130,130,130,254,7,9,9,8,1,0,170,254,130,130,68,68, + 130,130,254,7,10,10,8,1,0,16,40,68,68,68,68,40, + 238,130,254,6,11,11,8,1,0,4,60,68,132,132,116,36, + 68,132,132,252,6,8,8,8,1,0,48,72,72,48,72,72, + 132,252,7,13,13,8,1,0,16,56,146,186,254,254,124,124, + 124,254,254,254,254,7,11,11,8,1,0,16,56,254,238,124, + 124,124,254,254,254,254,7,8,8,8,1,0,170,254,254,124, + 124,254,254,254,7,10,10,8,1,0,16,56,108,68,108,124, + 56,254,254,254,6,11,11,8,1,0,4,60,108,252,252,124, + 60,124,252,252,252,6,8,8,8,1,0,48,120,120,48,120, + 120,252,252,7,10,10,8,1,0,16,16,56,124,254,254,254, + 124,16,56,7,9,9,8,1,0,108,146,130,130,130,68,40, + 16,16,5,10,10,8,2,0,32,32,80,80,136,136,80,80, + 32,32,7,10,10,8,1,0,56,56,56,16,254,254,214,16, + 16,56,7,10,10,8,1,0,16,16,40,68,130,130,130,124, + 16,56,7,9,9,8,1,0,108,254,254,254,254,124,56,16, + 16,5,10,10,8,2,0,32,32,112,112,248,248,112,112,32, + 32,7,10,10,8,1,0,56,40,56,16,238,186,214,16,16, + 56,8,11,11,8,0,0,8,81,146,146,146,73,73,73,82, + 129,126,4,10,10,8,1,0,16,16,16,16,16,16,16,112, + 240,224,6,10,10,8,1,0,16,24,20,20,16,16,16,112, + 240,224,8,11,11,8,0,0,28,23,17,17,17,17,113,241, + 231,15,14,8,11,11,8,0,0,28,23,17,29,23,17,113, + 241,231,15,14,6,12,12,8,1,0,128,128,128,128,128,184, + 204,140,136,144,160,192,6,11,11,8,1,0,128,128,156,252, + 228,132,156,252,228,4,4,6,13,13,8,1,255,8,72,76, + 124,248,200,72,76,124,248,200,72,64,7,10,10,8,1,0, + 40,16,16,146,124,146,16,16,16,40,7,10,10,8,1,0, + 56,40,16,214,186,214,16,16,40,16,16,16,32,16,0,254, + 3,192,5,32,10,152,18,72,10,208,4,48,48,4,72,10, + 140,17,80,9,160,5,174,38,82,88,82,134,30,92,0,32, 15,16,32,16,0,254,3,128,4,64,4,64,8,32,0,40, - 59,152,26,56,43,0,32,136,67,4,64,4,128,34,128,66, + 57,24,27,56,41,0,33,8,67,132,64,4,128,34,128,66, 126,252,0,64,0,32,15,16,32,16,0,254,3,128,4,64, - 4,64,8,32,0,40,57,152,26,56,43,128,34,72,65,132, + 4,64,8,32,0,40,59,24,24,184,41,0,34,8,67,132, 64,4,128,34,128,66,126,252,0,64,0,32,15,16,32,16, - 0,254,3,128,4,64,4,64,8,32,0,40,59,152,24,184, - 41,0,33,8,65,4,64,4,128,34,128,66,126,252,0,64, + 0,254,3,128,4,64,4,64,8,32,0,40,57,24,24,184, + 43,0,32,136,67,4,64,4,128,34,128,66,126,252,0,64, 0,32,15,16,32,16,0,254,3,128,4,64,4,64,8,32, - 0,40,56,24,24,56,40,0,32,8,64,4,64,4,128,34, - 128,66,126,252,0,64,0,32,16,16,32,16,0,254,3,184, - 7,189,15,191,7,15,18,7,56,15,124,31,254,0,56,15, - 48,79,36,207,13,231,31,243,61,248,60,192,0,64,15,16, - 32,16,0,254,7,192,15,224,60,120,123,188,119,172,127,204, - 199,142,231,254,215,238,223,238,111,108,118,220,124,60,62,248, - 15,96,7,192,15,16,32,16,0,254,7,192,24,48,32,8, - 67,132,68,84,64,52,184,114,152,2,168,18,160,18,80,148, - 73,36,67,196,33,8,24,176,7,192,13,12,24,16,0,255, - 7,0,24,192,32,32,64,16,77,144,146,72,146,72,77,144, - 64,16,32,32,24,192,7,0,12,11,22,16,2,0,24,0, - 24,0,16,0,30,0,16,0,95,128,128,128,128,64,129,64, - 66,48,60,0}; + 0,40,58,152,26,184,43,128,32,136,64,132,64,4,128,34, + 128,66,126,252,0,64,0,32,15,16,32,16,0,254,3,128, + 4,64,4,64,8,32,0,40,59,152,26,56,43,0,32,136, + 67,4,64,4,128,34,128,66,126,252,0,64,0,32,15,16, + 32,16,0,254,3,128,4,64,4,64,8,32,0,40,57,152, + 26,56,43,128,34,72,65,132,64,4,128,34,128,66,126,252, + 0,64,0,32,15,16,32,16,0,254,3,128,4,64,4,64, + 8,32,0,40,59,152,24,184,41,0,33,8,65,4,64,4, + 128,34,128,66,126,252,0,64,0,32,15,16,32,16,0,254, + 3,128,4,64,4,64,8,32,0,40,56,24,24,56,40,0, + 32,8,64,4,64,4,128,34,128,66,126,252,0,64,0,32, + 16,16,32,16,0,254,3,192,5,224,14,248,30,120,14,240, + 4,48,48,4,120,14,252,31,112,15,224,7,238,38,94,120, + 94,254,30,124,0,32,16,16,32,16,0,254,7,224,31,248, + 62,124,125,190,123,222,255,143,247,223,231,255,243,239,247,239, + 239,247,111,182,113,14,63,188,31,248,7,224,16,16,32,16, + 0,254,7,224,24,24,33,132,66,66,68,34,128,113,136,33, + 152,1,140,17,136,17,144,9,80,74,78,242,32,68,24,24, + 7,224,13,12,24,16,0,255,7,0,24,192,32,32,64,16, + 77,144,146,72,146,72,77,144,64,16,32,32,24,192,7,0, + 12,11,22,16,2,0,24,0,24,0,16,0,30,0,16,0, + 95,128,128,128,128,64,129,64,66,48,60,0}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 11, '1' Height: 11 Calculated Max Values w=16 h=16 x= 4 y= 4 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 @@ -83058,8 +87024,8 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_76[2532] U8G_SECTION(".progmem.u8g_fon Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_77[1587] U8G_SECTION(".progmem.u8g_font_unifont_77") = { - 0,16,16,0,254,11,3,99,5,215,32,99,0,14,254,11, +const u8g_fntpgm_uint8_t u8g_font_unifont_77[1657] U8G_FONT_SECTION("u8g_font_unifont_77") = { + 0,16,16,0,254,11,3,133,6,29,32,99,0,14,254,11, 255,9,9,18,16,3,1,255,128,128,128,128,128,128,128,136, 128,128,128,128,128,128,128,255,128,9,9,18,16,3,1,255, 128,128,128,128,128,160,128,128,128,130,128,128,128,128,128,255, @@ -83101,69 +87067,73 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_77[1587] U8G_SECTION(".progmem.u8g_fon 255,2,0,66,16,47,160,16,64,32,32,32,32,226,56,32, 32,32,32,16,64,47,160,66,16,2,0,15,13,26,16,0, 0,1,0,2,128,57,56,127,252,253,126,5,64,3,128,1, - 0,1,0,1,0,1,0,1,0,1,0,13,15,30,16,1, - 254,2,0,117,112,141,136,141,136,138,136,77,144,40,160,26, - 192,40,160,77,144,138,136,141,136,141,136,117,112,2,0,15, - 16,32,16,0,254,1,0,2,128,58,184,68,68,132,66,242, - 158,138,162,6,192,6,192,8,32,6,192,6,192,10,160,50, - 152,70,196,121,60,15,15,30,16,0,255,1,0,2,128,4, - 64,4,64,8,0,107,252,136,2,136,34,96,36,24,16,6, - 80,0,136,33,8,38,72,24,48,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,13,14,28,16,1,255,2,0,5,0,5,0,8,128,8, - 128,18,64,18,64,34,32,34,32,66,16,64,16,130,8,128, - 8,255,248,6,11,11,8,1,255,4,8,16,32,64,252,8, - 16,32,64,128,11,9,18,16,2,0,59,128,68,64,138,32, - 138,32,68,64,59,128,17,0,59,128,17,0,11,11,22,16, - 2,0,7,0,3,0,5,0,56,224,68,96,142,160,149,0, - 104,128,48,128,17,0,14,0,10,14,28,16,3,255,1,192, - 0,192,1,64,14,0,17,0,56,128,84,128,139,0,134,0, - 68,0,56,0,16,0,56,0,16,0,8,12,12,16,4,254, - 7,3,5,56,68,130,130,68,56,16,56,16,11,10,20,16, - 2,0,0,224,0,96,2,160,1,0,58,128,68,0,130,0, - 130,0,68,0,56,0,15,13,26,16,0,254,224,14,192,6, - 168,10,16,16,43,160,4,64,8,32,8,32,4,64,3,128, - 1,0,3,128,1,0,7,12,12,8,0,0,16,56,84,16, - 56,16,56,68,130,130,68,56,14,7,14,16,0,255,56,0, - 68,16,130,136,131,252,130,136,68,16,56,0,7,7,7,8, - 0,255,56,68,130,130,130,68,56,7,7,7,8,0,255,56, - 124,254,254,254,124,56,5,5,5,8,2,0,112,136,136,136, - 112,11,6,12,16,2,0,59,128,68,64,138,32,138,32,68, - 64,59,128,11,7,14,16,3,255,4,0,117,192,142,32,142, - 32,142,32,117,192,4,0,13,5,10,16,1,0,112,112,136, - 136,143,136,136,136,112,112,14,10,20,16,2,0,24,0,39, - 128,64,124,128,0,128,0,128,0,128,0,64,124,39,128,24, - 0,11,13,26,16,2,0,31,0,10,0,63,128,64,64,128, - 32,128,32,64,64,64,64,64,64,32,128,32,128,32,128,31, - 0,7,9,9,8,0,254,56,68,130,130,68,56,16,16,16, - 6,9,9,8,0,254,112,136,4,4,8,48,32,248,32,7, - 10,10,8,0,254,16,40,68,130,68,40,16,16,124,16,7, - 10,10,8,0,254,146,84,56,254,56,84,146,16,124,16,13, - 11,22,16,1,0,2,0,2,0,2,0,2,0,114,112,8, - 128,5,0,242,120,8,128,5,0,2,0,6,11,11,8,1, - 0,36,40,48,40,36,32,112,136,136,136,112,6,10,10,8, - 1,254,56,112,224,224,224,112,56,16,124,16,8,7,7,8, - 0,3,66,36,24,255,24,36,66,7,8,8,8,0,0,68, - 68,68,40,40,40,16,254,7,8,8,8,0,0,254,16,40, - 40,40,68,68,68,7,8,8,8,1,0,252,132,132,132,148, - 252,16,30,6,14,14,8,1,255,168,84,168,84,168,84,168, - 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, - 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, - 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,12, - 9,18,16,2,0,31,128,96,96,134,16,134,16,224,112,191, - 208,169,80,105,96,31,128,12,12,24,16,2,0,31,128,96, - 96,134,16,134,16,224,112,191,208,169,80,233,112,191,208,169, - 80,105,96,31,128,14,11,22,16,1,255,31,224,112,56,207, - 204,188,244,188,244,143,196,160,20,171,84,203,76,112,56,31, - 224,14,14,28,16,1,255,31,224,112,56,207,204,188,244,188, - 244,143,196,160,20,171,84,139,68,160,20,171,84,203,76,112, - 56,31,224}; + 0,1,0,1,0,1,0,1,0,1,0,16,16,32,16,0, + 254,1,128,2,64,2,64,116,46,142,113,133,161,78,114,53, + 172,53,172,78,114,133,161,142,113,116,46,2,64,2,64,1, + 128,15,16,32,16,0,254,1,0,2,128,4,64,52,88,76, + 100,132,66,178,154,202,166,26,176,16,16,27,176,10,160,58, + 184,38,200,25,48,1,0,15,15,30,16,0,255,1,0,2, + 128,4,64,4,64,8,0,107,252,136,2,136,34,96,36,24, + 16,6,80,0,136,33,8,38,72,24,48,12,15,30,16,2, + 255,192,0,48,0,12,0,3,0,0,192,0,48,0,0,255, + 240,0,0,0,48,0,192,3,0,12,0,48,0,192,0,12, + 15,30,16,2,255,0,48,0,192,3,0,12,0,48,0,192, + 0,0,0,255,240,0,0,192,0,48,0,12,0,3,0,0, + 192,0,48,13,14,28,16,1,255,2,0,5,0,5,0,8, + 128,8,128,18,64,18,64,34,32,34,32,66,16,64,16,130, + 8,128,8,255,248,6,11,11,8,1,255,4,8,16,32,64, + 252,8,16,32,64,128,11,9,18,16,2,0,59,128,68,64, + 138,32,138,32,68,64,59,128,17,0,59,128,17,0,11,11, + 22,16,2,0,7,0,3,0,5,0,56,224,68,96,142,160, + 149,0,104,128,48,128,17,0,14,0,10,14,28,16,3,255, + 1,192,0,192,1,64,14,0,17,0,56,128,84,128,139,0, + 134,0,68,0,56,0,16,0,56,0,16,0,8,12,12,16, + 4,254,7,3,5,56,68,130,130,68,56,16,56,16,11,10, + 20,16,2,0,0,224,0,96,2,160,1,0,58,128,68,0, + 130,0,130,0,68,0,56,0,15,13,26,16,0,254,224,14, + 192,6,168,10,16,16,43,160,4,64,8,32,8,32,4,64, + 3,128,1,0,3,128,1,0,7,12,12,8,0,0,16,56, + 84,16,56,16,56,68,130,130,68,56,14,7,14,16,0,255, + 56,0,68,16,130,136,131,252,130,136,68,16,56,0,7,7, + 7,8,0,255,56,68,130,130,130,68,56,7,7,7,8,0, + 255,56,124,254,254,254,124,56,5,5,5,8,2,0,112,136, + 136,136,112,11,6,12,16,2,0,59,128,68,64,138,32,138, + 32,68,64,59,128,11,7,14,16,3,255,4,0,117,192,142, + 32,142,32,142,32,117,192,4,0,13,5,10,16,1,0,112, + 112,136,136,143,136,136,136,112,112,14,10,20,16,2,0,24, + 0,39,128,64,124,128,0,128,0,128,0,128,0,64,124,39, + 128,24,0,11,13,26,16,2,0,31,0,10,0,63,128,64, + 64,128,32,128,32,64,64,64,64,64,64,32,128,32,128,32, + 128,31,0,7,9,9,8,0,254,56,68,130,130,68,56,16, + 16,16,6,9,9,8,0,254,112,136,4,4,8,48,32,248, + 32,7,10,10,8,0,254,16,40,68,130,68,40,16,16,124, + 16,7,10,10,8,0,254,146,84,56,254,56,84,146,16,124, + 16,13,11,22,16,1,0,2,0,2,0,2,0,2,0,114, + 112,8,128,5,0,242,120,8,128,5,0,2,0,6,11,11, + 8,1,0,36,40,48,40,36,32,112,136,136,136,112,6,10, + 10,8,1,254,56,112,224,224,224,112,56,16,124,16,8,7, + 7,8,0,3,66,36,24,255,24,36,66,7,8,8,8,0, + 0,68,68,68,40,40,40,16,254,7,8,8,8,0,0,254, + 16,40,40,40,68,68,68,6,8,8,8,1,0,252,132,132, + 132,148,252,64,252,13,13,26,16,0,255,7,0,28,192,60, + 224,92,240,64,16,135,8,143,136,231,56,112,112,96,48,39, + 32,31,192,7,0,13,13,26,16,0,255,7,0,24,192,48, + 96,72,144,64,16,133,8,128,8,133,8,64,16,72,144,48, + 96,24,192,7,0,13,13,26,16,1,255,255,248,128,8,135, + 8,136,136,136,136,135,8,130,8,130,8,130,8,131,136,130, + 8,128,8,255,248,12,9,18,16,2,0,31,128,96,96,134, + 16,134,16,224,112,191,208,169,80,105,96,31,128,12,12,24, + 16,2,0,31,128,96,96,134,16,134,16,224,112,191,208,169, + 80,233,112,191,208,169,80,105,96,31,128,14,11,22,16,1, + 255,31,224,112,56,207,204,188,244,188,244,143,196,160,20,171, + 84,203,76,112,56,31,224,14,14,28,16,1,255,31,224,112, + 56,207,204,188,244,188,244,143,196,160,20,171,84,139,68,160, + 20,171,84,203,76,112,56,31,224}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 15, '1' Height: 13 - Calculated Max Values w=16 h=15 x= 7 y= 4 dx=16 dy= 0 ascent=14 len=30 + Calculated Max Values w=16 h=16 x= 7 y= 5 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 Pure Font ascent =15 descent=-2 @@ -83171,457 +87141,464 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_77[1587] U8G_SECTION(".progmem.u8g_fon Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[6975] U8G_SECTION(".progmem.u8g_font_unifont_78_79") = { - 0,16,16,0,254,15,7,255,11,108,1,255,254,14,254,15, +const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[7084] U8G_FONT_SECTION("u8g_font_unifont_78_79") = { + 0,16,16,0,254,15,8,41,11,207,1,255,254,14,254,15, 254,15,11,22,16,0,2,56,0,124,0,108,0,124,0,60, 0,14,0,127,252,255,254,217,192,248,224,112,0,14,11,22, - 16,0,1,112,8,248,60,216,120,254,240,127,224,7,192,127, - 224,254,240,216,120,248,60,112,8,15,11,22,16,0,255,112, + 16,0,1,112,12,248,56,216,112,254,224,127,192,7,128,127, + 192,254,224,216,112,248,56,112,12,15,11,22,16,0,255,112, 0,248,224,217,192,255,254,127,252,14,0,60,0,124,0,108, 0,124,0,56,0,15,11,22,16,0,1,112,12,136,50,174, 68,129,136,121,16,6,32,120,80,129,136,174,68,136,50,112, - 12,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,15,15,30,16,0,255,7,192,24,48,32, - 8,65,196,71,228,143,242,143,114,158,98,156,2,159,2,79, - 4,70,4,32,8,24,48,7,192,15,15,30,16,0,255,7, - 192,25,48,35,136,67,132,65,4,131,130,135,194,135,194,135, - 194,139,162,92,116,88,52,32,8,24,48,7,192,15,14,28, - 16,0,255,8,0,15,0,6,0,7,192,195,128,227,192,127, - 254,127,254,227,192,195,128,7,192,6,0,15,0,8,0,14, - 7,14,16,1,3,255,252,192,12,176,52,140,196,179,52,192, - 12,255,252,6,14,14,8,1,255,168,84,168,84,168,84,168, - 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, - 84,168,84,168,84,168,84,168,84,168,84,15,15,30,16,0, - 255,24,48,36,72,34,136,18,144,17,16,9,32,8,32,124, - 252,146,130,146,114,146,34,146,66,124,4,32,8,31,240,15, - 13,26,16,1,0,0,16,0,56,0,112,7,238,25,234,35, - 154,71,10,142,10,223,202,36,10,95,250,224,10,192,14,12, - 12,24,16,1,0,48,0,76,0,170,0,149,0,226,128,81, - 64,40,160,20,80,10,80,5,144,2,48,1,240,15,7,14, - 16,0,3,63,240,80,40,143,244,168,22,143,244,80,40,63, - 240,12,12,24,16,1,0,1,240,2,48,5,144,10,80,20, - 80,40,160,81,64,226,128,149,0,170,0,76,0,48,0,15, - 7,14,16,0,3,0,240,121,8,134,108,128,254,134,108,121, - 8,0,240,15,7,14,16,0,3,0,224,121,240,255,56,255, - 14,255,56,121,240,0,224,13,10,20,16,1,255,0,8,0, - 16,0,32,128,64,128,128,65,0,66,0,36,0,40,0,16, - 0,15,11,22,16,0,255,0,4,0,14,64,28,224,56,224, - 112,112,224,113,192,59,128,63,0,30,0,12,0,11,11,22, - 16,2,1,64,64,224,224,113,192,59,128,31,0,14,0,31, - 0,59,128,113,192,224,224,64,64,15,15,30,16,0,255,16, - 16,56,56,124,124,254,254,127,252,63,248,31,240,15,224,31, - 240,63,248,127,252,254,254,124,124,56,56,16,16,12,13,26, - 16,1,0,192,48,96,192,99,128,54,0,28,0,28,0,54, - 0,51,0,97,128,96,192,192,96,192,48,64,0,12,14,28, - 16,1,255,192,48,224,224,99,192,119,0,62,0,28,0,62, - 0,55,0,115,128,97,192,224,224,192,112,192,32,64,0,15, - 15,30,16,0,255,7,192,4,64,5,64,5,64,5,64,253, - 126,129,2,191,250,129,2,253,126,5,64,5,64,5,64,4, - 64,7,192,15,15,30,16,0,255,7,192,7,192,7,192,7, - 192,7,192,255,254,255,254,255,254,255,254,255,254,7,192,7, - 192,7,192,7,192,7,192,15,15,30,16,0,255,3,128,3, - 128,3,128,3,128,3,128,3,128,252,126,252,126,252,126,3, - 128,3,128,3,128,3,128,3,128,3,128,15,15,30,16,0, - 255,7,192,7,192,7,192,7,192,7,192,248,62,248,62,248, - 62,248,62,248,62,7,192,7,192,7,192,7,192,7,192,9, - 11,22,16,3,1,28,0,28,0,28,0,255,128,255,128,255, - 128,28,0,28,0,28,0,28,0,28,0,13,15,30,16,1, - 255,15,0,9,128,9,128,9,128,249,240,128,24,128,24,249, - 248,121,248,9,128,9,128,9,128,9,128,15,128,7,128,13, - 14,28,16,1,255,31,192,16,64,247,120,135,8,191,232,191, - 232,191,232,135,8,247,120,23,64,23,64,23,64,16,64,31, - 192,15,15,30,16,0,255,31,240,7,192,3,128,131,130,131, - 130,195,134,255,254,255,254,255,254,195,134,131,130,131,130,3, - 128,7,192,31,240,15,15,30,16,0,255,1,0,2,128,4, - 64,4,64,255,254,80,20,80,20,32,8,80,20,80,20,255, - 254,4,64,4,64,2,128,1,0,15,15,30,16,0,255,3, - 128,7,192,7,192,3,128,3,128,97,12,249,62,255,254,249, - 62,97,12,3,128,3,128,7,192,7,192,3,128,15,15,30, - 16,0,255,3,128,7,192,7,192,7,192,3,128,113,28,249, - 62,255,254,249,62,113,28,3,128,7,192,7,192,7,192,3, - 128,15,15,30,16,0,255,7,192,15,224,15,224,7,192,99, - 140,243,158,255,254,255,254,255,254,243,158,99,140,7,192,15, - 224,15,224,7,192,16,15,30,16,0,255,1,0,3,128,7, - 192,7,192,1,0,49,12,113,14,255,255,113,14,49,12,1, - 0,7,192,7,192,3,128,1,0,15,15,30,16,0,255,1, - 0,3,128,3,128,7,192,7,192,31,240,127,252,255,254,127, - 252,31,240,7,192,7,192,3,128,3,128,1,0,15,15,30, - 16,0,255,1,0,2,128,2,128,4,64,4,64,24,48,96, - 12,128,2,96,12,24,48,4,64,4,64,2,128,2,128,1, - 0,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,15,12,24,16,0,1,1,0,2,128,2, - 128,252,126,64,4,56,56,8,32,16,16,17,16,38,200,40, - 40,48,24,15,15,30,16,0,255,7,192,31,240,62,248,126, - 252,124,124,192,6,240,30,248,62,240,30,241,30,103,204,111, - 236,63,248,31,240,7,192,15,12,24,16,0,1,1,0,3, - 128,3,128,255,254,124,124,56,56,8,32,28,112,31,240,62, - 248,56,56,48,24,15,12,24,16,0,1,1,0,2,128,2, - 128,252,126,67,132,39,200,23,208,19,144,16,16,39,200,40, - 40,48,24,15,12,24,16,0,1,1,0,2,128,28,112,225, - 14,79,228,35,136,23,208,20,80,17,16,34,136,44,104,48, - 24,15,12,24,16,0,1,1,0,2,128,29,112,227,142,95, - 244,47,232,23,208,22,208,21,80,34,136,44,104,48,24,15, - 13,26,16,0,0,1,0,3,128,5,192,249,254,93,140,39, - 184,19,240,15,208,29,144,25,208,50,232,44,120,48,24,16, - 13,26,16,0,0,1,0,2,128,2,192,255,254,68,71,56, - 62,8,60,22,208,17,24,39,200,47,44,60,28,24,12,15, - 13,26,16,0,0,3,128,3,128,3,128,67,132,243,158,63, - 252,15,240,63,252,243,158,67,132,3,128,3,128,3,128,15, - 13,26,16,0,0,3,128,3,128,3,128,67,132,243,158,60, - 124,8,48,60,124,243,158,67,132,3,128,3,128,3,128,15, - 15,30,16,0,255,1,0,1,0,33,8,17,16,13,96,15, - 224,7,192,255,254,7,192,15,224,13,96,17,16,33,8,1, - 0,1,0,15,15,30,16,0,255,1,0,1,0,33,8,27, - 176,31,240,15,224,31,224,255,254,31,240,15,224,31,240,27, - 176,33,8,1,0,1,0,15,15,30,16,0,255,1,0,2, - 128,60,248,44,200,38,152,50,184,125,76,131,134,77,124,58, - 152,50,200,38,104,62,120,2,128,1,0,13,13,26,16,1, - 0,2,0,2,0,2,0,135,8,119,112,63,224,31,192,63, - 224,119,112,135,8,2,0,2,0,2,0,15,15,30,16,0, - 255,8,32,8,32,12,96,6,192,230,206,59,184,31,240,7, - 192,31,240,59,184,230,206,6,192,12,96,8,32,8,32,15, - 15,30,16,0,255,8,32,12,96,14,224,15,224,255,254,127, - 252,63,248,31,240,63,248,127,252,255,254,15,224,14,224,12, - 96,8,32,15,15,30,16,0,255,1,0,25,48,15,224,79, - 228,127,252,63,248,63,248,255,254,63,248,63,248,127,252,79, - 228,15,224,25,48,1,0,15,15,30,16,0,255,9,32,73, - 36,37,72,21,80,203,166,55,216,15,224,255,254,15,224,55, - 216,203,166,21,80,37,72,73,36,9,32,15,15,30,16,0, - 255,1,0,3,128,3,128,3,128,225,14,113,28,13,96,3, - 128,13,96,113,28,225,14,3,128,3,128,3,128,1,0,15, - 15,30,16,0,255,3,128,7,192,7,192,99,140,241,30,243, - 158,60,120,8,32,60,120,243,158,241,30,99,140,7,192,7, - 192,3,128,15,15,30,16,0,255,3,128,7,192,7,192,99, - 140,243,158,241,30,61,120,7,192,61,120,241,30,243,158,99, - 140,7,192,7,192,3,128,15,15,30,16,0,255,3,128,4, - 64,4,64,116,92,252,126,254,254,127,252,33,8,67,132,135, - 194,143,226,119,220,7,192,7,192,3,128,15,14,28,16,0, - 0,3,128,7,192,15,224,119,220,255,254,252,126,240,30,112, - 28,24,48,62,248,127,252,126,252,126,252,60,120,15,14,28, - 16,0,0,3,128,4,64,9,32,121,60,133,66,179,154,143, - 226,111,236,23,208,39,200,73,36,82,148,66,132,60,120,15, - 15,30,16,0,255,3,128,60,120,69,68,81,20,77,100,111, - 236,134,194,188,122,134,194,111,236,77,100,81,20,69,68,60, - 120,3,128,15,15,30,16,0,255,7,192,30,240,62,248,92, - 116,103,204,252,126,232,46,136,34,232,46,252,126,103,204,92, - 116,62,248,30,240,7,192,15,15,30,16,0,255,3,128,4, - 192,4,192,116,220,188,230,159,158,79,60,63,248,114,100,230, - 114,206,122,118,92,6,64,6,64,3,128,15,13,26,16,0, - 0,1,0,5,64,3,128,201,38,49,24,77,100,3,128,77, - 100,49,24,201,38,3,128,5,64,1,0,15,13,26,16,0, - 0,1,0,5,64,11,160,201,38,49,24,77,100,131,130,77, - 100,49,24,201,38,11,160,5,64,1,0,15,15,30,16,0, - 255,9,32,13,96,7,192,19,144,201,38,49,24,237,110,3, - 128,237,110,49,24,201,38,17,16,7,192,13,96,9,32,14, - 14,28,16,1,255,7,128,71,136,39,144,19,32,11,64,224, - 28,251,124,251,124,224,28,11,64,19,32,39,144,71,136,7, - 128,15,15,30,16,0,255,7,192,71,196,39,200,19,144,11, - 160,224,14,251,190,251,190,251,190,224,14,11,160,19,144,39, - 200,71,196,7,192,15,15,30,16,0,255,3,128,7,192,7, - 192,119,220,251,190,249,62,125,124,7,192,125,124,249,62,251, - 190,119,220,7,192,7,192,3,128,15,15,30,16,0,255,1, - 0,3,128,51,152,49,24,9,32,5,64,99,140,255,254,99, - 140,5,64,9,32,49,24,51,152,3,128,1,0,15,15,30, - 16,0,255,1,0,3,128,51,152,59,184,25,48,7,192,119, - 220,255,254,119,220,7,192,25,48,59,184,51,152,3,128,1, - 0,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,13,13,26,16,2,255,15,0,48,192,64, - 32,64,48,128,16,128,24,128,24,128,24,64,56,64,48,48, - 240,15,224,7,128,6,14,14,8,1,255,168,84,168,84,168, - 84,168,84,168,84,168,84,168,84,12,12,24,16,3,1,255, - 192,128,64,128,112,128,112,128,112,128,112,128,112,128,112,128, - 112,255,240,63,240,63,240,12,12,24,16,3,1,63,240,63, - 240,255,240,128,112,128,112,128,112,128,112,128,112,128,112,128, - 112,128,64,255,192,12,12,24,16,3,1,255,192,128,96,128, - 112,128,112,128,112,128,112,128,112,128,112,128,112,255,240,127, - 240,63,240,12,12,24,16,3,1,63,240,127,240,255,240,128, - 112,128,112,128,112,128,112,128,112,128,112,128,112,128,96,255, - 192,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, - 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, - 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,13,13,26, - 16,1,0,2,0,7,0,15,128,7,0,34,32,112,112,248, - 248,112,112,34,32,7,0,15,128,7,0,2,0,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,2,15,15,16,7,255,192,192,192,192,192,192,192,192,192, - 192,192,192,192,192,192,4,15,15,16,6,255,240,240,240,240, - 240,240,240,240,240,240,240,240,240,240,240,8,15,15,16,4, - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 7,10,10,16,4,4,28,112,192,248,252,254,254,254,124,56, - 7,10,10,16,4,4,56,124,254,254,254,126,62,6,28,112, - 15,10,20,16,0,4,28,28,112,112,192,192,248,248,252,252, - 254,254,254,254,254,254,124,124,56,56,15,10,20,16,0,4, - 56,56,124,124,254,254,254,254,254,254,126,126,62,62,6,6, - 28,28,112,112,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,14,14,28,16, - 1,255,0,32,0,32,31,252,127,240,252,32,252,32,126,32, - 31,224,0,32,96,96,240,64,240,192,99,128,62,0,9,15, - 30,16,3,255,28,0,127,0,255,128,255,128,255,128,127,0, - 28,0,8,0,8,0,0,0,28,0,62,0,62,0,62,0, - 28,0,9,13,26,16,3,0,119,0,255,128,255,128,255,128, - 127,0,28,0,8,0,0,0,28,0,62,0,62,0,62,0, - 28,0,15,13,26,16,0,255,60,120,126,252,255,254,255,254, - 255,254,127,252,127,252,63,248,31,240,15,224,7,192,3,128, - 1,0,13,15,30,16,1,255,56,0,126,0,255,0,255,128, - 255,192,255,224,127,240,63,248,127,240,255,224,255,192,255,128, - 255,0,126,0,56,0,15,14,28,16,0,255,3,0,12,134, - 56,142,103,248,1,0,57,56,126,252,255,254,255,254,127,252, - 63,248,31,226,7,238,0,248,14,15,30,16,1,254,97,152, - 99,200,55,236,23,228,23,252,19,252,115,252,157,248,147,248, - 83,248,103,240,39,240,55,224,19,192,1,128,4,12,12,8, - 3,255,16,32,96,192,192,192,192,192,192,96,32,16,4,12, - 12,8,2,255,128,64,96,48,48,48,48,48,48,96,64,128, - 5,12,12,8,2,255,24,48,112,224,224,224,224,224,224,112, - 48,24,5,12,12,8,2,255,192,96,112,56,56,56,56,56, - 56,112,96,192,5,12,12,8,2,255,24,48,48,96,96,192, - 192,96,96,48,48,24,5,12,12,8,2,255,192,96,96,48, - 48,24,24,48,48,96,96,192,6,12,12,8,2,255,28,56, - 56,112,112,224,224,112,112,56,56,28,6,12,12,8,1,255, - 224,112,112,56,56,28,28,56,56,112,112,224,7,12,12,8, - 1,255,30,60,60,120,120,240,240,120,120,60,60,30,7,12, - 12,8,0,255,240,120,120,60,60,30,30,60,60,120,120,240, - 3,12,12,8,3,255,32,64,128,128,128,128,128,128,128,128, - 64,32,3,12,12,8,2,255,128,64,32,32,32,32,32,32, - 32,32,64,128,6,12,12,8,1,255,60,112,96,96,48,48, - 224,48,48,96,112,60,6,12,12,8,1,255,240,56,24,24, - 48,48,28,48,48,24,56,240,15,15,30,16,0,255,7,192, - 31,240,63,248,126,252,124,252,250,254,254,254,254,254,254,254, - 254,254,126,252,120,60,63,248,31,240,7,192,15,15,30,16, - 0,255,7,192,31,240,63,248,120,60,119,220,255,222,255,222, - 255,62,252,254,251,254,119,220,112,28,63,248,31,240,7,192, - 15,15,30,16,0,255,7,192,31,240,63,248,120,60,119,220, - 255,222,255,222,255,62,255,222,255,222,119,220,120,60,63,248, - 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, - 127,188,127,60,254,190,253,190,251,190,247,190,224,14,127,188, - 126,12,63,248,31,240,7,192,15,15,30,16,0,255,7,192, - 31,240,63,248,112,28,119,252,247,254,240,62,255,222,255,222, - 255,222,119,220,120,60,63,248,31,240,7,192,15,15,30,16, - 0,255,7,192,31,240,63,248,120,60,119,220,247,254,247,254, - 240,62,247,222,247,222,119,220,120,60,63,248,31,240,7,192, - 15,15,30,16,0,255,7,192,31,240,63,248,112,28,119,220, - 255,190,255,190,255,126,254,254,254,254,125,252,125,252,63,248, - 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, - 120,60,119,220,247,222,247,222,248,62,247,222,247,222,119,220, - 120,60,63,248,31,240,7,192,15,15,30,16,0,255,7,192, - 31,240,63,248,120,60,119,220,247,222,247,222,248,30,255,222, - 255,222,119,220,120,60,63,248,31,240,7,192,15,15,30,16, - 0,255,7,192,31,240,63,248,119,28,102,236,246,238,246,238, - 246,238,246,238,246,238,118,236,99,28,63,248,31,240,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,64,132,65,132, - 131,130,129,130,129,130,129,130,129,130,65,132,65,132,32,8, - 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 71,196,79,228,140,98,128,98,129,194,135,2,140,2,79,228, - 79,228,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,71,196,79,228,140,98,128,98,129,194,128,98, - 140,98,79,228,71,196,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,64,228,65,228,131,98,134,98, - 140,98,159,242,159,242,64,100,64,100,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,79,228,79,228, - 140,2,143,194,143,226,128,98,140,98,79,228,71,196,32,8, - 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 71,196,79,228,140,2,143,194,143,226,140,98,140,98,79,228, - 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 24,48,32,8,79,228,79,228,128,98,128,98,128,194,131,130, - 134,2,70,4,70,4,32,8,24,48,7,192,15,15,30,16, - 0,255,7,192,24,48,32,8,71,196,79,228,140,98,140,98, - 135,194,140,98,140,98,79,228,71,196,32,8,24,48,7,192, - 15,15,30,16,0,255,7,192,24,48,32,8,71,196,79,228, - 140,98,140,98,143,226,135,226,128,98,79,228,71,196,32,8, - 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, - 68,228,77,244,157,178,141,178,141,178,141,178,141,178,77,244, - 76,228,32,8,24,48,7,192,15,15,30,16,0,255,7,192, - 31,240,63,248,127,124,126,124,252,126,254,126,254,126,254,126, - 254,126,126,124,126,124,63,248,31,240,7,192,15,15,30,16, - 0,255,7,192,31,240,63,248,120,60,112,28,243,158,255,158, - 254,62,248,254,243,254,112,28,112,28,63,248,31,240,7,192, - 15,15,30,16,0,255,7,192,31,240,63,248,120,60,112,28, - 243,158,255,158,254,62,255,158,243,158,112,28,120,60,63,248, - 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, - 127,28,126,28,252,158,249,158,243,158,224,14,224,14,127,156, - 127,156,63,248,31,240,7,192,15,15,30,16,0,255,7,192, - 31,240,63,248,112,28,112,28,243,254,240,62,240,30,255,158, - 243,158,112,28,120,60,63,248,31,240,7,192,15,15,30,16, - 0,255,7,192,31,240,63,248,120,60,112,28,243,254,240,62, - 240,30,243,158,243,158,112,28,120,60,63,248,31,240,7,192, - 15,15,30,16,0,255,7,192,31,240,63,248,112,28,112,28, - 255,158,255,158,255,62,252,126,249,254,121,252,121,252,63,248, - 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, - 120,60,112,28,243,158,243,158,248,62,243,158,243,158,112,28, - 120,60,63,248,31,240,7,192,15,15,30,16,0,255,7,192, - 31,240,63,248,120,60,112,28,243,158,243,158,240,30,248,30, - 255,158,112,28,120,60,63,248,31,240,7,192,15,15,30,16, - 0,255,7,192,31,240,63,248,123,28,114,12,226,78,242,78, - 242,78,242,78,242,78,114,12,115,28,63,248,31,240,7,192, - 15,13,26,16,0,0,31,128,15,192,7,224,3,240,255,248, - 255,252,255,254,255,252,255,248,3,240,7,224,15,192,31,128, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, - 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,11,11,22,16, - 2,1,32,0,112,0,248,0,120,0,60,128,12,128,3,128, - 3,192,15,192,1,192,0,32,15,9,18,16,0,2,1,0, - 1,128,224,192,252,240,255,254,252,240,224,192,1,128,1,0, - 11,11,22,16,2,0,0,32,1,192,15,192,3,192,3,128, - 12,128,60,128,120,0,248,0,112,0,32,0,15,9,18,16, - 0,2,2,0,1,0,1,192,0,240,255,254,0,240,1,192, - 1,0,2,0,15,13,26,16,0,0,0,192,1,224,1,240, - 0,248,127,252,255,254,255,254,255,254,127,252,0,248,1,240, - 1,224,0,192,15,11,22,16,0,1,0,16,0,16,0,24, - 0,24,255,252,255,254,255,252,0,24,0,24,0,16,0,16, - 15,13,26,16,0,0,0,16,0,16,0,24,0,24,255,252, - 255,252,255,254,255,252,255,252,0,24,0,24,0,16,0,16, - 15,9,18,16,0,2,0,32,0,48,0,56,170,252,170,254, - 170,252,0,56,0,48,0,32,15,9,18,16,0,2,0,32, - 0,48,170,248,170,252,170,254,170,252,170,248,0,48,0,32, - 15,9,18,16,0,2,0,32,0,48,0,56,255,252,255,254, - 255,252,0,56,0,48,0,32,14,15,30,16,1,255,128,0, - 224,0,88,0,70,0,33,128,32,96,16,24,15,252,31,248, - 63,224,63,128,126,0,120,0,224,0,128,0,14,15,30,16, - 1,255,128,0,224,0,120,0,126,0,63,128,63,224,31,248, - 15,252,16,24,32,96,33,128,70,0,88,0,224,0,128,0, - 14,15,30,16,1,255,128,0,224,0,120,0,126,0,63,128, - 63,224,31,248,15,252,31,248,63,224,63,128,126,0,120,0, - 224,0,128,0,15,8,16,16,0,3,128,0,128,16,192,24, - 127,252,127,254,63,252,0,24,0,16,15,8,16,16,0,2, - 0,16,0,24,63,252,127,254,127,252,192,24,128,16,128,0, - 7,13,13,16,5,0,16,16,24,248,252,252,254,252,252,248, - 24,16,16,15,9,18,16,0,2,0,64,0,64,255,224,255, - 240,255,254,255,240,255,224,0,64,0,64,14,9,18,16,1, - 2,0,192,0,224,255,176,128,24,128,12,128,24,255,176,0, - 224,0,192,14,9,18,16,1,2,0,192,0,224,255,208,192, - 8,192,4,192,8,255,208,0,224,0,192,15,13,26,16,0, - 255,0,8,0,24,0,36,0,68,63,130,64,2,128,6,255, - 30,254,124,5,240,15,192,15,0,12,0,15,13,26,16,0, - 0,12,0,15,0,15,192,5,240,254,124,255,30,128,6,64, - 2,63,130,0,68,0,36,0,24,0,8,15,12,24,16,0, - 0,0,128,0,192,255,160,128,16,128,8,128,4,128,14,128, - 28,255,184,127,240,0,224,0,64,15,12,24,16,0,1,0, - 64,0,224,127,240,255,184,128,28,128,14,128,4,128,8,128, - 16,255,160,0,192,0,128,16,12,24,16,0,0,0,64,0, - 96,0,80,255,200,64,4,64,2,64,7,255,206,127,220,0, - 120,0,112,0,32,6,14,14,8,1,255,168,84,168,84,168, - 84,168,84,168,84,168,84,168,84,16,12,24,16,0,1,0, - 32,0,112,0,120,127,220,255,206,64,7,64,2,64,4,255, - 200,0,80,0,96,0,64,14,15,30,16,1,255,15,128,63, - 224,126,240,254,120,254,56,0,28,0,12,0,4,0,12,0, - 28,254,56,254,120,126,240,63,224,15,128,15,7,14,16,0, - 3,254,0,73,8,36,140,31,254,36,140,73,8,254,0,11, - 11,22,16,2,1,16,0,24,0,28,0,252,0,124,0,60, - 32,2,32,1,96,0,224,1,224,7,224,14,5,10,16,1, - 4,248,16,124,24,63,252,124,24,248,16,11,11,22,16,2, - 0,7,224,1,224,0,224,1,96,2,32,60,32,124,0,252, - 0,28,0,24,0,16,0,11,11,22,16,2,1,8,0,12, - 0,14,0,14,0,254,32,126,32,63,96,3,224,1,224,3, - 224,15,224,15,9,18,16,0,2,0,32,252,16,126,24,63, - 252,31,254,63,252,126,24,252,16,0,32,11,11,22,16,2, - 0,15,224,3,224,1,224,3,224,63,96,126,32,254,32,14, - 0,14,0,12,0,8,0,15,11,22,16,0,1,0,96,0, - 240,0,240,120,56,255,12,255,254,255,12,120,56,0,240,0, - 240,0,96,15,9,18,16,0,2,0,64,96,224,120,240,252, - 120,255,254,252,120,120,240,96,224,0,64,15,7,14,16,0, - 3,248,16,124,24,62,28,31,254,62,28,124,24,248,16,15, - 9,18,16,0,2,248,96,252,112,126,120,127,252,63,254,127, - 252,126,120,252,112,248,96,15,9,18,16,0,2,2,32,1, - 16,0,136,255,196,0,2,255,196,0,136,1,16,2,32,6, - 14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,168, - 84,168,84,6,6,6,8,1,0,128,136,144,160,192,252,11, - 12,24,16,2,0,4,0,10,0,10,0,17,0,17,0,36, - 128,42,128,74,64,81,64,159,32,128,32,255,224,5,6,6, - 8,1,0,32,32,32,32,32,248,10,8,16,16,3,1,63, - 192,64,0,129,128,130,64,130,64,129,128,64,0,63,192,10, - 8,16,16,3,1,255,0,0,128,96,64,144,64,144,64,96, - 64,0,128,255,0,5,10,10,8,2,0,112,136,136,16,16, - 32,32,64,64,56,5,10,10,8,2,0,112,136,136,64,64, - 32,32,16,16,224,7,8,8,8,0,0,130,130,84,68,40, - 40,16,16,14,8,16,16,1,1,129,252,130,0,68,0,68, - 0,36,0,36,0,18,0,17,252,14,8,16,16,1,1,254, - 4,1,4,0,136,0,136,0,144,0,144,1,32,254,32,3, - 10,10,8,2,0,64,64,64,64,224,64,64,64,64,64,6, - 14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,168, - 84,168,84,12,14,28,16,2,254,255,240,128,0,64,0,64, - 0,32,0,32,0,32,0,32,0,32,0,32,0,64,0,64, - 0,128,0,128,0,6,14,14,8,1,255,168,84,168,84,168, - 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, - 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, - 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, - 84,9,9,18,16,4,0,8,0,20,0,34,0,65,0,136, - 128,65,0,34,0,20,0,8,0,7,8,8,8,0,0,16, - 16,40,40,68,84,130,130,9,10,20,16,3,0,136,128,136, - 128,136,128,136,128,136,128,136,128,136,128,136,128,73,0,62, - 0,6,6,6,8,1,0,4,4,36,4,4,252,6,6,6, - 8,1,0,252,128,128,144,128,128,12,10,20,16,2,0,224, - 16,48,48,40,80,36,144,35,16,35,16,36,144,40,80,48, - 48,224,16,12,10,20,16,2,0,128,112,192,192,161,64,146, - 64,140,64,140,64,146,64,161,64,192,192,128,112,14,10,20, - 16,1,0,224,28,48,48,40,80,36,144,35,16,35,16,36, - 144,40,80,48,48,224,28,9,12,24,16,3,0,8,0,8, - 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, - 0,8,0,255,128,9,12,24,16,3,0,255,128,8,0,8, - 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, - 0,8,0,13,7,14,16,1,2,5,0,5,0,253,248,5, - 0,253,248,5,0,5,0,13,7,14,16,1,2,5,0,5, - 0,5,0,253,248,5,0,5,0,5,0,14,3,6,16,1, - 4,64,0,191,252,64,0,14,3,6,16,1,4,128,0,255, - 252,128,0,14,3,6,16,1,4,0,4,255,252,0,4,3, - 11,11,16,7,255,64,160,64,64,64,64,64,64,64,64,224, - 7,11,11,8,0,0,16,40,40,68,68,254,68,68,40,40, - 16,13,13,26,16,1,0,2,0,5,0,5,0,8,128,16, - 64,96,48,128,8,96,48,16,64,8,128,5,0,5,0,2, - 0,15,13,26,16,0,0,0,128,1,64,1,64,2,32,4, - 16,24,12,224,2,24,12,4,16,2,32,1,64,1,64,0, - 128,15,13,26,16,1,0,2,0,5,0,5,0,8,128,16, - 64,96,48,128,14,96,48,16,64,8,128,5,0,5,0,2, - 0,15,13,26,16,0,0,31,254,16,2,16,2,16,2,16, - 2,16,2,240,2,16,2,16,2,16,2,16,2,16,2,31, - 254,15,13,26,16,1,0,255,240,128,16,128,16,128,16,128, - 16,128,16,128,30,128,16,128,16,128,16,128,16,128,16,255, - 240,5,13,13,8,2,0,248,160,160,160,160,160,160,160,160, - 160,160,160,248,5,13,13,8,1,0,248,40,40,40,40,40, - 40,40,40,40,40,40,248,4,12,12,8,2,0,16,32,32, - 64,64,128,128,64,64,32,32,16,4,12,12,8,2,0,128, - 64,64,32,32,16,16,32,32,64,64,128,6,12,12,8,1, - 0,20,40,40,80,80,160,160,80,80,40,40,20,6,12,12, - 8,1,0,160,80,80,40,40,20,20,40,40,80,80,160,4, - 12,12,8,3,255,16,32,96,160,160,160,160,160,160,96,32, - 16,4,12,12,8,1,255,128,64,96,80,80,80,80,80,80, - 96,64,128,3,12,12,8,4,255,32,64,128,128,128,128,128, - 128,128,128,64,32,3,12,12,8,1,255,128,64,32,32,32, - 32,32,32,32,32,64,128,11,12,24,16,2,0,4,0,10, - 0,27,0,42,128,106,192,170,160,42,128,42,128,42,128,42, - 128,42,128,42,128,11,12,24,16,2,0,42,128,42,128,42, - 128,42,128,42,128,42,128,170,160,106,192,42,128,27,0,10, - 0,4,0,12,10,20,16,2,1,7,128,8,64,16,32,32, - 16,168,16,112,16,32,16,0,32,8,64,7,128,12,10,20, - 16,2,1,30,0,33,0,64,128,128,64,129,80,128,224,128, - 64,64,0,33,0,30,0,15,7,14,16,0,2,3,128,5, - 72,9,36,255,254,9,36,5,72,3,128,15,5,10,16,0, - 3,32,0,64,0,255,254,64,0,32,0,15,5,10,16,0, - 3,0,8,0,4,255,254,0,4,0,8,14,5,10,16,0, - 3,32,16,64,8,255,252,64,8,32,16,15,7,14,16,0, - 2,16,0,32,0,127,254,128,0,127,254,32,0,16,0,15, - 7,14,16,0,2,0,16,0,8,255,252,0,2,255,252,0, - 8,0,16,14,7,14,16,0,2,16,32,32,16,127,248,128, - 4,127,248,32,16,16,32,14,5,10,16,0,3,32,4,64, - 4,255,252,64,4,32,4,14,5,10,16,1,3,128,16,128, - 8,255,252,128,8,128,16,14,7,14,16,0,2,16,4,32, - 4,127,252,128,4,127,252,32,4,16,4,14,7,14,16,1, - 2,128,32,128,16,255,248,128,4,255,248,128,16,128,32,15, - 5,10,16,0,3,0,8,34,36,213,94,8,132,0,8}; + 12,14,11,22,16,1,255,0,8,0,20,0,36,0,72,64, + 144,161,32,162,64,84,128,73,0,34,0,28,0,15,15,30, + 16,0,255,7,192,24,48,32,8,65,196,71,228,143,242,143, + 114,158,98,156,2,159,2,79,4,70,4,32,8,24,48,7, + 192,15,15,30,16,0,255,7,192,25,48,35,136,67,132,65, + 4,131,130,135,194,135,194,135,194,139,162,92,116,88,52,32, + 8,24,48,7,192,15,14,28,16,0,255,8,0,15,0,6, + 0,7,192,195,128,227,192,127,254,127,254,227,192,195,128,7, + 192,6,0,15,0,8,0,14,7,14,16,1,3,255,252,192, + 12,176,52,140,196,179,52,192,12,255,252,13,11,22,16,1, + 255,6,192,25,32,41,32,107,240,170,8,169,200,169,136,110, + 8,80,16,32,32,31,192,14,13,26,16,1,0,21,0,42, + 128,42,128,106,128,170,128,170,152,170,164,128,68,128,8,128, + 16,64,32,32,32,31,192,15,15,30,16,0,255,24,48,36, + 72,34,136,18,144,17,16,9,32,8,32,124,252,146,130,146, + 114,146,34,146,66,124,4,32,8,31,240,15,13,26,16,1, + 0,0,16,0,56,0,112,7,238,25,234,35,154,71,10,142, + 10,223,202,36,10,95,250,224,10,192,14,12,12,24,16,1, + 0,48,0,76,0,170,0,149,0,226,128,81,64,40,160,20, + 80,10,80,5,144,2,48,1,240,15,7,14,16,0,3,63, + 240,80,40,143,244,168,22,143,244,80,40,63,240,12,12,24, + 16,1,0,1,240,2,48,5,144,10,80,20,80,40,160,81, + 64,226,128,149,0,170,0,76,0,48,0,15,7,14,16,0, + 3,0,240,121,8,134,108,128,254,134,108,121,8,0,240,15, + 7,14,16,0,3,0,224,121,240,255,56,255,14,255,56,121, + 240,0,224,13,10,20,16,1,255,0,8,0,16,0,32,128, + 64,128,128,65,0,66,0,36,0,40,0,16,0,15,11,22, + 16,0,255,0,4,0,14,64,28,224,56,224,112,112,224,113, + 192,59,128,63,0,30,0,12,0,11,11,22,16,2,1,64, + 64,224,224,113,192,59,128,31,0,14,0,31,0,59,128,113, + 192,224,224,64,64,15,15,30,16,0,255,16,16,56,56,124, + 124,254,254,127,252,63,248,31,240,15,224,31,240,63,248,127, + 252,254,254,124,124,56,56,16,16,12,13,26,16,1,0,192, + 48,96,192,99,128,54,0,28,0,28,0,54,0,51,0,97, + 128,96,192,192,96,192,48,64,0,12,14,28,16,1,255,192, + 48,224,224,99,192,119,0,62,0,28,0,62,0,55,0,115, + 128,97,192,224,224,192,112,192,32,64,0,15,15,30,16,0, + 255,7,192,4,64,5,64,5,64,5,64,253,126,129,2,191, + 250,129,2,253,126,5,64,5,64,5,64,4,64,7,192,15, + 15,30,16,0,255,7,192,7,192,7,192,7,192,7,192,255, + 254,255,254,255,254,255,254,255,254,7,192,7,192,7,192,7, + 192,7,192,15,15,30,16,0,255,3,128,3,128,3,128,3, + 128,3,128,3,128,252,126,252,126,252,126,3,128,3,128,3, + 128,3,128,3,128,3,128,15,15,30,16,0,255,7,192,7, + 192,7,192,7,192,7,192,248,62,248,62,248,62,248,62,248, + 62,7,192,7,192,7,192,7,192,7,192,9,11,22,16,3, + 1,28,0,28,0,28,0,255,128,255,128,255,128,28,0,28, + 0,28,0,28,0,28,0,13,15,30,16,1,255,15,0,9, + 128,9,128,9,128,249,240,128,24,128,24,249,248,121,248,9, + 128,9,128,9,128,9,128,15,128,7,128,13,14,28,16,1, + 255,31,192,16,64,247,120,135,8,191,232,191,232,191,232,135, + 8,247,120,23,64,23,64,23,64,16,64,31,192,15,15,30, + 16,0,255,31,240,7,192,3,128,131,130,131,130,195,134,255, + 254,255,254,255,254,195,134,131,130,131,130,3,128,7,192,31, + 240,15,15,30,16,0,255,1,0,1,0,2,128,255,254,68, + 68,40,40,40,40,16,16,40,40,40,40,68,68,255,254,2, + 128,1,0,1,0,15,15,30,16,0,255,3,128,7,192,7, + 192,3,128,3,128,97,12,249,62,255,254,249,62,97,12,3, + 128,3,128,7,192,7,192,3,128,15,15,30,16,0,255,3, + 128,7,192,7,192,7,192,3,128,113,28,249,62,255,254,249, + 62,113,28,3,128,7,192,7,192,7,192,3,128,15,15,30, + 16,0,255,7,192,15,224,15,224,7,192,99,140,243,158,255, + 254,255,254,255,254,243,158,99,140,7,192,15,224,15,224,7, + 192,16,15,30,16,0,255,1,0,3,128,7,192,7,192,1, + 0,49,12,113,14,255,255,113,14,49,12,1,0,7,192,7, + 192,3,128,1,0,15,15,30,16,0,255,1,0,3,128,3, + 128,7,192,7,192,31,240,127,252,255,254,127,252,31,240,7, + 192,7,192,3,128,3,128,1,0,15,15,30,16,0,255,1, + 0,2,128,2,128,4,64,4,64,24,48,96,12,128,2,96, + 12,24,48,4,64,4,64,2,128,2,128,1,0,14,14,28, + 16,1,255,8,0,8,0,20,0,34,0,193,128,34,32,20, + 32,8,80,9,140,0,80,0,32,2,32,5,0,2,0,15, + 12,24,16,0,1,1,0,2,128,2,128,252,126,64,4,56, + 56,8,32,16,16,17,16,38,200,40,40,48,24,15,15,30, + 16,0,255,7,192,31,240,62,248,126,252,124,124,192,6,240, + 30,248,62,240,30,241,30,103,204,111,236,63,248,31,240,7, + 192,15,12,24,16,0,1,1,0,3,128,3,128,255,254,124, + 124,56,56,8,32,28,112,31,240,62,248,56,56,48,24,15, + 12,24,16,0,1,1,0,2,128,2,128,252,126,67,132,39, + 200,23,208,19,144,16,16,39,200,40,40,48,24,15,12,24, + 16,0,1,1,0,2,128,28,112,225,14,79,228,35,136,23, + 208,20,80,17,16,34,136,44,104,48,24,15,12,24,16,0, + 1,1,0,2,128,29,112,227,142,95,244,47,232,23,208,22, + 208,21,80,34,136,44,104,48,24,15,13,26,16,0,0,1, + 0,3,128,5,192,249,254,93,140,39,184,19,240,15,208,29, + 144,25,208,50,232,44,120,48,24,16,13,26,16,0,0,1, + 0,2,128,2,192,255,254,68,71,56,62,8,60,22,208,17, + 24,39,200,47,44,60,28,24,12,15,13,26,16,0,0,3, + 128,3,128,3,128,67,132,243,158,63,252,15,240,63,252,243, + 158,67,132,3,128,3,128,3,128,15,13,26,16,0,0,3, + 128,3,128,3,128,67,132,243,158,60,124,8,48,60,124,243, + 158,67,132,3,128,3,128,3,128,15,15,30,16,0,255,1, + 0,1,0,33,8,17,16,13,96,15,224,7,192,255,254,7, + 192,15,224,13,96,17,16,33,8,1,0,1,0,15,15,30, + 16,0,255,1,0,1,0,33,8,27,176,31,240,15,224,31, + 224,255,254,31,240,15,224,31,240,27,176,33,8,1,0,1, + 0,15,15,30,16,0,255,1,0,2,128,60,248,44,200,38, + 152,50,184,125,76,131,134,77,124,58,152,50,200,38,104,62, + 120,2,128,1,0,13,13,26,16,1,0,2,0,2,0,2, + 0,135,8,119,112,63,224,31,192,63,224,119,112,135,8,2, + 0,2,0,2,0,15,15,30,16,0,255,8,32,8,32,12, + 96,6,192,230,206,59,184,31,240,7,192,31,240,59,184,230, + 206,6,192,12,96,8,32,8,32,15,15,30,16,0,255,8, + 32,12,96,14,224,15,224,255,254,127,252,63,248,31,240,63, + 248,127,252,255,254,15,224,14,224,12,96,8,32,15,15,30, + 16,0,255,1,0,25,48,15,224,79,228,127,252,63,248,63, + 248,255,254,63,248,63,248,127,252,79,228,15,224,25,48,1, + 0,15,15,30,16,0,255,9,32,73,36,37,72,21,80,203, + 166,55,216,15,224,255,254,15,224,55,216,203,166,21,80,37, + 72,73,36,9,32,15,15,30,16,0,255,1,0,3,128,3, + 128,3,128,225,14,113,28,13,96,3,128,13,96,113,28,225, + 14,3,128,3,128,3,128,1,0,15,15,30,16,0,255,3, + 128,7,192,7,192,99,140,241,30,243,158,60,120,8,32,60, + 120,243,158,241,30,99,140,7,192,7,192,3,128,15,15,30, + 16,0,255,3,128,7,192,7,192,99,140,243,158,241,30,61, + 120,7,192,61,120,241,30,243,158,99,140,7,192,7,192,3, + 128,15,15,30,16,0,255,3,128,4,64,4,64,116,92,252, + 126,254,254,127,252,33,8,67,132,135,194,143,226,119,220,7, + 192,7,192,3,128,15,14,28,16,0,0,3,128,7,192,15, + 224,119,220,255,254,252,126,240,30,112,28,24,48,62,248,127, + 252,126,252,126,252,60,120,15,14,28,16,0,0,3,128,4, + 64,9,32,121,60,133,66,179,154,143,226,111,236,23,208,39, + 200,73,36,82,148,66,132,60,120,15,15,30,16,0,255,3, + 128,60,120,69,68,81,20,77,100,111,236,134,194,188,122,134, + 194,111,236,77,100,81,20,69,68,60,120,3,128,15,15,30, + 16,0,255,7,192,30,240,62,248,92,116,103,204,252,126,232, + 46,136,34,232,46,252,126,103,204,92,116,62,248,30,240,7, + 192,15,15,30,16,0,255,3,128,4,192,4,192,116,220,188, + 230,159,158,79,60,63,248,114,100,230,114,206,122,118,92,6, + 64,6,64,3,128,15,13,26,16,0,0,1,0,5,64,3, + 128,201,38,49,24,77,100,3,128,77,100,49,24,201,38,3, + 128,5,64,1,0,15,13,26,16,0,0,1,0,5,64,11, + 160,201,38,49,24,77,100,131,130,77,100,49,24,201,38,11, + 160,5,64,1,0,15,15,30,16,0,255,9,32,13,96,7, + 192,19,144,201,38,49,24,237,110,3,128,237,110,49,24,201, + 38,17,16,7,192,13,96,9,32,14,14,28,16,1,255,7, + 128,71,136,39,144,19,32,11,64,224,28,251,124,251,124,224, + 28,11,64,19,32,39,144,71,136,7,128,15,15,30,16,0, + 255,7,192,71,196,39,200,19,144,11,160,224,14,251,190,251, + 190,251,190,224,14,11,160,19,144,39,200,71,196,7,192,15, + 15,30,16,0,255,3,128,7,192,7,192,119,220,251,190,249, + 62,125,124,7,192,125,124,249,62,251,190,119,220,7,192,7, + 192,3,128,15,15,30,16,0,255,1,0,3,128,51,152,49, + 24,9,32,5,64,99,140,255,254,99,140,5,64,9,32,49, + 24,51,152,3,128,1,0,15,15,30,16,0,255,1,0,3, + 128,51,152,59,184,25,48,7,192,119,220,255,254,119,220,7, + 192,25,48,59,184,51,152,3,128,1,0,11,11,22,16,2, + 1,96,192,241,224,123,192,63,128,31,0,31,0,63,128,123, + 192,241,224,224,224,64,64,13,13,26,16,2,255,15,0,48, + 192,64,32,64,48,128,16,128,24,128,24,128,24,64,56,64, + 48,48,240,15,224,7,128,13,13,26,16,0,0,255,248,223, + 216,143,136,199,24,226,56,240,120,248,248,240,120,226,56,199, + 24,143,136,223,216,255,248,12,12,24,16,3,1,255,192,128, + 64,128,112,128,112,128,112,128,112,128,112,128,112,128,112,255, + 240,63,240,63,240,12,12,24,16,3,1,63,240,63,240,255, + 240,128,112,128,112,128,112,128,112,128,112,128,112,128,112,128, + 64,255,192,12,12,24,16,3,1,255,192,128,96,128,112,128, + 112,128,112,128,112,128,112,128,112,128,112,255,240,127,240,63, + 240,12,12,24,16,3,1,63,240,127,240,255,240,128,112,128, + 112,128,112,128,112,128,112,128,112,128,112,128,96,255,192,9, + 15,30,16,3,254,28,0,127,0,243,128,193,128,199,128,15, + 0,28,0,24,0,24,0,24,0,0,0,24,0,60,0,60, + 0,24,0,9,16,32,16,3,254,62,0,65,0,156,128,162, + 128,66,128,4,128,9,0,18,0,20,0,20,0,28,0,0, + 0,28,0,34,0,34,0,28,0,7,15,15,16,4,255,56, + 108,198,130,198,68,108,40,40,56,0,56,68,68,56,13,13, + 26,16,1,0,2,0,7,0,15,128,7,0,34,32,112,112, + 248,248,112,112,34,32,7,0,15,128,7,0,2,0,4,14, + 14,16,6,0,96,240,240,240,240,240,240,96,96,96,96,0, + 96,96,2,15,15,16,7,255,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,4,15,15,16,6,255,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,8,15,15,16, + 4,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,7,10,10,16,4,4,28,112,192,248,252,254,254,254,124, + 56,7,10,10,16,4,4,56,124,254,254,254,126,62,6,28, + 112,15,10,20,16,0,4,28,28,112,112,192,192,248,248,252, + 252,254,254,254,254,254,254,124,124,56,56,15,10,20,16,0, + 4,56,56,124,124,254,254,254,254,254,254,126,126,62,62,6, + 6,28,28,112,112,7,10,10,16,3,0,56,124,254,254,254, + 126,62,6,28,112,15,10,20,16,0,0,56,56,124,124,254, + 254,254,254,254,254,126,126,62,62,6,6,28,28,112,112,14, + 14,28,16,1,255,0,32,0,32,31,252,127,240,252,32,252, + 32,126,32,31,224,0,32,96,96,240,64,240,192,99,128,62, + 0,9,15,30,16,3,255,28,0,127,0,255,128,255,128,255, + 128,127,0,28,0,8,0,8,0,0,0,28,0,62,0,62, + 0,62,0,28,0,9,13,26,16,3,0,119,0,255,128,255, + 128,255,128,127,0,28,0,8,0,0,0,28,0,62,0,62, + 0,62,0,28,0,15,13,26,16,0,255,60,120,126,252,255, + 254,255,254,255,254,127,252,127,252,63,248,31,240,15,224,7, + 192,3,128,1,0,13,15,30,16,1,255,56,0,126,0,255, + 0,255,128,255,192,255,224,127,240,63,248,127,240,255,224,255, + 192,255,128,255,0,126,0,56,0,15,14,28,16,0,255,3, + 0,12,134,56,142,103,248,1,0,57,56,126,252,255,254,255, + 254,127,252,63,248,31,226,7,238,0,248,14,15,30,16,1, + 254,97,152,99,200,55,236,23,228,23,252,19,252,115,252,157, + 248,147,248,83,248,103,240,39,240,55,224,19,192,1,128,4, + 12,12,8,3,255,16,32,96,192,192,192,192,192,192,96,32, + 16,4,12,12,8,2,255,128,64,96,48,48,48,48,48,48, + 96,64,128,5,12,12,8,2,255,24,48,112,224,224,224,224, + 224,224,112,48,24,5,12,12,8,2,255,192,96,112,56,56, + 56,56,56,56,112,96,192,5,12,12,8,2,255,24,48,48, + 96,96,192,192,96,96,48,48,24,5,12,12,8,2,255,192, + 96,96,48,48,24,24,48,48,96,96,192,6,12,12,8,2, + 255,28,56,56,112,112,224,224,112,112,56,56,28,6,12,12, + 8,1,255,224,112,112,56,56,28,28,56,56,112,112,224,7, + 12,12,8,1,255,30,60,60,120,120,240,240,120,120,60,60, + 30,7,12,12,8,0,255,240,120,120,60,60,30,30,60,60, + 120,120,240,3,12,12,8,3,255,32,64,128,128,128,128,128, + 128,128,128,64,32,3,12,12,8,2,255,128,64,32,32,32, + 32,32,32,32,32,64,128,6,12,12,8,1,255,60,112,96, + 96,48,48,224,48,48,96,112,60,6,12,12,8,1,255,240, + 56,24,24,48,48,28,48,48,24,56,240,15,15,30,16,0, + 255,7,192,31,240,63,248,126,252,124,252,250,254,254,254,254, + 254,254,254,254,254,126,252,120,60,63,248,31,240,7,192,15, + 15,30,16,0,255,7,192,31,240,63,248,124,124,123,188,251, + 190,255,190,255,126,254,254,253,254,123,252,120,60,63,248,31, + 240,7,192,15,15,30,16,0,255,7,192,31,240,63,248,124, + 124,123,188,251,190,255,190,254,126,255,190,251,190,123,188,124, + 124,63,248,31,240,7,192,15,15,30,16,0,255,7,192,31, + 240,63,248,127,124,126,124,253,126,251,126,247,126,240,62,255, + 126,127,124,127,124,63,248,31,240,7,192,15,15,30,16,0, + 255,7,192,31,240,63,248,120,60,123,252,251,254,251,254,248, + 126,255,190,255,190,123,188,124,124,63,248,31,240,7,192,15, + 15,30,16,0,255,7,192,31,240,63,248,126,124,125,252,251, + 254,251,254,248,126,251,190,251,190,123,188,124,124,63,248,31, + 240,7,192,15,15,30,16,0,255,7,192,31,240,63,248,120, + 60,127,188,255,190,255,126,255,126,255,126,254,254,126,252,126, + 252,63,248,31,240,7,192,15,15,30,16,0,255,7,192,31, + 240,63,248,124,124,123,188,251,190,251,190,252,126,251,190,251, + 190,123,188,124,124,63,248,31,240,7,192,15,15,30,16,0, + 255,7,192,31,240,63,248,124,124,123,188,251,190,251,190,252, + 62,255,190,255,190,127,124,124,252,63,248,31,240,7,192,15, + 15,30,16,0,255,7,192,31,240,63,248,127,252,123,156,243, + 110,235,110,251,110,251,110,251,110,96,156,127,252,63,248,31, + 240,7,192,15,15,30,16,0,255,7,192,24,48,32,8,64, + 132,65,132,131,130,129,130,129,130,129,130,129,130,65,132,65, + 132,32,8,24,48,7,192,15,15,30,16,0,255,7,192,24, + 48,32,8,71,196,79,228,140,98,128,98,129,194,135,2,140, + 2,79,228,79,228,32,8,24,48,7,192,15,15,30,16,0, + 255,7,192,24,48,32,8,71,196,79,228,140,98,128,98,129, + 194,128,98,140,98,79,228,71,196,32,8,24,48,7,192,15, + 15,30,16,0,255,7,192,24,48,32,8,64,228,65,228,131, + 98,134,98,140,98,159,242,159,242,64,100,64,100,32,8,24, + 48,7,192,15,15,30,16,0,255,7,192,24,48,32,8,79, + 228,79,228,140,2,143,194,143,226,128,98,140,98,79,228,71, + 196,32,8,24,48,7,192,15,15,30,16,0,255,7,192,24, + 48,32,8,71,196,79,228,140,2,143,194,143,226,140,98,140, + 98,79,228,71,196,32,8,24,48,7,192,15,15,30,16,0, + 255,7,192,24,48,32,8,79,228,79,228,128,98,128,98,128, + 194,131,130,134,2,70,4,70,4,32,8,24,48,7,192,15, + 15,30,16,0,255,7,192,24,48,32,8,71,196,79,228,140, + 98,140,98,135,194,140,98,140,98,79,228,71,196,32,8,24, + 48,7,192,15,15,30,16,0,255,7,192,24,48,32,8,71, + 196,79,228,140,98,140,98,143,226,135,226,128,98,79,228,71, + 196,32,8,24,48,7,192,15,15,30,16,0,255,7,192,24, + 48,32,8,68,228,77,244,157,178,141,178,141,178,141,178,141, + 178,77,244,76,228,32,8,24,48,7,192,15,15,30,16,0, + 255,7,192,31,240,63,248,127,124,126,124,252,126,254,126,254, + 126,254,126,254,126,126,124,126,124,63,248,31,240,7,192,15, + 15,30,16,0,255,7,192,31,240,63,248,120,60,112,28,243, + 158,255,158,254,62,248,254,243,254,112,28,112,28,63,248,31, + 240,7,192,15,15,30,16,0,255,7,192,31,240,63,248,120, + 60,112,28,243,158,255,158,254,62,255,158,243,158,112,28,120, + 60,63,248,31,240,7,192,15,15,30,16,0,255,7,192,31, + 240,63,248,127,28,126,28,252,158,249,158,243,158,224,14,224, + 14,127,156,127,156,63,248,31,240,7,192,15,15,30,16,0, + 255,7,192,31,240,63,248,112,28,112,28,243,254,240,62,240, + 30,255,158,243,158,112,28,120,60,63,248,31,240,7,192,15, + 15,30,16,0,255,7,192,31,240,63,248,120,60,112,28,243, + 254,240,62,240,30,243,158,243,158,112,28,120,60,63,248,31, + 240,7,192,15,15,30,16,0,255,7,192,31,240,63,248,112, + 28,112,28,255,158,255,158,255,62,252,126,249,254,121,252,121, + 252,63,248,31,240,7,192,15,15,30,16,0,255,7,192,31, + 240,63,248,120,60,112,28,243,158,243,158,248,62,243,158,243, + 158,112,28,120,60,63,248,31,240,7,192,15,15,30,16,0, + 255,7,192,31,240,63,248,120,60,112,28,243,158,243,158,240, + 30,248,30,255,158,112,28,120,60,63,248,31,240,7,192,15, + 15,30,16,0,255,7,192,31,240,63,248,123,28,114,12,226, + 78,242,78,242,78,242,78,242,78,114,12,115,28,63,248,31, + 240,7,192,15,13,26,16,0,0,31,128,15,192,7,224,3, + 240,255,248,255,252,255,254,255,252,255,248,3,240,7,224,15, + 192,31,128,11,11,22,16,2,1,14,0,14,0,14,0,14, + 0,255,224,255,224,255,224,14,0,14,0,14,0,14,0,13, + 3,6,16,1,5,255,248,255,248,255,248,13,11,22,16,1, + 1,7,0,7,0,7,0,0,0,255,248,255,248,255,248,0, + 0,7,0,7,0,7,0,11,11,22,16,2,1,32,0,112, + 0,248,0,120,0,60,128,12,128,3,128,3,192,15,192,1, + 192,0,32,15,9,18,16,0,2,1,0,1,128,224,192,252, + 240,255,254,252,240,224,192,1,128,1,0,11,11,22,16,2, + 0,0,32,1,192,15,192,3,192,3,128,12,128,60,128,120, + 0,248,0,112,0,32,0,15,9,18,16,0,2,2,0,1, + 0,1,192,0,240,255,254,0,240,1,192,1,0,2,0,15, + 13,26,16,0,0,0,192,1,224,1,240,0,248,127,252,255, + 254,255,254,255,254,127,252,0,248,1,240,1,224,0,192,15, + 11,22,16,0,1,0,16,0,16,0,24,0,24,255,252,255, + 254,255,252,0,24,0,24,0,16,0,16,15,13,26,16,0, + 0,0,16,0,16,0,24,0,24,255,252,255,252,255,254,255, + 252,255,252,0,24,0,24,0,16,0,16,15,9,18,16,0, + 2,0,32,0,48,0,56,170,252,170,254,170,252,0,56,0, + 48,0,32,15,9,18,16,0,2,0,32,0,48,170,248,170, + 252,170,254,170,252,170,248,0,48,0,32,15,9,18,16,0, + 2,0,32,0,48,0,56,255,252,255,254,255,252,0,56,0, + 48,0,32,14,15,30,16,1,255,128,0,224,0,88,0,70, + 0,33,128,32,96,16,24,15,252,31,248,63,224,63,128,126, + 0,120,0,224,0,128,0,14,15,30,16,1,255,128,0,224, + 0,120,0,126,0,63,128,63,224,31,248,15,252,16,24,32, + 96,33,128,70,0,88,0,224,0,128,0,14,15,30,16,1, + 255,128,0,224,0,120,0,126,0,63,128,63,224,31,248,15, + 252,31,248,63,224,63,128,126,0,120,0,224,0,128,0,15, + 8,16,16,0,3,128,0,128,16,192,24,127,252,127,254,63, + 252,0,24,0,16,15,8,16,16,0,2,0,16,0,24,63, + 252,127,254,127,252,192,24,128,16,128,0,7,13,13,16,5, + 0,16,16,24,248,252,252,254,252,252,248,24,16,16,15,9, + 18,16,0,2,0,64,0,64,255,224,255,240,255,254,255,240, + 255,224,0,64,0,64,14,9,18,16,1,2,0,192,0,224, + 255,176,128,24,128,12,128,24,255,176,0,224,0,192,14,9, + 18,16,1,2,0,192,0,224,255,208,192,8,192,4,192,8, + 255,208,0,224,0,192,15,13,26,16,0,255,0,8,0,24, + 0,36,0,68,63,130,64,2,128,6,255,30,254,124,5,240, + 15,192,15,0,12,0,15,13,26,16,0,0,12,0,15,0, + 15,192,5,240,254,124,255,30,128,6,64,2,63,130,0,68, + 0,36,0,24,0,8,15,12,24,16,0,0,0,128,0,192, + 255,160,128,16,128,8,128,4,128,14,128,28,255,184,127,240, + 0,224,0,64,15,12,24,16,0,1,0,64,0,224,127,240, + 255,184,128,28,128,14,128,4,128,8,128,16,255,160,0,192, + 0,128,16,12,24,16,0,0,0,64,0,96,0,80,255,200, + 64,4,64,2,64,7,255,206,127,220,0,120,0,112,0,32, + 7,6,6,8,1,3,198,56,68,68,68,56,16,12,24,16, + 0,1,0,32,0,112,0,120,127,220,255,206,64,7,64,2, + 64,4,255,200,0,80,0,96,0,64,14,15,30,16,1,255, + 15,128,63,224,126,240,254,120,254,56,0,28,0,12,0,4, + 0,12,0,28,254,56,254,120,126,240,63,224,15,128,15,7, + 14,16,0,3,254,0,73,8,36,140,31,254,36,140,73,8, + 254,0,11,11,22,16,2,1,16,0,24,0,28,0,252,0, + 124,0,60,32,2,32,1,96,0,224,1,224,7,224,14,5, + 10,16,1,4,248,16,124,24,63,252,124,24,248,16,11,11, + 22,16,2,0,7,224,1,224,0,224,1,96,2,32,60,32, + 124,0,252,0,28,0,24,0,16,0,11,11,22,16,2,1, + 8,0,12,0,14,0,14,0,254,32,126,32,63,96,3,224, + 1,224,3,224,15,224,15,9,18,16,0,2,0,32,252,16, + 126,24,63,252,31,254,63,252,126,24,252,16,0,32,11,11, + 22,16,2,0,15,224,3,224,1,224,3,224,63,96,126,32, + 254,32,14,0,14,0,12,0,8,0,15,11,22,16,0,1, + 0,96,0,240,0,240,120,56,255,12,255,254,255,12,120,56, + 0,240,0,240,0,96,15,9,18,16,0,2,0,64,96,224, + 120,240,252,120,255,254,252,120,120,240,96,224,0,64,15,7, + 14,16,0,3,248,16,124,24,62,28,31,254,62,28,124,24, + 248,16,15,9,18,16,0,2,248,96,252,112,126,120,127,252, + 63,254,127,252,126,120,252,112,248,96,15,9,18,16,0,2, + 2,32,1,16,0,136,255,196,0,2,255,196,0,136,1,16, + 2,32,16,6,12,16,0,3,227,199,28,56,34,68,34,68, + 34,68,28,56,6,6,6,8,1,0,128,136,144,160,192,252, + 11,12,24,16,2,0,4,0,10,0,10,0,17,0,17,0, + 36,128,42,128,74,64,81,64,159,32,128,32,255,224,5,6, + 6,8,1,0,32,32,32,32,32,248,10,8,16,16,3,1, + 63,192,64,0,129,128,130,64,130,64,129,128,64,0,63,192, + 10,8,16,16,3,1,255,0,0,128,96,64,144,64,144,64, + 96,64,0,128,255,0,5,10,10,8,2,0,112,136,136,16, + 16,32,32,64,64,56,5,10,10,8,2,0,112,136,136,64, + 64,32,32,16,16,224,7,8,8,8,0,0,130,130,84,68, + 40,40,16,16,14,8,16,16,1,1,129,252,130,0,68,0, + 68,0,36,0,36,0,18,0,17,252,14,8,16,16,1,1, + 254,4,1,4,0,136,0,136,0,144,0,144,1,32,254,32, + 3,10,10,8,2,0,64,64,64,64,224,64,64,64,64,64, + 8,8,8,16,4,1,1,2,4,8,16,32,64,128,12,14, + 28,16,2,254,255,240,128,0,64,0,64,0,32,0,32,0, + 32,0,32,0,32,0,32,0,64,0,64,0,128,0,128,0, + 8,8,8,16,4,1,128,64,32,16,8,4,2,1,13,13, + 26,16,1,0,255,248,130,8,130,8,133,8,133,8,136,136, + 136,136,144,72,144,72,160,40,160,40,192,24,255,248,13,13, + 26,16,1,0,255,248,192,24,160,40,160,40,144,72,144,72, + 136,136,136,136,133,8,133,8,130,8,130,8,255,248,9,9, + 18,16,4,0,8,0,20,0,34,0,65,0,136,128,65,0, + 34,0,20,0,8,0,7,8,8,8,0,0,16,16,40,40, + 68,84,130,130,9,10,20,16,3,0,136,128,136,128,136,128, + 136,128,136,128,136,128,136,128,136,128,73,0,62,0,6,6, + 6,8,1,0,4,4,36,4,4,252,6,6,6,8,1,0, + 252,128,128,144,128,128,12,10,20,16,2,0,224,16,48,48, + 40,80,36,144,35,16,35,16,36,144,40,80,48,48,224,16, + 12,10,20,16,2,0,128,112,192,192,161,64,146,64,140,64, + 140,64,146,64,161,64,192,192,128,112,14,10,20,16,1,0, + 224,28,48,48,40,80,36,144,35,16,35,16,36,144,40,80, + 48,48,224,28,9,12,24,16,3,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 255,128,9,12,24,16,3,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 13,7,14,16,1,2,5,0,5,0,253,248,5,0,253,248, + 5,0,5,0,13,7,14,16,1,2,5,0,5,0,5,0, + 253,248,5,0,5,0,5,0,14,3,6,16,1,4,64,0, + 191,252,64,0,14,3,6,16,1,4,128,0,255,252,128,0, + 14,3,6,16,1,4,0,4,255,252,0,4,3,11,11,16, + 7,255,64,160,64,64,64,64,64,64,64,64,224,7,11,11, + 8,0,0,16,40,40,68,68,254,68,68,40,40,16,13,13, + 26,16,1,0,2,0,5,0,5,0,8,128,16,64,96,48, + 128,8,96,48,16,64,8,128,5,0,5,0,2,0,15,13, + 26,16,0,0,0,128,1,64,1,64,2,32,4,16,24,12, + 224,2,24,12,4,16,2,32,1,64,1,64,0,128,15,13, + 26,16,1,0,2,0,5,0,5,0,8,128,16,64,96,48, + 128,14,96,48,16,64,8,128,5,0,5,0,2,0,15,13, + 26,16,0,0,31,254,16,2,16,2,16,2,16,2,16,2, + 240,2,16,2,16,2,16,2,16,2,16,2,31,254,15,13, + 26,16,1,0,255,240,128,16,128,16,128,16,128,16,128,16, + 128,30,128,16,128,16,128,16,128,16,128,16,255,240,5,13, + 13,8,2,0,248,160,160,160,160,160,160,160,160,160,160,160, + 248,5,13,13,8,1,0,248,40,40,40,40,40,40,40,40, + 40,40,40,248,4,12,12,8,2,0,16,32,32,64,64,128, + 128,64,64,32,32,16,4,12,12,8,2,0,128,64,64,32, + 32,16,16,32,32,64,64,128,6,12,12,8,1,0,20,40, + 40,80,80,160,160,80,80,40,40,20,6,12,12,8,1,0, + 160,80,80,40,40,20,20,40,40,80,80,160,4,12,12,8, + 3,255,16,32,96,160,160,160,160,160,160,96,32,16,4,12, + 12,8,1,255,128,64,96,80,80,80,80,80,80,96,64,128, + 3,12,12,8,4,255,32,64,128,128,128,128,128,128,128,128, + 64,32,3,12,12,8,1,255,128,64,32,32,32,32,32,32, + 32,32,64,128,11,12,24,16,2,0,4,0,10,0,27,0, + 42,128,106,192,170,160,42,128,42,128,42,128,42,128,42,128, + 42,128,11,12,24,16,2,0,42,128,42,128,42,128,42,128, + 42,128,42,128,170,160,106,192,42,128,27,0,10,0,4,0, + 12,10,20,16,2,0,7,128,8,64,16,32,32,16,168,16, + 112,16,32,16,0,32,8,64,7,128,12,10,20,16,2,0, + 30,0,33,0,64,128,128,64,129,80,128,224,128,64,64,0, + 33,0,30,0,15,7,14,16,0,1,3,128,5,72,9,36, + 255,254,9,36,5,72,3,128,15,5,10,16,1,2,32,0, + 64,0,255,254,64,0,32,0,15,5,10,16,0,2,0,8, + 0,4,255,254,0,4,0,8,14,5,10,16,1,2,32,16, + 64,8,255,252,64,8,32,16,15,7,14,16,0,1,16,0, + 32,0,127,254,128,0,127,254,32,0,16,0,15,7,14,16, + 0,1,0,16,0,8,255,252,0,2,255,252,0,8,0,16, + 14,7,14,16,1,1,16,32,32,16,127,248,128,4,127,248, + 32,16,16,32,14,5,10,16,1,2,32,4,64,4,255,252, + 64,4,32,4,14,5,10,16,1,2,128,16,128,8,255,252, + 128,8,128,16,14,7,14,16,1,1,16,4,32,4,127,252, + 128,4,127,252,32,4,16,4,14,7,14,16,1,1,128,32, + 128,16,255,248,128,4,255,248,128,16,128,32,15,5,10,16, + 0,2,0,8,34,36,213,94,8,132,0,8}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: - Capital A Height: 11, '1' Height: 6 - Calculated Max Values w=15 h=15 x= 3 y= 3 dx=16 dy= 0 ascent=13 len=30 + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + Capital A Height: 11, '1' Height: 5 + Calculated Max Values w=15 h=15 x= 3 y= 4 dx=16 dy= 0 ascent=13 len=30 Font Bounding box w=16 h=16 x= 0 y=-2 Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 - Pure Font ascent =11 descent= 3 + Pure Font ascent =11 descent= 2 X Font ascent =11 descent= 0 Max Font ascent =13 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_86[1876] U8G_SECTION(".progmem.u8g_font_unifont_86") = { - 0,16,16,0,254,11,3,37,5,106,32,116,3,13,254,11, +const u8g_fntpgm_uint8_t u8g_font_unifont_86[1858] U8G_FONT_SECTION("u8g_font_unifont_86") = { + 0,16,16,0,254,11,3,31,5,100,32,116,2,13,254,11, 0,11,11,22,16,2,0,7,224,4,32,2,32,4,32,8, 160,17,96,34,0,68,0,136,0,80,0,32,0,11,11,22, 16,2,0,252,0,132,0,136,0,132,0,162,0,209,0,8, @@ -83629,119 +87606,118 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_86[1876] U8G_SECTION(".progmem.u8g_fon 0,80,0,136,0,68,0,34,0,17,96,8,160,4,32,2, 32,4,32,7,224,11,11,22,16,2,0,0,128,1,64,2, 32,4,64,8,128,209,0,162,0,132,0,136,0,132,0,252, - 0,14,7,14,16,1,0,16,32,48,48,95,232,128,4,95, - 232,48,48,16,32,13,7,14,16,1,0,16,0,48,0,127, - 248,255,248,127,248,48,0,16,0,7,11,11,8,0,0,16, - 56,124,254,56,56,56,56,56,56,56,7,11,11,8,0,0, - 56,56,56,56,56,56,56,254,124,56,16,11,11,22,16,2, - 0,7,224,7,224,3,224,7,224,15,224,31,96,62,0,124, - 0,248,0,112,0,32,0,11,11,22,16,2,0,252,0,252, - 0,248,0,252,0,254,0,223,0,15,128,7,192,3,224,1, - 192,0,128,11,11,22,16,2,0,32,0,112,0,248,0,124, - 0,62,0,31,96,15,224,7,224,3,224,7,224,7,224,11, - 11,22,16,2,0,0,128,1,192,3,224,7,192,15,128,223, - 0,254,0,252,0,248,0,252,0,252,0,14,7,14,16,1, - 0,16,32,48,48,127,248,255,252,127,248,48,48,16,32,7, - 12,12,8,0,255,16,56,124,254,56,56,56,56,254,124,56, - 16,14,6,12,16,1,0,255,240,0,16,0,16,0,84,0, - 56,0,16,14,6,12,16,1,0,0,16,0,56,0,84,0, - 16,0,16,255,240,14,6,12,16,1,0,63,252,32,0,32, - 0,168,0,112,0,32,0,14,6,12,16,1,0,32,0,112, - 0,168,0,32,0,32,0,63,252,10,10,20,16,3,255,255, - 192,255,192,255,192,255,192,255,192,128,64,128,64,128,64,128, - 64,255,192,10,10,20,16,3,255,255,192,128,64,128,64,128, - 64,128,64,255,192,255,192,255,192,255,192,255,192,10,10,20, - 16,3,255,255,192,255,192,191,192,159,192,143,192,135,192,131, - 192,129,192,128,192,255,192,10,10,20,16,3,255,255,192,192, - 64,224,64,240,64,248,64,252,64,254,64,255,64,255,192,255, - 192,10,10,20,16,3,255,12,0,26,0,57,0,120,128,248, - 64,248,64,120,128,57,0,26,0,12,0,10,10,20,16,3, - 255,12,0,22,0,39,0,71,128,135,192,135,192,71,128,39, - 0,22,0,12,0,10,10,20,16,3,255,12,0,30,0,63, - 0,127,128,255,192,128,64,64,128,33,0,18,0,12,0,10, - 10,20,16,3,255,12,0,18,0,33,0,64,128,128,64,255, - 192,127,128,63,0,30,0,12,0,11,11,22,16,2,0,170, - 160,0,0,128,32,0,0,128,32,0,0,128,32,0,0,128, - 32,0,0,170,160,14,14,28,16,1,255,255,252,255,252,255, + 0,14,7,14,16,1,1,16,32,48,48,95,232,128,4,95, + 232,48,48,16,32,13,7,14,16,1,1,16,0,48,0,127, + 248,255,248,127,248,48,0,16,0,7,12,12,8,0,0,16, + 56,124,254,56,56,56,56,56,56,56,56,7,12,12,8,0, + 0,56,56,56,56,56,56,56,56,254,124,56,16,11,11,22, + 16,2,0,7,224,7,224,3,224,7,224,15,224,31,96,62, + 0,124,0,248,0,112,0,32,0,11,11,22,16,2,0,252, + 0,252,0,248,0,252,0,254,0,223,0,15,128,7,192,3, + 224,1,192,0,128,11,11,22,16,2,0,32,0,112,0,248, + 0,124,0,62,0,31,96,15,224,7,224,3,224,7,224,7, + 224,11,11,22,16,2,0,0,128,1,192,3,224,7,192,15, + 128,223,0,254,0,252,0,248,0,252,0,252,0,14,7,14, + 16,1,1,16,32,48,48,127,248,255,252,127,248,48,48,16, + 32,7,12,12,8,0,0,16,56,124,254,56,56,56,56,254, + 124,56,16,15,5,10,16,0,0,255,248,0,8,0,42,0, + 28,0,8,15,5,10,16,0,4,0,8,0,28,0,42,0, + 8,255,248,15,5,10,16,1,0,63,254,32,0,168,0,112, + 0,32,0,15,5,10,16,1,4,32,0,112,0,168,0,32, + 0,63,254,10,10,20,16,3,255,255,192,255,192,255,192,255, + 192,255,192,128,64,128,64,128,64,128,64,255,192,10,10,20, + 16,3,255,255,192,128,64,128,64,128,64,128,64,255,192,255, + 192,255,192,255,192,255,192,10,10,20,16,3,255,255,192,255, + 192,191,192,159,192,143,192,135,192,131,192,129,192,128,192,255, + 192,10,10,20,16,3,255,255,192,192,64,224,64,240,64,248, + 64,252,64,254,64,255,64,255,192,255,192,10,10,20,16,3, + 255,12,0,26,0,57,0,120,128,248,64,248,64,120,128,57, + 0,26,0,12,0,10,10,20,16,3,255,12,0,22,0,39, + 0,71,128,135,192,135,192,71,128,39,0,22,0,12,0,10, + 10,20,16,3,255,12,0,30,0,63,0,127,128,255,192,128, + 64,64,128,33,0,18,0,12,0,10,10,20,16,3,255,12, + 0,18,0,33,0,64,128,128,64,255,192,127,128,63,0,30, + 0,12,0,11,11,22,16,2,0,170,160,0,0,128,32,0, + 0,128,32,0,0,128,32,0,0,128,32,0,0,170,160,14, + 14,28,16,1,255,255,252,255,252,255,252,255,252,255,252,255, 252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255, - 252,255,252,255,252,255,252,14,14,28,16,1,255,255,252,128, + 252,14,14,28,16,1,255,255,252,128,4,128,4,128,4,128, 4,128,4,128,4,128,4,128,4,128,4,128,4,128,4,128, - 4,128,4,128,4,128,4,255,252,4,4,4,8,2,2,240, - 240,240,240,4,4,4,8,2,2,240,144,144,240,12,11,22, - 16,2,0,6,0,15,0,31,128,63,192,127,224,255,240,127, - 224,127,224,63,192,63,192,31,128,12,11,22,16,2,0,6, - 0,9,0,16,128,32,64,64,32,128,16,64,32,64,32,32, - 64,32,64,31,128,11,11,22,16,2,255,4,0,27,0,96, - 192,128,32,128,32,128,32,128,32,128,32,96,192,27,0,4, - 0,11,11,22,16,2,255,4,0,31,0,127,192,255,224,255, - 224,255,224,255,224,255,224,127,192,31,0,4,0,14,10,20, - 16,1,0,15,192,31,224,63,240,127,248,255,252,255,252,127, - 248,63,240,31,224,15,192,14,13,26,16,1,254,31,224,63, - 240,127,248,255,252,255,252,255,252,255,252,255,252,255,252,255, - 252,127,248,63,240,31,224,7,7,7,8,0,0,16,56,124, - 254,124,56,16,7,7,7,8,0,0,16,40,68,130,68,40, - 16,7,11,11,8,0,0,16,56,56,124,124,254,124,124,56, - 56,16,7,11,11,8,0,0,16,40,40,68,68,130,68,68, - 40,40,16,5,5,5,8,1,3,32,112,248,112,32,5,7, - 7,8,1,0,32,112,112,248,112,112,32,5,7,7,8,1, - 0,32,80,80,136,80,80,32,15,6,12,16,0,0,15,224, - 127,252,255,254,255,254,127,252,15,224,15,6,12,16,0,0, - 15,224,112,28,128,2,128,2,112,28,15,224,6,13,13,8, - 1,0,48,120,120,120,252,252,252,252,252,120,120,120,48,6, - 13,13,8,1,0,48,72,72,72,132,132,132,132,132,72,72, - 72,48,14,5,10,16,1,3,33,192,66,32,255,252,66,32, - 33,192,14,15,30,16,1,254,32,0,64,0,255,252,64,0, - 32,0,32,0,64,0,255,252,64,0,32,0,32,0,64,0, - 255,252,64,0,32,0,14,5,10,16,1,3,33,192,66,160, - 255,252,66,160,33,192,14,5,10,16,1,3,34,32,69,80, - 245,92,72,128,32,0,14,5,10,16,1,3,40,64,80,64, - 255,252,80,64,40,64,14,5,10,16,1,3,40,160,80,160, - 255,252,80,160,40,160,14,5,10,16,1,3,40,4,80,4, - 255,252,80,4,40,4,14,5,10,16,1,3,40,4,80,8, - 253,176,80,8,40,4,14,5,10,16,1,3,32,0,64,0, - 213,84,64,0,32,0,14,5,10,16,1,3,32,132,64,136, - 255,240,64,136,32,132,14,5,10,16,1,3,33,68,65,72, - 255,240,65,72,33,68,14,5,10,16,1,3,40,4,80,8, - 255,240,80,8,40,4,14,5,10,16,1,3,40,132,80,136, - 255,240,80,136,40,132,14,5,10,16,1,3,41,68,81,72, - 255,240,81,72,41,68,14,5,10,16,1,3,40,144,80,96, - 255,252,80,96,40,144,14,5,10,16,1,3,32,240,65,8, - 254,4,64,0,32,0,14,7,14,16,1,3,3,240,0,0, - 35,240,64,0,255,252,64,0,32,0,14,7,14,16,1,3, - 0,112,8,136,39,0,64,0,255,252,64,0,32,0,14,10, - 20,16,1,254,32,0,64,0,255,252,64,0,32,112,8,136, - 7,0,0,112,8,136,7,0,14,9,18,16,1,1,224,0, - 24,0,6,16,1,8,31,252,1,8,6,16,24,0,224,0, - 14,11,22,16,1,0,252,0,2,0,1,0,0,144,0,136, - 255,252,0,136,0,144,1,0,2,0,252,0,15,11,22,16, - 0,1,4,0,8,0,31,254,32,0,127,254,128,0,127,254, - 32,0,31,254,8,0,4,0,15,11,22,16,0,1,0,64, - 0,32,255,240,0,8,255,252,0,2,255,252,0,8,255,240, - 0,32,0,64,14,7,14,16,1,3,3,128,68,64,56,16, - 0,8,255,252,0,8,0,16,14,10,20,16,1,254,0,16, - 0,8,255,252,0,8,3,144,68,64,56,0,3,128,68,64, - 56,0,14,7,14,16,1,3,7,0,8,136,32,112,64,0, - 255,252,64,0,32,0,14,10,20,16,1,254,32,0,64,0, - 255,252,64,0,39,0,8,136,0,112,7,0,8,136,0,112, - 14,7,14,16,1,1,32,0,64,0,255,252,64,0,32,112, - 8,136,7,0,14,7,14,16,1,1,0,16,0,8,255,252, - 0,8,3,144,68,64,56,0,6,14,14,8,1,255,168,84, - 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, - 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, - 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, - 168,84,168,84,13,13,26,16,1,0,2,0,2,0,5,0, - 5,0,248,248,64,16,32,32,16,64,8,128,16,64,34,32, - 77,144,112,112,11,10,20,16,2,1,4,0,14,0,14,0, - 255,224,127,192,63,128,63,128,123,192,241,224,192,96,11,10, - 20,16,2,1,4,0,10,0,10,0,241,224,64,64,32,128, - 36,128,74,64,177,160,192,96,11,12,24,16,3,0,4,0, - 30,0,127,0,255,128,255,192,255,224,255,224,255,192,255,128, - 127,0,30,0,4,0,11,12,24,16,3,0,4,0,26,0, - 97,0,128,128,128,64,128,32,128,32,128,64,128,128,97,0, - 26,0,4,0}; + 4,255,252,4,4,4,8,2,2,240,240,240,240,4,4,4, + 8,2,2,240,144,144,240,12,11,22,16,2,0,6,0,15, + 0,31,128,63,192,127,224,255,240,127,224,127,224,63,192,63, + 192,31,128,12,11,22,16,2,0,6,0,9,0,16,128,32, + 64,64,32,128,16,64,32,64,32,32,64,32,64,31,128,11, + 11,22,16,2,255,4,0,27,0,96,192,128,32,128,32,128, + 32,128,32,128,32,96,192,27,0,4,0,11,11,22,16,2, + 255,4,0,31,0,127,192,255,224,255,224,255,224,255,224,255, + 224,127,192,31,0,4,0,14,10,20,16,1,0,15,192,31, + 224,63,240,127,248,255,252,255,252,127,248,63,240,31,224,15, + 192,14,13,26,16,1,254,31,224,63,240,127,248,255,252,255, + 252,255,252,255,252,255,252,255,252,255,252,127,248,63,240,31, + 224,7,7,7,8,0,0,16,56,124,254,124,56,16,7,7, + 7,8,0,0,16,40,68,130,68,40,16,7,11,11,8,0, + 0,16,56,56,124,124,254,124,124,56,56,16,7,11,11,8, + 0,0,16,40,40,68,68,130,68,68,40,40,16,5,5,5, + 8,1,3,32,112,248,112,32,5,7,7,8,1,0,32,112, + 112,248,112,112,32,5,7,7,8,1,0,32,80,80,136,80, + 80,32,15,6,12,16,0,0,15,224,127,252,255,254,255,254, + 127,252,15,224,15,6,12,16,0,0,15,224,112,28,128,2, + 128,2,112,28,15,224,6,13,13,8,1,0,48,120,120,120, + 252,252,252,252,252,120,120,120,48,6,13,13,8,1,0,48, + 72,72,72,132,132,132,132,132,72,72,72,48,15,5,10,16, + 1,2,33,192,66,32,255,254,66,32,33,192,14,15,30,16, + 1,254,32,0,64,0,255,252,64,0,32,0,32,0,64,0, + 255,252,64,0,32,0,32,0,64,0,255,252,64,0,32,0, + 15,5,10,16,1,2,33,192,66,160,255,254,66,160,33,192, + 15,5,10,16,1,2,34,32,69,80,245,94,72,128,32,0, + 15,5,10,16,1,2,40,64,80,64,255,254,80,64,40,64, + 15,5,10,16,1,2,40,160,80,160,255,254,80,160,40,160, + 14,5,10,16,1,2,40,4,80,4,255,252,80,4,40,4, + 14,5,10,16,1,2,40,4,80,8,253,176,80,8,40,4, + 14,5,10,16,1,2,32,0,64,0,213,84,64,0,32,0, + 14,5,10,16,1,2,32,132,64,136,255,240,64,136,32,132, + 14,5,10,16,1,2,33,68,65,72,255,240,65,72,33,68, + 14,5,10,16,1,2,40,4,80,8,255,240,80,8,40,4, + 14,5,10,16,1,2,40,132,80,136,255,240,80,136,40,132, + 14,5,10,16,1,2,41,68,81,72,255,240,81,72,41,68, + 15,5,10,16,1,2,40,144,80,96,255,254,80,96,40,144, + 15,5,10,16,1,2,32,120,64,132,255,2,64,0,32,0, + 15,7,14,16,1,2,3,240,0,0,35,240,64,0,255,254, + 64,0,32,0,15,7,14,16,1,2,0,56,4,68,35,128, + 64,0,255,254,64,0,32,0,15,9,18,16,1,254,32,0, + 64,0,255,254,64,56,36,68,3,128,0,56,4,68,3,128, + 14,9,18,16,1,0,224,0,24,0,6,16,1,8,31,252, + 1,8,6,16,24,0,224,0,14,11,22,16,1,255,252,0, + 2,0,1,0,0,144,0,136,255,252,0,136,0,144,1,0, + 2,0,252,0,15,11,22,16,0,255,4,0,8,0,31,254, + 32,0,127,254,128,0,127,254,32,0,31,254,8,0,4,0, + 15,11,22,16,0,255,0,64,0,32,255,240,0,8,255,252, + 0,2,255,252,0,8,255,240,0,32,0,64,15,7,14,16, + 0,2,3,128,68,64,56,8,0,4,255,254,0,4,0,8, + 15,9,18,16,0,254,0,8,0,4,255,254,3,132,68,72, + 56,0,3,128,68,64,56,0,15,7,14,16,1,2,3,128, + 4,68,32,56,64,0,255,254,64,0,32,0,15,9,18,16, + 1,254,32,0,64,0,255,254,67,128,36,68,0,56,3,128, + 4,68,0,56,15,7,14,16,1,0,32,0,64,0,255,254, + 64,0,32,56,4,68,3,128,15,7,14,16,0,0,0,8, + 0,4,255,254,0,4,3,136,68,64,56,0,10,12,24,16, + 3,0,4,0,8,0,16,0,32,0,64,0,255,192,0,128, + 1,0,2,0,20,0,24,0,28,0,4,6,6,8,2,0, + 112,48,80,64,128,128,4,6,6,8,2,0,128,128,64,80, + 48,112,13,13,26,16,1,0,2,0,2,0,5,0,5,0, + 248,248,64,16,32,32,16,64,8,128,16,64,34,32,77,144, + 112,112,11,10,20,16,2,1,4,0,14,0,14,0,255,224, + 127,192,63,128,63,128,123,192,241,224,192,96,11,10,20,16, + 2,1,4,0,10,0,10,0,241,224,64,64,32,128,36,128, + 74,64,177,160,192,96,11,12,24,16,3,0,4,0,30,0, + 127,0,255,128,255,192,255,224,255,224,255,192,255,128,127,0, + 30,0,4,0,11,12,24,16,3,0,4,0,26,0,97,0, + 128,128,128,64,128,32,128,32,128,64,128,128,97,0,26,0, + 4,0}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 8, '1' Height: 12 Calculated Max Values w=16 h=16 x= 3 y=10 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 @@ -83751,8 +87727,8 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_86[1876] U8G_SECTION(".progmem.u8g_fon Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[4272] U8G_SECTION(".progmem.u8g_font_unifont_8_9") = { - 0,16,16,0,254,8,4,65,6,56,0,255,0,14,254,12, +const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[4279] U8G_FONT_SECTION("u8g_font_unifont_8_9") = { + 0,16,16,0,254,8,4,67,6,64,0,255,0,14,254,12, 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, 0,0,1,128,0,85,85,6,14,14,8,1,0,72,72,0, @@ -83770,259 +87746,259 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[4272] U8G_SECTION(".progmem.u8g_fo 34,34,34,6,14,14,8,1,0,24,96,0,0,128,140,144, 160,192,192,160,144,136,132,6,13,13,8,1,0,96,24,0, 132,140,140,148,148,164,164,196,196,132,7,14,14,8,1,0, - 132,132,120,0,130,130,68,68,40,40,16,16,32,96,7,10, - 10,8,1,0,130,130,130,130,130,130,254,16,16,16,6,10, - 10,8,1,0,48,72,72,132,132,132,252,132,132,132,6,10, - 10,8,1,0,248,128,128,128,248,132,132,132,132,248,6,10, - 10,8,1,0,248,132,132,132,248,132,132,132,132,248,6,10, - 10,8,1,0,252,128,128,128,128,128,128,128,128,128,8,12, - 12,8,0,254,14,18,18,18,34,34,34,66,66,255,129,129, - 6,10,10,8,1,0,252,128,128,128,248,128,128,128,128,252, - 7,10,10,8,1,0,146,146,84,84,56,56,84,84,146,146, - 6,10,10,8,1,0,120,132,4,4,120,8,4,4,132,120, - 6,10,10,8,1,0,132,140,140,148,148,164,164,196,196,132, - 6,13,13,8,1,0,72,48,0,132,140,140,148,148,164,164, - 196,196,132,6,10,10,8,1,0,128,140,144,160,192,192,160, - 144,136,132,6,10,10,8,1,0,60,36,36,36,36,36,36, - 68,68,132,6,10,10,8,1,0,132,132,204,204,180,180,132, - 132,132,132,6,10,10,8,1,0,132,132,132,132,252,132,132, - 132,132,132,6,10,10,8,1,0,120,132,132,132,132,132,132, - 132,132,120,6,10,10,8,1,0,252,132,132,132,132,132,132, - 132,132,132,6,10,10,8,1,0,248,132,132,132,248,128,128, - 128,128,128,6,10,10,8,1,0,120,132,132,128,128,128,128, - 132,132,120,7,10,10,8,1,0,254,16,16,16,16,16,16, - 16,16,16,7,10,10,8,1,0,130,130,68,68,40,40,16, - 16,32,96,7,11,11,8,1,0,16,124,146,146,146,146,146, - 124,16,16,16,6,10,10,8,1,0,132,132,72,72,48,48, - 72,72,132,132,7,12,12,8,1,254,132,132,132,132,132,132, - 132,132,132,254,2,2,6,10,10,8,1,0,132,132,132,132, - 132,252,4,4,4,4,7,10,10,8,1,0,146,146,146,146, - 146,146,146,146,146,254,8,12,12,8,0,254,146,146,146,146, - 146,146,146,146,146,255,1,1,7,10,10,8,1,0,224,32, - 32,32,60,34,34,34,34,60,6,10,10,8,1,0,132,132, - 132,132,228,148,148,148,148,228,6,10,10,8,1,0,128,128, - 128,128,248,132,132,132,132,248,6,10,10,8,1,0,112,136, - 4,4,124,4,4,4,136,112,6,10,10,8,1,0,152,164, - 164,164,228,164,164,164,164,152,6,10,10,8,1,0,124,132, - 132,132,124,36,68,68,132,132,6,8,8,8,1,0,120,132, - 4,124,132,132,140,116,6,12,12,8,1,0,4,56,64,128, - 248,132,132,132,132,132,132,120,6,8,8,8,1,0,248,132, - 132,248,132,132,132,248,6,8,8,8,1,0,252,128,128,128, - 128,128,128,128,7,9,9,8,1,255,60,36,68,68,132,132, - 132,254,130,6,8,8,8,1,0,120,132,132,252,128,128,132, - 120,7,8,8,8,1,0,146,146,84,56,56,84,146,146,6, - 8,8,8,1,0,120,132,4,120,8,4,132,120,6,8,8, - 8,1,0,140,140,148,148,164,164,196,196,6,12,12,8,1, - 0,72,48,0,0,140,140,148,148,164,164,196,196,6,8,8, - 8,1,0,140,144,160,192,160,144,136,132,6,8,8,8,1, - 0,60,36,36,36,36,68,68,132,6,8,8,8,1,0,132, - 204,204,180,180,132,132,132,6,8,8,8,1,0,132,132,132, - 252,132,132,132,132,6,8,8,8,1,0,120,132,132,132,132, - 132,132,120,6,8,8,8,1,0,252,132,132,132,132,132,132, - 132,6,10,10,8,1,254,248,132,132,132,132,248,128,128,128, - 128,6,8,8,8,1,0,120,132,128,128,128,128,132,120,7, - 8,8,8,1,0,254,16,16,16,16,16,16,16,6,10,10, - 8,1,254,132,132,72,72,48,48,32,32,64,192,7,10,10, - 8,1,255,16,16,124,146,146,146,146,124,16,16,6,8,8, - 8,1,0,132,132,72,48,48,72,132,132,7,10,10,8,1, - 254,132,132,132,132,132,132,132,254,2,2,6,8,8,8,1, - 0,132,132,132,132,252,4,4,4,7,8,8,8,1,0,146, - 146,146,146,146,146,146,254,8,10,10,8,0,254,146,146,146, - 146,146,146,146,255,1,1,7,8,8,8,1,0,224,32,32, - 60,34,34,34,60,6,8,8,8,1,0,132,132,132,228,148, - 148,148,228,6,8,8,8,1,0,128,128,128,248,132,132,132, - 248,6,8,8,8,1,0,112,136,4,124,4,4,136,112,6, - 8,8,8,1,0,152,164,164,228,164,164,164,152,6,8,8, - 8,1,0,124,132,132,132,124,36,68,132,6,12,12,8,1, - 0,96,24,0,0,120,132,132,252,128,128,132,120,6,12,12, - 8,1,0,72,72,0,0,120,132,132,252,128,128,132,120,6, - 11,11,8,1,255,64,64,240,64,64,120,68,68,68,68,24, - 6,12,12,8,1,0,24,96,0,0,252,128,128,128,128,128, - 128,128,6,8,8,8,1,0,56,68,128,248,128,128,68,56, - 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,11, - 11,8,2,0,32,32,0,96,32,32,32,32,32,32,248,5, - 11,11,8,2,0,144,144,0,96,32,32,32,32,32,32,248, - 5,13,13,8,1,254,8,8,0,24,8,8,8,8,8,8, - 8,144,96,8,8,8,8,0,0,120,72,72,78,73,73,73, - 142,7,8,8,8,1,0,144,144,144,252,146,146,146,156,6, - 10,10,8,1,0,64,64,240,64,64,88,100,68,68,68,6, - 12,12,8,1,0,24,96,0,0,140,144,160,192,160,144,136, - 132,6,12,12,8,1,0,96,24,0,0,140,140,148,148,164, - 164,196,196,6,15,15,8,1,254,132,132,120,0,0,132,132, - 72,72,48,48,32,32,64,192,5,10,10,8,2,254,136,136, - 136,136,136,136,248,32,32,32,7,10,10,8,1,0,108,130, - 130,130,130,146,146,146,146,108,7,8,8,8,1,0,68,130, - 130,146,146,146,146,108,7,10,10,8,1,0,32,248,32,32, - 60,34,34,34,34,60,6,10,10,8,1,0,64,64,240,64, - 64,120,68,68,68,120,7,10,10,8,1,0,140,146,160,160, - 252,160,160,160,146,140,7,8,8,8,1,0,140,146,160,252, - 160,160,146,140,7,10,10,8,1,0,16,16,40,40,68,108, - 84,146,146,146,7,8,8,8,1,0,16,40,40,68,108,146, - 146,146,7,10,10,8,1,0,144,144,168,168,164,236,212,146, - 146,146,7,8,8,8,1,0,144,168,168,164,236,146,146,146, - 7,10,10,8,1,0,124,68,68,40,16,56,84,146,146,146, - 7,8,8,8,1,0,124,68,40,16,124,146,146,146,7,10, - 10,8,1,0,190,162,162,148,232,156,170,170,170,170,7,8, - 8,8,1,0,190,162,148,232,156,170,170,170,6,14,14,8, - 1,254,72,48,120,132,4,4,120,8,4,4,4,120,128,128, - 6,13,13,8,1,254,72,48,0,120,132,4,120,8,4,4, - 120,128,128,7,10,10,8,1,0,146,146,146,146,146,124,16, - 16,16,16,7,8,8,8,1,254,146,146,146,146,146,124,16, - 16,6,10,10,8,1,0,120,132,132,132,252,132,132,132,132, - 120,6,8,8,8,1,0,120,132,132,252,132,132,132,120,7, - 10,10,8,1,0,134,136,136,136,80,80,80,32,32,32,6, - 8,8,8,1,0,140,144,144,80,80,80,32,32,7,14,14, - 8,1,0,204,34,0,0,134,136,136,136,80,80,80,32,32, - 32,7,12,12,8,1,0,204,34,0,0,140,144,144,80,80, - 80,32,32,7,12,12,8,1,254,64,160,178,178,178,170,172, - 168,168,72,16,16,7,10,10,8,1,254,82,178,178,170,172, - 168,168,72,16,16,7,12,12,8,1,255,16,124,146,130,130, - 130,130,130,130,146,124,16,7,10,10,8,1,255,16,124,146, - 130,130,130,130,146,124,16,7,14,14,8,1,0,120,134,48, - 0,108,130,130,130,130,146,146,146,146,108,7,12,12,8,1, - 0,120,134,48,0,68,130,130,146,146,146,146,108,7,14,14, - 8,1,0,254,16,0,0,108,130,130,130,130,146,146,146,146, - 108,7,12,12,8,1,0,254,16,0,0,68,130,130,146,146, - 146,146,108,6,12,12,8,1,254,120,132,132,128,128,128,128, - 128,120,8,8,8,6,10,10,8,1,254,120,132,132,128,128, - 128,120,8,8,8,7,7,7,8,1,1,36,24,136,84,34, - 48,72,4,3,3,8,1,10,16,240,128,5,4,4,8,0, - 9,16,40,72,128,4,3,3,8,1,10,128,240,128,4,3, - 3,8,1,10,16,240,16,8,3,3,8,0,10,48,76,131, - 14,14,28,16,0,254,1,0,2,128,16,16,40,40,0,0, - 0,0,64,8,160,20,0,0,0,0,0,0,16,16,41,40, - 2,128,14,14,28,16,1,254,1,0,33,8,19,16,24,96, - 0,0,0,0,0,16,224,28,32,0,0,0,0,0,25,176, - 17,16,33,8,7,15,15,8,1,254,72,48,0,132,140,140, - 148,148,164,164,196,196,134,4,8,7,14,14,8,1,254,72, - 48,0,0,140,140,148,148,164,164,196,198,4,8,6,10,10, - 8,1,0,64,224,64,64,64,120,68,68,76,120,6,7,7, - 8,1,0,64,224,64,120,68,68,120,6,10,10,8,1,0, - 248,132,148,136,244,128,128,128,128,128,6,10,10,8,1,254, - 184,196,132,132,132,148,200,180,128,128,6,12,12,8,1,0, - 4,4,252,128,128,128,128,128,128,128,128,128,6,10,10,8, - 1,0,4,4,252,128,128,128,128,128,128,128,7,10,10,8, - 1,0,62,32,32,32,32,248,32,32,32,32,7,8,8,8, - 1,0,62,32,32,32,248,32,32,32,6,11,11,8,1,255, - 252,128,128,128,128,248,132,132,132,132,24,6,9,9,8,1, - 255,252,128,128,128,248,132,132,132,24,7,12,12,8,1,254, - 146,146,84,84,56,56,84,84,146,146,2,2,7,10,10,8, - 1,254,146,146,84,56,56,84,146,146,2,2,6,12,12,8, - 1,254,120,132,4,4,120,8,4,4,132,120,16,96,6,10, - 10,8,1,254,120,132,4,120,8,4,132,120,16,96,6,12, - 12,8,1,254,128,140,144,160,192,192,160,144,136,132,4,4, - 6,10,10,8,1,254,140,144,160,192,160,144,136,132,4,4, - 7,10,10,8,1,0,128,134,168,168,240,168,168,168,132,130, - 7,8,8,8,1,0,134,168,168,240,168,168,132,130,7,10, - 10,8,1,0,64,230,72,80,96,96,80,72,68,66,7,8, - 8,8,1,0,70,232,80,96,80,72,68,66,8,10,10,8, - 0,0,224,35,36,40,48,48,40,36,34,33,8,8,8,8, - 0,0,227,36,40,48,40,36,34,33,7,12,12,8,1,254, - 132,132,132,132,252,132,132,132,132,134,2,2,7,10,10,8, - 1,254,132,132,132,252,132,132,132,134,2,2,7,10,10,8, - 1,0,142,136,136,136,248,136,136,136,136,136,7,8,8,8, - 1,0,142,136,136,248,136,136,136,136,7,12,12,8,1,254, - 240,144,144,144,144,156,146,146,146,146,2,12,7,10,10,8, - 1,254,240,144,144,144,156,146,146,146,2,12,6,11,11,8, - 1,255,56,64,128,152,164,164,164,164,88,48,12,6,9,9, - 8,1,255,56,64,152,164,164,164,88,48,12,6,12,12,8, - 1,254,120,132,132,128,128,128,128,132,132,120,32,24,6,10, - 10,8,1,254,120,132,132,128,128,132,132,120,32,24,7,12, - 12,8,1,254,254,16,16,16,16,16,16,16,16,24,8,8, - 7,10,10,8,1,254,254,16,16,16,16,16,16,24,8,8, - 7,10,10,8,1,0,130,130,68,68,40,16,16,16,16,16, - 5,10,10,8,2,254,136,136,136,80,80,32,32,32,32,32, - 7,10,10,8,1,0,130,130,68,68,40,16,16,124,16,16, - 5,8,8,8,2,0,136,136,136,80,32,32,248,32,7,12, - 12,8,1,254,132,132,72,72,48,48,72,72,132,134,2,2, - 7,10,10,8,1,254,132,132,72,48,48,72,132,134,2,2, - 8,12,12,8,0,254,250,34,34,34,34,34,34,34,34,63, - 1,1,8,10,10,8,0,254,250,34,34,34,34,34,34,63, - 1,1,7,12,12,8,1,254,132,132,132,132,132,140,116,4, - 4,6,2,2,7,10,10,8,1,254,132,132,132,132,140,116, - 4,6,2,2,6,10,10,8,1,0,132,132,132,132,164,172, - 116,36,36,4,6,8,8,8,1,0,132,132,132,164,172,116, - 36,4,6,10,10,8,1,0,128,128,128,184,196,132,132,132, - 132,132,6,8,8,8,1,0,128,128,184,196,132,132,132,132, - 6,10,10,8,1,0,152,164,164,164,124,32,32,36,36,24, - 6,8,8,8,1,0,152,164,164,124,32,32,36,24,6,12, - 12,8,1,254,152,164,164,164,124,32,32,36,36,24,16,12, - 6,10,10,8,1,254,152,164,164,124,32,32,36,24,16,12, - 5,10,10,8,2,0,248,32,32,32,32,32,32,32,32,248, - 7,14,14,8,1,0,130,130,124,0,146,146,84,84,56,56, - 84,84,146,146,7,13,13,8,1,0,68,68,56,0,0,146, - 146,84,56,56,84,146,146,6,12,12,8,1,254,128,140,144, - 160,192,248,132,132,132,132,4,24,6,10,10,8,1,254,140, - 144,160,192,248,132,132,132,4,24,7,12,12,8,1,254,60, - 36,36,36,36,36,36,68,68,134,4,8,7,10,10,8,1, - 254,60,36,36,36,36,68,68,134,4,8,6,12,12,8,1, - 254,132,132,132,132,252,132,132,132,132,132,4,24,6,10,10, - 8,1,254,132,132,132,252,132,132,132,132,4,24,7,12,12, - 8,1,254,132,132,132,132,252,132,132,132,132,134,4,8,7, - 10,10,8,1,254,132,132,132,252,132,132,132,134,4,8,6, - 12,12,8,1,254,132,132,132,132,132,140,116,4,4,12,8, - 8,6,10,10,8,1,254,132,132,132,132,140,116,4,12,8, - 8,7,12,12,8,1,254,132,132,204,204,180,180,132,132,132, - 134,4,8,7,10,10,8,1,254,132,204,204,180,180,132,132, - 134,4,8,3,10,10,8,3,0,224,64,64,64,64,64,64, - 64,64,224,6,14,14,8,1,0,132,132,120,0,48,72,72, - 132,132,252,132,132,132,132,6,13,13,8,1,0,132,132,120, - 0,0,120,132,4,124,132,132,140,116,6,14,14,8,1,0, - 72,72,0,0,48,72,72,132,132,252,132,132,132,132,6,12, - 12,8,1,0,72,72,0,0,120,132,4,124,132,132,140,116, - 7,10,10,8,1,0,62,80,144,144,254,144,144,144,144,158, - 7,8,8,8,1,0,124,146,18,126,144,144,146,124,6,14, - 14,8,1,0,132,132,120,0,252,128,128,128,248,128,128,128, - 128,252,6,12,12,8,1,0,132,132,120,0,120,132,132,252, - 128,128,132,120,6,10,10,8,1,0,48,72,132,4,4,252, - 132,132,72,48,6,8,8,8,1,0,120,132,4,4,252,132, - 132,120,6,14,14,8,1,0,72,72,0,0,48,72,132,4, - 4,252,132,132,72,48,6,12,12,8,1,0,72,72,0,0, - 120,132,4,4,252,132,132,120,7,14,14,8,1,0,72,72, - 0,0,146,146,84,84,56,56,84,84,146,146,7,12,12,8, - 1,0,72,72,0,0,146,146,84,56,56,84,146,146,6,14, - 14,8,1,0,72,72,0,0,120,132,4,4,120,8,4,4, - 132,120,6,12,12,8,1,0,72,72,0,0,120,132,4,120, - 8,4,132,120,6,10,10,8,1,0,252,8,16,32,56,4, - 4,4,140,120,6,10,10,8,1,254,124,8,16,32,56,4, - 4,4,132,120,6,13,13,8,1,0,120,0,0,132,140,140, - 148,148,164,164,196,196,132,6,11,11,8,1,0,120,0,0, - 140,140,148,148,164,164,196,196,6,14,14,8,1,0,72,72, - 0,0,132,140,140,148,148,164,164,196,196,132,6,12,12,8, - 1,0,72,72,0,0,140,140,148,148,164,164,196,196,6,14, - 14,8,1,0,72,72,0,0,120,132,132,132,132,132,132,132, - 132,120,6,12,12,8,1,0,72,72,0,0,120,132,132,132, - 132,132,132,120,6,10,10,8,1,0,120,132,132,132,252,132, - 132,132,132,120,6,8,8,8,1,0,120,132,132,252,132,132, - 132,120,6,14,14,8,1,0,72,72,0,0,120,132,132,132, - 252,132,132,132,132,120,6,12,12,8,1,0,72,72,0,0, - 120,132,132,252,132,132,132,120,6,12,12,8,1,0,72,0, - 120,132,4,4,124,4,4,4,132,120,6,10,10,8,1,0, - 72,0,120,132,4,60,4,4,132,120,7,13,13,8,1,0, - 124,0,0,130,130,68,68,40,40,16,16,32,96,6,13,13, - 8,1,254,120,0,0,132,132,72,72,48,48,32,32,64,192, - 7,14,14,8,1,0,72,72,0,0,130,130,68,68,40,40, - 16,16,32,96,6,14,14,8,1,254,72,72,0,0,132,132, - 72,72,48,48,32,32,64,192,7,14,14,8,1,0,102,136, - 0,0,130,130,68,68,40,40,16,16,32,96,7,14,14,8, - 1,254,102,136,0,0,132,132,72,72,48,48,32,32,64,192, - 6,14,14,8,1,0,72,72,0,0,132,132,132,132,132,140, - 116,4,4,4,6,12,12,8,1,0,72,72,0,0,132,132, - 132,132,140,116,4,4,6,12,12,8,1,254,252,128,128,128, - 128,128,128,128,128,224,96,32,6,10,10,8,1,254,252,128, - 128,128,128,128,128,224,96,32,6,14,14,8,1,0,72,72, - 0,0,132,132,132,132,228,148,148,148,148,228,6,12,12,8, - 1,0,72,72,0,0,132,132,132,228,148,148,148,228,6,12, - 12,8,1,254,252,128,128,128,248,128,128,128,128,192,64,192, - 5,10,10,8,1,254,248,128,128,240,128,128,128,192,64,192, - 6,12,12,8,1,254,132,132,72,72,48,48,72,72,132,132, - 4,8,6,10,10,8,1,254,132,132,72,48,48,72,132,132, - 4,8,6,10,10,8,1,0,132,132,72,72,48,252,72,72, - 132,132,6,8,8,8,1,0,132,132,72,48,252,72,132,132 - }; + 132,132,120,0,130,130,68,68,40,40,16,16,32,96,7,12, + 12,8,1,254,130,130,130,130,130,130,130,130,130,254,16,16, + 6,10,10,8,1,0,48,72,72,132,132,252,132,132,132,132, + 6,10,10,8,1,0,248,128,128,128,248,132,132,132,132,248, + 6,10,10,8,1,0,248,132,132,132,248,132,132,132,132,248, + 6,10,10,8,1,0,252,128,128,128,128,128,128,128,128,128, + 8,12,12,8,0,254,14,18,18,18,34,34,34,66,66,255, + 129,129,6,10,10,8,1,0,252,128,128,128,248,128,128,128, + 128,252,7,10,10,8,1,0,146,146,84,84,56,56,84,84, + 146,146,6,10,10,8,1,0,120,132,4,4,120,8,4,4, + 132,120,6,10,10,8,1,0,132,140,140,148,148,164,164,196, + 196,132,6,13,13,8,1,0,72,48,0,132,140,140,148,148, + 164,164,196,196,132,6,10,10,8,1,0,140,144,144,160,160, + 192,160,144,136,132,6,10,10,8,1,0,60,36,36,36,36, + 36,36,68,68,132,6,10,10,8,1,0,132,132,204,204,180, + 180,132,132,132,132,6,10,10,8,1,0,132,132,132,132,252, + 132,132,132,132,132,6,10,10,8,1,0,120,132,132,132,132, + 132,132,132,132,120,6,10,10,8,1,0,252,132,132,132,132, + 132,132,132,132,132,6,10,10,8,1,0,248,132,132,132,248, + 128,128,128,128,128,6,10,10,8,1,0,120,132,132,128,128, + 128,128,132,132,120,7,10,10,8,1,0,254,16,16,16,16, + 16,16,16,16,16,7,10,10,8,1,0,130,130,68,68,40, + 40,16,16,32,96,7,11,11,8,1,0,16,124,146,146,146, + 146,146,124,16,16,16,6,10,10,8,1,0,132,132,72,72, + 48,48,72,72,132,132,7,12,12,8,1,254,132,132,132,132, + 132,132,132,132,132,254,2,2,6,10,10,8,1,0,132,132, + 132,132,132,252,4,4,4,4,7,10,10,8,1,0,146,146, + 146,146,146,146,146,146,146,254,8,12,12,8,0,254,146,146, + 146,146,146,146,146,146,146,255,1,1,7,10,10,8,1,0, + 224,32,32,32,60,34,34,34,34,60,6,10,10,8,1,0, + 132,132,132,132,228,148,148,148,148,228,6,10,10,8,1,0, + 128,128,128,128,248,132,132,132,132,248,6,10,10,8,1,0, + 112,136,4,4,124,4,4,4,136,112,6,10,10,8,1,0, + 152,164,164,164,228,164,164,164,164,152,6,10,10,8,1,0, + 124,132,132,132,124,36,68,68,132,132,6,8,8,8,1,0, + 120,132,4,124,132,132,140,116,6,12,12,8,1,0,4,56, + 64,128,248,132,132,132,132,132,132,120,6,8,8,8,1,0, + 248,132,132,248,132,132,132,248,6,8,8,8,1,0,252,128, + 128,128,128,128,128,128,7,9,9,8,1,255,60,36,68,68, + 132,132,132,254,130,6,8,8,8,1,0,120,132,132,252,128, + 128,132,120,7,8,8,8,1,0,146,146,84,56,56,84,146, + 146,6,8,8,8,1,0,120,132,4,120,8,4,132,120,6, + 8,8,8,1,0,140,140,148,148,164,164,196,196,6,12,12, + 8,1,0,72,48,0,0,140,140,148,148,164,164,196,196,6, + 8,8,8,1,0,140,144,160,192,160,144,136,132,6,8,8, + 8,1,0,60,36,36,36,36,68,68,132,6,8,8,8,1, + 0,132,204,204,180,180,132,132,132,6,8,8,8,1,0,132, + 132,132,252,132,132,132,132,6,8,8,8,1,0,120,132,132, + 132,132,132,132,120,6,8,8,8,1,0,252,132,132,132,132, + 132,132,132,6,10,10,8,1,254,184,196,132,132,132,132,196, + 184,128,128,6,8,8,8,1,0,120,132,128,128,128,128,132, + 120,7,8,8,8,1,0,254,16,16,16,16,16,16,16,6, + 10,10,8,1,254,132,132,72,72,48,48,32,32,64,192,7, + 13,13,8,1,254,16,16,16,124,146,146,146,146,146,146,124, + 16,16,6,8,8,8,1,0,132,132,72,48,48,72,132,132, + 7,10,10,8,1,254,132,132,132,132,132,132,132,254,2,2, + 6,8,8,8,1,0,132,132,132,132,252,4,4,4,7,8, + 8,8,1,0,146,146,146,146,146,146,146,254,8,10,10,8, + 0,254,146,146,146,146,146,146,146,255,1,1,7,8,8,8, + 1,0,224,32,32,60,34,34,34,60,6,8,8,8,1,0, + 132,132,132,228,148,148,148,228,6,8,8,8,1,0,128,128, + 128,248,132,132,132,248,6,8,8,8,1,0,112,136,4,124, + 4,4,136,112,6,8,8,8,1,0,152,164,164,228,164,164, + 164,152,6,8,8,8,1,0,124,132,132,132,124,36,68,132, + 6,12,12,8,1,0,96,24,0,0,120,132,132,252,128,128, + 132,120,6,12,12,8,1,0,72,72,0,0,120,132,132,252, + 128,128,132,120,7,13,13,8,0,254,64,240,64,92,98,66, + 66,66,66,66,66,2,12,6,12,12,8,1,0,24,96,0, + 0,252,128,128,128,128,128,128,128,6,8,8,8,1,0,56, + 68,128,248,128,128,68,56,6,8,8,8,1,0,120,132,128, + 96,24,4,132,120,5,11,11,8,2,0,32,32,0,96,32, + 32,32,32,32,32,248,5,11,11,8,2,0,144,144,0,96, + 32,32,32,32,32,32,248,5,13,13,8,1,254,8,8,0, + 24,8,8,8,8,8,8,8,144,96,8,8,8,8,0,0, + 120,72,72,78,73,73,73,142,7,8,8,8,1,0,144,144, + 144,252,146,146,146,156,7,11,11,8,0,0,64,240,64,92, + 98,66,66,66,66,66,66,6,12,12,8,1,0,24,96,0, + 0,140,144,160,192,160,144,136,132,6,12,12,8,1,0,96, + 24,0,0,140,140,148,148,164,164,196,196,6,15,15,8,1, + 254,132,132,120,0,0,132,132,72,72,48,48,32,32,64,192, + 5,10,10,8,2,254,136,136,136,136,136,136,136,248,32,32, + 7,10,10,8,1,0,146,146,146,146,146,146,146,146,180,72, + 7,8,8,8,1,0,68,130,130,146,146,146,146,108,7,10, + 10,8,1,0,32,248,32,32,60,34,34,34,34,60,6,10, + 10,8,1,0,64,64,240,64,64,120,68,68,68,120,7,10, + 10,8,1,0,140,146,160,160,252,160,160,160,146,140,7,8, + 8,8,1,0,140,146,160,252,160,160,146,140,7,10,10,8, + 1,0,16,16,40,40,68,108,84,146,146,146,7,8,8,8, + 1,0,16,40,40,68,108,146,146,146,7,10,10,8,1,0, + 144,144,168,168,164,236,212,146,146,146,7,8,8,8,1,0, + 144,168,168,164,236,146,146,146,7,10,10,8,1,0,124,68, + 68,40,16,56,84,146,146,146,7,8,8,8,1,0,124,68, + 40,16,124,146,146,146,7,10,10,8,1,0,190,162,162,148, + 232,156,170,170,170,170,7,8,8,8,1,0,190,162,148,232, + 156,170,170,170,6,14,14,8,1,254,72,48,120,132,4,4, + 120,8,4,4,4,120,128,128,6,13,13,8,1,254,72,48, + 0,120,132,4,120,8,4,4,120,128,128,7,10,10,8,1, + 0,146,146,146,146,146,124,16,16,16,16,7,8,8,8,1, + 254,146,146,146,146,146,124,16,16,6,10,10,8,1,0,120, + 132,132,132,252,132,132,132,132,120,6,8,8,8,1,0,120, + 132,132,252,132,132,132,120,7,10,10,8,1,0,134,136,136, + 136,80,80,80,32,32,32,6,8,8,8,1,0,140,144,144, + 80,80,80,32,32,7,14,14,8,1,0,204,34,0,0,134, + 136,136,136,80,80,80,32,32,32,7,12,12,8,1,0,204, + 34,0,0,140,144,144,80,80,80,32,32,7,12,12,8,1, + 254,64,160,178,178,178,170,172,168,168,72,16,16,7,10,10, + 8,1,254,82,178,178,170,172,168,168,72,16,16,7,12,12, + 8,1,255,16,124,146,130,130,130,130,130,130,146,124,16,7, + 10,10,8,1,255,16,124,146,130,130,130,130,146,124,16,7, + 14,14,8,1,0,120,134,48,8,16,0,108,130,130,146,146, + 146,146,108,7,11,11,8,1,0,120,134,48,8,16,0,108, + 130,146,146,108,7,13,13,8,1,0,254,16,0,146,146,146, + 146,146,146,146,146,180,72,7,10,10,8,1,0,254,16,0, + 146,146,146,146,146,180,72,6,12,12,8,1,254,120,132,132, + 128,128,128,128,128,120,8,8,8,6,10,10,8,1,254,120, + 132,132,128,128,128,120,8,8,8,7,7,7,8,1,1,36, + 24,136,84,34,48,72,4,3,3,8,1,10,16,240,128,5, + 4,4,8,0,9,16,40,72,128,4,3,3,8,1,10,112, + 128,96,4,3,3,8,2,10,224,16,96,8,3,3,8,0, + 10,48,76,131,14,14,28,16,0,254,1,0,2,128,16,16, + 40,40,0,0,0,0,64,8,160,20,0,0,0,0,0,0, + 16,16,41,40,2,128,14,14,28,16,1,254,1,0,33,8, + 19,16,24,96,0,0,0,0,0,16,224,28,32,0,0,0, + 0,0,25,176,17,16,33,8,7,15,15,8,1,254,72,48, + 0,132,140,140,148,148,164,164,196,196,134,4,8,7,14,14, + 8,1,254,72,48,0,0,140,140,148,148,164,164,196,198,4, + 8,6,10,10,8,1,0,64,224,64,64,64,120,68,68,76, + 120,6,7,7,8,1,0,64,224,64,120,68,68,120,6,10, + 10,8,1,0,248,132,148,136,244,128,128,128,128,128,6,10, + 10,8,1,254,184,196,132,132,132,148,200,180,128,128,6,12, + 12,8,1,0,4,4,252,128,128,128,128,128,128,128,128,128, + 6,10,10,8,1,0,4,4,252,128,128,128,128,128,128,128, + 7,10,10,8,1,0,62,32,32,32,32,248,32,32,32,32, + 7,8,8,8,1,0,62,32,32,32,248,32,32,32,6,11, + 11,8,1,255,252,128,128,128,128,248,132,132,132,132,24,6, + 9,9,8,1,255,252,128,128,128,248,132,132,132,24,7,12, + 12,8,1,254,146,146,84,84,56,56,84,84,146,146,2,2, + 7,10,10,8,1,254,146,146,84,56,56,84,146,146,2,2, + 6,12,12,8,1,254,120,132,4,4,120,8,4,4,132,120, + 16,96,6,10,10,8,1,254,120,132,4,120,8,4,132,120, + 16,96,6,12,12,8,1,254,128,140,144,160,192,192,160,144, + 136,132,4,4,6,10,10,8,1,254,140,144,160,192,160,144, + 136,132,4,4,7,10,10,8,1,0,128,134,168,168,240,168, + 168,168,132,130,7,8,8,8,1,0,134,168,168,240,168,168, + 132,130,7,10,10,8,1,0,64,230,72,80,96,96,80,72, + 68,66,7,8,8,8,1,0,70,232,80,96,80,72,68,66, + 8,10,10,8,0,0,224,35,36,40,48,48,40,36,34,33, + 8,8,8,8,0,0,227,36,40,48,40,36,34,33,7,12, + 12,8,1,254,132,132,132,132,252,132,132,132,132,134,2,2, + 7,10,10,8,1,254,132,132,132,252,132,132,132,134,2,2, + 7,10,10,8,1,0,142,136,136,136,248,136,136,136,136,136, + 7,8,8,8,1,0,142,136,136,248,136,136,136,136,7,12, + 12,8,1,254,240,144,144,144,144,156,146,146,146,146,2,12, + 7,10,10,8,1,254,240,144,144,144,156,146,146,146,2,12, + 6,12,12,8,1,255,64,152,164,164,164,164,164,164,164,88, + 48,12,6,9,9,8,1,255,64,152,164,164,164,164,88,48, + 12,6,12,12,8,1,254,120,132,132,128,128,128,128,132,132, + 120,32,24,6,10,10,8,1,254,120,132,132,128,128,132,132, + 120,32,24,7,12,12,8,1,254,254,16,16,16,16,16,16, + 16,16,24,8,8,7,10,10,8,1,254,254,16,16,16,16, + 16,16,24,8,8,7,10,10,8,1,0,130,130,68,68,40, + 16,16,16,16,16,5,10,10,8,2,254,136,136,136,80,80, + 32,32,32,32,32,7,10,10,8,1,0,130,130,68,68,40, + 16,16,124,16,16,5,8,8,8,2,0,136,136,136,80,32, + 32,248,32,7,12,12,8,1,254,132,132,72,72,48,48,72, + 72,132,134,2,2,7,10,10,8,1,254,132,132,72,48,48, + 72,132,134,2,2,8,12,12,8,0,254,250,34,34,34,34, + 34,34,34,34,63,1,1,8,10,10,8,0,254,250,34,34, + 34,34,34,34,63,1,1,7,12,12,8,1,254,132,132,132, + 132,132,140,116,4,4,6,2,2,7,10,10,8,1,254,132, + 132,132,132,140,116,4,6,2,2,6,10,10,8,1,0,132, + 132,132,132,164,172,116,36,36,4,6,8,8,8,1,0,132, + 132,132,164,172,116,36,4,6,10,10,8,1,0,128,128,128, + 184,196,132,132,132,132,132,6,8,8,8,1,0,128,128,184, + 196,132,132,132,132,6,10,10,8,1,0,152,164,164,164,124, + 32,32,36,36,24,6,8,8,8,1,0,152,164,164,124,32, + 32,36,24,6,12,12,8,1,254,152,164,164,164,124,32,32, + 36,36,24,16,16,6,12,12,8,1,254,152,164,164,164,124, + 32,32,36,36,24,16,16,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,14,14,8,1,0,130,130,124, + 0,146,146,84,84,56,56,84,84,146,146,7,13,13,8,1, + 0,68,68,56,0,0,146,146,84,56,56,84,146,146,6,12, + 12,8,1,254,128,140,144,160,192,248,132,132,132,132,4,24, + 6,10,10,8,1,254,140,144,160,192,248,132,132,132,4,24, + 7,12,12,8,1,254,60,36,36,36,36,36,36,68,68,134, + 4,8,7,10,10,8,1,254,60,36,36,36,36,68,68,134, + 4,8,6,12,12,8,1,254,132,132,132,132,252,132,132,132, + 132,132,4,24,6,10,10,8,1,254,132,132,132,252,132,132, + 132,132,4,24,7,12,12,8,1,254,132,132,132,132,252,132, + 132,132,132,134,4,8,7,10,10,8,1,254,132,132,132,252, + 132,132,132,134,4,8,6,12,12,8,1,254,132,132,132,132, + 132,140,116,4,4,12,8,8,6,10,10,8,1,254,132,132, + 132,132,140,116,4,12,8,8,7,12,12,8,1,254,132,132, + 204,204,180,180,132,132,132,134,4,8,7,10,10,8,1,254, + 132,204,204,180,180,132,132,134,4,8,3,10,10,8,3,0, + 224,64,64,64,64,64,64,64,64,224,6,14,14,8,1,0, + 132,132,120,0,48,72,72,132,132,252,132,132,132,132,6,13, + 13,8,1,0,132,132,120,0,0,120,132,4,124,132,132,140, + 116,6,14,14,8,1,0,72,72,0,0,48,72,72,132,132, + 252,132,132,132,132,6,12,12,8,1,0,72,72,0,0,120, + 132,4,124,132,132,140,116,7,10,10,8,1,0,62,80,144, + 144,254,144,144,144,144,158,7,8,8,8,1,0,124,146,18, + 126,144,144,146,124,6,14,14,8,1,0,132,132,120,0,252, + 128,128,128,248,128,128,128,128,252,6,12,12,8,1,0,132, + 132,120,0,120,132,132,252,128,128,132,120,6,10,10,8,1, + 0,48,72,132,4,4,252,132,132,72,48,6,8,8,8,1, + 0,120,132,4,4,252,132,132,120,6,14,14,8,1,0,72, + 72,0,0,48,72,132,4,4,252,132,132,72,48,6,12,12, + 8,1,0,72,72,0,0,120,132,4,4,252,132,132,120,7, + 14,14,8,1,0,72,72,0,0,146,146,84,84,56,56,84, + 84,146,146,7,12,12,8,1,0,72,72,0,0,146,146,84, + 56,56,84,146,146,6,14,14,8,1,0,72,72,0,0,120, + 132,4,4,120,8,4,4,132,120,6,12,12,8,1,0,72, + 72,0,0,120,132,4,120,8,4,132,120,6,10,10,8,1, + 0,252,8,16,32,56,4,4,4,140,120,6,10,10,8,1, + 254,124,8,16,32,56,4,4,4,132,120,6,13,13,8,1, + 0,120,0,0,132,140,140,148,148,164,164,196,196,132,6,11, + 11,8,1,0,120,0,0,140,140,148,148,164,164,196,196,6, + 14,14,8,1,0,72,72,0,0,132,140,140,148,148,164,164, + 196,196,132,6,12,12,8,1,0,72,72,0,0,140,140,148, + 148,164,164,196,196,6,14,14,8,1,0,72,72,0,0,120, + 132,132,132,132,132,132,132,132,120,6,12,12,8,1,0,72, + 72,0,0,120,132,132,132,132,132,132,120,6,10,10,8,1, + 0,120,132,132,132,252,132,132,132,132,120,6,8,8,8,1, + 0,120,132,132,252,132,132,132,120,6,14,14,8,1,0,72, + 72,0,0,120,132,132,132,252,132,132,132,132,120,6,12,12, + 8,1,0,72,72,0,0,120,132,132,252,132,132,132,120,6, + 12,12,8,1,0,72,0,120,132,4,4,124,4,4,4,132, + 120,6,10,10,8,1,0,72,0,120,132,4,60,4,4,132, + 120,7,13,13,8,1,0,124,0,0,130,130,68,68,40,40, + 16,16,32,96,6,13,13,8,1,254,120,0,0,132,132,72, + 72,48,48,32,32,64,192,7,14,14,8,1,0,72,72,0, + 0,130,130,68,68,40,40,16,16,32,96,6,14,14,8,1, + 254,72,72,0,0,132,132,72,72,48,48,32,32,64,192,7, + 14,14,8,1,0,102,136,0,0,130,130,68,68,40,40,16, + 16,32,96,7,14,14,8,1,254,102,136,0,0,132,132,72, + 72,48,48,32,32,64,192,6,14,14,8,1,0,72,72,0, + 0,132,132,132,132,132,140,116,4,4,4,6,12,12,8,1, + 0,72,72,0,0,132,132,132,132,140,116,4,4,6,12,12, + 8,1,254,252,128,128,128,128,128,128,128,128,224,96,32,6, + 10,10,8,1,254,252,128,128,128,128,128,128,224,96,32,6, + 14,14,8,1,0,72,72,0,0,132,132,132,132,228,148,148, + 148,148,228,6,12,12,8,1,0,72,72,0,0,132,132,132, + 228,148,148,148,228,6,12,12,8,1,254,252,128,128,128,248, + 128,128,128,128,192,64,192,5,10,10,8,1,254,248,128,128, + 240,128,128,128,192,64,192,6,12,12,8,1,254,132,132,72, + 72,48,48,72,72,132,132,4,8,6,10,10,8,1,254,132, + 132,72,48,48,72,132,132,4,8,6,10,10,8,1,0,132, + 132,72,72,48,252,72,72,132,132,6,8,8,8,1,0,132, + 132,72,48,252,72,132,132}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 10, '1' Height: 10 Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=32 Font Bounding box w=16 h=16 x= 0 y=-2 @@ -84032,7 +88008,7 @@ const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[4272] U8G_SECTION(".progmem.u8g_fo Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifont[5516] U8G_SECTION(".progmem.u8g_font_unifont") = { +const u8g_fntpgm_uint8_t u8g_font_unifont[5551] U8G_FONT_SECTION("u8g_font_unifont") = { 0,16,16,0,254,10,6,167,8,149,0,255,254,14,254,11, 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, @@ -84054,26 +88030,26 @@ const u8g_fntpgm_uint8_t u8g_font_unifont[5516] U8G_SECTION(".progmem.u8g_font_u 254,170,170,0,1,128,0,0,1,128,0,115,209,202,16,115, 209,202,16,115,223,128,0,0,1,128,0,0,1,128,0,85, 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,120,225,197,0,120,193,196,32,121,193,128,0,0,1,128, + 0,30,57,145,64,30,49,145,8,30,113,128,0,0,1,128, 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,69,241,196,64,124,65,196,64,68, - 65,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, - 16,0,254,170,170,0,1,128,0,0,1,128,0,65,241,193, - 0,65,241,193,0,125,1,128,0,0,1,128,0,0,1,128, + 1,128,0,0,1,128,0,34,249,162,32,62,33,162,32,34, + 33,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,32,249,160, + 128,32,249,160,128,62,129,128,0,0,1,128,0,0,1,128, 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, - 1,128,0,69,241,196,64,68,65,168,64,16,65,128,0,0, + 1,128,0,34,249,162,32,34,33,148,32,8,33,128,0,0, 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,125,241,193,0,125,241,193, - 0,65,1,128,0,0,1,128,0,0,1,128,0,85,85,16, - 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,61, - 225,193,16,65,225,193,32,61,17,128,0,0,1,128,0,0, + 170,0,1,128,0,0,1,128,0,62,249,160,128,62,249,160, + 128,32,129,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,30, + 241,160,136,32,241,160,144,30,137,128,0,0,1,128,0,0, 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,60,225,193,16,57,17,133,16,120,225,128, + 0,0,1,128,0,30,113,160,136,28,137,130,136,60,113,128, 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,61,241,192,64,56, - 65,132,64,121,241,128,0,0,1,128,0,0,1,128,0,85, + 254,170,170,0,1,128,0,0,1,128,0,30,249,160,32,28, + 33,130,32,60,249,128,0,0,1,128,0,0,1,128,0,85, 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,114,57,202,32,74,57,202,32,115,185,128,0,0,1,128, + 0,57,29,165,16,37,29,165,16,57,221,128,0,0,1,128, 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, 1,128,0,0,1,128,0,113,137,202,24,74,9,202,8,113, 157,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, @@ -84094,34 +88070,34 @@ const u8g_fntpgm_uint8_t u8g_font_unifont[5516] U8G_SECTION(".progmem.u8g_font_u 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, 0,51,37,196,180,71,173,196,164,52,165,128,0,0,1,128, 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,125,17,193,176,125,81,193,16,125, - 17,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 1,128,0,0,1,128,0,62,137,160,216,62,169,160,136,62, + 137,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, 16,0,254,170,170,0,1,128,0,0,1,128,0,58,93,194, 82,50,93,138,82,113,157,128,0,0,1,128,0,0,1,128, 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, 1,128,0,121,207,194,16,121,145,192,80,123,143,128,0,0, 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,121,193,194,0,121,129,192, - 64,67,129,128,0,0,1,128,0,0,1,128,0,85,85,16, - 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, - 193,194,0,89,129,200,64,59,129,128,0,0,1,128,0,0, + 170,0,1,128,0,0,1,128,0,30,113,144,128,30,97,144, + 16,16,225,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,14, + 113,144,128,22,97,146,16,14,225,128,0,0,1,128,0,0, 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,113,193,202,0,113,129,208,64,75,129,128, + 0,0,1,128,0,28,113,146,128,28,97,148,16,18,225,128, 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,73,193,202,0,73, - 129,200,64,51,129,128,0,0,1,128,0,0,1,128,0,85, + 254,170,170,0,1,128,0,0,1,128,0,18,113,146,128,18, + 97,146,16,12,225,128,0,0,1,128,0,0,1,128,0,85, 85,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, - 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 140,7,10,10,8,1,0,56,68,68,40,48,82,138,132,140, 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, - 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 64,64,128,4,1,1,8,2,4,240,2,2,2,8,3,0, 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, @@ -84180,207 +88156,209 @@ const u8g_fntpgm_uint8_t u8g_font_unifont[5516] U8G_SECTION(".progmem.u8g_font_u 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, - 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, - 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, - 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, - 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, - 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, - 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, - 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, - 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, - 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, - 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, - 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, - 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, - 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, - 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, - 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, - 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, - 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, - 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, - 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, - 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,113,157,202,82,115, - 211,194,82,66,93,128,0,0,1,128,0,0,1,128,0,85, - 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,73,157,202,82,122,93,202,80,73,145,128,0,0,1,128, - 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,115,147,202,82,115,159,202,18,114, - 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, - 16,0,254,170,170,0,1,128,0,0,1,128,0,75,147,234, - 82,91,159,202,82,75,147,128,0,0,1,128,0,0,1,128, + 8,8,8,8,8,8,144,96,6,11,11,8,1,0,128,128, + 128,136,144,160,192,160,144,136,132,5,11,11,8,2,0,96, + 32,32,32,32,32,32,32,32,32,248,7,8,8,8,1,0, + 236,146,146,146,146,146,146,146,6,8,8,8,1,0,184,196, + 132,132,132,132,132,132,6,8,8,8,1,0,120,132,132,132, + 132,132,132,120,6,10,10,8,1,254,184,196,132,132,132,132, + 196,184,128,128,6,10,10,8,1,254,116,140,132,132,132,132, + 140,116,4,4,6,8,8,8,1,0,184,196,132,128,128,128, + 128,128,6,8,8,8,1,0,120,132,128,96,24,4,132,120, + 5,10,10,8,1,0,32,32,32,248,32,32,32,32,32,24, + 6,8,8,8,1,0,132,132,132,132,132,132,140,116,6,8, + 8,8,1,0,132,132,132,72,72,72,48,48,7,8,8,8, + 1,0,130,146,146,146,146,146,146,108,6,8,8,8,1,0, + 132,132,72,48,48,72,132,132,6,10,10,8,1,254,132,132, + 132,132,132,76,52,4,4,120,6,8,8,8,1,0,252,4, + 8,16,32,64,128,252,3,12,12,8,3,255,96,128,128,64, + 64,128,128,64,64,128,128,96,1,14,14,8,4,254,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,3,12,12,8, + 2,255,192,32,32,64,64,32,32,64,64,32,32,192,7,3, + 3,8,1,8,98,146,140,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,115,209,202,16,75,209,202,16,115, + 223,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,113,157,202, + 82,115,211,194,82,66,93,128,0,0,1,128,0,0,1,128, 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, - 1,128,0,116,185,166,164,37,165,164,164,116,185,128,0,0, + 1,128,0,73,157,202,82,122,93,202,80,73,145,128,0,0, 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,75,209,234,16,91,209,202, - 16,75,223,128,0,0,1,128,0,0,1,128,0,85,85,16, - 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, - 205,194,18,49,159,136,82,115,147,128,0,0,1,128,0,0, + 170,0,1,128,0,0,1,128,0,115,147,202,82,115,159,202, + 18,114,19,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,75, + 147,234,82,91,159,202,82,75,147,128,0,0,1,128,0,0, 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,121,205,194,18,121,159,192,82,123,147,128, + 0,0,1,128,0,116,185,166,164,37,165,164,164,116,185,128, 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,75,157,201,32,121, - 25,201,4,73,57,128,0,0,1,128,0,0,1,128,0,85, + 254,170,170,0,1,128,0,0,1,128,0,75,209,234,16,91, + 209,202,16,75,223,128,0,0,1,128,0,0,1,128,0,85, 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,75,185,201,8,121,9,201,8,73,49,128,0,0,1,128, + 0,57,205,194,18,49,159,136,82,115,147,128,0,0,1,128, 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,69,205,196,144,68,137,168,132,16, - 153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, - 16,0,254,170,170,0,1,128,0,0,1,128,0,114,29,202, - 18,114,19,194,18,67,221,128,0,0,1,128,0,0,1,128, + 1,128,0,0,1,128,0,121,205,194,18,121,159,192,82,123, + 147,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,75,157,201, + 32,121,25,201,4,73,57,128,0,0,1,128,0,0,1,128, 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, - 1,128,0,114,19,202,18,114,19,194,18,67,205,128,0,0, + 1,128,0,37,221,164,132,60,133,164,132,36,153,128,0,0, 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,14,33,137,32,14,33,138, - 32,9,33,128,0,0,1,128,0,0,1,128,0,85,85,16, - 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, - 221,194,2,49,141,136,80,115,159,128,0,0,1,128,0,0, - 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,57,221,194,2,49,141,136,66,115,157,128, - 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,113,207,202,16,74, - 13,202,2,113,221,128,0,0,1,128,0,0,1,128,0,85, - 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,114,69,202,76,114,69,194,68,65,143,128,0,0,1,128, - 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,114,93,202,66,114,77,194,80,65, - 159,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, - 16,0,254,170,170,0,1,128,0,0,1,128,0,59,157,193, - 32,49,25,137,4,113,57,128,0,0,1,128,0,0,1,128, - 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, - 1,128,0,57,211,194,18,66,31,194,18,57,211,128,0,0, - 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,69,17,237,16,85,81,197, - 176,69,17,128,0,0,1,128,0,0,1,128,0,85,85,16, - 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, - 141,194,82,51,159,138,18,114,19,128,0,0,1,128,0,0, - 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,123,141,194,82,123,159,194,18,122,19,128, - 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, - 254,170,170,0,1,128,0,0,1,128,0,57,143,194,80,50, - 77,138,66,113,157,128,0,0,1,128,0,0,1,128,0,85, - 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, - 0,51,155,196,34,37,163,148,162,99,155,128,0,0,1,128, - 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, - 1,128,0,0,1,128,0,57,221,194,8,50,9,138,8,113, - 221,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, - 16,0,254,170,170,0,1,128,0,0,1,128,0,57,221,194, - 8,65,137,192,72,59,157,128,0,0,1,128,0,0,1,128, - 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, - 1,128,0,14,249,144,32,12,33,130,32,28,33,128,0,0, - 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, - 170,0,1,128,0,0,1,128,0,49,207,202,16,73,145,200, - 80,51,143,128,0,0,1,128,0,0,1,128,0,85,85,16, + 170,0,1,128,0,0,1,128,0,69,205,196,144,68,137,168, + 132,16,153,128,0,0,1,128,0,0,1,128,0,85,85,16, 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,114, - 33,203,96,114,161,194,32,66,33,128,0,0,1,128,0,0, + 29,202,18,114,19,194,18,67,221,128,0,0,1,128,0,0, 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,51,143,202,80,123,145,202,16,74,15,128, - 0,0,1,128,0,0,1,128,0,85,85,0,0,0,8,0, - 14,1,10,10,8,4,0,128,128,0,128,128,128,128,128,128, - 128,7,10,10,8,1,0,16,16,124,146,144,144,146,124,16, - 16,7,10,10,8,1,0,28,32,32,32,248,32,32,32,124, - 194,6,8,8,8,1,1,132,72,120,72,72,120,72,132,7, - 10,10,8,1,0,130,68,40,16,254,16,254,16,16,16,1, - 10,10,8,4,0,128,128,128,128,0,0,128,128,128,128,6, - 10,10,8,1,0,120,132,128,120,132,132,120,4,132,120,4, - 2,2,8,2,12,144,144,8,10,10,8,0,0,60,66,153, - 165,161,161,165,153,66,60,5,7,7,8,2,5,112,8,120, - 136,120,0,248,6,9,9,8,1,0,36,36,72,72,144,72, - 72,36,36,6,4,4,8,1,0,252,4,4,4,6,1,1, - 8,1,4,252,8,10,10,8,0,0,60,66,185,165,165,185, - 169,165,66,60,6,1,1,8,1,11,252,3,4,4,8,2, - 10,64,160,160,64,7,9,9,8,1,1,16,16,16,254,16, - 16,16,0,254,5,7,7,8,2,5,112,136,8,112,128,128, - 248,5,7,7,8,2,5,112,136,8,112,8,136,112,3,3, - 3,8,3,10,32,64,128,5,8,8,8,2,254,136,136,136, - 136,216,168,128,128,6,12,12,8,1,255,124,244,244,244,244, - 116,20,20,20,20,20,28,2,2,2,8,3,4,192,192,3, - 2,2,8,2,254,32,192,3,7,7,8,2,5,32,96,160, - 32,32,32,32,5,7,7,8,2,5,112,136,136,136,112,0, - 248,6,9,9,8,1,0,144,144,72,72,36,72,72,144,144, - 6,10,10,8,1,0,68,196,72,80,80,36,44,84,156,132, - 6,10,10,8,1,0,68,196,72,80,80,40,52,68,136,156, - 6,10,10,8,1,0,196,36,72,48,208,36,44,84,156,132, - 6,10,10,8,1,0,16,16,0,16,16,96,132,132,132,120, - 6,14,14,8,1,0,96,24,0,0,48,72,72,132,132,252, - 132,132,132,132,6,14,14,8,1,0,24,96,0,0,48,72, - 72,132,132,252,132,132,132,132,6,14,14,8,1,0,48,72, - 0,0,48,72,72,132,132,252,132,132,132,132,6,14,14,8, - 1,0,100,152,0,0,48,72,72,132,132,252,132,132,132,132, - 6,14,14,8,1,0,72,72,0,0,48,72,72,132,132,252, - 132,132,132,132,6,14,14,8,1,0,48,72,48,0,48,72, - 72,132,132,252,132,132,132,132,7,10,10,8,1,0,62,80, - 144,144,254,144,144,144,144,158,6,12,12,8,1,254,120,132, - 132,128,128,128,128,132,132,120,16,96,6,14,14,8,1,0, - 96,24,0,0,252,128,128,128,248,128,128,128,128,252,6,14, - 14,8,1,0,24,96,0,0,252,128,128,128,248,128,128,128, - 128,252,6,14,14,8,1,0,48,72,0,0,252,128,128,128, - 248,128,128,128,128,252,6,14,14,8,1,0,72,72,0,0, - 252,128,128,128,248,128,128,128,128,252,5,14,14,8,2,0, - 96,24,0,0,248,32,32,32,32,32,32,32,32,248,5,14, - 14,8,2,0,48,192,0,0,248,32,32,32,32,32,32,32, - 32,248,5,14,14,8,2,0,96,144,0,0,248,32,32,32, - 32,32,32,32,32,248,5,14,14,8,2,0,144,144,0,0, - 248,32,32,32,32,32,32,32,32,248,7,10,10,8,0,0, - 120,68,66,66,242,66,66,66,68,120,6,14,14,8,1,0, - 100,152,0,0,132,196,196,164,164,148,148,140,140,132,6,14, - 14,8,1,0,96,24,0,0,120,132,132,132,132,132,132,132, - 132,120,6,14,14,8,1,0,24,96,0,0,120,132,132,132, - 132,132,132,132,132,120,6,14,14,8,1,0,48,72,0,0, - 120,132,132,132,132,132,132,132,132,120,6,14,14,8,1,0, - 100,152,0,0,120,132,132,132,132,132,132,132,132,120,6,14, - 14,8,1,0,72,72,0,0,120,132,132,132,132,132,132,132, - 132,120,6,5,5,8,1,2,132,72,48,72,132,6,12,12, - 8,1,255,4,116,136,140,148,148,164,164,196,68,184,128,6, - 14,14,8,1,0,96,24,0,0,132,132,132,132,132,132,132, - 132,132,120,6,14,14,8,1,0,24,96,0,0,132,132,132, - 132,132,132,132,132,132,120,6,14,14,8,1,0,48,72,0, - 0,132,132,132,132,132,132,132,132,132,120,6,14,14,8,1, - 0,72,72,0,0,132,132,132,132,132,132,132,132,132,120,7, - 14,14,8,1,0,24,96,0,0,130,130,68,68,40,16,16, - 16,16,16,6,11,11,8,1,0,128,128,240,136,132,132,136, - 240,128,128,128,6,10,10,8,1,0,112,136,136,136,248,132, - 132,132,196,184,6,12,12,8,1,0,96,24,0,0,120,132, - 4,124,132,132,140,116,6,12,12,8,1,0,24,96,0,0, - 120,132,4,124,132,132,140,116,6,12,12,8,1,0,48,72, - 0,0,120,132,4,124,132,132,140,116,6,12,12,8,1,0, - 100,152,0,0,120,132,4,124,132,132,140,116,6,12,12,8, - 1,0,72,72,0,0,120,132,4,124,132,132,140,116,6,13, - 13,8,1,0,48,72,48,0,0,120,132,4,124,132,132,140, - 116,7,8,8,8,1,0,124,146,18,126,144,144,146,124,6, - 10,10,8,1,254,120,132,128,128,128,128,132,120,16,96,6, - 12,12,8,1,0,96,24,0,0,120,132,132,252,128,128,132, - 120,6,12,12,8,1,0,24,96,0,0,120,132,132,252,128, - 128,132,120,6,12,12,8,1,0,48,72,0,0,120,132,132, - 252,128,128,132,120,6,12,12,8,1,0,72,72,0,0,120, - 132,132,252,128,128,132,120,5,12,12,8,2,0,192,48,0, - 0,96,32,32,32,32,32,32,248,5,12,12,8,2,0,48, - 192,0,0,96,32,32,32,32,32,32,248,5,12,12,8,2, - 0,96,144,0,0,96,32,32,32,32,32,32,248,5,12,12, - 8,2,0,144,144,0,0,96,32,32,32,32,32,32,248,6, - 12,12,8,1,0,100,24,40,68,4,124,132,132,132,132,132, - 120,6,12,12,8,1,0,100,152,0,0,184,196,132,132,132, - 132,132,132,6,12,12,8,1,0,96,24,0,0,120,132,132, - 132,132,132,132,120,6,12,12,8,1,0,24,96,0,0,120, - 132,132,132,132,132,132,120,6,12,12,8,1,0,48,72,0, - 0,120,132,132,132,132,132,132,120,6,12,12,8,1,0,100, - 152,0,0,120,132,132,132,132,132,132,120,6,12,12,8,1, - 0,72,72,0,0,120,132,132,132,132,132,132,120,6,7,7, - 8,1,1,48,0,0,252,0,0,48,6,10,10,8,1,255, - 4,120,140,148,148,164,164,196,120,128,6,12,12,8,1,0, - 96,24,0,0,132,132,132,132,132,132,140,116,6,12,12,8, - 1,0,24,96,0,0,132,132,132,132,132,132,140,116,6,12, - 12,8,1,0,48,72,0,0,132,132,132,132,132,132,140,116, - 6,12,12,8,1,0,72,72,0,0,132,132,132,132,132,132, - 140,116,6,14,14,8,1,254,24,96,0,0,132,132,132,132, - 132,76,52,4,4,120,5,12,12,8,2,254,128,128,240,136, - 136,136,144,160,192,128,128,128,6,14,14,8,1,254,72,72, - 0,0,132,132,132,132,132,76,52,4,4,120}; + 0,0,1,128,0,114,19,202,18,114,19,194,18,67,205,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,14,33,137,32,14, + 33,138,32,9,33,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,57,221,194,2,49,141,136,80,115,159,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,221,194,2,49,141,136,66,115, + 157,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,113,207,202, + 16,74,13,202,2,113,221,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,114,69,202,76,114,69,194,68,65,143,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,114,93,202,66,114,77,194, + 80,65,159,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, + 157,193,32,49,25,137,4,113,57,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,57,211,194,18,66,31,194,18,57,211,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,34,137,182,136,42, + 169,162,216,34,137,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,59,141,194,82,51,159,138,18,114,19,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,123,141,194,82,123,159,194,18,122, + 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,57,143,194, + 80,50,77,138,66,113,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,51,155,196,34,37,163,148,162,99,155,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,57,221,194,8,50,9,138, + 8,113,221,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 221,194,8,65,137,192,72,59,157,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,14,249,144,32,12,33,130,32,28,33,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,49,207,202,16,73, + 145,200,80,51,143,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,28,137,146,216,28,169,144,136,16,137,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,51,143,202,80,123,145,202,16,74, + 15,128,0,0,1,128,0,0,1,128,0,85,85,0,0,0, + 8,0,14,1,10,10,8,4,0,128,128,0,128,128,128,128, + 128,128,128,7,10,10,8,1,0,16,16,124,146,144,144,146, + 124,16,16,7,10,10,8,1,0,28,32,32,32,248,32,32, + 32,124,194,6,8,8,8,1,1,132,72,120,72,72,120,72, + 132,7,10,10,8,1,0,130,68,40,16,254,16,254,16,16, + 16,1,10,10,8,4,0,128,128,128,128,0,0,128,128,128, + 128,6,10,10,8,1,0,120,132,128,120,132,132,120,4,132, + 120,4,2,2,8,2,12,144,144,8,10,10,8,0,0,60, + 66,153,165,161,161,165,153,66,60,5,7,7,8,2,5,112, + 8,120,136,120,0,248,6,9,9,8,1,0,36,36,72,72, + 144,72,72,36,36,6,4,4,8,1,0,252,4,4,4,16, + 16,32,16,0,254,170,170,0,1,128,0,58,99,194,84,51, + 201,138,72,114,73,128,0,0,1,128,0,3,193,128,0,0, + 1,128,0,85,85,8,10,10,8,0,0,60,66,185,165,165, + 185,169,165,66,60,6,1,1,8,1,11,252,3,4,4,8, + 2,10,64,160,160,64,7,9,9,8,1,1,16,16,16,254, + 16,16,16,0,254,5,7,7,8,2,5,112,136,8,112,128, + 128,248,5,7,7,8,2,5,112,136,8,112,8,136,112,3, + 3,3,8,3,10,32,64,128,8,10,10,8,0,254,66,66, + 66,66,66,66,102,89,64,128,6,12,12,8,1,255,124,244, + 244,244,244,116,20,20,20,20,20,28,2,2,2,8,3,4, + 192,192,3,2,2,8,2,254,32,192,3,7,7,8,2,5, + 32,96,160,32,32,32,32,5,7,7,8,2,5,112,136,136, + 136,112,0,248,6,9,9,8,1,0,144,144,72,72,36,72, + 72,144,144,6,10,10,8,1,0,68,196,72,80,80,36,44, + 84,156,132,6,10,10,8,1,0,68,196,72,80,80,40,52, + 68,136,156,6,10,10,8,1,0,196,36,72,48,208,36,44, + 84,156,132,6,10,10,8,1,0,16,16,0,16,16,96,132, + 132,132,120,6,14,14,8,1,0,96,24,0,0,48,72,72, + 132,132,252,132,132,132,132,6,14,14,8,1,0,24,96,0, + 0,48,72,72,132,132,252,132,132,132,132,6,14,14,8,1, + 0,48,72,0,0,48,72,72,132,132,252,132,132,132,132,6, + 14,14,8,1,0,100,152,0,0,48,72,72,132,132,252,132, + 132,132,132,6,14,14,8,1,0,72,72,0,0,48,72,72, + 132,132,252,132,132,132,132,6,14,14,8,1,0,48,72,48, + 0,48,72,72,132,132,252,132,132,132,132,7,10,10,8,1, + 0,62,80,144,144,254,144,144,144,144,158,6,12,12,8,1, + 254,120,132,132,128,128,128,128,132,132,120,16,96,6,14,14, + 8,1,0,96,24,0,0,252,128,128,128,248,128,128,128,128, + 252,6,14,14,8,1,0,24,96,0,0,252,128,128,128,248, + 128,128,128,128,252,6,14,14,8,1,0,48,72,0,0,252, + 128,128,128,248,128,128,128,128,252,6,14,14,8,1,0,72, + 72,0,0,252,128,128,128,248,128,128,128,128,252,5,14,14, + 8,2,0,96,24,0,0,248,32,32,32,32,32,32,32,32, + 248,5,14,14,8,2,0,48,192,0,0,248,32,32,32,32, + 32,32,32,32,248,5,14,14,8,2,0,96,144,0,0,248, + 32,32,32,32,32,32,32,32,248,5,14,14,8,2,0,144, + 144,0,0,248,32,32,32,32,32,32,32,32,248,7,10,10, + 8,0,0,120,68,66,66,242,66,66,66,68,120,6,14,14, + 8,1,0,100,152,0,0,132,196,196,164,164,148,148,140,140, + 132,6,14,14,8,1,0,96,24,0,0,120,132,132,132,132, + 132,132,132,132,120,6,14,14,8,1,0,24,96,0,0,120, + 132,132,132,132,132,132,132,132,120,6,14,14,8,1,0,48, + 72,0,0,120,132,132,132,132,132,132,132,132,120,6,14,14, + 8,1,0,100,152,0,0,120,132,132,132,132,132,132,132,132, + 120,6,14,14,8,1,0,72,72,0,0,120,132,132,132,132, + 132,132,132,132,120,6,5,5,8,1,2,132,72,48,72,132, + 6,12,12,8,1,255,4,116,136,140,148,148,164,164,196,68, + 184,128,6,14,14,8,1,0,96,24,0,0,132,132,132,132, + 132,132,132,132,132,120,6,14,14,8,1,0,24,96,0,0, + 132,132,132,132,132,132,132,132,132,120,6,14,14,8,1,0, + 48,72,0,0,132,132,132,132,132,132,132,132,132,120,6,14, + 14,8,1,0,72,72,0,0,132,132,132,132,132,132,132,132, + 132,120,7,14,14,8,1,0,24,96,0,0,130,130,68,68, + 40,16,16,16,16,16,6,11,11,8,1,0,128,128,240,136, + 132,132,136,240,128,128,128,6,10,10,8,1,0,112,136,136, + 144,176,136,132,132,164,152,6,12,12,8,1,0,96,24,0, + 0,120,132,4,124,132,132,140,116,6,12,12,8,1,0,24, + 96,0,0,120,132,4,124,132,132,140,116,6,12,12,8,1, + 0,48,72,0,0,120,132,4,124,132,132,140,116,6,12,12, + 8,1,0,100,152,0,0,120,132,4,124,132,132,140,116,6, + 12,12,8,1,0,72,72,0,0,120,132,4,124,132,132,140, + 116,6,13,13,8,1,0,48,72,48,0,0,120,132,4,124, + 132,132,140,116,7,8,8,8,1,0,124,146,18,126,144,144, + 146,124,6,10,10,8,1,254,120,132,128,128,128,128,132,120, + 16,96,6,12,12,8,1,0,96,24,0,0,120,132,132,252, + 128,128,132,120,6,12,12,8,1,0,24,96,0,0,120,132, + 132,252,128,128,132,120,6,12,12,8,1,0,48,72,0,0, + 120,132,132,252,128,128,132,120,6,12,12,8,1,0,72,72, + 0,0,120,132,132,252,128,128,132,120,5,12,12,8,2,0, + 192,48,0,0,96,32,32,32,32,32,32,248,5,12,12,8, + 2,0,48,192,0,0,96,32,32,32,32,32,32,248,5,12, + 12,8,2,0,96,144,0,0,96,32,32,32,32,32,32,248, + 5,12,12,8,2,0,144,144,0,0,96,32,32,32,32,32, + 32,248,6,12,12,8,1,0,100,24,40,68,4,124,132,132, + 132,132,132,120,6,12,12,8,1,0,100,152,0,0,184,196, + 132,132,132,132,132,132,6,12,12,8,1,0,96,24,0,0, + 120,132,132,132,132,132,132,120,6,12,12,8,1,0,24,96, + 0,0,120,132,132,132,132,132,132,120,6,12,12,8,1,0, + 48,72,0,0,120,132,132,132,132,132,132,120,6,12,12,8, + 1,0,100,152,0,0,120,132,132,132,132,132,132,120,6,12, + 12,8,1,0,72,72,0,0,120,132,132,132,132,132,132,120, + 6,7,7,8,1,1,48,0,0,252,0,0,48,6,10,10, + 8,1,255,4,120,140,148,148,164,164,196,120,128,6,12,12, + 8,1,0,96,24,0,0,132,132,132,132,132,132,140,116,6, + 12,12,8,1,0,24,96,0,0,132,132,132,132,132,132,140, + 116,6,12,12,8,1,0,48,72,0,0,132,132,132,132,132, + 132,140,116,6,12,12,8,1,0,72,72,0,0,132,132,132, + 132,132,132,140,116,6,14,14,8,1,254,24,96,0,0,132, + 132,132,132,132,76,52,4,4,120,5,12,12,8,2,254,128, + 128,240,136,136,136,144,160,192,128,128,128,6,14,14,8,1, + 254,72,72,0,0,132,132,132,132,132,76,52,4,4,120}; /* - Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 - Copyright: + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. Capital A Height: 10, '1' Height: 10 Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=14 Font Bounding box w=16 h=16 x= 0 y=-2 @@ -84390,20 +88368,20 @@ const u8g_fntpgm_uint8_t u8g_font_unifont[5516] U8G_SECTION(".progmem.u8g_font_u Max Font ascent =14 descent=-2 */ #include "u8g.h" -const u8g_fntpgm_uint8_t u8g_font_unifontr[1483] U8G_SECTION(".progmem.u8g_font_unifontr") = { +const u8g_fntpgm_uint8_t u8g_font_unifontr[1485] U8G_FONT_SECTION("u8g_font_unifontr") = { 0,16,16,0,254,10,1,231,3,213,32,127,254,14,254,11, 254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, - 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 140,7,10,10,8,1,0,56,68,68,40,48,82,138,132,140, 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, - 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 64,64,128,4,1,1,8,2,4,240,2,2,2,8,3,0, 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, @@ -84462,25 +88440,25 @@ const u8g_fntpgm_uint8_t u8g_font_unifontr[1483] U8G_SECTION(".progmem.u8g_font_ 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, - 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, - 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, - 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, - 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, - 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, - 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, - 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, - 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, - 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, - 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, - 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, - 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, - 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, - 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, - 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, - 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, - 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, - 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, - 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, - 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, - 0,0,1,128,0,0,1,128,0,85,85}; + 8,8,8,8,8,8,144,96,6,11,11,8,1,0,128,128, + 128,136,144,160,192,160,144,136,132,5,11,11,8,2,0,96, + 32,32,32,32,32,32,32,32,32,248,7,8,8,8,1,0, + 236,146,146,146,146,146,146,146,6,8,8,8,1,0,184,196, + 132,132,132,132,132,132,6,8,8,8,1,0,120,132,132,132, + 132,132,132,120,6,10,10,8,1,254,184,196,132,132,132,132, + 196,184,128,128,6,10,10,8,1,254,116,140,132,132,132,132, + 140,116,4,4,6,8,8,8,1,0,184,196,132,128,128,128, + 128,128,6,8,8,8,1,0,120,132,128,96,24,4,132,120, + 5,10,10,8,1,0,32,32,32,248,32,32,32,32,32,24, + 6,8,8,8,1,0,132,132,132,132,132,132,140,116,6,8, + 8,8,1,0,132,132,132,72,72,72,48,48,7,8,8,8, + 1,0,130,146,146,146,146,146,146,108,6,8,8,8,1,0, + 132,132,72,48,48,72,132,132,6,10,10,8,1,254,132,132, + 132,132,132,76,52,4,4,120,6,8,8,8,1,0,252,4, + 8,16,32,64,128,252,3,12,12,8,3,255,96,128,128,64, + 64,128,128,64,64,128,128,96,1,14,14,8,4,254,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,3,12,12,8, + 2,255,192,32,32,64,64,32,32,64,64,32,32,192,7,3, + 3,8,1,8,98,146,140,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,115,209,202,16,75,209,202,16,115, + 223,128,0,0,1,128,0,0,1,128,0,85,85}; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ll_api.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ll_api.c index 41c7fada18..856d77437d 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ll_api.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ll_api.c @@ -102,6 +102,17 @@ void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, ui u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_8PIXEL, arg); } +void u8g_Draw4TPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel) +{ + u8g_dev_arg_pixel_t *arg = &(u8g->arg_pixel); + arg->x = x; + arg->y = y; + arg->dir = dir; + arg->pixel = pixel; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_4TPIXEL, arg); +} + + #ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) { @@ -145,17 +156,21 @@ void u8g_UpdateDimension(u8g_t *u8g) static void u8g_init_data(u8g_t *u8g) { - uint8_t i; u8g->font = NULL; u8g->cursor_font = NULL; u8g->cursor_bg_color = 0; u8g->cursor_fg_color = 1; u8g->cursor_encoding = 34; u8g->cursor_fn = (u8g_draw_cursor_fn)0; - - for( i = 0; i < U8G_PIN_LIST_LEN; i++ ) - u8g->pin_list[i] = U8G_PIN_NONE; +#if defined(U8G_WITH_PINLIST) + { + uint8_t i; + for( i = 0; i < U8G_PIN_LIST_LEN; i++ ) + u8g->pin_list[i] = U8G_PIN_NONE; + } +#endif + u8g_SetColorIndex(u8g, 1); u8g_SetFontPosBaseline(u8g); @@ -192,6 +207,33 @@ uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev) return u8g_Begin(u8g); } +/* special init for pure ARM systems */ +uint8_t u8g_InitComFn(u8g_t *u8g, u8g_dev_t *dev, u8g_com_fnptr com_fn) +{ + u8g_init_data(u8g); + +#if defined(U8G_WITH_PINLIST) + { + uint8_t i; + for( i = 0; i < U8G_PIN_LIST_LEN; i++ ) + u8g->pin_list[i] = U8G_PIN_DUMMY; + } +#endif + + u8g->dev = dev; + + /* replace the device procedure with a custom communication procedure */ + u8g->dev->com_fn = com_fn; + + /* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */ + /* if - in future releases - this is removed, then still call u8g_UpdateDimension() */ + /* if Arduino call u8g_UpdateDimension else u8g_Begin */ + /* issue 146 */ + return u8g_Begin(u8g); +} + + +#if defined(U8G_WITH_PINLIST) uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) { @@ -336,6 +378,7 @@ uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8 return u8g_Begin(u8g); } +#endif /* defined(U8G_WITH_PINLIST) */ void u8g_FirstPage(u8g_t *u8g) { @@ -377,6 +420,12 @@ void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t u8g_Draw8PixelLL(u8g, u8g->dev, x, y, dir, pixel); } +void u8g_Draw4TPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel) +{ + u8g_Draw4TPixelLL(u8g, u8g->dev, x, y, dir, pixel); +} + + /* u8g_IsBBXIntersection() has been moved to u8g_clip.c */ #ifdef OBSOLETE_CODE uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) @@ -394,12 +443,72 @@ uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t } #endif +/* + idx: index for the palette entry (0..255) + r: value for red (0..255) + g: value for green (0..255) + b: value for blue (0..255) +*/ +void u8g_SetColorEntry(u8g_t *u8g, uint8_t idx, uint8_t r, uint8_t g, uint8_t b) +{ + u8g_dev_arg_irgb_t irgb; + irgb.idx = idx; + irgb.r = r; + irgb.g = g; + irgb.b = b; + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SET_COLOR_ENTRY, &irgb); +} + void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx) { u8g->arg_pixel.color = idx; /*u8g->color_index = idx; */ /* must be removed */ } +void u8g_SetHiColor(u8g_t *u8g, uint16_t rgb) +{ + u8g->arg_pixel.color = rgb&255; + u8g->arg_pixel.hi_color = rgb>>8; + /*u8g->color_index = idx; */ /* must be removed */ +} + +void u8g_SetHiColorByRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b) +{ + + r &= ~7; + g >>= 2; + b >>= 3; + u8g->arg_pixel.color = b; + u8g->arg_pixel.color |= (g & 7) << 5; + u8g->arg_pixel.hi_color = r; + u8g->arg_pixel.hi_color |= (g>>3) & 7; + + //u8g_SetHiColor(u8g, U8G_GET_HICOLOR_BY_RGB(r,g,b)); +} + +void u8g_SetRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b) +{ + if ( u8g->mode == U8G_MODE_R3G3B2 ) + { + r &= 0x0e0; + g &= 0x0e0; + g >>= 3; + b >>= 6; + u8g->arg_pixel.color = r | g | b; + } + else if ( u8g->mode == U8G_MODE_HICOLOR ) + { + u8g_SetHiColorByRGB(u8g, r,g,b); + } + else + { + u8g->arg_pixel.color = r; + u8g->arg_pixel.hi_color = g; + u8g->arg_pixel.blue = b; + } +} + + uint8_t u8g_GetColorIndex(u8g_t *u8g) { return u8g->arg_pixel.color; @@ -420,7 +529,15 @@ uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g) void u8g_SetDefaultForegroundColor(u8g_t *u8g) { - u8g_SetColorIndex(u8g, u8g_GetDefaultForegroundColor(u8g)); + if ( u8g->mode == U8G_MODE_HICOLOR ) + { + u8g->arg_pixel.color = 0x0ff; + u8g->arg_pixel.hi_color = 0x0ff; + } + else + { + u8g_SetColorIndex(u8g, u8g_GetDefaultForegroundColor(u8g)); + } } uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g) diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb14v1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb14v1.c index dbcd0215f8..d8667f35a9 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb14v1.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb14v1.c @@ -187,7 +187,7 @@ uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *ar case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h1.c index 6f1502ed77..d598633fa2 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h1.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h1.c @@ -200,7 +200,7 @@ uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *ar case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h2.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h2.c index d694efbece..2d0523cf81 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h2.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h2.c @@ -62,8 +62,8 @@ void u8g_pb16h2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) u8g_pb16h2_Clear(b); } -static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; -static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index, uint8_t is_or) U8G_NOINLINE; +static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index, uint8_t is_or) { register uint8_t mask; register uint16_t tmp; @@ -84,18 +84,20 @@ static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_ tmp = x; tmp &= 3; tmp <<= 1; - mask = 3; - mask <<= tmp; - mask = ~mask; + if ( is_or == 0 ) + { + mask = 3; + mask <<= tmp; + mask = ~mask; + *ptr &= mask; + } color_index &= 3; color_index <<= tmp; - - *ptr &= mask; *ptr |= color_index; } -void u8g_pb16h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +void u8g_pb16h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel, uint8_t is_or) { if ( arg_pixel->y < b->p.page_y0 ) return; @@ -103,7 +105,7 @@ void u8g_pb16h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixe return; if ( arg_pixel->x >= b->width ) return; - u8g_pb16h2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); + u8g_pb16h2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color, is_or); } @@ -114,7 +116,7 @@ void u8g_pb16h2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) { if ( pixel & 128 ) { - u8g_pb16h2_SetPixel(b, arg_pixel); + u8g_pb16h2_SetPixel(b, arg_pixel, 0); } switch( arg_pixel->dir ) { @@ -127,6 +129,24 @@ void u8g_pb16h2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) } while( pixel != 0 ); } +void u8g_pb16h2_Or4PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + arg_pixel->color = pixel & 0x0c0; + arg_pixel->color >>= 6; + u8g_pb16h2_SetPixel(b, arg_pixel, 1); + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 2; + } while( pixel != 0 ); +} uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) @@ -141,7 +161,13 @@ uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *ar } break; case U8G_DEV_MSG_SET_PIXEL: - u8g_pb16h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + u8g_pb16h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg, 0); + break; + case U8G_DEV_MSG_SET_4TPIXEL: + u8g_pb16h2_Or4PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_TPIXEL: + u8g_pb16h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg, 1); break; case U8G_DEV_MSG_INIT: break; @@ -169,7 +195,7 @@ uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *ar case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v1.c index 774aaec700..3716411c11 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v1.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v1.c @@ -187,7 +187,7 @@ uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *ar case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v2.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v2.c index 3d40ddad71..94ef7e28ac 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v2.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v2.c @@ -159,7 +159,7 @@ uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *ar case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb32h1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb32h1.c index 6ac100f325..d40f7ce571 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb32h1.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb32h1.c @@ -195,7 +195,7 @@ uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *ar case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1.c index 8a13e0b7b1..80dc99b589 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1.c @@ -376,7 +376,7 @@ uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1f.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1f.c index ffc90c2a3d..c7be1fe10b 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1f.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1f.c @@ -181,7 +181,7 @@ uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *ar case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h2.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h2.c index 0e37f211f7..aad6e42757 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h2.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h2.c @@ -154,7 +154,7 @@ uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h8.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h8.c index 5753645d1d..49dbb86169 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h8.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h8.c @@ -2,7 +2,8 @@ u8g_pb8h8.c - 8 bits per pixel, horizontal + 8 lines per page, horizontal, 8 bits per pixel + (22 May 2013: might also support any number of lines --> needs to be checked) Universal 8bit Graphics Library @@ -51,21 +52,26 @@ u8g_dev_t name = { dev_fn, &u8g_index_color_8h8_pb, com_fn } #include "u8g.h" +/* #define WIDTH_BITS 7 #define WIDTH (1<buf; uint8_t *end_ptr = ptr; uint8_t cnt = b->p.page_height; + end_ptr += b->width*cnt; + /* do { end_ptr += b->width; cnt--; } while( cnt > 0 ); + */ do { *ptr++ = 0; @@ -167,7 +173,7 @@ uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v1.c index 37352fd11e..28ac4e0ea2 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v1.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v1.c @@ -171,7 +171,7 @@ uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v2.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v2.c index 3656511dbc..c8e8926b13 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v2.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v2.c @@ -140,7 +140,7 @@ uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg case U8G_DEV_MSG_GET_HEIGHT: *((u8g_uint_t *)arg) = pb->p.total_height; break; - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: break; case U8G_DEV_MSG_SET_XY_CB: break; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pbxh16.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pbxh16.c new file mode 100644 index 0000000000..9e3455346e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pbxh16.c @@ -0,0 +1,184 @@ +/* + + u8g_pbxh16.c + + x lines per page, horizontal, 16 bits per pixel (hi color modes) + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +struct _u8g_pb_t +{ + u8g_page_t p; + u8g_uint_t width; + void *buf; +}; +typedef struct _u8g_pb_t u8g_pb_t; + + +uint8_t u8g_index_color_xh16_buf[2*WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_index_color_xh16_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_index_color_xh16_buf}; +u8g_dev_t name = { dev_fn, &u8g_index_color_xh16_pb , com_fn } + +*/ + +#include "u8g.h" + +/* +#define WIDTH_BITS 7 +#define WIDTH (1<buf; + uint8_t *end_ptr = ptr; + uint8_t cnt = b->p.page_height; + do + { + end_ptr += b->width*2; + cnt--; + } while( cnt > 0 ); + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + +void u8g_pbxh16_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pbxh16_Clear(b); +} + +static void u8g_pbxh16_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t low, uint8_t high) +{ + uint16_t tmp; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + tmp = y; + tmp *= b->width; + tmp += x; + tmp <<= 1; + ptr += tmp; + *ptr = low; + ptr++; + *ptr = high; +} + +void u8g_pbxh16_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pbxh16_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color, arg_pixel->hi_color); +} + + +void u8g_pbxh16_Set8Pixel(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pbxh16_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pbxh16_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pbxh16_Set8Pixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pbxh16_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pbxh16_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pbxh16_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_ENTRY: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_HICOLOR; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pbxh24.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pbxh24.c new file mode 100644 index 0000000000..61ed011a1f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pbxh24.c @@ -0,0 +1,287 @@ +/* + + u8g_pbxh24.c + + x lines per page, horizontal, 24 bits per pixel (true color modes) + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +struct _u8g_pb_t +{ + u8g_page_t p; + u8g_uint_t width; + void *buf; +}; +typedef struct _u8g_pb_t u8g_pb_t; + + +uint8_t u8g_index_color_xh16_buf[2*WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_index_color_xh16_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_index_color_xh16_buf}; +u8g_dev_t name = { dev_fn, &u8g_index_color_xh16_pb , com_fn } + +*/ + +#include "u8g.h" + +/* +#define WIDTH_BITS 7 +#define WIDTH (1<buf; + uint8_t *end_ptr = ptr; + uint8_t cnt = b->p.page_height; + do + { + end_ptr += b->width*3; + cnt--; + } while( cnt > 0 ); + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + +void u8g_pbxh24_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pbxh24_Clear(b); +} + +#ifdef OBSOLETE +static void u8g_pbxh24_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t r, uint8_t g, uint8_t b) +{ + uint16_t tmp; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + tmp = y; + tmp *= b->width; + tmp += x; + tmp *= 3; + ptr += tmp; + *ptr = r; + ptr++; + *ptr = g; + ptr++; + *ptr = b; +} +#endif + +/* + intensity + 0..3 intensity value + 4 replace color +*/ +static void u8g_pbxh24_set_tpixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t red, uint8_t green, uint8_t blue, uint8_t intensity) +{ + uint16_t tmp; + uint8_t *ptr = b->buf; + + if ( intensity == 0 ) + return; + + y -= b->p.page_y0; + tmp = y; + tmp *= b->width; + tmp += x; + tmp *= 3; + ptr += tmp; + + if ( intensity == 4 ) + { + *ptr = red; + ptr++; + *ptr = green; + ptr++; + *ptr = blue; + return; + } + + if ( intensity == 2 ) + { + /* + red = red/4 + red/2; + green = green/4 + green/2; + blue = blue/4 + blue/2; + */ + red >>= 1; + green >>= 1; + blue >>= 1; + } + else if ( intensity == 1 ) + { + red >>= 2; + green >>= 2; + blue >>= 2; + } + + if ( *ptr >= 255-red ) *ptr = 255; + else *ptr += red; + ptr++; + + if ( *ptr >= 255-green ) *ptr = 255; + else *ptr += green; + ptr++; + + if ( *ptr >= 255-blue ) *ptr = 255; + else *ptr += blue; + + /* + if ( *ptr < red ) *ptr = red; + ptr++; + if ( *ptr < green ) *ptr = green; + ptr++; + if ( *ptr < blue ) *ptr = blue; + */ + + +} + +void u8g_pbxh24_SetTPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel, uint8_t intensity) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pbxh24_set_tpixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color, arg_pixel->hi_color, arg_pixel->blue, intensity); +} + + +void u8g_pbxh24_Set8Pixel(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pbxh24_SetTPixel(b, arg_pixel, 4); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pbxh24_Set4TPixel(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + u8g_pbxh24_SetTPixel(b, arg_pixel, pixel >> 6); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 2; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pbxh24_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pbxh24_Set8Pixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pbxh24_SetTPixel(pb, (u8g_dev_arg_pixel_t *)arg, 4); + break; + case U8G_DEV_MSG_SET_4TPIXEL: + u8g_pbxh24_Set4TPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_TPIXEL: + u8g_pbxh24_SetTPixel(pb, (u8g_dev_arg_pixel_t *)arg, ((u8g_dev_arg_pixel_t *)arg)->pixel&3); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pbxh24_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pbxh24_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_ENTRY: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_TRUECOLOR; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_polygon.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_polygon.c new file mode 100644 index 0000000000..f7e9b65965 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_polygon.c @@ -0,0 +1,334 @@ +/* + + u8g_polygon.c + + Implementation of a polygon draw algorithm for "convex" polygons. + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + See also: + http://www.angelfire.com/linux/myp/ConvexPolRas/ConvexPolRas.html + Computer Graphics, Principles and Practice, Foley, van Dam, Feiner, Hughes (pp 92) + Michael Abrash's Graphics Programming Black Book, Special Edition (Chapter 38 and 39) + + Optimized for embedded systems + - static memory usage only + - consistent data types + - low flash ROM consumption + +*/ + + +#include "u8g.h" + + + + +/*===========================================*/ +/* procedures, which should not be inlined (save as much flash ROM as possible */ + +static uint8_t pge_Next(struct pg_edge_struct *pge) PG_NOINLINE; +static uint8_t pg_inc(pg_struct *pg, uint8_t i) PG_NOINLINE; +static uint8_t pg_dec(pg_struct *pg, uint8_t i) PG_NOINLINE; +static void pg_expand_min_y(pg_struct *pg, pg_word_t min_y, uint8_t pge_idx) PG_NOINLINE; +static void pg_line_init(pg_struct * const pg, uint8_t pge_index) PG_NOINLINE; + +/*===========================================*/ +/* line draw algorithm */ + +static uint8_t pge_Next(struct pg_edge_struct *pge) +{ + if ( pge->current_y >= pge->max_y ) + return 0; + + pge->current_x += pge->current_x_offset; + pge->error += pge->error_offset; + if ( pge->error > 0 ) + { + pge->current_x += pge->x_direction; + pge->error -= pge->height; + } + + pge->current_y++; + return 1; +} + +/* assumes y2 > y1 */ +static void pge_Init(struct pg_edge_struct *pge, pg_word_t x1, pg_word_t y1, pg_word_t x2, pg_word_t y2) +{ + pg_word_t dx = x2 - x1; + pg_word_t width; + + pge->height = y2 - y1; + pge->max_y = y2; + pge->current_y = y1; + pge->current_x = x1; + + if ( dx >= 0 ) + { + pge->x_direction = 1; + width = dx; + pge->error = 0; + } + else + { + pge->x_direction = -1; + width = -dx; + pge->error = 1 - pge->height; + } + + pge->current_x_offset = dx / pge->height; + pge->error_offset = width % pge->height; +} + +/*===========================================*/ +/* convex polygon algorithm */ + +static uint8_t pg_inc(pg_struct *pg, uint8_t i) +{ + i++; + if ( i >= pg->cnt ) + i = 0; + return i; +} + +static uint8_t pg_dec(pg_struct *pg, uint8_t i) +{ + i--; + if ( i >= pg->cnt ) + i = pg->cnt-1; + return i; +} + +static void pg_expand_min_y(pg_struct *pg, pg_word_t min_y, uint8_t pge_idx) +{ + uint8_t i = pg->pge[pge_idx].curr_idx; + for(;;) + { + i = pg->pge[pge_idx].next_idx_fn(pg, i); + if ( pg->list[i].y != min_y ) + break; + pg->pge[pge_idx].curr_idx = i; + } +} + +static uint8_t pg_prepare(pg_struct *pg) +{ + pg_word_t max_y; + pg_word_t min_y; + uint8_t i; + + /* setup the next index procedures */ + pg->pge[PG_RIGHT].next_idx_fn = pg_inc; + pg->pge[PG_LEFT].next_idx_fn = pg_dec; + + /* search for highest and lowest point */ + max_y = pg->list[0].y; + min_y = pg->list[0].y; + pg->pge[PG_LEFT].curr_idx = 0; + for( i = 1; i < pg->cnt; i++ ) + { + if ( max_y < pg->list[i].y ) + { + max_y = pg->list[i].y; + } + if ( min_y > pg->list[i].y ) + { + pg->pge[PG_LEFT].curr_idx = i; + min_y = pg->list[i].y; + } + } + + /* calculate total number of scan lines */ + pg->total_scan_line_cnt = max_y; + pg->total_scan_line_cnt -= min_y; + + /* exit if polygon height is zero */ + if ( pg->total_scan_line_cnt == 0 ) + return 0; + + /* if the minimum y side is flat, try to find the lowest and highest x points */ + pg->pge[PG_RIGHT].curr_idx = pg->pge[PG_LEFT].curr_idx; + pg_expand_min_y(pg, min_y, PG_RIGHT); + pg_expand_min_y(pg, min_y, PG_LEFT); + + /* check if the min side is really flat (depends on the x values) */ + pg->is_min_y_not_flat = 1; + if ( pg->list[pg->pge[PG_LEFT].curr_idx].x != pg->list[pg->pge[PG_RIGHT].curr_idx].x ) + { + pg->is_min_y_not_flat = 0; + } + else + { + pg->total_scan_line_cnt--; + if ( pg->total_scan_line_cnt == 0 ) + return 0; + } + + return 1; +} + +static void pg_hline(pg_struct *pg, u8g_t *u8g) +{ + pg_word_t x1, x2, y; + x1 = pg->pge[PG_LEFT].current_x; + x2 = pg->pge[PG_RIGHT].current_x; + y = pg->pge[PG_RIGHT].current_y; + + if ( y < 0 ) + return; + if ( y >= u8g_GetHeight(u8g) ) + return; + if ( x1 < x2 ) + { + if ( x2 < 0 ) + return; + if ( x1 >= u8g_GetWidth(u8g) ) + return; + if ( x1 < 0 ) + x1 = 0; + if ( x2 >= u8g_GetWidth(u8g) ) + x2 = u8g_GetWidth(u8g); + u8g_DrawHLine(u8g, x1, y, x2 - x1); + } + else + { + if ( x1 < 0 ) + return; + if ( x2 >= u8g_GetWidth(u8g) ) + return; + if ( x2 < 0 ) + x1 = 0; + if ( x1 >= u8g_GetWidth(u8g) ) + x1 = u8g_GetWidth(u8g); + u8g_DrawHLine(u8g, x2, y, x1 - x2); + } +} + +static void pg_line_init(pg_struct * pg, uint8_t pge_index) +{ + struct pg_edge_struct *pge = pg->pge+pge_index; + uint8_t idx; + pg_word_t x1; + pg_word_t y1; + pg_word_t x2; + pg_word_t y2; + + idx = pge->curr_idx; + y1 = pg->list[idx].y; + x1 = pg->list[idx].x; + idx = pge->next_idx_fn(pg, idx); + y2 = pg->list[idx].y; + x2 = pg->list[idx].x; + pge->curr_idx = idx; + + pge_Init(pge, x1, y1, x2, y2); +} + +static void pg_exec(pg_struct *pg, u8g_t *u8g) +{ + pg_word_t i = pg->total_scan_line_cnt; + + /* first line is skipped if the min y line is not flat */ + pg_line_init(pg, PG_LEFT); + pg_line_init(pg, PG_RIGHT); + + if ( pg->is_min_y_not_flat != 0 ) + { + pge_Next(&(pg->pge[PG_LEFT])); + pge_Next(&(pg->pge[PG_RIGHT])); + } + + do + { + pg_hline(pg, u8g); + while ( pge_Next(&(pg->pge[PG_LEFT])) == 0 ) + { + pg_line_init(pg, PG_LEFT); + } + while ( pge_Next(&(pg->pge[PG_RIGHT])) == 0 ) + { + pg_line_init(pg, PG_RIGHT); + } + i--; + } while( i > 0 ); +} + +/*===========================================*/ +/* API procedures */ + +void pg_ClearPolygonXY(pg_struct *pg) +{ + pg->cnt = 0; +} + +void pg_AddPolygonXY(pg_struct *pg, u8g_t *u8g, int16_t x, int16_t y) +{ + if ( pg->cnt < PG_MAX_POINTS ) + { + pg->list[pg->cnt].x = x; + pg->list[pg->cnt].y = y; + pg->cnt++; + } +} + +void pg_DrawPolygon(pg_struct *pg, u8g_t *u8g) +{ + if ( pg_prepare(pg) == 0 ) + return; + pg_exec(pg, u8g); +} + +pg_struct u8g_pg; + +void u8g_ClearPolygonXY(void) +{ + pg_ClearPolygonXY(&u8g_pg); +} + +void u8g_AddPolygonXY(u8g_t *u8g, int16_t x, int16_t y) +{ + pg_AddPolygonXY(&u8g_pg, u8g, x, y); +} + +void u8g_DrawPolygon(u8g_t *u8g) +{ + pg_DrawPolygon(&u8g_pg, u8g); +} + +void u8g_DrawTriangle(u8g_t *u8g, int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2) +{ + u8g_ClearPolygonXY(); + u8g_AddPolygonXY(u8g, x0, y0); + u8g_AddPolygonXY(u8g, x1, y1); + u8g_AddPolygonXY(u8g, x2, y2); + u8g_DrawPolygon(u8g); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rot.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rot.c index c581104cb2..3791675b6a 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rot.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rot.c @@ -40,7 +40,12 @@ uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); -u8g_dev_t u8g_dev_rot = { u8g_dev_rot90_fn, NULL, NULL }; +uint8_t u8g_dev_rot_dummy_fn(void *u8g, void *dev, uint8_t msg, void *arg) +{ + return 0; +} + +u8g_dev_t u8g_dev_rot = { u8g_dev_rot_dummy_fn, NULL, NULL }; void u8g_UndoRotation(u8g_t *u8g) @@ -95,7 +100,7 @@ uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) case U8G_DEV_MSG_STOP: case U8G_DEV_MSG_PAGE_FIRST: case U8G_DEV_MSG_PAGE_NEXT: - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: case U8G_DEV_MSG_SET_XY_CB: */ return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); @@ -151,6 +156,7 @@ uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, rotation_chain); break; case U8G_DEV_MSG_SET_PIXEL: + case U8G_DEV_MSG_SET_TPIXEL: { u8g_uint_t x, y; y = ((u8g_dev_arg_pixel_t *)arg)->x; @@ -163,6 +169,7 @@ uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) u8g_call_dev_fn(u8g, rotation_chain, msg, arg); break; case U8G_DEV_MSG_SET_8PIXEL: + case U8G_DEV_MSG_SET_4TPIXEL: { u8g_uint_t x, y; //uint16_t x,y; @@ -192,7 +199,7 @@ uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) case U8G_DEV_MSG_STOP: case U8G_DEV_MSG_PAGE_FIRST: case U8G_DEV_MSG_PAGE_NEXT: - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: case U8G_DEV_MSG_SET_XY_CB: */ return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); @@ -248,6 +255,7 @@ uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g, rotation_chain); break; case U8G_DEV_MSG_SET_PIXEL: + case U8G_DEV_MSG_SET_TPIXEL: { u8g_uint_t x, y; @@ -265,6 +273,7 @@ uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) u8g_call_dev_fn(u8g, rotation_chain, msg, arg); break; case U8G_DEV_MSG_SET_8PIXEL: + case U8G_DEV_MSG_SET_4TPIXEL: { u8g_uint_t x, y; @@ -298,7 +307,7 @@ uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) case U8G_DEV_MSG_STOP: case U8G_DEV_MSG_PAGE_FIRST: case U8G_DEV_MSG_PAGE_NEXT: - case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_COLOR_ENTRY: case U8G_DEV_MSG_SET_XY_CB: */ return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); @@ -353,6 +362,7 @@ uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, rotation_chain); break; case U8G_DEV_MSG_SET_PIXEL: + case U8G_DEV_MSG_SET_TPIXEL: { u8g_uint_t x, y; x = ((u8g_dev_arg_pixel_t *)arg)->y; @@ -372,6 +382,7 @@ uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) u8g_call_dev_fn(u8g, rotation_chain, msg, arg); break; case U8G_DEV_MSG_SET_8PIXEL: + case U8G_DEV_MSG_SET_4TPIXEL: { u8g_uint_t x, y; x = ((u8g_dev_arg_pixel_t *)arg)->y; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_state.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_state.c index 3ae3eee4a8..9573c8bf3b 100644 --- a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_state.c +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_state.c @@ -63,6 +63,15 @@ void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb) } +/*===============================================================*/ +/* register variable for restoring interrupt state */ + +#if defined(__AVR__) +uint8_t global_SREG_backup; +#endif + + + /*===============================================================*/ /* AVR */ @@ -82,7 +91,7 @@ void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb) #include static uint8_t u8g_state_avr_spi_memory[2]; -void u8g_backup_avr_spi(uint8_t msg) +void u8g_backup_spi(uint8_t msg) { if ( U8G_STATE_MSG_IS_BACKUP(msg) ) { @@ -98,5 +107,52 @@ void u8g_backup_avr_spi(uint8_t msg) } } +#elif defined (U8G_RASPBERRY_PI) + +#include + +void u8g_backup_spi(uint8_t msg) { + printf("u8g_backup_spi %d\r\n",msg); +} + +#elif defined(ARDUINO) && defined(__SAM3X8E__) // Arduino Due, maybe we should better check for __SAM3X8E__ + +#include "sam.h" + +struct sam_backup_struct +{ + uint32_t mr; + uint32_t sr; + uint32_t csr[4]; +} sam_backup[2]; + +void u8g_backup_spi(uint8_t msg) +{ + uint8_t idx = U8G_STATE_MSG_GET_IDX(msg); + if ( U8G_STATE_MSG_IS_BACKUP(msg) ) + { + sam_backup[idx].mr = SPI0->SPI_MR; + sam_backup[idx].sr = SPI0->SPI_SR; + sam_backup[idx].csr[0] = SPI0->SPI_CSR[0]; + sam_backup[idx].csr[1] = SPI0->SPI_CSR[1]; + sam_backup[idx].csr[2] = SPI0->SPI_CSR[2]; + sam_backup[idx].csr[3] = SPI0->SPI_CSR[3]; + } + else + { + SPI0->SPI_MR = sam_backup[idx].mr; + SPI0->SPI_CSR[0] = sam_backup[idx].csr[0]; + SPI0->SPI_CSR[1] = sam_backup[idx].csr[1]; + SPI0->SPI_CSR[2] = sam_backup[idx].csr[2]; + SPI0->SPI_CSR[3] = sam_backup[idx].csr[3]; + } +} + +#else + +void u8g_backup_spi(uint8_t msg) +{ +} + #endif