diff --git a/docs/esp8266_tcp_active_close.png b/docs/esp8266_tcp_active_close.png new file mode 100644 index 0000000000..f9dad09873 Binary files /dev/null and b/docs/esp8266_tcp_active_close.png differ diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp deleted file mode 100644 index eb86997189..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp +++ /dev/null @@ -1,232 +0,0 @@ -#include "Adafruit_ILI9341.h" -#include "Adafruit_GFX.h" - -extern "C"{ -#include -#include -#include -#include "driver/hspi.h" -} - -#define SWAPBYTES(i) ((i>>8) | (i<<8)) - -void Adafruit_ILI9341::transmitCmdData(uint8_t cmd, const uint8_t *data, uint8_t numDataByte) -{ - spi_wait_ready(); - TFT_DC_COMMAND; - spi_send_uint8(cmd); - spi_wait_ready(); - TFT_DC_DATA; - spi_send_data(data, numDataByte); -} - -void Adafruit_ILI9341::begin() { - //Set communication using HW SPI Port - config = spi_init(HSPI, 1, spi_mode_tx); - TFT_DC_INIT; - delay(1); - - uint8_t data[15] = {0}; - - data[0] = 0x39; - data[1] = 0x2C; - data[2] = 0x00; - data[3] = 0x34; - data[4] = 0x02; - transmitCmdData(0xCB, data, 5); - - data[0] = 0x00; - data[1] = 0XC1; - data[2] = 0X30; - transmitCmdData(0xCF, data, 3); - - data[0] = 0x85; - data[1] = 0x00; - data[2] = 0x78; - transmitCmdData(0xE8, data, 3); - - data[0] = 0x00; - data[1] = 0x00; - transmitCmdData(0xEA, data, 2); - - data[0] = 0x64; - data[1] = 0x03; - data[2] = 0X12; - data[3] = 0X81; - transmitCmdData(0xED, data, 4); - - data[0] = 0x20; - transmitCmdData(0xF7, data, 1); - - data[0] = 0x23; //VRH[5:0] - transmitCmdData(0xC0, data, 1); //Power control - - data[0] = 0x10; //SAP[2:0];BT[3:0] - transmitCmdData(0xC1, data, 1); //Power control - - data[0] = 0x3e; //Contrast - data[1] = 0x28; - transmitCmdData(0xC5, data, 2); //VCM control - - data[0] = 0x86; //-- - transmitCmdData(0xC7, data, 1); //VCM control2 - - data[0] = 0x48; //C8 - transmitCmdData(0x36, data, 1); // Memory Access Control - - data[0] = 0x55; - transmitCmdData(0x3A, data, 1); - - data[0] = 0x00; - data[1] = 0x18; - transmitCmdData(0xB1, data, 2); - - data[0] = 0x08; - data[1] = 0x82; - data[2] = 0x27; - transmitCmdData(0xB6, data, 3); // Display Function Control - - data[0] = 0x00; - transmitCmdData(0xF2, data, 1); // 3Gamma Function Disable - - data[0] = 0x01; - transmitCmdData(0x26, data, 1); //Gamma curve selected - - data[0] = 0x0F; - data[1] = 0x31; - data[2] = 0x2B; - data[3] = 0x0C; - data[4] = 0x0E; - data[5] = 0x08; - data[6] = 0x4E; - data[7] = 0xF1; - data[8] = 0x37; - data[9] = 0x07; - data[10] = 0x10; - data[11] = 0x03; - data[12] = 0x0E; - data[13] = 0x09; - data[14] = 0x00; - transmitCmdData(0xE0, data, 15); //Set Gamma - - data[0] = 0x00; - data[1] = 0x0E; - data[2] = 0x14; - data[3] = 0x03; - data[4] = 0x11; - data[5] = 0x07; - data[6] = 0x31; - data[7] = 0xC1; - data[8] = 0x48; - data[9] = 0x08; - data[10] = 0x0F; - data[11] = 0x0C; - data[12] = 0x31; - data[13] = 0x36; - data[14] = 0x0F; - transmitCmdData(0xE1, data, 15); //Set Gamma - - transmitCmd(0x11); //Exit Sleep - delay(120); - - transmitCmd(0x29); //Display on - transmitCmd(0x2c); - spi_wait_ready(); -} - -void Adafruit_ILI9341::drawPixel(int16_t x, int16_t y, uint16_t color) { - - if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; - setAddrWindow(x,y,x+1,y+1); - transmitData(SWAPBYTES(color)); -} - - -void Adafruit_ILI9341::drawFastVLine(int16_t x, int16_t y, int16_t h, - uint16_t color) { - - // Rudimentary clipping - if((x >= _width) || (y >= _height)) return; - - if((y+h-1) >= _height) - h = _height-y; - - setAddrWindow(x, y, x, y+h-1); - transmitData(SWAPBYTES(color), h); -} - -void Adafruit_ILI9341::drawFastHLine(int16_t x, int16_t y, int16_t w, - uint16_t color) { - - // Rudimentary clipping - if((x >= _width) || (y >= _height)) return; - if((x+w-1) >= _width) w = _width-x; - setAddrWindow(x, y, x+w-1, y); - transmitData(SWAPBYTES(color), w); -} - -void Adafruit_ILI9341::fillScreen(uint16_t color) { - fillRect(0, 0, _width, _height, color); -} - -// fill a rectangle -void Adafruit_ILI9341::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - - // rudimentary clipping (drawChar w/big text requires this) - if((x >= _width) || (y >= _height)) return; - if((x + w - 1) >= _width) w = _width - x; - if((y + h - 1) >= _height) h = _height - y; - - setAddrWindow(x, y, x+w-1, y+h-1); - transmitData(SWAPBYTES(color), h*w); -} - - -// Pass 8-bit (each) R,G,B, get back 16-bit packed color -uint16_t Adafruit_ILI9341::color565(uint8_t r, uint8_t g, uint8_t b) { - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); -} - - -#define MADCTL_MY 0x80 -#define MADCTL_MX 0x40 -#define MADCTL_MV 0x20 -#define MADCTL_ML 0x10 -#define MADCTL_RGB 0x00 -#define MADCTL_BGR 0x08 -#define MADCTL_MH 0x04 - -void Adafruit_ILI9341::setRotation(uint8_t m) { - - uint8_t data; - rotation = m % 4; // can't be higher than 3 - switch (rotation) { - case 0: - data = MADCTL_MX | MADCTL_BGR; - _width = ILI9341_TFTWIDTH; - _height = ILI9341_TFTHEIGHT; - break; - case 1: - data = MADCTL_MV | MADCTL_BGR; - _width = ILI9341_TFTHEIGHT; - _height = ILI9341_TFTWIDTH; - break; - case 2: - data = MADCTL_MY | MADCTL_BGR; - _width = ILI9341_TFTWIDTH; - _height = ILI9341_TFTHEIGHT; - break; - case 3: - data = MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR; - _width = ILI9341_TFTHEIGHT; - _height = ILI9341_TFTWIDTH; - break; - } - transmitCmdData(ILI9341_MADCTL, &data, 1); -} - - -void Adafruit_ILI9341::invertDisplay(boolean i) { - transmitCmd(i ? ILI9341_INVON : ILI9341_INVOFF); -} diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h deleted file mode 100644 index fdf5a50ece..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h +++ /dev/null @@ -1,126 +0,0 @@ -#ifndef _ADAFRUIT_ILI9341H_ -#define _ADAFRUIT_ILI9341H_ - -#include "Adafruit_GFX.h" - -extern "C" -{ -#include -#include -#include -#include "driver/hspi.h" -} - -#define ILI9341_TFTWIDTH 240 -#define ILI9341_TFTHEIGHT 320 - -#define ILI9341_NOP 0x00 -#define ILI9341_SWRESET 0x01 -#define ILI9341_RDDID 0x04 -#define ILI9341_RDDST 0x09 - -#define ILI9341_SLPIN 0x10 -#define ILI9341_SLPOUT 0x11 -#define ILI9341_PTLON 0x12 -#define ILI9341_NORON 0x13 - -#define ILI9341_RDMODE 0x0A -#define ILI9341_RDMADCTL 0x0B -#define ILI9341_RDPIXFMT 0x0C -#define ILI9341_RDIMGFMT 0x0A -#define ILI9341_RDSELFDIAG 0x0F - -#define ILI9341_INVOFF 0x20 -#define ILI9341_INVON 0x21 -#define ILI9341_GAMMASET 0x26 -#define ILI9341_DISPOFF 0x28 -#define ILI9341_DISPON 0x29 - -#define ILI9341_CASET 0x2A -#define ILI9341_PASET 0x2B -#define ILI9341_RAMWR 0x2C -#define ILI9341_RAMRD 0x2E - -#define ILI9341_PTLAR 0x30 -#define ILI9341_MADCTL 0x36 -#define ILI9341_PIXFMT 0x3A - -#define ILI9341_FRMCTR1 0xB1 -#define ILI9341_FRMCTR2 0xB2 -#define ILI9341_FRMCTR3 0xB3 -#define ILI9341_INVCTR 0xB4 -#define ILI9341_DFUNCTR 0xB6 - -#define ILI9341_PWCTR1 0xC0 -#define ILI9341_PWCTR2 0xC1 -#define ILI9341_PWCTR3 0xC2 -#define ILI9341_PWCTR4 0xC3 -#define ILI9341_PWCTR5 0xC4 -#define ILI9341_VMCTR1 0xC5 -#define ILI9341_VMCTR2 0xC7 - -#define ILI9341_RDID1 0xDA -#define ILI9341_RDID2 0xDB -#define ILI9341_RDID3 0xDC -#define ILI9341_RDID4 0xDD - -#define ILI9341_GMCTRP1 0xE0 -#define ILI9341_GMCTRN1 0xE1 -/* -#define ILI9341_PWCTR6 0xFC - -*/ - -// Color definitions -#define ILI9341_BLACK 0x0000 -#define ILI9341_BLUE 0x001F -#define ILI9341_RED 0xF800 -#define ILI9341_GREEN 0x07E0 -#define ILI9341_CYAN 0x07FF -#define ILI9341_MAGENTA 0xF81F -#define ILI9341_YELLOW 0xFFE0 -#define ILI9341_WHITE 0xFFFF - -#define TFT_DC_DATA GPIO_OUTPUT_SET(2, 1) -#define TFT_DC_COMMAND GPIO_OUTPUT_SET(2, 0) -#define TFT_DC_INIT PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2); TFT_DC_DATA - -#define MAKEWORD(b1, b2, b3, b4) (uint32_t(b1) | ((b2) << 8) | ((b3) << 16) | ((b4) << 24)) -#define SWAPBYTES(i) ((i>>8) | (i<<8)) - -class Adafruit_ILI9341 : public Adafruit_GFX { - -private: - uint8_t tabcolor; - spi_config config; - void transmitCmdData(uint8_t cmd, const uint8_t *data, uint8_t numDataByte); - inline void transmitData(uint16_t data) {spi_wait_ready(); spi_send_uint16(data);} - inline void transmitCmdData(uint8_t cmd, uint32_t data) {spi_wait_ready(); TFT_DC_COMMAND; spi_send_uint8(cmd); spi_wait_ready(); TFT_DC_DATA; spi_send_uint32(data);} - inline void transmitData(uint16_t data, int32_t repeats){spi_wait_ready(); spi_send_uint16_r(data, repeats);} - inline void transmitCmd(uint8_t cmd){spi_wait_ready(); TFT_DC_COMMAND; spi_send_uint8(cmd);spi_wait_ready(); TFT_DC_DATA;} - inline void drawPixelInternal(int16_t x, int16_t y, uint16_t color) { if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; - setAddrWindow(x,y,x+1,y+1); - transmitData(SWAPBYTES(color)); - } - -public: - Adafruit_ILI9341() : Adafruit_GFX(ILI9341_TFTWIDTH, ILI9341_TFTHEIGHT), tabcolor(0){} - - void begin(), - fillScreen(uint16_t color), - drawPixel(int16_t x, int16_t y, uint16_t color), - drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), - drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), - fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color), - setRotation(uint8_t r), - invertDisplay(boolean i); - inline void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) - { transmitCmdData(ILI9341_CASET, MAKEWORD(x0 >> 8, x0 & 0xFF, x1 >> 8, x1 & 0xFF)); - transmitCmdData(ILI9341_PASET, MAKEWORD(y0 >> 8, y0 & 0xFF, y1 >> 8, y1 & 0xFF)); - transmitCmd(ILI9341_RAMWR); // write to RAM - } - uint16_t color565(uint8_t r, uint8_t g, uint8_t b); -}; - -#endif diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font16.c b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font16.c deleted file mode 100644 index f80d20def6..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font16.c +++ /dev/null @@ -1,525 +0,0 @@ -// Font size 2 - -#include "Font16.h" - -const unsigned char widtbl_f16[96] = // character width table -{ - 5, 2, 3, 8, 7, 8, 8, 2, // char 32 - 39 - 6, 6, 7, 5, 2, 5, 4, 6, // char 40 - 47 - 7, 7, 7, 7, 7, 7, 7, 7, // char 48 - 55 - 7, 7, 2, 2, 5, 5, 5, 7, // char 56 - 63 - 8, 7, 7, 7, 7, 7, 7, 7, // char 64 - 71 - 6, 3, 7, 7, 6, 9, 7, 7, // char 72 - 79 - 7, 7, 7, 7, 7, 7, 7, 9, // char 80 - 87 - 7, 7, 7, 3, 6, 3, 16, 16, // char 88 - 95 - 3, 6, 6, 6, 6, 6, 5, 6, // char 96 - 103 - 6, 4, 4, 5, 4, 7, 6, 7, // char 104 - 111 - 6, 7, 5, 5, 4, 6, 7, 7, // char 112 - 119 - 5, 6, 6, 11, 16, 8, 2, 13 // char 120 - 127 -}; - -// Row format, MSB left - -const unsigned char chr_f16_20[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_21[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x00, 0x40, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_22[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0xA0, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_23[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x24, 0x24, 0x24, 0xFF, 0x24, 0x24, 0xFF, 0x24, // row 1 - 11 - 0x24, 0x24, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_24[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x40, 0x40, 0x70, 0x40, 0x40, // row 1 - 11 - 0x40, 0xFE, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_25[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x61, 0x91, 0x92, 0x64, 0x08, 0x10, 0x26, 0x49, // row 1 - 11 - 0x89, 0x86, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_26[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x20, 0x50, 0x88, 0x88, 0x50, 0x20, 0x52, 0x8C, // row 1 - 11 - 0x8C, 0x73, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_27[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_28[16] = // 1 unsigned char per row -{ - 0x00, 0x0C, 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 11 - 0x40, 0x40, 0x20, 0x10, 0x0C // row 12 - 16 -}; -const unsigned char chr_f16_29[16] = // 1 unsigned char per row -{ - 0x00, 0xC0, 0x20, 0x10, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, // row 1 - 11 - 0x08, 0x08, 0x10, 0x20, 0xC0 // row 12 - 16 -}; -const unsigned char chr_f16_2A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x10, 0x92, 0x54, 0x38, 0x54, 0x92, 0x10, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0xC0, 0xC0, 0x40, 0x80, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0xC0, 0xC0, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2F[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, // row 1 - 11 - 0x40, 0x80, 0x80, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_30[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x82, 0x82, 0x82, 0x82, 0x44, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_31[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x10, 0x30, 0x50, 0x10, 0x10, 0x10, 0x10, 0x10, // row 1 - 11 - 0x10, 0x7C, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_32[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x02, 0x04, 0x18, 0x20, 0x40, // row 1 - 11 - 0x80, 0xFE, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_33[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x78, 0x84, 0x02, 0x04, 0x38, 0x04, 0x02, 0x02, // row 1 - 11 - 0x84, 0x78, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_34[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x04, 0x0C, 0x14, 0x24, 0x44, 0x84, 0xFE, 0x04, // row 1 - 11 - 0x04, 0x04, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_35[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFC, 0x80, 0x80, 0x80, 0xF8, 0x04, 0x02, 0x02, // row 1 - 11 - 0x84, 0x78, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_36[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x3C, 0x40, 0x80, 0x80, 0xB8, 0xC4, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_37[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x7E, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, // row 1 - 11 - 0x10, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_38[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x44, 0x38, 0x44, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_39[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x46, 0x3A, 0x02, 0x02, // row 1 - 11 - 0x04, 0x78, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, // row 1 - 11 - 0x40, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, // row 1 - 11 - 0x10, 0x08, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x10, 0x20, // row 1 - 11 - 0x40, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3F[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x02, 0x04, 0x08, 0x10, 0x10, // row 1 - 11 - 0x00, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_40[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x3C, 0x42, 0x99, 0xA5, 0xA5, 0xA5, 0xA5, 0x9E, // row 1 - 11 - 0x40, 0x3E, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_41[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x7C, 0x82, // row 1 - 11 - 0x82, 0x82, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_42[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xF8, 0x84, 0x82, 0x84, 0xF8, 0x84, 0x82, 0x82, // row 1 - 11 - 0x84, 0xF8, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_43[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x3C, 0x42, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 11 - 0x42, 0x3C, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_44[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xF8, 0x84, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, // row 1 - 11 - 0x84, 0xF8, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_45[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFE, 0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0xFE, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_46[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFE, 0x80, 0x80, 0x80, 0xF8, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_47[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x3C, 0x42, 0x80, 0x80, 0x80, 0x9C, 0x82, 0x82, // row 1 - 11 - 0x42, 0x3C, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_48[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x84, 0x84, 0x84, 0x84, 0xFC, 0x84, 0x84, 0x84, // row 1 - 11 - 0x84, 0x84, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_49[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x40, 0xE0, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x84, 0x88, 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x88, // row 1 - 11 - 0x84, 0x82, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0xFC, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4D[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x80, 0xC1, 0x80, 0xA2, 0x80, // row 1 - 6 - 0xA2, 0x80, 0x94, 0x80, 0x94, 0x80, 0x88, 0x80, 0x88, 0x80, 0x80, 0x80, // row 7 - 12 - 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_4E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xC2, 0xC2, 0xA2, 0xA2, 0x92, 0x92, 0x8A, 0x8A, // row 1 - 11 - 0x86, 0x86, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4F[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_50[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xF8, 0x84, 0x82, 0x82, 0x82, 0x84, 0xF8, 0x80, // row 1 - 11 - 0x80, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_51[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x08, 0x06, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_52[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xF8, 0x84, 0x82, 0x82, 0x84, 0xF8, 0x90, 0x88, // row 1 - 11 - 0x84, 0x82, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_53[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x80, 0x60, 0x1C, 0x02, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_54[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFE, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // row 1 - 11 - 0x10, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_55[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_56[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, // row 1 - 11 - 0x10, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_57[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 6 - 0x88, 0x80, 0x88, 0x80, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x22, 0x00, // row 7 - 12 - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_58[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x82, 0x82, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, // row 1 - 11 - 0x82, 0x82, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_59[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x44, 0x28, 0x10, 0x10, 0x10, // row 1 - 11 - 0x10, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFE, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x40, // row 1 - 11 - 0x80, 0xFE, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0xE0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0x80, 0xE0, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, // row 1 - 11 - 0x40, 0x80, 0x80, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // row 1 - 11 - 0x20, 0x20, 0xE0, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5E[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xDE, 0x84, 0x21, 0x84, 0x21, // row 1 - 6 - 0x84, 0x21, 0x84, 0x21, 0x84, 0x21, 0x84, 0x21, 0x84, 0x21, 0x84, 0x21, // row 7 - 12 - 0x84, 0x21, 0x84, 0x21, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_5F[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0x52, 0x94, 0x4A, 0x52, // row 1 - 6 - 0x84, 0x21, 0x84, 0x21, 0x08, 0x42, 0x08, 0x42, 0x10, 0x84, 0x10, 0x84, // row 7 - 12 - 0x21, 0x08, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_60[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_61[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x08, 0x04, 0x74, 0x8C, // row 1 - 11 - 0x8C, 0x74, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_62[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xB0, 0xC8, 0x84, 0x84, 0x84, // row 1 - 11 - 0xC8, 0xB0, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_63[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x80, 0x80, 0x80, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_64[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x34, 0x4C, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_65[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x84, 0xF8, 0x80, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_66[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x30, 0x48, 0x40, 0x40, 0x40, 0xE0, 0x40, 0x40, // row 1 - 11 - 0x40, 0x40, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_67[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4C, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x04, 0x08, 0x70 // row 12 - 16 -}; -const unsigned char chr_f16_68[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xB0, 0xC8, 0x84, 0x84, 0x84, // row 1 - 11 - 0x84, 0x84, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_69[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x40, 0x40, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x10, // row 1 - 11 - 0x10, 0x10, 0x10, 0x90, 0x60 // row 12 - 16 -}; -const unsigned char chr_f16_6B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x88, 0x90, 0xA0, 0xC0, 0xA0, // row 1 - 11 - 0x90, 0x88, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xC0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x40, 0x40, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xD2, 0x92, 0x92, 0x92, // row 1 - 11 - 0x92, 0x92, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xC8, 0x84, 0x84, 0x84, // row 1 - 11 - 0x84, 0x84, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6F[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_70[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xC8, 0x84, 0x84, 0x84, // row 1 - 11 - 0xC8, 0xB0, 0x80, 0x80, 0x80 // row 12 - 16 -}; -const unsigned char chr_f16_71[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x4C, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x04, 0x04, 0x06 // row 12 - 16 -}; -const unsigned char chr_f16_72[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xC8, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_73[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x88, 0x80, 0x70, 0x08, // row 1 - 11 - 0x88, 0x70, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_74[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0xE0, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x40, 0x30, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_75[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x84, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_76[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x82, 0x44, // row 1 - 11 - 0x28, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_77[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x92, 0x92, // row 1 - 11 - 0xAA, 0x44, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_78[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x50, 0x20, 0x50, // row 1 - 11 - 0x88, 0x88, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_79[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x84, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x04, 0x08, 0x70 // row 12 - 16 -}; -const unsigned char chr_f16_7A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x04, 0x08, 0x30, 0x40, // row 1 - 11 - 0x80, 0xFC, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_7B[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, // row 1 - 6 - 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_7C[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0xF0, 0x00, 0x88, 0x00, 0x88, 0x00, 0xF0, 0x00, 0xA3, 0xC0, // row 1 - 6 - 0x92, 0x20, 0x8A, 0x20, 0x03, 0xC4, 0x02, 0x0A, 0x02, 0x11, 0x02, 0x11, // row 7 - 12 - 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_7D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x22, // row 1 - 11 - 0x32, 0x2C, 0x20, 0x40, 0x80 // row 12 - 16 -}; -const unsigned char chr_f16_7E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_7F[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x34, 0xD0, 0x2A, 0xA8, 0x2A, 0xA8, 0x2A, 0xA8, 0x2A, 0xA8, // row 7 - 12 - 0x2A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; - -const unsigned char* chrtbl_f16[96] = // character pointer table -{ - chr_f16_20, chr_f16_21, chr_f16_22, chr_f16_23, chr_f16_24, chr_f16_25, chr_f16_26, chr_f16_27, - chr_f16_28, chr_f16_29, chr_f16_2A, chr_f16_2B, chr_f16_2C, chr_f16_2D, chr_f16_2E, chr_f16_2F, - chr_f16_30, chr_f16_31, chr_f16_32, chr_f16_33, chr_f16_34, chr_f16_35, chr_f16_36, chr_f16_37, - chr_f16_38, chr_f16_39, chr_f16_3A, chr_f16_3B, chr_f16_3C, chr_f16_3D, chr_f16_3E, chr_f16_3F, - chr_f16_40, chr_f16_41, chr_f16_42, chr_f16_43, chr_f16_44, chr_f16_45, chr_f16_46, chr_f16_47, - chr_f16_48, chr_f16_49, chr_f16_4A, chr_f16_4B, chr_f16_4C, chr_f16_4D, chr_f16_4E, chr_f16_4F, - chr_f16_50, chr_f16_51, chr_f16_52, chr_f16_53, chr_f16_54, chr_f16_55, chr_f16_56, chr_f16_57, - chr_f16_58, chr_f16_59, chr_f16_5A, chr_f16_5B, chr_f16_5C, chr_f16_5D, chr_f16_5E, chr_f16_5F, - chr_f16_60, chr_f16_61, chr_f16_62, chr_f16_63, chr_f16_64, chr_f16_65, chr_f16_66, chr_f16_67, - chr_f16_68, chr_f16_69, chr_f16_6A, chr_f16_6B, chr_f16_6C, chr_f16_6D, chr_f16_6E, chr_f16_6F, - chr_f16_70, chr_f16_71, chr_f16_72, chr_f16_73, chr_f16_74, chr_f16_75, chr_f16_76, chr_f16_77, - chr_f16_78, chr_f16_79, chr_f16_7A, chr_f16_7B, chr_f16_7C, chr_f16_7D, chr_f16_7E, chr_f16_7F -}; diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font16.h b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font16.h deleted file mode 100644 index 65c0557825..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font16.h +++ /dev/null @@ -1,7 +0,0 @@ -#define nr_chrs_f16 96 -#define chr_hgt_f16 16 -#define data_size_f16 8 -#define firstchr_f16 32 - -extern const unsigned char widtbl_f16[96]; -extern const unsigned char* chrtbl_f16[96]; diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font32.c b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font32.c deleted file mode 100644 index 3d97568205..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font32.c +++ /dev/null @@ -1,1038 +0,0 @@ -// Font size 4 - -#include "Font32.h" - - -const unsigned char widtbl_f32[96] = // character width table -{ - 8, 11, 11, 22, 17, 24, 20, 9, // char 32 - 39 - 11, 11, 15, 28, 10, 11, 10, 11, // char 40 - 47 - 17, 17, 17, 17, 17, 17, 17, 17, // char 48 - 55 - 17, 17, 10, 10, 28, 28, 28, 16, // char 56 - 63 - 28, 19, 20, 21, 21, 19, 18, 22, // char 64 - 71 - 21, 9, 16, 20, 16, 24, 21, 22, // char 72 - 79 - 19, 22, 20, 19, 17, 21, 18, 26, // char 80 - 87 - 18, 19, 19, 12, 16, 12, 28, 16, // char 88 - 95 - 9, 17, 18, 16, 18, 17, 11, 18, // char 96 - 103 - 18, 9, 9, 15, 9, 25, 18, 18, // char 104 - 111 - 18, 18, 11, 15, 10, 17, 15, 21, // char 112 - 119 - 16, 16, 15, 16, 16, 16, 28, 4 // char 120 - 127 -}; - -// Row format, MSB left - -const unsigned char chr_f32_20[] = // 1 byte per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 12 - 22 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 23 - 32 -}; -const unsigned char chr_f32_21[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 7 - 12 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, // row 19 - 24 - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_22[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, // row 7 - 12 - 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_23[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x66, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0xCC, 0x00, // row 9 - 12 - 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0x10, 0x00, // row 13 - 16 - 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x20, 0x00, // row 17 - 20 - 0x02, 0x20, 0x00, 0x06, 0x60, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, // row 21 - 24 - 0x0C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_24[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0F, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x60, 0x18, 0x00, // row 9 - 12 - 0x60, 0x18, 0x00, 0x60, 0x00, 0x00, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, // row 13 - 16 - 0x7F, 0x80, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, // row 17 - 20 - 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0x88, 0x00, 0x7F, 0xF8, 0x00, // row 21 - 24 - 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_25[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0E, 0x01, 0x80, 0x3F, 0x81, 0x00, 0x31, 0x83, 0x00, 0x60, 0xC6, 0x00, // row 9 - 12 - 0x60, 0xC4, 0x00, 0x60, 0xCC, 0x00, 0x31, 0x88, 0x00, 0x3F, 0x90, 0x00, // row 13 - 16 - 0x0E, 0x31, 0xC0, 0x00, 0x27, 0xF0, 0x00, 0x46, 0x30, 0x00, 0xCC, 0x18, // row 17 - 20 - 0x00, 0x8C, 0x18, 0x01, 0x8C, 0x18, 0x03, 0x06, 0x30, 0x02, 0x07, 0xF0, // row 21 - 24 - 0x06, 0x01, 0xC0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_26[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, // row 5 - 8 - 0x0F, 0xE0, 0x00, 0x1C, 0x70, 0x00, 0x18, 0x30, 0x00, 0x18, 0x30, 0x00, // row 9 - 12 - 0x18, 0x70, 0x00, 0x0C, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, // row 13 - 16 - 0x1F, 0x86, 0x00, 0x39, 0xC6, 0x00, 0x70, 0xE6, 0x00, 0x60, 0x7C, 0x00, // row 17 - 20 - 0x60, 0x3C, 0x00, 0x60, 0x18, 0x00, 0x70, 0x7E, 0x00, 0x3F, 0xE7, 0x00, // row 21 - 24 - 0x1F, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_27[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x10, 0x00, 0x30, 0x00, // row 7 - 12 - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_28[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0C, 0x00, // row 7 - 12 - 0x0C, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 19 - 24 - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, // row 25 - 30 - 0x03, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_29[] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x60, 0x00, 0x20, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 19 - 24 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x20, 0x00, 0x60, 0x00, 0x40, 0x00, // row 25 - 30 - 0xC0, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x26, 0x40, 0x7F, 0xE0, // row 7 - 12 - 0x1F, 0x80, 0x0F, 0x00, 0x19, 0x80, 0x39, 0xC0, 0x10, 0x80, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2B[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // row 10 - 12 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // row 13 - 15 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFF, 0xF0, 0x00, // row 16 - 18 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // row 19 - 21 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // row 22 - 24 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, // row 19 - 24 - 0x38, 0x00, 0x08, 0x00, 0x18, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2D[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, // row 13 - 18 - 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2E[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, // row 19 - 24 - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2F[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, // row 7 - 12 - 0x04, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x10, 0x00, 0x30, 0x00, 0x30, 0x00, 0x20, 0x00, 0x60, 0x00, 0x60, 0x00, // row 19 - 24 - 0x40, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_30[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x07, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x30, 0x30, 0x00, // row 9 - 12 - 0x70, 0x38, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 13 - 16 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x70, 0x38, 0x00, 0x30, 0x30, 0x00, 0x3C, 0xF0, 0x00, 0x1F, 0xE0, 0x00, // row 21 - 24 - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_31[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, 0x00, 0x1F, 0x80, 0x00, // row 9 - 12 - 0x1F, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 13 - 16 - 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 17 - 20 - 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 21 - 24 - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_32[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0F, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x70, 0x18, 0x00, // row 9 - 12 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x00, // row 13 - 16 - 0x00, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, // row 17 - 20 - 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x7F, 0xF8, 0x00, // row 21 - 24 - 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_33[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x38, 0x70, 0x00, 0x30, 0x30, 0x00, // row 9 - 12 - 0x70, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x03, 0xE0, 0x00, // row 13 - 16 - 0x03, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x60, 0x18, 0x00, 0x70, 0x38, 0x00, 0x38, 0x70, 0x00, 0x3F, 0xF0, 0x00, // row 21 - 24 - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_34[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, // row 9 - 12 - 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, // row 13 - 16 - 0x18, 0x60, 0x00, 0x30, 0x60, 0x00, 0x60, 0x60, 0x00, 0x7F, 0xF8, 0x00, // row 17 - 20 - 0x7F, 0xF8, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, // row 21 - 24 - 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_35[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x30, 0x00, 0x00, 0x37, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x78, 0x70, 0x00, // row 13 - 16 - 0x60, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, // row 17 - 20 - 0x60, 0x18, 0x00, 0x70, 0x38, 0x00, 0x38, 0x70, 0x00, 0x3F, 0xF0, 0x00, // row 21 - 24 - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_36[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x07, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x38, 0x30, 0x00, 0x30, 0x18, 0x00, // row 9 - 12 - 0x30, 0x18, 0x00, 0x60, 0x00, 0x00, 0x67, 0xC0, 0x00, 0x7F, 0xF0, 0x00, // row 13 - 16 - 0x78, 0x70, 0x00, 0x70, 0x38, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x60, 0x18, 0x00, 0x30, 0x38, 0x00, 0x38, 0x70, 0x00, 0x1F, 0xF0, 0x00, // row 21 - 24 - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_37[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x7F, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, // row 9 - 12 - 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x80, 0x00, // row 13 - 16 - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, // row 17 - 20 - 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, // row 21 - 24 - 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_38[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x07, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x18, 0x60, 0x00, 0x30, 0x30, 0x00, // row 9 - 12 - 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x18, 0x60, 0x00, 0x0F, 0xC0, 0x00, // row 13 - 16 - 0x1F, 0xE0, 0x00, 0x38, 0x70, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x38, 0x70, 0x00, 0x3F, 0xF0, 0x00, // row 21 - 24 - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_39[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0F, 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x38, 0x70, 0x00, 0x70, 0x30, 0x00, // row 9 - 12 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x70, 0x38, 0x00, // row 13 - 16 - 0x38, 0x78, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0x98, 0x00, 0x00, 0x18, 0x00, // row 17 - 20 - 0x60, 0x30, 0x00, 0x60, 0x30, 0x00, 0x30, 0x70, 0x00, 0x3F, 0xE0, 0x00, // row 21 - 24 - 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_3A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, // row 19 - 24 - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3B[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, // row 19 - 24 - 0x38, 0x00, 0x08, 0x00, 0x18, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3C[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // row 10 - 12 - 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1C, 0x00, 0x00, // row 13 - 15 - 0x00, 0xF0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // row 16 - 18 - 0x03, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, // row 19 - 21 - 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3D[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 10 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 15 - 0x07, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 16 - 18 - 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 21 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3E[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // row 10 - 12 - 0x03, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, // row 13 - 15 - 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x30, 0x00, // row 16 - 18 - 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1C, 0x00, 0x00, // row 19 - 21 - 0x00, 0xF0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3F[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x0F, 0xC0, 0x3F, 0xE0, 0x38, 0x70, 0x70, 0x30, 0x60, 0x30, // row 7 - 12 - 0x60, 0x30, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, // row 13 - 18 - 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, // row 19 - 24 - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_40[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xC0, 0x70, 0x00, // row 7 - 9 - 0x07, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x06, 0x00, // row 10 - 12 - 0x10, 0x1E, 0x43, 0x00, 0x30, 0x63, 0xC3, 0x00, 0x30, 0xC1, 0x83, 0x00, // row 13 - 15 - 0x60, 0xC1, 0x83, 0x00, 0x61, 0x81, 0x83, 0x00, 0x61, 0x81, 0x83, 0x00, // row 16 - 18 - 0x61, 0x83, 0x06, 0x00, 0x61, 0x83, 0x06, 0x00, 0x61, 0x83, 0x0C, 0x00, // row 19 - 21 - 0x30, 0xC7, 0x18, 0x00, 0x30, 0x79, 0xF0, 0x00, 0x18, 0x00, 0x00, 0x00, // row 22 - 24 - 0x0C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x03, 0x81, 0xE0, 0x00, // row 25 - 27 - 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_41[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 5 - 8 - 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x60, 0x00, 0x06, 0x60, 0x00, // row 9 - 12 - 0x06, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x30, 0x00, // row 13 - 16 - 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, // row 17 - 20 - 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, // row 21 - 24 - 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_42[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, // row 5 - 8 - 0x3F, 0xFE, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, // row 9 - 12 - 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x30, 0x0E, 0x00, 0x3F, 0xF8, 0x00, // row 13 - 16 - 0x3F, 0xFE, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 17 - 20 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x0E, 0x00, 0x3F, 0xFE, 0x00, // row 21 - 24 - 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_43[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, // row 5 - 8 - 0x0F, 0xFE, 0x00, 0x1E, 0x0F, 0x00, 0x38, 0x03, 0x00, 0x30, 0x01, 0x80, // row 9 - 12 - 0x70, 0x01, 0x80, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, // row 13 - 16 - 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x01, 0x80, 0x70, 0x01, 0x80, // row 17 - 20 - 0x30, 0x03, 0x80, 0x38, 0x03, 0x00, 0x1E, 0x0F, 0x00, 0x0F, 0xFE, 0x00, // row 21 - 24 - 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_44[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, // row 5 - 8 - 0x3F, 0xFC, 0x00, 0x30, 0x1E, 0x00, 0x30, 0x07, 0x00, 0x30, 0x03, 0x00, // row 9 - 12 - 0x30, 0x03, 0x80, 0x30, 0x01, 0x80, 0x30, 0x01, 0x80, 0x30, 0x01, 0x80, // row 13 - 16 - 0x30, 0x01, 0x80, 0x30, 0x01, 0x80, 0x30, 0x01, 0x80, 0x30, 0x03, 0x80, // row 17 - 20 - 0x30, 0x03, 0x00, 0x30, 0x07, 0x00, 0x30, 0x1E, 0x00, 0x3F, 0xFC, 0x00, // row 21 - 24 - 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_45[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, // row 5 - 8 - 0x3F, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0xFC, 0x00, // row 13 - 16 - 0x3F, 0xFC, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 17 - 20 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0xFE, 0x00, // row 21 - 24 - 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_46[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, // row 5 - 8 - 0x3F, 0xFC, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0xF8, 0x00, // row 13 - 16 - 0x3F, 0xF8, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 17 - 20 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 21 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_47[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, // row 5 - 8 - 0x0F, 0xFE, 0x00, 0x1C, 0x0F, 0x00, 0x38, 0x03, 0x00, 0x30, 0x03, 0x80, // row 9 - 12 - 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x7F, 0x80, // row 13 - 16 - 0x60, 0x7F, 0x80, 0x60, 0x01, 0x80, 0x60, 0x01, 0x80, 0x70, 0x01, 0x80, // row 17 - 20 - 0x30, 0x03, 0x80, 0x38, 0x07, 0x80, 0x1E, 0x0F, 0x80, 0x0F, 0xFD, 0x80, // row 21 - 24 - 0x03, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_48[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, // row 5 - 8 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 9 - 12 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, // row 13 - 16 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 17 - 20 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 21 - 24 - 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_49[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_4A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, // row 7 - 12 - 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, // row 13 - 18 - 0x00, 0x60, 0xC0, 0x60, 0xC0, 0x60, 0xC0, 0x60, 0xE0, 0xE0, 0x7F, 0xC0, // row 19 - 24 - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_4B[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x07, 0x00, // row 5 - 8 - 0x30, 0x0E, 0x00, 0x30, 0x1C, 0x00, 0x30, 0x38, 0x00, 0x30, 0x70, 0x00, // row 9 - 12 - 0x30, 0xE0, 0x00, 0x31, 0xC0, 0x00, 0x33, 0x80, 0x00, 0x37, 0x80, 0x00, // row 13 - 16 - 0x3F, 0xC0, 0x00, 0x3C, 0xE0, 0x00, 0x38, 0x70, 0x00, 0x30, 0x30, 0x00, // row 17 - 20 - 0x30, 0x38, 0x00, 0x30, 0x1C, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x07, 0x00, // row 21 - 24 - 0x30, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_4C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3F, 0xF8, // row 19 - 24 - 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_4D[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x38, 0x00, 0xE0, // row 5 - 8 - 0x3C, 0x01, 0xE0, 0x3C, 0x01, 0xE0, 0x3C, 0x01, 0xE0, 0x36, 0x03, 0x60, // row 9 - 12 - 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x33, 0x06, 0x60, 0x33, 0x06, 0x60, // row 13 - 16 - 0x33, 0x06, 0x60, 0x31, 0x8C, 0x60, 0x31, 0x8C, 0x60, 0x31, 0x8C, 0x60, // row 17 - 20 - 0x30, 0xD8, 0x60, 0x30, 0xD8, 0x60, 0x30, 0xF8, 0x60, 0x30, 0x70, 0x60, // row 21 - 24 - 0x30, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_4E[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, // row 5 - 8 - 0x38, 0x03, 0x00, 0x3C, 0x03, 0x00, 0x3E, 0x03, 0x00, 0x36, 0x03, 0x00, // row 9 - 12 - 0x37, 0x03, 0x00, 0x33, 0x83, 0x00, 0x31, 0x83, 0x00, 0x31, 0xC3, 0x00, // row 13 - 16 - 0x30, 0xE3, 0x00, 0x30, 0x63, 0x00, 0x30, 0x73, 0x00, 0x30, 0x3B, 0x00, // row 17 - 20 - 0x30, 0x1B, 0x00, 0x30, 0x1F, 0x00, 0x30, 0x0F, 0x00, 0x30, 0x07, 0x00, // row 21 - 24 - 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_4F[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, // row 5 - 8 - 0x0F, 0xFE, 0x00, 0x1E, 0x0F, 0x00, 0x38, 0x03, 0x80, 0x30, 0x01, 0x80, // row 9 - 12 - 0x70, 0x01, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, // row 13 - 16 - 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x70, 0x01, 0xC0, // row 17 - 20 - 0x30, 0x01, 0x80, 0x38, 0x03, 0x80, 0x1E, 0x0F, 0x00, 0x0F, 0xFE, 0x00, // row 21 - 24 - 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_50[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, // row 5 - 8 - 0x3F, 0xFC, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, // row 9 - 12 - 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x30, 0x0E, 0x00, 0x3F, 0xFC, 0x00, // row 13 - 16 - 0x3F, 0xF8, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 17 - 20 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 21 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_51[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, // row 5 - 8 - 0x0F, 0xFE, 0x00, 0x1E, 0x0F, 0x00, 0x38, 0x03, 0x80, 0x30, 0x01, 0x80, // row 9 - 12 - 0x70, 0x01, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, // row 13 - 16 - 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x70, 0x11, 0xC0, // row 17 - 20 - 0x30, 0x39, 0x80, 0x38, 0x1F, 0x80, 0x1E, 0x0F, 0x00, 0x0F, 0xFF, 0x80, // row 21 - 24 - 0x03, 0xF9, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_52[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, // row 5 - 8 - 0x3F, 0xFE, 0x00, 0x30, 0x07, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 9 - 12 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x06, 0x00, 0x3F, 0xFE, 0x00, // row 13 - 16 - 0x3F, 0xFC, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x06, 0x00, 0x30, 0x07, 0x00, // row 17 - 20 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 21 - 24 - 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_53[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, // row 5 - 8 - 0x1F, 0xF8, 0x00, 0x38, 0x1C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, // row 9 - 12 - 0x30, 0x0E, 0x00, 0x38, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xE0, 0x00, // row 13 - 16 - 0x01, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0E, 0x00, 0x70, 0x06, 0x00, // row 17 - 20 - 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x3C, 0x0E, 0x00, 0x1F, 0xFC, 0x00, // row 21 - 24 - 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_54[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, // row 5 - 8 - 0xFF, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, // row 9 - 12 - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, // row 13 - 16 - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, // row 17 - 20 - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, // row 21 - 24 - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_55[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, // row 5 - 8 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 9 - 12 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 13 - 16 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 17 - 20 - 0x30, 0x03, 0x00, 0x38, 0x07, 0x00, 0x1C, 0x0E, 0x00, 0x0F, 0xFC, 0x00, // row 21 - 24 - 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_56[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0xE0, 0x0E, 0x00, // row 5 - 8 - 0x60, 0x0C, 0x00, 0x60, 0x0C, 0x00, 0x60, 0x0C, 0x00, 0x30, 0x18, 0x00, // row 9 - 12 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0x30, 0x00, 0x18, 0x30, 0x00, // row 13 - 16 - 0x18, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, // row 17 - 20 - 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x80, 0x00, // row 21 - 24 - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_57[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0xE0, 0x38, 0x0E, 0x00, 0x60, 0x38, 0x0C, 0x00, // row 7 - 9 - 0x60, 0x38, 0x0C, 0x00, 0x70, 0x6C, 0x1C, 0x00, 0x30, 0x6C, 0x18, 0x00, // row 10 - 12 - 0x30, 0x6C, 0x18, 0x00, 0x30, 0x6C, 0x18, 0x00, 0x38, 0xC6, 0x38, 0x00, // row 13 - 15 - 0x18, 0xC6, 0x30, 0x00, 0x18, 0xC6, 0x30, 0x00, 0x18, 0xC6, 0x30, 0x00, // row 16 - 18 - 0x1D, 0x83, 0x70, 0x00, 0x0D, 0x83, 0x60, 0x00, 0x0D, 0x83, 0x60, 0x00, // row 19 - 21 - 0x0D, 0x83, 0x60, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x07, 0x01, 0xC0, 0x00, // row 22 - 24 - 0x07, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_58[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x60, 0x0C, 0x00, // row 5 - 8 - 0x70, 0x1C, 0x00, 0x30, 0x18, 0x00, 0x18, 0x30, 0x00, 0x1C, 0x70, 0x00, // row 9 - 12 - 0x0C, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x80, 0x00, // row 13 - 16 - 0x03, 0x80, 0x00, 0x06, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x0C, 0x60, 0x00, // row 17 - 20 - 0x18, 0x30, 0x00, 0x38, 0x38, 0x00, 0x30, 0x18, 0x00, 0x70, 0x1C, 0x00, // row 21 - 24 - 0xE0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_59[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, // row 5 - 8 - 0x70, 0x0E, 0x00, 0x30, 0x0C, 0x00, 0x38, 0x1C, 0x00, 0x18, 0x18, 0x00, // row 9 - 12 - 0x0C, 0x30, 0x00, 0x0E, 0x70, 0x00, 0x06, 0x60, 0x00, 0x03, 0xC0, 0x00, // row 13 - 16 - 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 17 - 20 - 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 21 - 24 - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_5A[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, // row 5 - 8 - 0x3F, 0xFE, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, // row 9 - 12 - 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, // row 13 - 16 - 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0E, 0x00, 0x00, // row 17 - 20 - 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x7F, 0xFE, 0x00, // row 21 - 24 - 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_5B[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 7 - 12 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 19 - 24 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x1F, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_5C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x20, 0x00, 0x20, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00, 0x18, 0x00, // row 7 - 12 - 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, // row 13 - 18 - 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x80, // row 19 - 24 - 0x00, 0x80, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x60, // row 25 - 30 - 0x00, 0x20, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_5D[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, // row 7 - 12 - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, // row 13 - 18 - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, // row 19 - 24 - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x7C, 0x00, 0x7C, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_5E[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, // row 7 - 9 - 0x00, 0x63, 0x00, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x01, 0x80, 0xC0, 0x00, // row 10 - 12 - 0x03, 0x00, 0x60, 0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 15 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 16 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 21 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_5F[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0xFF, 0xF8, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_60[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x40, 0x00, 0x70, 0x00, 0x70, 0x00, // row 7 - 12 - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_61[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x0F, 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x30, 0x70, 0x00, 0x30, 0x30, 0x00, // row 13 - 16 - 0x00, 0x30, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x70, 0x30, 0x00, // row 17 - 20 - 0x60, 0x30, 0x00, 0x60, 0x30, 0x00, 0x70, 0xF0, 0x00, 0x3F, 0xBC, 0x00, // row 21 - 24 - 0x1F, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_62[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // row 5 - 8 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x33, 0xC0, 0x00, 0x37, 0xF0, 0x00, 0x3E, 0x78, 0x00, 0x38, 0x18, 0x00, // row 13 - 16 - 0x30, 0x1C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, // row 17 - 20 - 0x30, 0x1C, 0x00, 0x38, 0x18, 0x00, 0x3E, 0x78, 0x00, 0x37, 0xF0, 0x00, // row 21 - 24 - 0x33, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_63[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x07, 0x80, 0x1F, 0xE0, 0x3C, 0xE0, 0x30, 0x30, 0x70, 0x00, 0x60, 0x00, // row 13 - 18 - 0x60, 0x00, 0x60, 0x00, 0x70, 0x30, 0x30, 0x30, 0x3C, 0xE0, 0x1F, 0xE0, // row 19 - 24 - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_64[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, // row 5 - 8 - 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, // row 9 - 12 - 0x07, 0x98, 0x00, 0x1F, 0xD8, 0x00, 0x3C, 0xF8, 0x00, 0x30, 0x38, 0x00, // row 13 - 16 - 0x70, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x70, 0x18, 0x00, 0x30, 0x38, 0x00, 0x3C, 0xF8, 0x00, 0x1F, 0xD8, 0x00, // row 21 - 24 - 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_65[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x07, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x30, 0x30, 0x00, // row 13 - 16 - 0x70, 0x18, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x60, 0x00, 0x00, // row 17 - 20 - 0x70, 0x00, 0x00, 0x30, 0x38, 0x00, 0x3C, 0xF0, 0x00, 0x1F, 0xE0, 0x00, // row 21 - 24 - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_66[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0xFE, 0x00, 0xFE, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_67[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x07, 0x98, 0x00, 0x1F, 0xD8, 0x00, 0x3C, 0xF8, 0x00, 0x30, 0x38, 0x00, // row 13 - 16 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x70, 0x18, 0x00, 0x30, 0x38, 0x00, 0x3C, 0xF8, 0x00, 0x1F, 0xD8, 0x00, // row 21 - 24 - 0x07, 0x98, 0x00, 0x00, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x38, 0x00, // row 25 - 28 - 0x38, 0x70, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_68[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // row 5 - 8 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x33, 0xE0, 0x00, 0x37, 0xF0, 0x00, 0x3C, 0x38, 0x00, 0x38, 0x18, 0x00, // row 13 - 16 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 17 - 20 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 21 - 24 - 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_69[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0xF0, 0x00, // row 25 - 30 - 0xE0, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6B[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x70, 0x30, 0xE0, 0x31, 0xC0, 0x33, 0x80, 0x37, 0x00, 0x3F, 0x00, // row 13 - 18 - 0x3F, 0x80, 0x39, 0x80, 0x31, 0xC0, 0x30, 0xC0, 0x30, 0xE0, 0x30, 0x60, // row 19 - 24 - 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6D[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 10 - 12 - 0x33, 0xC3, 0xC0, 0x00, 0x37, 0xEF, 0xE0, 0x00, 0x3C, 0x7C, 0x70, 0x00, // row 13 - 15 - 0x38, 0x38, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, // row 16 - 18 - 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, // row 19 - 21 - 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, // row 22 - 24 - 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6E[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x33, 0xE0, 0x00, 0x37, 0xF0, 0x00, 0x3C, 0x38, 0x00, 0x38, 0x18, 0x00, // row 13 - 16 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 17 - 20 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 21 - 24 - 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_6F[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x07, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x3C, 0x78, 0x00, 0x30, 0x18, 0x00, // row 13 - 16 - 0x70, 0x1C, 0x00, 0x60, 0x0C, 0x00, 0x60, 0x0C, 0x00, 0x60, 0x0C, 0x00, // row 17 - 20 - 0x70, 0x1C, 0x00, 0x30, 0x18, 0x00, 0x3C, 0x78, 0x00, 0x1F, 0xF0, 0x00, // row 21 - 24 - 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_70[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x33, 0xC0, 0x00, 0x37, 0xF0, 0x00, 0x3E, 0x78, 0x00, 0x38, 0x18, 0x00, // row 13 - 16 - 0x30, 0x1C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, // row 17 - 20 - 0x30, 0x1C, 0x00, 0x38, 0x18, 0x00, 0x3E, 0x78, 0x00, 0x37, 0xF0, 0x00, // row 21 - 24 - 0x33, 0xC0, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 25 - 28 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_71[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x07, 0x98, 0x00, 0x1F, 0xD8, 0x00, 0x3C, 0xF8, 0x00, 0x30, 0x38, 0x00, // row 13 - 16 - 0x70, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x70, 0x18, 0x00, 0x30, 0x38, 0x00, 0x3C, 0xF8, 0x00, 0x1F, 0xD8, 0x00, // row 21 - 24 - 0x07, 0x98, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, // row 25 - 28 - 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_72[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x37, 0x00, 0x3F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_73[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x1F, 0x00, 0x3F, 0xC0, 0x70, 0xC0, 0x60, 0x60, 0x60, 0x00, 0x3E, 0x00, // row 13 - 18 - 0x1F, 0xC0, 0x03, 0xE0, 0x00, 0x60, 0x60, 0x60, 0x70, 0xE0, 0x3F, 0xC0, // row 19 - 24 - 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_74[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0xFC, 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3C, 0x00, // row 19 - 24 - 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_75[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 13 - 16 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 17 - 20 - 0x30, 0x18, 0x00, 0x30, 0x38, 0x00, 0x38, 0x78, 0x00, 0x1F, 0xD8, 0x00, // row 21 - 24 - 0x0F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_76[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0xC0, 0x60, 0xC0, 0x60, 0x60, 0xC0, 0x60, 0xC0, 0x60, 0xC0, 0x31, 0x80, // row 13 - 18 - 0x31, 0x80, 0x31, 0x80, 0x1B, 0x00, 0x1B, 0x00, 0x1F, 0x00, 0x0E, 0x00, // row 19 - 24 - 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_77[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0xC1, 0xC1, 0x80, 0xC1, 0xC1, 0x80, 0xC1, 0x41, 0x80, 0x63, 0x63, 0x00, // row 13 - 16 - 0x63, 0x63, 0x00, 0x63, 0x63, 0x00, 0x62, 0x23, 0x00, 0x36, 0x36, 0x00, // row 17 - 20 - 0x36, 0x36, 0x00, 0x36, 0x36, 0x00, 0x1C, 0x1C, 0x00, 0x1C, 0x1C, 0x00, // row 21 - 24 - 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_78[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x60, 0x30, 0x70, 0x70, 0x30, 0x60, 0x18, 0xC0, 0x1D, 0xC0, 0x0F, 0x80, // row 13 - 18 - 0x07, 0x00, 0x0F, 0x80, 0x1D, 0xC0, 0x18, 0xC0, 0x30, 0x60, 0x70, 0x70, // row 19 - 24 - 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_79[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, // row 13 - 18 - 0x18, 0xC0, 0x18, 0xC0, 0x18, 0xC0, 0x0D, 0x80, 0x0D, 0x80, 0x0D, 0x80, // row 19 - 24 - 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x7C, 0x00, // row 25 - 30 - 0x78, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x7F, 0xE0, 0x7F, 0xE0, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, // row 13 - 18 - 0x06, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0x7F, 0xE0, // row 19 - 24 - 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7B[] = // 2 bytes per row -{ - // row 1 - 6 - 0x01, 0xE0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, // row 7 - 12 - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, // row 13 - 18 - 0x1C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, // row 19 - 24 - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x80, // row 25 - 30 - 0x01, 0xE0, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 7 - 12 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 13 - 18 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 19 - 24 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 25 - 30 - 0x06, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7D[] = // 2 bytes per row -{ - // row 1 - 6 - 0x3C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 7 - 12 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, // row 13 - 18 - 0x01, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 19 - 24 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, // row 25 - 30 - 0x3C, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7E[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x10, 0x00, 0x03, 0x30, 0x10, 0x00, // row 7 - 9 - 0x06, 0x1C, 0x30, 0x00, 0x04, 0x06, 0x60, 0x00, 0x04, 0x03, 0xC0, 0x00, // row 10 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 15 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 16 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 21 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7F[] = // 1 byte per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 12 - 22 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 23 - 32 -}; - -const unsigned char* chrtbl_f32[96] = // character pointer table -{ - chr_f32_20, chr_f32_21, chr_f32_22, chr_f32_23, chr_f32_24, chr_f32_25, chr_f32_26, chr_f32_27, - chr_f32_28, chr_f32_29, chr_f32_2A, chr_f32_2B, chr_f32_2C, chr_f32_2D, chr_f32_2E, chr_f32_2F, - chr_f32_30, chr_f32_31, chr_f32_32, chr_f32_33, chr_f32_34, chr_f32_35, chr_f32_36, chr_f32_37, - chr_f32_38, chr_f32_39, chr_f32_3A, chr_f32_3B, chr_f32_3C, chr_f32_3D, chr_f32_3E, chr_f32_3F, - chr_f32_40, chr_f32_41, chr_f32_42, chr_f32_43, chr_f32_44, chr_f32_45, chr_f32_46, chr_f32_47, - chr_f32_48, chr_f32_49, chr_f32_4A, chr_f32_4B, chr_f32_4C, chr_f32_4D, chr_f32_4E, chr_f32_4F, - chr_f32_50, chr_f32_51, chr_f32_52, chr_f32_53, chr_f32_54, chr_f32_55, chr_f32_56, chr_f32_57, - chr_f32_58, chr_f32_59, chr_f32_5A, chr_f32_5B, chr_f32_5C, chr_f32_5D, chr_f32_5E, chr_f32_5F, - chr_f32_60, chr_f32_61, chr_f32_62, chr_f32_63, chr_f32_64, chr_f32_65, chr_f32_66, chr_f32_67, - chr_f32_68, chr_f32_69, chr_f32_6A, chr_f32_6B, chr_f32_6C, chr_f32_6D, chr_f32_6E, chr_f32_6F, - chr_f32_70, chr_f32_71, chr_f32_72, chr_f32_73, chr_f32_74, chr_f32_75, chr_f32_76, chr_f32_77, - chr_f32_78, chr_f32_79, chr_f32_7A, chr_f32_7B, chr_f32_7C, chr_f32_7D, chr_f32_7E, chr_f32_7F -}; diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font32.h b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font32.h deleted file mode 100644 index aba49febb7..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font32.h +++ /dev/null @@ -1,7 +0,0 @@ -#define nr_chrs_f32 96 -#define chr_hgt_f32 26 -#define data_size_f32 8 -#define firstchr_f32 32 - -extern const unsigned char widtbl_f32[96]; -extern const unsigned char* chrtbl_f32[96]; diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font64.c b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font64.c deleted file mode 100644 index d17f4a9000..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font64.c +++ /dev/null @@ -1,338 +0,0 @@ -// Font size 6 is intended to display numbers and time -// This font only contains characters [space] 0 1 2 3 4 5 6 7 8 9 . : a p m -// The Pipe character | is a narrow space to aid formatting -// All other characters print as a space - - -#include "Font64.h" - -const unsigned char widtbl_f64[96] = // character width table -{ - 15, 15, 15, 15, 15, 15, 15, 15, // char 32 - 39 - 15, 15, 15, 15, 15, 15, 18, 15, // char 40 - 47 - 30, 30, 30, 30, 30, 30, 30, 30, // char 48 - 55 - 30, 30, 18, 15, 15, 15, 15, 15, // char 56 - 63 - 15, 15, 15, 15, 15, 15, 15, 15, // char 64 - 71 - 15, 15, 15, 15, 15, 15, 15, 15, // char 72 - 79 - 15, 15, 15, 15, 15, 15, 15, 15, // char 80 - 87 - 15, 15, 15, 15, 15, 15, 15, 15, // char 88 - 95 - 15, 30, 15, 15, 15, 15, 15, 15, // char 96 - 103 - 15, 15, 15, 15, 15, 45, 15, 15, // char 104 - 111 - 32, 15, 15, 15, 15, 15, 15, 15, // char 112 - 119 - 15, 15, 15, 15, 10, 15, 15, 15 // char 120 - 127 -}; - -// Row format, MSB left - -const unsigned char chr_f64_20[96] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 31 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 43 - 48 -}; -const unsigned char chr_f64_2E[144] = // 3 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 16 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 17 - 20 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 21 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, // row 29 - 32 - 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, // row 33 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 40 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 41 - 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 45 - 48 -}; -const unsigned char chr_f64_30[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 4 - 6 - 0x1F, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x1F, 0x00, // row 7 - 9 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, // row 10 - 12 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 13 - 15 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 16 - 18 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 19 - 21 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 22 - 24 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x0F, 0x00, // row 25 - 27 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3E, 0x00, 0x1F, 0x00, // row 28 - 30 - 0x1E, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 31 - 33 - 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 34 - 36 - 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_31[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x01, 0xC0, 0x00, // row 1 - 3 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, // row 4 - 6 - 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, // row 7 - 9 - 0x07, 0xFF, 0xC0, 0x00, 0x07, 0xFB, 0xC0, 0x00, 0x07, 0xC3, 0xC0, 0x00, // row 10 - 12 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 13 - 15 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 16 - 18 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 19 - 21 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 22 - 24 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 25 - 27 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 28 - 30 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 31 - 33 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_32[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0xF8, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x07, 0xE0, 0x7F, 0x00, // row 4 - 6 - 0x0F, 0x80, 0x1F, 0x00, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x80, // row 7 - 9 - 0x1F, 0x00, 0x07, 0x80, 0x1E, 0x00, 0x07, 0x80, 0x1E, 0x00, 0x07, 0x80, // row 10 - 12 - 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x80, // row 13 - 15 - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0x00, // row 16 - 18 - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF8, 0x00, // row 19 - 21 - 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, // row 22 - 24 - 0x01, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, // row 25 - 27 - 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, // row 28 - 30 - 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x80, // row 31 - 33 - 0x3F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0x80, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_33[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 4 - 6 - 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x1F, 0x00, // row 7 - 9 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, // row 10 - 12 - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, // row 13 - 15 - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xF0, 0x00, // row 16 - 18 - 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x7F, 0x00, // row 19 - 21 - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0x80, // row 22 - 24 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 25 - 27 - 0x7C, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0x1F, 0x80, 0x3E, 0x00, 0x1F, 0x00, // row 28 - 30 - 0x3F, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, // row 31 - 33 - 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_34[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, // row 1 - 3 - 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, // row 4 - 6 - 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1E, 0xF0, 0x00, // row 7 - 9 - 0x00, 0x1E, 0xF0, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x00, 0x78, 0xF0, 0x00, // row 10 - 12 - 0x00, 0xF8, 0xF0, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x01, 0xE0, 0xF0, 0x00, // row 13 - 15 - 0x03, 0xC0, 0xF0, 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x07, 0x80, 0xF0, 0x00, // row 16 - 18 - 0x0F, 0x00, 0xF0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0xF0, 0x00, // row 19 - 21 - 0x3C, 0x00, 0xF0, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, 0x80, // row 22 - 24 - 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x80, // row 25 - 27 - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, // row 28 - 30 - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, // row 31 - 33 - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_35[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFE, 0x00, // row 4 - 6 - 0x07, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, // row 7 - 9 - 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, // row 10 - 12 - 0x0E, 0x00, 0x00, 0x00, 0x1E, 0x3F, 0xC0, 0x00, 0x1E, 0xFF, 0xF0, 0x00, // row 13 - 15 - 0x1F, 0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 16 - 18 - 0x1F, 0x00, 0x3F, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x00, // row 19 - 21 - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, // row 22 - 24 - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, // row 25 - 27 - 0x3C, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x0F, 0x00, // row 28 - 30 - 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 31 - 33 - 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 34 - 36 - 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_36[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0xF0, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xE0, 0x7E, 0x00, // row 4 - 6 - 0x1F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x80, // row 7 - 9 - 0x3E, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x00, 0x00, // row 10 - 12 - 0x3C, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x3F, 0x80, 0x00, // row 13 - 15 - 0x78, 0xFF, 0xF0, 0x00, 0x7B, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xFC, 0x00, // row 16 - 18 - 0x7F, 0xC0, 0xFE, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x7E, 0x00, 0x1F, 0x00, // row 19 - 21 - 0x7C, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x78, 0x00, 0x07, 0x80, // row 22 - 24 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 25 - 27 - 0x78, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x0F, 0x00, // row 28 - 30 - 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 31 - 33 - 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xF0, 0x00, // row 34 - 36 - 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_37[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x80, // row 1 - 3 - 0x3F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0x80, // row 4 - 6 - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x00, // row 7 - 9 - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, 0x00, // row 10 - 12 - 0x00, 0x01, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, // row 13 - 15 - 0x00, 0x07, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, // row 16 - 18 - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, // row 19 - 21 - 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, // row 22 - 24 - 0x00, 0x7C, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, // row 25 - 27 - 0x00, 0xF8, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, // row 28 - 30 - 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, // row 31 - 33 - 0x01, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_38[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xFF, 0xE0, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 4 - 6 - 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x1F, 0x00, // row 7 - 9 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, // row 10 - 12 - 0x3E, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x3E, 0x00, // row 13 - 15 - 0x0F, 0xC0, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 16 - 18 - 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0x80, 0x7E, 0x00, // row 19 - 21 - 0x3E, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x0F, 0x80, // row 22 - 24 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 25 - 27 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x7C, 0x00, 0x0F, 0x80, // row 28 - 30 - 0x7C, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1F, 0x00, 0x3F, 0x80, 0x7F, 0x00, // row 31 - 33 - 0x1F, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, // row 34 - 36 - 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_39[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xE0, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 4 - 6 - 0x3F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x0F, 0x00, // row 7 - 9 - 0x7C, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 10 - 12 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 13 - 15 - 0x7C, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1F, 0x80, // row 16 - 18 - 0x1F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0xFF, 0x80, 0x0F, 0xFF, 0xFF, 0x80, // row 19 - 21 - 0x07, 0xFF, 0xF7, 0x80, 0x03, 0xFF, 0xC7, 0x80, 0x00, 0x7F, 0x07, 0x80, // row 22 - 24 - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, // row 25 - 27 - 0x78, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x1E, 0x00, // row 28 - 30 - 0x3C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7E, 0x00, 0x1F, 0x81, 0xFC, 0x00, // row 31 - 33 - 0x0F, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xC0, 0x00, // row 34 - 36 - 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_3A[144] = // 3 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, // row 9 - 12 - 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, // row 13 - 16 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 17 - 20 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 21 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, // row 25 - 28 - 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, // row 29 - 32 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 33 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 40 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 41 - 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 45 - 48 -}; -const unsigned char chr_f64_61[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 3 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFC, 0x00, // row 10 - 12 - 0x07, 0xFF, 0xFE, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x1F, 0x00, 0x1F, 0x00, // row 13 - 15 - 0x1E, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, // row 16 - 18 - 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xFF, 0x00, // row 19 - 21 - 0x01, 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xCF, 0x00, // row 22 - 24 - 0x1F, 0xF0, 0x0F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x3E, 0x00, 0x0F, 0x00, // row 25 - 27 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x1F, 0x00, // row 28 - 30 - 0x3C, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x1F, 0x01, 0xFF, 0xC0, // row 31 - 33 - 0x1F, 0xFF, 0xE7, 0xC0, 0x0F, 0xFF, 0xC7, 0xC0, 0x07, 0xFF, 0x03, 0xC0, // row 34 - 36 - 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_6D[288] = // 6 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 2 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 3 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, // row 9 - 10 - 0x1E, 0x3F, 0xF0, 0x7F, 0xF0, 0x00, 0x1E, 0xFF, 0xF8, 0xFF, 0xF8, 0x00, // row 11 - 12 - 0x1E, 0xFF, 0xFD, 0xFF, 0xFC, 0x00, 0x1F, 0xE0, 0x7F, 0xE0, 0x7C, 0x00, // row 13 - 14 - 0x1F, 0x80, 0x3F, 0x80, 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1E, 0x00, // row 15 - 16 - 0x1F, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 17 - 18 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 19 - 20 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 21 - 22 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 23 - 24 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 25 - 26 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 27 - 28 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 29 - 30 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 31 - 32 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 33 - 34 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 35 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 38 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 39 - 40 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 41 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 45 - 46 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 47 - 48 -}; -const unsigned char chr_f64_70[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 3 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x0F, 0xE0, 0x00, 0x1E, 0x3F, 0xFC, 0x00, 0x1E, 0x7F, 0xFE, 0x00, // row 10 - 12 - 0x1E, 0xFF, 0xFF, 0x00, 0x1F, 0xF0, 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0x80, // row 13 - 15 - 0x1F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x03, 0xC0, 0x1F, 0x00, 0x03, 0xC0, // row 16 - 18 - 0x1F, 0x00, 0x03, 0xE0, 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, // row 19 - 21 - 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, // row 22 - 24 - 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, // row 25 - 27 - 0x1E, 0x00, 0x03, 0xE0, 0x1F, 0x00, 0x03, 0xC0, 0x1F, 0x00, 0x07, 0xC0, // row 28 - 30 - 0x1F, 0x80, 0x07, 0xC0, 0x1F, 0xC0, 0x0F, 0x80, 0x1F, 0xF0, 0x3F, 0x80, // row 31 - 33 - 0x1E, 0xFF, 0xFF, 0x00, 0x1E, 0x7F, 0xFE, 0x00, 0x1E, 0x3F, 0xFC, 0x00, // row 34 - 36 - 0x1E, 0x0F, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // row 37 - 39 - 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // row 40 - 42 - 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // row 43 - 45 - 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; - -const unsigned char * chrtbl_f64[96] = // character pointer table -{ - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_2E, chr_f64_20, - chr_f64_30, chr_f64_31, chr_f64_32, chr_f64_33, chr_f64_34, chr_f64_35, chr_f64_36, chr_f64_37, - chr_f64_38, chr_f64_39, chr_f64_3A, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_61, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_6D, chr_f64_20, chr_f64_20, - chr_f64_70, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20 -}; diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font64.h b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font64.h deleted file mode 100644 index b18fbd6466..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font64.h +++ /dev/null @@ -1,7 +0,0 @@ -#define nr_chrs_f64 96 -#define chr_hgt_f64 48 -#define data_size_f64 8 -#define firstchr_f64 32 - -extern const unsigned char widtbl_f64[96]; -extern const unsigned char* chrtbl_f64[96]; diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font7s.c b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font7s.c deleted file mode 100644 index 1dbacdd42d..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font7s.c +++ /dev/null @@ -1,264 +0,0 @@ -// Font size 7 is a 7 segment font intended to display numbers and time -// This font only contains characters [space] 0 1 2 3 4 5 6 7 8 9 : . -// All other characters print as a space - -#include "Font7s.h" - - -const unsigned char widtbl_f7s[96] = // character width table -{ - 12, 12, 12, 12, 12, 12, 12, 12, // char 32 - 39 - 12, 12, 12, 12, 12, 12, 12, 12, // char 40 - 47 - 32, 32, 32, 32, 32, 32, 32, 32, // char 48 - 55 - 32, 32, 12, 12, 12, 12, 12, 12, // char 56 - 63 - 12, 12, 12, 12, 12, 12, 12, 12, // char 64 - 71 - 12, 12, 12, 12, 12, 12, 12, 12, // char 72 - 79 - 12, 12, 12, 12, 12, 12, 12, 12, // char 80 - 87 - 12, 12, 12, 12, 12, 12, 12, 12, // char 88 - 95 - 12, 12, 12, 12, 12, 12, 12, 12, // char 96 - 103 - 12, 12, 12, 12, 12, 12, 12, 12, // char 104 - 111 - 12, 12, 12, 12, 12, 12, 12, 12, // char 112 - 119 - 12, 12, 12, 12, 12, 12, 12, 12 // char 120 - 127 -}; - -// Row format, MSB left - -const unsigned char chr_f7s_20[96] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 31 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 43 - 48 -}; -const unsigned char chr_f7s_2E[96] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 31 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 42 - 0x0E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0E, 0x00, 0x00, 0x00 // row 43 - 48 -}; -const unsigned char chr_f7s_30[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x0C, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x1E, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3E, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x38, 0x00, 0x00, 0x38, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x20, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x3E, 0x00, 0x00, 0x78, // row 25 - 27 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x1E, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x0C, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_31[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 3 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, // row 4 - 6 - 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x78, // row 19 - 21 - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_32[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x00, 0xFF, 0xFE, 0x38, 0x03, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x27, 0xFF, 0xFF, 0xC0, 0x39, 0xFF, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x00, // row 25 - 27 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 28 - 30 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 31 - 33 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 34 - 36 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 37 - 39 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // row 40 - 42 - 0x0C, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_33[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x00, 0xFF, 0xFE, 0x38, 0x03, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x07, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_34[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 3 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x00, 0x00, 0x70, // row 4 - 6 - 0x1E, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3E, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x38, 0x23, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x07, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_35[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x00, 0x0C, 0xFF, 0xFE, 0x00, // row 4 - 6 - 0x1E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 7 - 9 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 10 - 12 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 13 - 15 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 16 - 18 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x00, 0x23, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x07, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_36[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x00, 0x0C, 0xFF, 0xFE, 0x00, // row 4 - 6 - 0x1E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 7 - 9 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 10 - 12 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 13 - 15 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 16 - 18 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x00, 0x23, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x27, 0xFF, 0xFF, 0xC0, 0x39, 0xFF, 0xFF, 0x18, 0x3E, 0x00, 0x00, 0x78, // row 25 - 27 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x1E, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x0C, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_37[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_38[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x0C, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x1E, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3E, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x38, 0x23, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x27, 0xFF, 0xFF, 0xC0, 0x39, 0xFF, 0xFF, 0x18, 0x3E, 0x00, 0x00, 0x78, // row 25 - 27 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x1E, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x0C, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_39[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x0C, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x1E, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3E, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x38, 0x23, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x07, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_3A[96] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0E, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x0E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0E, 0x00, 0x00, 0x00, // row 31 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 43 - 48 -}; - -const unsigned char * chrtbl_f7s[96] = // character pointer table -{ - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_2E, chr_f7s_20, - chr_f7s_30, chr_f7s_31, chr_f7s_32, chr_f7s_33, chr_f7s_34, chr_f7s_35, chr_f7s_36, chr_f7s_37, - chr_f7s_38, chr_f7s_39, chr_f7s_3A, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20 -}; diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font7s.h b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font7s.h deleted file mode 100644 index 3274a9d53f..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Font7s.h +++ /dev/null @@ -1,7 +0,0 @@ -#define nr_chrs_f7s 96 -#define chr_hgt_f7s 48 -#define data_size_f7s 8 -#define firstchr_f7s 32 - -extern const unsigned char widtbl_f7s[96]; -extern const unsigned char * chrtbl_f7s[96]; diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Load_fonts.h b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Load_fonts.h deleted file mode 100644 index 2799f4e451..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/Load_fonts.h +++ /dev/null @@ -1,8 +0,0 @@ -// Comment out the #defines below with // to stop that font being loaded -// If all fonts are loaded the total space required is ablout 17890 bytes - -//#define LOAD_GLCD // Standard Adafruit font needs ~1792 bytes in FLASH -//#define LOAD_FONT2 // Small font, needs ~3092 bytes in FLASH -//#define LOAD_FONT4 // Medium font, needs ~8126 bytes in FLASH -//#define LOAD_FONT6 // Large font, needs ~4404 bytes in FLASH -//#define LOAD_FONT7 // 7 segment font, needs ~3652 bytes in FLASH diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/driver/hspi.h b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/driver/hspi.h deleted file mode 100644 index e68691ece6..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/driver/hspi.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef INCLUDE_HSPI_H_ -#define INCLUDE_HSPI_H_ - -#include "spi_register.h" -#include -#include -#include -#include - -#define SPI 0 -#define HSPI 1 - -#define SPIFIFOSIZE 16 //16 words length - -extern uint32_t *spi_fifo; -extern uint32_t current_spi_port; - -typedef enum -{ - spi_mode_tx, - spi_mode_txrx -} spi_mode; - -typedef struct -{ - uint32_t spi_port; - uint32_t clock_reg_val; - spi_mode mode; -} spi_config; - -spi_config spi_init(uint32_t spi_port, uint32_t prescaler, spi_mode mode); -void spi_reinit(spi_config *config); -void spi_send_data(const uint8_t * data, uint8_t datasize); -void spi_send_uint16_r(const uint16_t data, int32_t repeats); -static inline void spi_wait_ready(void){while (READ_PERI_REG(SPI_FLASH_CMD(current_spi_port))&SPI_FLASH_USR);} - -static inline void spi_prepare_tx(uint32_t bytecount) -{ - uint32_t bitcount = bytecount * 8 - 1; - - WRITE_PERI_REG(SPI_FLASH_USER1(current_spi_port), (bitcount & SPI_USR_OUT_BITLEN) << SPI_USR_OUT_BITLEN_S); -} - -static inline void spi_prepare_txrx_bits(uint32_t txbitcount, uint32_t rxbitcount) -{ - WRITE_PERI_REG(SPI_FLASH_USER1(current_spi_port), ((txbitcount & SPI_USR_OUT_BITLEN) << SPI_USR_OUT_BITLEN_S) | - ((rxbitcount & SPI_USR_DIN_BITLEN) << SPI_USR_DIN_BITLEN_S)); -} - -static inline void spi_start_tx() -{ - SET_PERI_REG_MASK(SPI_FLASH_CMD(current_spi_port), SPI_FLASH_USR); // send -} - -static inline void spi_send_uint8(uint8_t data) -{ - spi_prepare_tx(1); - *spi_fifo = data; - spi_start_tx(); -} - -static inline void spi_send_uint16(uint16_t data) -{ - spi_prepare_tx(2); - *spi_fifo = data; - spi_start_tx(); -} - -static inline void spi_send_uint32(uint32_t data) -{ - spi_prepare_tx(4); - *spi_fifo = data; - spi_start_tx(); -} - -/* This is needed to implement XPT2046 driver since it transmits 13 bits back*/ -extern uint16_t spi_send_uint8_receive_13bits(uint8_t to_send); - -#endif /* INCLUDE_HSPI_H_ */ diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/driver/spi_register.h b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/driver/spi_register.h deleted file mode 100644 index 8ed4cfae8b..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/driver/spi_register.h +++ /dev/null @@ -1,239 +0,0 @@ -//Generated at 2014-07-29 11:03:29 -/* - * Copyright (c) 2010 - 2011 Espressif System - * - */ - -#ifndef SPI_REGISTER_H_INCLUDED -#define SPI_REGISTER_H_INCLUDED - -#define REG_SPI_BASE(i) (0x60000200-i*0x100) - -#define SPI_FLASH_CMD(i) (REG_SPI_BASE(i) + 0x0) -#define SPI_FLASH_READ (BIT(31)) -#define SPI_FLASH_WREN (BIT(30)) -#define SPI_FLASH_WRDI (BIT(29)) -#define SPI_FLASH_RDID (BIT(28)) -#define SPI_FLASH_RDSR (BIT(27)) -#define SPI_FLASH_WRSR (BIT(26)) -#define SPI_FLASH_PP (BIT(25)) -#define SPI_FLASH_SE (BIT(24)) -#define SPI_FLASH_BE (BIT(23)) -#define SPI_FLASH_CE (BIT(22)) -#define SPI_FLASH_DP (BIT(21)) -#define SPI_FLASH_RES (BIT(20)) -#define SPI_FLASH_HPM (BIT(19)) -#define SPI_FLASH_USR (BIT(18)) - -#define SPI_FLASH_ADDR(i) (REG_SPI_BASE(i) + 0x4) - -#define SPI_FLASH_CTRL(i) (REG_SPI_BASE(i) + 0x8) -#define SPI_WR_BIT_ODER (BIT(26)) -#define SPI_RD_BIT_ODER (BIT(25)) -#define SPI_QIO_MODE (BIT(24)) -#define SPI_DIO_MODE (BIT(23)) -#define SPI_TWO_BYTE_STATUS_EN (BIT(22)) -#define SPI_WP_REG (BIT(21)) -#define SPI_QOUT_MODE (BIT(20)) -#define SPI_SHARE_BUS (BIT(19)) -#define SPI_HOLD_MODE (BIT(18)) -#define SPI_ENABLE_AHB (BIT(17)) -#define SPI_SST_AAI (BIT(16)) -#define SPI_RESANDRES (BIT(15)) -#define SPI_DOUT_MODE (BIT(14)) -#define SPI_FASTRD_MODE (BIT(13)) - -#define SPI_FLASH_CTRL1(i) (REG_SPI_BASE (i) + 0xC) -#define SPI_T_CSH 0x0000000F -#define SPI_T_CSH_S 28 -#define SPI_T_RES 0x00000FFF -#define SPI_T_RES_S 16 -#define SPI_BUS_TIMER_LIMIT 0x0000FFFF -#define SPI_BUS_TIMER_LIMIT_S 0 - -#define SPI_FLASH_STATUS(i) (REG_SPI_BASE(i) + 0x10) -#define SPI_STATUS_EXT 0x000000FF -#define SPI_STATUS_EXT_S 24 -#define SPI_WB_MODE 0x000000FF -#define SPI_WB_MODE_S 16 -#define SPI_FLASH_STATUS_PRO_FLAG (BIT(7)) -#define SPI_FLASH_TOP_BOT_PRO_FLAG (BIT(5)) -#define SPI_FLASH_BP2 (BIT(4)) -#define SPI_FLASH_BP1 (BIT(3)) -#define SPI_FLASH_BP0 (BIT(2)) -#define SPI_FLASH_WRENABLE_FLAG (BIT(1)) -#define SPI_FLASH_BUSY_FLAG (BIT(0)) - -#define SPI_FLASH_CTRL2(i) (REG_SPI_BASE(i) + 0x14) -#define SPI_CS_DELAY_NUM 0x0000000F -#define SPI_CS_DELAY_NUM_S 28 -#define SPI_CS_DELAY_MODE 0x00000003 -#define SPI_CS_DELAY_MODE_S 26 -#define SPI_MOSI_DELAY_NUM 0x00000007 -#define SPI_MOSI_DELAY_NUM_S 23 -#define SPI_MOSI_DELAY_MODE 0x00000003 -#define SPI_MOSI_DELAY_MODE_S 21 -#define SPI_MISO_DELAY_NUM 0x00000007 -#define SPI_MISO_DELAY_NUM_S 18 -#define SPI_MISO_DELAY_MODE 0x00000003 -#define SPI_MISO_DELAY_MODE_S 16 -#define SPI_CK_OUT_HIGH_MODE 0x0000000F -#define SPI_CK_OUT_HIGH_MODE_S 12 -#define SPI_CK_OUT_LOW_MODE 0x0000000F -#define SPI_CK_OUT_LOW_MODE_S 8 -#define SPI_HOLD_TIME 0x0000000F -#define SPI_HOLD_TIME_S 4 -#define SPI_SETUP_TIME 0x0000000F -#define SPI_SETUP_TIME_S 0 - -#define SPI_FLASH_CLOCK(i) (REG_SPI_BASE(i) + 0x18) -#define SPI_CLK_EQU_SYSCLK (BIT(31)) -#define SPI_CLKDIV_PRE 0x00001FFF -#define SPI_CLKDIV_PRE_S 18 -#define SPI_CLKCNT_N 0x0000003F -#define SPI_CLKCNT_N_S 12 -#define SPI_CLKCNT_H 0x0000003F -#define SPI_CLKCNT_H_S 6 -#define SPI_CLKCNT_L 0x0000003F -#define SPI_CLKCNT_L_S 0 - -#define SPI_FLASH_USER(i) (REG_SPI_BASE(i) + 0x1C) -#define SPI_USR_COMMAND (BIT(31)) -#define SPI_FLASH_USR_ADDR (BIT(30)) -#define SPI_FLASH_USR_DUMMY (BIT(29)) -#define SPI_FLASH_USR_DIN (BIT(28)) -#define SPI_FLASH_DOUT (BIT(27)) -#define SPI_USR_DUMMY_IDLE (BIT(26)) -#define SPI_USR_DOUT_HIGHPART (BIT(25)) -#define SPI_USR_DIN_HIGHPART (BIT(24)) -#define SPI_USR_PREP_HOLD (BIT(23)) -#define SPI_USR_CMD_HOLD (BIT(22)) -#define SPI_USR_ADDR_HOLD (BIT(21)) -#define SPI_USR_DUMMY_HOLD (BIT(20)) -#define SPI_USR_DIN_HOLD (BIT(19)) -#define SPI_USR_DOUT_HOLD (BIT(18)) -#define SPI_USR_HOLD_POL (BIT(17)) -#define SPI_SIO (BIT(16)) -#define SPI_FWRITE_QIO (BIT(15)) -#define SPI_FWRITE_DIO (BIT(14)) -#define SPI_FWRITE_QUAD (BIT(13)) -#define SPI_FWRITE_DUAL (BIT(12)) -#define SPI_WR_BYTE_ORDER (BIT(11)) -#define SPI_RD_BYTE_ORDER (BIT(10)) -#define SPI_AHB_ENDIAN_MODE 0x00000003 -#define SPI_AHB_ENDIAN_MODE_S 8 -#define SPI_CK_OUT_EDGE (BIT(7)) -#define SPI_CK_I_EDGE (BIT(6)) -#define SPI_CS_SETUP (BIT(5)) -#define SPI_CS_HOLD (BIT(4)) -#define SPI_AHB_USR_COMMAND (BIT(3)) -#define SPI_AHB_USR_COMMAND_4BYTE (BIT(1)) -#define SPI_DOUTDIN (BIT(0)) - -#define SPI_FLASH_USER1(i) (REG_SPI_BASE(i) + 0x20) -#define SPI_USR_ADDR_BITLEN 0x0000003F -#define SPI_USR_ADDR_BITLEN_S 26 -#define SPI_USR_OUT_BITLEN 0x000001FF -#define SPI_USR_OUT_BITLEN_S 17 -#define SPI_USR_DIN_BITLEN 0x000001FF -#define SPI_USR_DIN_BITLEN_S 8 -#define SPI_USR_DUMMY_CYCLELEN 0x000000FF -#define SPI_USR_DUMMY_CYCLELEN_S 0 - -#define SPI_FLASH_USER2(i) (REG_SPI_BASE(i) + 0x24) -#define SPI_USR_COMMAND_BITLEN 0x0000000F -#define SPI_USR_COMMAND_BITLEN_S 28 -#define SPI_USR_COMMAND_VALUE 0x0000FFFF -#define SPI_USR_COMMAND_VALUE_S 0 - -#define SPI_FLASH_USER3(i) (REG_SPI_BASE(i) + 0x28) -#define SPI_FLASH_PIN(i) (REG_SPI_BASE(i) + 0x2C) -#define SPI_FLASH_SLAVE(i) (REG_SPI_BASE(i) + 0x30) -#define SPI_SYNC_RESET (BIT(31)) -#define SPI_SLAVE_MODE (BIT(30)) -#define SPI_SLV_WR_RD_BUF_EN (BIT(29)) -#define SPI_SLV_WR_RD_STA_EN (BIT(28)) -#define SPI_SLV_CMD_DEFINE (BIT(27)) -#define SPI_TRANS_CNT 0x0000000F -#define SPI_TRANS_CNT_S 23 -#define SPI_SLV_LAST_STATE 0x00000007 -#define SPI_SLV_LAST_STATE_S 20 -#define SPI_SLV_LAST_COMMAND 0x00000007 -#define SPI_SLV_LAST_COMMAND_S 17 -#define SPI_CS_I_MODE 0x00000003 -#define SPI_CS_I_MODE_S 10 -#define SPI_INT_EN 0x0000001F -#define SPI_INT_EN_S 5 -#define SPI_TRANS_DONE (BIT(4)) -#define SPI_SLV_WR_STA_DONE (BIT(3)) -#define SPI_SLV_RD_STA_DONE (BIT(2)) -#define SPI_SLV_WR_BUF_DONE (BIT(1)) -#define SPI_SLV_RD_BUF_DONE (BIT(0)) - -#define SPI_FLASH_SLAVE1(i) (REG_SPI_BASE(i) + 0x34) -#define SPI_SLV_STATUS_BITLEN 0x0000001F -#define SPI_SLV_STATUS_BITLEN_S 27 -#define SPI_SLV_STATUS_FAST_EN (BIT(26)) -#define SPI_SLV_STATUS_READBACK (BIT(25)) -#define SPI_SLV_BUF_BITLEN 0x000001FF -#define SPI_SLV_BUF_BITLEN_S 16 -#define SPI_SLV_RD_ADDR_BITLEN 0x0000003F -#define SPI_SLV_RD_ADDR_BITLEN_S 10 -#define SPI_SLV_WR_ADDR_BITLEN 0x0000003F -#define SPI_SLV_WR_ADDR_BITLEN_S 4 -#define SPI_SLV_WRSTA_DUMMY_EN (BIT(3)) -#define SPI_SLV_RDSTA_DUMMY_EN (BIT(2)) -#define SPI_SLV_WRBUF_DUMMY_EN (BIT(1)) -#define SPI_SLV_RDBUF_DUMMY_EN (BIT(0)) - -#define SPI_FLASH_SLAVE2(i) (REG_SPI_BASE(i) + 0x38) -#define SPI_SLV_WRBUF_DUMMY_CYCLELEN 0x000000FF -#define SPI_SLV_WRBUF_DUMMY_CYCLELEN_S 24 -#define SPI_SLV_RDBUF_DUMMY_CYCLELEN 0x000000FF -#define SPI_SLV_RDBUF_DUMMY_CYCLELEN_S 16 -#define SPI_SLV_WRSTA_DUMMY_CYCLELEN 0x000000FF -#define SPI_SLV_WRSTA_DUMMY_CYCLELEN_S 8 -#define SPI_SLV_RDSTA_DUMMY_CYCLELEN 0x000000FF -#define SPI_SLV_RDSTA_DUMMY_CYCLELEN_S 0 - -#define SPI_FLASH_SLAVE3(i) (REG_SPI_BASE(i) + 0x3C) -#define SPI_SLV_WRSTA_CMD_VALUE 0x000000FF -#define SPI_SLV_WRSTA_CMD_VALUE_S 24 -#define SPI_SLV_RDSTA_CMD_VALUE 0x000000FF -#define SPI_SLV_RDSTA_CMD_VALUE_S 16 -#define SPI_SLV_WRBUF_CMD_VALUE 0x000000FF -#define SPI_SLV_WRBUF_CMD_VALUE_S 8 -#define SPI_SLV_RDBUF_CMD_VALUE 0x000000FF -#define SPI_SLV_RDBUF_CMD_VALUE_S 0 - -#define SPI_FLASH_C0(i) (REG_SPI_BASE(i) +0x40) -#define SPI_FLASH_C1(i) (REG_SPI_BASE(i) +0x44) -#define SPI_FLASH_C2(i) (REG_SPI_BASE(i) +0x48) -#define SPI_FLASH_C3(i) (REG_SPI_BASE(i) +0x4C) -#define SPI_FLASH_C4(i) (REG_SPI_BASE(i) +0x50) -#define SPI_FLASH_C5(i) (REG_SPI_BASE(i) +0x54) -#define SPI_FLASH_C6(i) (REG_SPI_BASE(i) +0x58) -#define SPI_FLASH_C7(i) (REG_SPI_BASE(i) +0x5C) - -#define SPI_FLASH_EXT0(i) (REG_SPI_BASE(i) + 0xF0) -#define SPI_T_PP_ENA (BIT(31)) -#define SPI_T_PP_SHIFT 0x0000000F -#define SPI_T_PP_SHIFT_S 16 -#define SPI_T_PP_TIME 0x00000FFF -#define SPI_T_PP_TIME_S 0 - -#define SPI_FLASH_EXT1(i) (REG_SPI_BASE(i) + 0xF4) -#define SPI_T_ERASE_ENA (BIT(31)) -#define SPI_T_ERASE_SHIFT 0x0000000F -#define SPI_T_ERASE_SHIFT_S 16 -#define SPI_T_ERASE_TIME 0x00000FFF -#define SPI_T_ERASE_TIME_S 0 - -#define SPI_FLASH_EXT2(i) (REG_SPI_BASE(i) + 0xF8) -#define SPI_ST 0x00000007 -#define SPI_ST_S 0 - -#define SPI_FLASH_EXT3(i) (REG_SPI_BASE(i) + 0xFC) -#define SPI_INT_HOLD_ENA 0x00000003 -#define SPI_INT_HOLD_ENA_S 0 -#endif // SPI_REGISTER_H_INCLUDED diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/hspi.c b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/hspi.c deleted file mode 100644 index 506c62bb88..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/hspi.c +++ /dev/null @@ -1,109 +0,0 @@ -#include "driver/hspi.h" - -/* -Pinout: -MISO GPIO12 -MOSI GPIO13 -CLK GPIO14 -CS GPIO15 -DC GPIO2 -*/ - -#define __min(a,b) ((a > b) ? (b):(a)) -uint32_t *spi_fifo; -uint32_t current_spi_port; - -spi_config spi_init(uint32_t spi_port, uint32_t prescaler, spi_mode mode) -{ - spi_config config; - - WRITE_PERI_REG(PERIPHS_IO_MUX, 0x105); //clear bit9 - - if (spi_port == SPI) - { - PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA0_U, 2); // SD_D0 MISO - PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA1_U, 2); // SD_D1 MOSI - PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, 2); // CLK - } else if (spi_port == HSPI) - { - PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, 2); // HSPIQ MISO GPIO12 - PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, 2); // HSPID MOSI GPIO13 - PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, 2); // CLK GPIO14 - PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, 2); // CS GPIO15 - } - - - config.mode = mode; - config.spi_port = spi_port; - // SPI clock = CPU clock / 10 / 4 - // time length HIGHT level = (CPU clock / 10 / 2) ^ -1, - // time length LOW level = (CPU clock / 10 / 2) ^ -1 - config.clock_reg_val = (((prescaler - 1) & SPI_CLKDIV_PRE) << SPI_CLKDIV_PRE_S) | - ((1 & SPI_CLKCNT_N) << SPI_CLKCNT_N_S) | - ((0 & SPI_CLKCNT_H) << SPI_CLKCNT_H_S) | - ((1 & SPI_CLKCNT_L) << SPI_CLKCNT_L_S); - - spi_reinit(&config); - return config; -} - -void spi_reinit(spi_config *config) -{ - current_spi_port = config->spi_port; - spi_fifo = (uint32_t*)SPI_FLASH_C0(current_spi_port); - - uint32_t regvalue = SPI_FLASH_DOUT; - WRITE_PERI_REG(SPI_FLASH_CLOCK(current_spi_port), config->clock_reg_val); - WRITE_PERI_REG(SPI_FLASH_CTRL1(current_spi_port), 0); - - switch(config->mode) - { - case spi_mode_tx: - regvalue &= ~(BIT2 | SPI_FLASH_USR_ADDR | SPI_FLASH_USR_DUMMY | SPI_FLASH_USR_DIN | SPI_USR_COMMAND | SPI_DOUTDIN); - break; - case spi_mode_txrx: - regvalue |= SPI_DOUTDIN | SPI_CK_I_EDGE; - regvalue &= ~(BIT2 | SPI_FLASH_USR_ADDR | SPI_FLASH_USR_DUMMY | SPI_FLASH_USR_DIN | SPI_USR_COMMAND); - break; - } - - WRITE_PERI_REG(SPI_FLASH_USER(current_spi_port), regvalue); -} - -void spi_send_uint16_r(uint16_t data, int32_t repeats) -{ - uint32_t i; - uint32_t word = data << 16 | data; - - while(repeats > 0) - { - uint16_t bytes_to_transfer = __min(repeats * sizeof(uint16_t) , SPIFIFOSIZE * sizeof(uint32_t)); - spi_wait_ready(); - spi_prepare_tx(bytes_to_transfer); - for(i = 0; i < (bytes_to_transfer + 3) / 4;i++) - spi_fifo[i] = word; - spi_start_tx(); - repeats -= bytes_to_transfer / 2; - } -} - -void spi_send_data(const uint8_t * data, uint8_t datasize) -{ - uint32_t *_data = (uint32_t*)data; - uint8_t i; - - uint8_t words_to_send = __min((datasize + 3) / 4, SPIFIFOSIZE); - spi_prepare_tx(datasize); - for(i = 0; i < words_to_send;i++) - spi_fifo[i] = _data[i]; - spi_start_tx(); -} - -uint16_t spi_send_uint8_receive_13bits(uint8_t to_send) -{ - spi_prepare_txrx_bits(8, 13); - *spi_fifo = to_send; - spi_start_tx(); - spi_wait_ready(); - return (*spi_fifo) & 0x1FFF; -} diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/mini-printf.c b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/mini-printf.c deleted file mode 100644 index 29f948811a..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/mini-printf.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * The Minimal snprintf() implementation - * - * Copyright (c) 2013,2014 Michal Ludvig - * 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. - * * Neither the name of the auhor nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * 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 AUTHOR 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. - * - * ---- - * - * This is a minimal snprintf() implementation optimised - * for embedded systems with a very limited program memory. - * mini_snprintf() doesn't support _all_ the formatting - * the glibc does but on the other hand is a lot smaller. - * Here are some numbers from my STM32 project (.bin file size): - * no snprintf(): 10768 bytes - * mini snprintf(): 11420 bytes (+ 652 bytes) - * glibc snprintf(): 34860 bytes (+24092 bytes) - * Wasting nearly 24kB of memory just for snprintf() on - * a chip with 32kB flash is crazy. Use mini_snprintf() instead. - * - */ - -#include -#include -#include "mini-printf.h" - -static unsigned int -mini_strlen(const char *s) -{ - unsigned int len = 0; - while (s[len] != '\0') len++; - return len; -} - -static unsigned int -mini_itoa(int value, unsigned int radix, unsigned int uppercase, - char *buffer, unsigned int zero_pad) -{ - char *pbuffer = buffer; - int negative = 0; - unsigned int i, len; - - /* No support for unusual radixes. */ - if (radix > 16) - return 0; - - if (value < 0) { - negative = 1; - value = -value; - } - - /* This builds the string back to front ... */ - do { - int digit = value % radix; - *(pbuffer++) = (digit < 10 ? '0' + digit : (uppercase ? 'A' : 'a') + digit - 10); - value /= radix; - } while (value > 0); - - for (i = (pbuffer - buffer); i < zero_pad; i++) - *(pbuffer++) = '0'; - - if (negative) - *(pbuffer++) = '-'; - - *(pbuffer) = '\0'; - - /* ... now we reverse it (could do it recursively but will - * conserve the stack space) */ - len = (pbuffer - buffer); - for (i = 0; i < len / 2; i++) { - char j = buffer[i]; - buffer[i] = buffer[len-i-1]; - buffer[len-i-1] = j; - } - - return len; -} - -int -mini_vsnprintf(char *buffer, unsigned int buffer_len, const char *fmt, va_list va) -{ - char *pbuffer = buffer; - char bf[24]; - char ch; - - int _putc(char ch) - { - if ((unsigned int)((pbuffer - buffer) + 1) >= buffer_len) - return 0; - *(pbuffer++) = ch; - *(pbuffer) = '\0'; - return 1; - } - - int _puts(char *s, unsigned int len) - { - unsigned int i; - - if (buffer_len - (pbuffer - buffer) - 1 < len) - len = buffer_len - (pbuffer - buffer) - 1; - - /* Copy to buffer */ - for (i = 0; i < len; i++) - *(pbuffer++) = s[i]; - *(pbuffer) = '\0'; - - return len; - } - - while ((ch=*(fmt++))) { - if ((unsigned int)((pbuffer - buffer) + 1) >= buffer_len) - break; - if (ch!='%') - _putc(ch); - else { - char zero_pad = 0; - char *ptr; - unsigned int len; - - ch=*(fmt++); - - /* Zero padding requested */ - if (ch=='0') { - ch=*(fmt++); - if (ch == '\0') - goto end; - if (ch >= '0' && ch <= '9') - zero_pad = ch - '0'; - ch=*(fmt++); - } - - switch (ch) { - case 0: - goto end; - - case 'u': - case 'd': - len = mini_itoa(va_arg(va, unsigned int), 10, 0, bf, zero_pad); - _puts(bf, len); - break; - - case 'x': - case 'X': - len = mini_itoa(va_arg(va, unsigned int), 16, (ch=='X'), bf, zero_pad); - _puts(bf, len); - break; - - case 'c' : - _putc((char)(va_arg(va, int))); - break; - - case 's' : - ptr = va_arg(va, char*); - _puts(ptr, mini_strlen(ptr)); - break; - - default: - _putc(ch); - break; - } - } - } -end: - return pbuffer - buffer; -} - - -int -mini_snprintf(char* buffer, unsigned int buffer_len, const char *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = mini_vsnprintf(buffer, buffer_len, fmt, va); - va_end(va); - - return ret; -} diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/mini-printf.h b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/mini-printf.h deleted file mode 100644 index 45eb6705d7..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/mini-printf.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * The Minimal snprintf() implementation - * - * Copyright (c) 2013 Michal Ludvig - * 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. - * * Neither the name of the auhor nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * 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 AUTHOR 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. - */ - - -#ifndef __MINI_PRINTF__ -#define __MINI_PRINTF__ -#include - -int mini_vsnprintf(char* buffer, unsigned int buffer_len, const char *fmt, va_list va); -int mini_snprintf(char* buffer, unsigned int buffer_len, const char *fmt, ...); - -#define vsnprintf mini_vsnprintf -#define snprintf mini_snprintf - -#endif diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/readme.txt b/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/readme.txt deleted file mode 100644 index 90a7089e7c..0000000000 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/readme.txt +++ /dev/null @@ -1,12 +0,0 @@ -Port of Adafruit's library for ILI9341 to ESP8266 -Uses HSPI. -Wiring: -ILI9341 pin ESP8266 pin -MISO GPIO12 -MOSI GPIO13 -SCK GPIO14 -CS GPIO15 -DC GPIO2 - -Reset 3V3 -LED through 50-60 Ohm resistor to 3V3 \ No newline at end of file diff --git a/hardware/esp8266com/esp8266/libraries/SPI/SPI.cpp b/hardware/esp8266com/esp8266/libraries/SPI/SPI.cpp index 2523e689f1..d9f9ea1eba 100644 --- a/hardware/esp8266com/esp8266/libraries/SPI/SPI.cpp +++ b/hardware/esp8266com/esp8266/libraries/SPI/SPI.cpp @@ -43,7 +43,6 @@ void SPIClass::begin() { pinMode(MISO, SPECIAL); ///< GPIO12 pinMode(MOSI, SPECIAL); ///< GPIO13 - GPMUX = 0x105; // note crash if SPI flash Frequency < 40MHz SPI1C = 0; setFrequency(1000000); ///< 1MHz SPI1U = SPIUMOSI | SPIUDUPLEX | SPIUSSE; @@ -124,7 +123,11 @@ void SPIClass::setFrequency(uint32_t freq) { const spiClk_t minFreqReg = { 0x7FFFF000 }; uint32_t minFreq = ClkRegToFreq((spiClk_t*) &minFreqReg); if(freq < minFreq) { - freq = minFreq; + // use minimum possible clock + setClockDivider(minFreqReg.regValue); + lastSetRegister = SPI1CLK; + lastSetFrequency = freq; + return; } uint8_t calN = 1; @@ -187,6 +190,11 @@ void SPIClass::setFrequency(uint32_t freq) { } void SPIClass::setClockDivider(uint32_t clockDiv) { + if(clockDiv == 0x80000000) { + GPMUX |= (1 << 9); // Set bit 9 if sysclock required + } else { + GPMUX &= ~(1 << 9); + } SPI1CLK = clockDiv; } diff --git a/hardware/esp8266com/esp8266/libraries/SPI/SPI.h b/hardware/esp8266com/esp8266/libraries/SPI/SPI.h index a39f3d0420..3a37c52e11 100644 --- a/hardware/esp8266com/esp8266/libraries/SPI/SPI.h +++ b/hardware/esp8266com/esp8266/libraries/SPI/SPI.h @@ -24,6 +24,8 @@ #include #include +#define SPI_HAS_TRANSACTION + // This defines are not representing the real Divider of the ESP8266 // the Defines match to an AVR Arduino on 16MHz for better compatibility #if F_CPU == 80000000L diff --git a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp new file mode 100644 index 0000000000..c6be8c1776 --- /dev/null +++ b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp @@ -0,0 +1,776 @@ +/*************************************************** + This is our library for the Adafruit ILI9341 Breakout and Shield + ----> http://www.adafruit.com/products/1651 + + Check out the links above for our tutorials and wiring diagrams + These displays use SPI to communicate, 4 or 5 pins are required to + interface (RST is optional) + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + MIT license, all text above must be included in any redistribution + ****************************************************/ + +#include "Adafruit_ILI9341.h" +#ifdef ESP8266 +#include +#else +#include +#endif +#include +#include "pins_arduino.h" +#include "wiring_private.h" +#include + +#ifndef ESP8266 +// Constructor when using software SPI. All output pins are configurable. +Adafruit_ILI9341::Adafruit_ILI9341(int8_t cs, int8_t dc, int8_t mosi, + int8_t sclk, int8_t rst, int8_t miso) : Adafruit_GFX(ILI9341_TFTWIDTH, ILI9341_TFTHEIGHT) { + _cs = cs; + _dc = dc; + _mosi = mosi; + _miso = miso; + _sclk = sclk; + _rst = rst; + hwSPI = false; +} +#endif + +// Constructor when using hardware SPI. Faster, but must use SPI pins +// specific to each board type (e.g. 11,13 for Uno, 51,52 for Mega, etc.) +Adafruit_ILI9341::Adafruit_ILI9341(int8_t cs, int8_t dc, int8_t rst) : Adafruit_GFX(ILI9341_TFTWIDTH, ILI9341_TFTHEIGHT) { + _cs = cs; + _dc = dc; + _rst = rst; + hwSPI = true; +#ifndef ESP8266 + _mosi = _sclk = 0; +#endif +} + +void Adafruit_ILI9341::spiwrite(uint8_t c) { + + //Serial.print("0x"); Serial.print(c, HEX); Serial.print(", "); +#ifndef ESP8266 + if (hwSPI) { +#endif +#if defined (__AVR__) + uint8_t backupSPCR = SPCR; + SPCR = mySPCR; + SPDR = c; + while(!(SPSR & _BV(SPIF))); + SPCR = backupSPCR; +#elif defined(TEENSYDUINO) || defined(ESP8266) + SPI.transfer(c); +#elif defined (__arm__) + SPI.setClockDivider(11); // 8-ish MHz (full! speed!) + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); + SPI.transfer(c); +#endif +#ifndef ESP8266 + } else { + // Fast SPI bitbang swiped from LPD8806 library + for(uint8_t bit = 0x80; bit; bit >>= 1) { + if(c & bit) { + //digitalWrite(_mosi, HIGH); + *mosiport |= mosipinmask; + } else { + //digitalWrite(_mosi, LOW); + *mosiport &= ~mosipinmask; + } + //digitalWrite(_sclk, HIGH); + *clkport |= clkpinmask; + //digitalWrite(_sclk, LOW); + *clkport &= ~clkpinmask; + } + } +#endif +} + + +void Adafruit_ILI9341::writecommand(uint8_t c) { +#ifdef USE_DIGITAL_WRITE + digitalWrite(_dc, LOW); + digitalWrite(_cs, LOW); +#else +#ifdef ESP8266 + GPOC = digitalPinToBitMask(_dc); + GPOC = digitalPinToBitMask(_cs); +#else + *dcport &= ~dcpinmask; + //*clkport &= ~clkpinmask; // clkport is a NULL pointer when hwSPI==true + //digitalWrite(_sclk, LOW); + *csport &= ~cspinmask; +#endif +#endif + spiwrite(c); +#ifdef USE_DIGITAL_WRITE + digitalWrite(_cs, HIGH); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_cs); +#else + *csport |= cspinmask; +#endif +#endif +} + +void Adafruit_ILI9341::writedata(uint8_t c) { +#ifdef USE_DIGITAL_WRITE + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_dc); + GPOC = digitalPinToBitMask(_cs); +#else + *dcport |= dcpinmask; + + //*clkport &= ~clkpinmask; // clkport is a NULL pointer when hwSPI==true + //digitalWrite(_sclk, LOW); + *csport &= ~cspinmask; +#endif +#endif + spiwrite(c); +#ifdef USE_DIGITAL_WRITE + digitalWrite(_cs, HIGH); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_cs); +#else + *csport |= cspinmask; +#endif +#endif +} + +// If the SPI library has transaction support, these functions +// establish settings and protect from interference from other +// libraries. Otherwise, they simply do nothing. +#ifdef SPI_HAS_TRANSACTION +static inline void spi_begin(void) __attribute__((always_inline)); +static inline void spi_begin(void) { +#ifdef ESP8266 + SPI.beginTransaction(SPISettings(80000000, MSBFIRST, SPI_MODE0)); +#else + SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0)); +#endif +} +static inline void spi_end(void) __attribute__((always_inline)); +static inline void spi_end(void) { + SPI.endTransaction(); +} +#else +#define spi_begin() +#define spi_end() +#endif + +// Rather than a bazillion writecommand() and writedata() calls, screen +// initialization commands and arguments are organized in these tables +// stored in PROGMEM. The table may look bulky, but that's mostly the +// formatting -- storage-wise this is hundreds of bytes more compact +// than the equivalent code. Companion function follows. +#define DELAY 0x80 + + +// Companion code to the above tables. Reads and issues +// a series of LCD commands stored in PROGMEM byte array. +void Adafruit_ILI9341::commandList(uint8_t *addr) { + + uint8_t numCommands, numArgs; + uint16_t ms; + + numCommands = pgm_read_byte(addr++); // Number of commands to follow + while(numCommands--) { // For each command... + writecommand(pgm_read_byte(addr++)); // Read, issue command + numArgs = pgm_read_byte(addr++); // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs--) { // For each argument... + writedata(pgm_read_byte(addr++)); // Read, issue argument + } + + if(ms) { + ms = pgm_read_byte(addr++); // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + delay(ms); + } + } +} + + +void Adafruit_ILI9341::begin(void) { + if (_rst > 0) { + pinMode(_rst, OUTPUT); + digitalWrite(_rst, LOW); + } + + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); +#ifndef ESP8266 +#ifndef USE_DIGITAL_WRITE + csport = portOutputRegister(digitalPinToPort(_cs)); + cspinmask = digitalPinToBitMask(_cs); + dcport = portOutputRegister(digitalPinToPort(_dc)); + dcpinmask = digitalPinToBitMask(_dc); +#endif + if(hwSPI) { // Using hardware SPI +#endif +#if defined (__AVR__) + SPI.begin(); + SPI.setClockDivider(SPI_CLOCK_DIV2); // 8 MHz (full! speed!) + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); + mySPCR = SPCR; +#elif defined(TEENSYDUINO) + SPI.begin(); + SPI.setClockDivider(SPI_CLOCK_DIV2); // 8 MHz (full! speed!) + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); +#elif defined (__arm__) + SPI.begin(); + SPI.setClockDivider(11); // 8-ish MHz (full! speed!) + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); +#elif defined (ESP8266) + SPI.begin(); +#endif +#ifndef ESP8266 + } else { + pinMode(_sclk, OUTPUT); + pinMode(_mosi, OUTPUT); + pinMode(_miso, INPUT); + clkport = portOutputRegister(digitalPinToPort(_sclk)); + clkpinmask = digitalPinToBitMask(_sclk); + mosiport = portOutputRegister(digitalPinToPort(_mosi)); + mosipinmask = digitalPinToBitMask(_mosi); + *clkport &= ~clkpinmask; + *mosiport &= ~mosipinmask; + } +#endif + // toggle RST low to reset + if (_rst > 0) { + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(150); + } + + /* + uint8_t x = readcommand8(ILI9341_RDMODE); + Serial.print("\nDisplay Power Mode: 0x"); Serial.println(x, HEX); + x = readcommand8(ILI9341_RDMADCTL); + Serial.print("\nMADCTL Mode: 0x"); Serial.println(x, HEX); + x = readcommand8(ILI9341_RDPIXFMT); + Serial.print("\nPixel Format: 0x"); Serial.println(x, HEX); + x = readcommand8(ILI9341_RDIMGFMT); + Serial.print("\nImage Format: 0x"); Serial.println(x, HEX); + x = readcommand8(ILI9341_RDSELFDIAG); + Serial.print("\nSelf Diagnostic: 0x"); Serial.println(x, HEX); +*/ + //if(cmdList) commandList(cmdList); + + if (hwSPI) spi_begin(); + writecommand(0xEF); + writedata(0x03); + writedata(0x80); + writedata(0x02); + + writecommand(0xCF); + writedata(0x00); + writedata(0XC1); + writedata(0X30); + + writecommand(0xED); + writedata(0x64); + writedata(0x03); + writedata(0X12); + writedata(0X81); + + writecommand(0xE8); + writedata(0x85); + writedata(0x00); + writedata(0x78); + + writecommand(0xCB); + writedata(0x39); + writedata(0x2C); + writedata(0x00); + writedata(0x34); + writedata(0x02); + + writecommand(0xF7); + writedata(0x20); + + writecommand(0xEA); + writedata(0x00); + writedata(0x00); + + writecommand(ILI9341_PWCTR1); //Power control + writedata(0x23); //VRH[5:0] + + writecommand(ILI9341_PWCTR2); //Power control + writedata(0x10); //SAP[2:0];BT[3:0] + + writecommand(ILI9341_VMCTR1); //VCM control + writedata(0x3e); //�Աȶȵ��� + writedata(0x28); + + writecommand(ILI9341_VMCTR2); //VCM control2 + writedata(0x86); //-- + + writecommand(ILI9341_MADCTL); // Memory Access Control + writedata(0x48); + + writecommand(ILI9341_PIXFMT); + writedata(0x55); + + writecommand(ILI9341_FRMCTR1); + writedata(0x00); + writedata(0x18); + + writecommand(ILI9341_DFUNCTR); // Display Function Control + writedata(0x08); + writedata(0x82); + writedata(0x27); + + writecommand(0xF2); // 3Gamma Function Disable + writedata(0x00); + + writecommand(ILI9341_GAMMASET); //Gamma curve selected + writedata(0x01); + + writecommand(ILI9341_GMCTRP1); //Set Gamma + writedata(0x0F); + writedata(0x31); + writedata(0x2B); + writedata(0x0C); + writedata(0x0E); + writedata(0x08); + writedata(0x4E); + writedata(0xF1); + writedata(0x37); + writedata(0x07); + writedata(0x10); + writedata(0x03); + writedata(0x0E); + writedata(0x09); + writedata(0x00); + + writecommand(ILI9341_GMCTRN1); //Set Gamma + writedata(0x00); + writedata(0x0E); + writedata(0x14); + writedata(0x03); + writedata(0x11); + writedata(0x07); + writedata(0x31); + writedata(0xC1); + writedata(0x48); + writedata(0x08); + writedata(0x0F); + writedata(0x0C); + writedata(0x31); + writedata(0x36); + writedata(0x0F); + + writecommand(ILI9341_SLPOUT); //Exit Sleep + if (hwSPI) spi_end(); + delay(120); + if (hwSPI) spi_begin(); + writecommand(ILI9341_DISPON); //Display on + if (hwSPI) spi_end(); + +} + + +void Adafruit_ILI9341::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, + uint16_t y1) { + + writecommand(ILI9341_CASET); // Column addr set + writedata(x0 >> 8); + writedata(x0 & 0xFF); // XSTART + writedata(x1 >> 8); + writedata(x1 & 0xFF); // XEND + + writecommand(ILI9341_PASET); // Row addr set + writedata(y0>>8); + writedata(y0); // YSTART + writedata(y1>>8); + writedata(y1); // YEND + + writecommand(ILI9341_RAMWR); // write to RAM +} + + +void Adafruit_ILI9341::pushColor(uint16_t color) { + if (hwSPI) spi_begin(); +#ifdef USE_DIGITAL_WRITE + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_dc); + GPOC = digitalPinToBitMask(_cs); +#else + *dcport |= dcpinmask; + *csport &= ~cspinmask; +#endif +#endif + spiwrite(color >> 8); + spiwrite(color); +#ifdef USE_DIGITAL_WRITE + digitalWrite(_cs, HIGH); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_cs); +#else + *csport |= cspinmask; +#endif +#endif + if (hwSPI) spi_end(); +} + +void Adafruit_ILI9341::drawPixel(int16_t x, int16_t y, uint16_t color) { + + if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; + + if (hwSPI) spi_begin(); + setAddrWindow(x,y,x+1,y+1); +#ifdef USE_DIGITAL_WRITE + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_dc); + GPOC = digitalPinToBitMask(_cs); +#else + *dcport |= dcpinmask; + *csport &= ~cspinmask; +#endif +#endif + + spiwrite(color >> 8); + spiwrite(color); +#ifdef USE_DIGITAL_WRITE + digitalWrite(_cs, HIGH); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_cs); +#else + *csport |= cspinmask; +#endif +#endif + if (hwSPI) spi_end(); +} + + +void Adafruit_ILI9341::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + + // Rudimentary clipping + if((x >= _width) || (y >= _height)) return; + + if((y+h-1) >= _height) + h = _height-y; + + if (hwSPI) spi_begin(); + setAddrWindow(x, y, x, y+h-1); + + uint8_t hi = color >> 8, lo = color; + +#ifdef USE_DIGITAL_WRITE + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_dc); + GPOC = digitalPinToBitMask(_cs); +#else + *dcport |= dcpinmask; + *csport &= ~cspinmask; +#endif +#endif + + while (h--) { + spiwrite(hi); + spiwrite(lo); + } +#ifdef USE_DIGITAL_WRITE + digitalWrite(_cs, HIGH); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_cs); +#else + *csport |= cspinmask; +#endif +#endif + if (hwSPI) spi_end(); +} + + +void Adafruit_ILI9341::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + + // Rudimentary clipping + if((x >= _width) || (y >= _height)) return; + if((x+w-1) >= _width) w = _width-x; + if (hwSPI) spi_begin(); + setAddrWindow(x, y, x+w-1, y); + + uint8_t hi = color >> 8, lo = color; +#ifdef USE_DIGITAL_WRITE + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_dc); + GPOC = digitalPinToBitMask(_cs); +#else + *dcport |= dcpinmask; + *csport &= ~cspinmask; +#endif +#endif + while (w--) { + spiwrite(hi); + spiwrite(lo); + } +#ifdef USE_DIGITAL_WRITE + digitalWrite(_cs, HIGH); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_cs); +#else + *csport |= cspinmask; +#endif +#endif + if (hwSPI) spi_end(); +} + +void Adafruit_ILI9341::fillScreen(uint16_t color) { + fillRect(0, 0, _width, _height, color); +} + +// fill a rectangle +void Adafruit_ILI9341::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + + // rudimentary clipping (drawChar w/big text requires this) + if((x >= _width) || (y >= _height)) return; + if((x + w - 1) >= _width) w = _width - x; + if((y + h - 1) >= _height) h = _height - y; + + if (hwSPI) spi_begin(); + setAddrWindow(x, y, x+w-1, y+h-1); + + uint8_t hi = color >> 8, lo = color; + +#ifdef USE_DIGITAL_WRITE + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_dc); + GPOC = digitalPinToBitMask(_cs); +#else + *dcport |= dcpinmask; + *csport &= ~cspinmask; +#endif +#endif + + for(y=h; y>0; y--) { + for(x=w; x>0; x--) { + spiwrite(hi); + spiwrite(lo); + } + } +#ifdef USE_DIGITAL_WRITE + digitalWrite(_cs, HIGH); +#else +#ifdef ESP8266 + GPOS = digitalPinToBitMask(_cs); +#else + *csport |= cspinmask; +#endif +#endif + if (hwSPI) spi_end(); +} + + +// Pass 8-bit (each) R,G,B, get back 16-bit packed color +uint16_t Adafruit_ILI9341::color565(uint8_t r, uint8_t g, uint8_t b) { + return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); +} + + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +void Adafruit_ILI9341::setRotation(uint8_t m) { + + if (hwSPI) spi_begin(); + writecommand(ILI9341_MADCTL); + rotation = m % 4; // can't be higher than 3 + switch (rotation) { + case 0: + writedata(MADCTL_MX | MADCTL_BGR); + _width = ILI9341_TFTWIDTH; + _height = ILI9341_TFTHEIGHT; + break; + case 1: + writedata(MADCTL_MV | MADCTL_BGR); + _width = ILI9341_TFTHEIGHT; + _height = ILI9341_TFTWIDTH; + break; + case 2: + writedata(MADCTL_MY | MADCTL_BGR); + _width = ILI9341_TFTWIDTH; + _height = ILI9341_TFTHEIGHT; + break; + case 3: + writedata(MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR); + _width = ILI9341_TFTHEIGHT; + _height = ILI9341_TFTWIDTH; + break; + } + if (hwSPI) spi_end(); +} + + +void Adafruit_ILI9341::invertDisplay(boolean i) { + if (hwSPI) spi_begin(); + writecommand(i ? ILI9341_INVON : ILI9341_INVOFF); + if (hwSPI) spi_end(); +} + + +////////// stuff not actively being used, but kept for posterity + + +uint8_t Adafruit_ILI9341::spiread(void) { + uint8_t r = 0; + + if (hwSPI) { +#if defined (__AVR__) + uint8_t backupSPCR = SPCR; + SPCR = mySPCR; + SPDR = 0x00; + while(!(SPSR & _BV(SPIF))); + r = SPDR; + SPCR = backupSPCR; +#elif defined(TEENSYDUINO) + r = SPI.transfer(0x00); +#elif defined (__arm__) + SPI.setClockDivider(11); // 8-ish MHz (full! speed!) + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); + r = SPI.transfer(0x00); +#else + spi_begin(); + r = SPI.transfer(0x00); + spi_end(); +#endif + } else { +#ifndef ESP8266 + for (uint8_t i=0; i<8; i++) { + digitalWrite(_sclk, LOW); + digitalWrite(_sclk, HIGH); + r <<= 1; + if (digitalRead(_miso)) + r |= 0x1; + } +#endif + } + //Serial.print("read: 0x"); Serial.print(r, HEX); + + return r; +} + + uint8_t Adafruit_ILI9341::readdata(void) { + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + uint8_t r = spiread(); + digitalWrite(_cs, HIGH); + + return r; +} + + +uint8_t Adafruit_ILI9341::readcommand8(uint8_t c, uint8_t index) { + if (hwSPI) spi_begin(); + digitalWrite(_dc, LOW); // command + digitalWrite(_cs, LOW); + spiwrite(0xD9); // woo sekret command? + digitalWrite(_dc, HIGH); // data + spiwrite(0x10 + index); + digitalWrite(_cs, HIGH); + + digitalWrite(_dc, LOW); +#ifndef ESP8266 + digitalWrite(_sclk, LOW); +#endif + digitalWrite(_cs, LOW); + spiwrite(c); + + digitalWrite(_dc, HIGH); + uint8_t r = spiread(); + digitalWrite(_cs, HIGH); + if (hwSPI) spi_end(); + return r; +} + + + +/* + + uint16_t Adafruit_ILI9341::readcommand16(uint8_t c) { + digitalWrite(_dc, LOW); + if (_cs) + digitalWrite(_cs, LOW); + + spiwrite(c); + pinMode(_sid, INPUT); // input! + uint16_t r = spiread(); + r <<= 8; + r |= spiread(); + if (_cs) + digitalWrite(_cs, HIGH); + + pinMode(_sid, OUTPUT); // back to output + return r; + } + + uint32_t Adafruit_ILI9341::readcommand32(uint8_t c) { + digitalWrite(_dc, LOW); + if (_cs) + digitalWrite(_cs, LOW); + spiwrite(c); + pinMode(_sid, INPUT); // input! + + dummyclock(); + dummyclock(); + + uint32_t r = spiread(); + r <<= 8; + r |= spiread(); + r <<= 8; + r |= spiread(); + r <<= 8; + r |= spiread(); + if (_cs) + digitalWrite(_cs, HIGH); + + pinMode(_sid, OUTPUT); // back to output + return r; + } + + */ diff --git a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h new file mode 100644 index 0000000000..2bfe697253 --- /dev/null +++ b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h @@ -0,0 +1,170 @@ +/*************************************************** + This is our library for the Adafruit ILI9341 Breakout and Shield + ----> http://www.adafruit.com/products/1651 + + Check out the links above for our tutorials and wiring diagrams + These displays use SPI to communicate, 4 or 5 pins are required to + interface (RST is optional) + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + MIT license, all text above must be included in any redistribution + ****************************************************/ + +#ifndef _ADAFRUIT_ILI9341H_ +#define _ADAFRUIT_ILI9341H_ + +#if ARDUINO >= 100 + #include "Arduino.h" + #include "Print.h" +#else + #include "WProgram.h" +#endif +#include +#ifdef ESP8266 +#include +#else +#include +#endif + +#define ILI9341_TFTWIDTH 240 +#define ILI9341_TFTHEIGHT 320 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0A +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 +/* +#define ILI9341_PWCTR6 0xFC + +*/ + +// Color definitions +#define ILI9341_BLACK 0x0000 /* 0, 0, 0 */ +#define ILI9341_NAVY 0x000F /* 0, 0, 128 */ +#define ILI9341_DARKGREEN 0x03E0 /* 0, 128, 0 */ +#define ILI9341_DARKCYAN 0x03EF /* 0, 128, 128 */ +#define ILI9341_MAROON 0x7800 /* 128, 0, 0 */ +#define ILI9341_PURPLE 0x780F /* 128, 0, 128 */ +#define ILI9341_OLIVE 0x7BE0 /* 128, 128, 0 */ +#define ILI9341_LIGHTGREY 0xC618 /* 192, 192, 192 */ +#define ILI9341_DARKGREY 0x7BEF /* 128, 128, 128 */ +#define ILI9341_BLUE 0x001F /* 0, 0, 255 */ +#define ILI9341_GREEN 0x07E0 /* 0, 255, 0 */ +#define ILI9341_CYAN 0x07FF /* 0, 255, 255 */ +#define ILI9341_RED 0xF800 /* 255, 0, 0 */ +#define ILI9341_MAGENTA 0xF81F /* 255, 0, 255 */ +#define ILI9341_YELLOW 0xFFE0 /* 255, 255, 0 */ +#define ILI9341_WHITE 0xFFFF /* 255, 255, 255 */ +#define ILI9341_ORANGE 0xFD20 /* 255, 165, 0 */ +#define ILI9341_GREENYELLOW 0xAFE5 /* 173, 255, 47 */ +#define ILI9341_PINK 0xF81F + +//#define USE_DIGITAL_WRITE + +class Adafruit_ILI9341 : public Adafruit_GFX { + + public: +#ifndef ESP8266 + Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _MOSI, int8_t _SCLK, + int8_t _RST, int8_t _MISO); +#endif + Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _RST = -1); + + void begin(void), + setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1), + pushColor(uint16_t color), + fillScreen(uint16_t color), + drawPixel(int16_t x, int16_t y, uint16_t color), + drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), + drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), + fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color), + setRotation(uint8_t r), + invertDisplay(boolean i); + uint16_t color565(uint8_t r, uint8_t g, uint8_t b); + + /* These are not for current use, 8-bit protocol only! */ + uint8_t readdata(void), + readcommand8(uint8_t reg, uint8_t index = 0); + /* + uint16_t readcommand16(uint8_t); + uint32_t readcommand32(uint8_t); + void dummyclock(void); + */ + + void spiwrite(uint8_t), + writecommand(uint8_t c), + writedata(uint8_t d), + commandList(uint8_t *addr); + uint8_t spiread(void); + + private: + uint8_t tabcolor; + + boolean hwSPI; +#if defined (__AVR__) || defined(TEENSYDUINO) + uint8_t mySPCR; + volatile uint8_t *mosiport, *clkport, *dcport, *rsport, *csport; + int8_t _cs, _dc, _rst, _mosi, _miso, _sclk; + uint8_t mosipinmask, clkpinmask, cspinmask, dcpinmask; +#elif defined (__arm__) + volatile RwReg *mosiport, *clkport, *dcport, *rsport, *csport; + uint32_t _cs, _dc, _rst, _mosi, _miso, _sclk; + uint32_t mosipinmask, clkpinmask, cspinmask, dcpinmask; +#elif defined (ESP8266) + uint32_t _cs, _dc, _rst; +#endif +}; + +#endif diff --git a/libraries/Adafruit_ILI9341/README.txt b/libraries/Adafruit_ILI9341/README.txt new file mode 100644 index 0000000000..7c59050147 --- /dev/null +++ b/libraries/Adafruit_ILI9341/README.txt @@ -0,0 +1,21 @@ +This is a library for the Adafruit ILI9341 display products + +This library works with the Adafruit 2.8" Touch Shield V2 (SPI) + ----> http://www.adafruit.com/products/1651 + +Check out the links above for our tutorials and wiring diagrams. +These displays use SPI to communicate, 4 or 5 pins are required +to interface (RST is optional). + +Adafruit invests time and resources providing this open source code, +please support Adafruit and open-source hardware by purchasing +products from Adafruit! + +Written by Limor Fried/Ladyada for Adafruit Industries. +MIT license, all text above must be included in any redistribution + +To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_ILI9341. Check that the Adafruit_ILI9341 folder contains Adafruit_ILI9341.cpp and Adafruit_ILI9341. + +Place the Adafruit_ILI9341 library folder your arduinosketchfolder/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE + +Also requires the Adafruit_GFX library for Arduino. diff --git a/libraries/Adafruit_ILI9341/examples/breakouttouchpaint/breakouttouchpaint.ino b/libraries/Adafruit_ILI9341/examples/breakouttouchpaint/breakouttouchpaint.ino new file mode 100644 index 0000000000..298bcad6b3 --- /dev/null +++ b/libraries/Adafruit_ILI9341/examples/breakouttouchpaint/breakouttouchpaint.ino @@ -0,0 +1,145 @@ +/*************************************************** + This is our touchscreen painting example for the Adafruit ILI9341 Breakout + ----> http://www.adafruit.com/products/1770 + + Check out the links above for our tutorials and wiring diagrams + These displays use SPI to communicate, 4 or 5 pins are required to + interface (RST is optional) + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + MIT license, all text above must be included in any redistribution + ****************************************************/ + +/** NOT FOR USE WITH THE TOUCH SHIELD, ONLY FOR THE BREAKOUT! **/ + +#include // Core graphics library +#include +#include +#include "TouchScreen.h" + +// These are the four touchscreen analog pins +#define YP A2 // must be an analog pin, use "An" notation! +#define XM A3 // must be an analog pin, use "An" notation! +#define YM 5 // can be a digital pin +#define XP 4 // can be a digital pin + +// This is calibration data for the raw touch data to the screen coordinates +#define TS_MINX 150 +#define TS_MINY 120 +#define TS_MAXX 920 +#define TS_MAXY 940 + +#define MINPRESSURE 10 +#define MAXPRESSURE 1000 + +// The display uses hardware SPI, plus #9 & #10 +#define TFT_CS 10 +#define TFT_DC 9 +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); + +// For better pressure precision, we need to know the resistance +// between X+ and X- Use any multimeter to read it +// For the one we're using, its 300 ohms across the X plate +TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); + +// Size of the color selection boxes and the paintbrush size +#define BOXSIZE 40 +#define PENRADIUS 3 +int oldcolor, currentcolor; + +void setup(void) { + // while (!Serial); // used for leonardo debugging + + Serial.begin(9600); + Serial.println(F("Touch Paint!")); + + tft.begin(); + tft.fillScreen(ILI9341_BLACK); + + // make the color selection boxes + tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED); + tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW); + tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN); + tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN); + tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE); + tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA); + + // select the current color 'red' + tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + currentcolor = ILI9341_RED; +} + + +void loop() +{ + // Retrieve a point + TSPoint p = ts.getPoint(); + + /* + Serial.print("X = "); Serial.print(p.x); + Serial.print("\tY = "); Serial.print(p.y); + Serial.print("\tPressure = "); Serial.println(p.z); + */ + + // we have some minimum pressure we consider 'valid' + // pressure of 0 means no pressing! + if (p.z < MINPRESSURE || p.z > MAXPRESSURE) { + return; + } + + // Scale from ~0->1000 to tft.width using the calibration #'s + p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width()); + p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height()); + + /* + Serial.print("("); Serial.print(p.x); + Serial.print(", "); Serial.print(p.y); + Serial.println(")"); + */ + + + if (p.y < BOXSIZE) { + oldcolor = currentcolor; + + if (p.x < BOXSIZE) { + currentcolor = ILI9341_RED; + tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*2) { + currentcolor = ILI9341_YELLOW; + tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*3) { + currentcolor = ILI9341_GREEN; + tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*4) { + currentcolor = ILI9341_CYAN; + tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*5) { + currentcolor = ILI9341_BLUE; + tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*6) { + currentcolor = ILI9341_MAGENTA; + tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } + + if (oldcolor != currentcolor) { + if (oldcolor == ILI9341_RED) + tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED); + if (oldcolor == ILI9341_YELLOW) + tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW); + if (oldcolor == ILI9341_GREEN) + tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN); + if (oldcolor == ILI9341_CYAN) + tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN); + if (oldcolor == ILI9341_BLUE) + tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE); + if (oldcolor == ILI9341_MAGENTA) + tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA); + } + } + if (((p.y-PENRADIUS) > BOXSIZE) && ((p.y+PENRADIUS) < tft.height())) { + tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor); + } +} diff --git a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino b/libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino similarity index 89% rename from hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino rename to libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino index 7ba806f2d3..07ec02fb49 100644 --- a/hardware/esp8266com/esp8266/libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino +++ b/libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino @@ -11,8 +11,6 @@ Written by Limor Fried/Ladyada for Adafruit Industries. MIT license, all text above must be included in any redistribution - - Modified by Sermus for ESP8266 ****************************************************/ @@ -20,14 +18,33 @@ #include "Adafruit_GFX.h" #include "Adafruit_ILI9341.h" -Adafruit_ILI9341 tft = Adafruit_ILI9341(); +// For the Adafruit shield, these are the default. +#define TFT_DC 9 +#define TFT_CS 10 + +// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); +// If using the breakout, change pins as desired +//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO); void setup() { - Serial.begin(115200); + Serial.begin(9600); Serial.println("ILI9341 Test!"); tft.begin(); + // read diagnostics (optional but can help debug problems) + uint8_t x = tft.readcommand8(ILI9341_RDMODE); + Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDMADCTL); + Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDPIXFMT); + Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDIMGFMT); + Serial.print("Image Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDSELFDIAG); + Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); + Serial.println(F("Benchmark Time (microseconds)")); Serial.print(F("Screen fill ")); @@ -329,4 +346,4 @@ unsigned long testFilledRoundRects() { } return micros() - start; -} +} \ No newline at end of file diff --git a/libraries/Adafruit_ILI9341/examples/graphicstest_esp8266/graphicstest.ino b/libraries/Adafruit_ILI9341/examples/graphicstest_esp8266/graphicstest.ino new file mode 100644 index 0000000000..b1ad796021 --- /dev/null +++ b/libraries/Adafruit_ILI9341/examples/graphicstest_esp8266/graphicstest.ino @@ -0,0 +1,341 @@ +#include +#include + +// For the Adafruit shield, these are the default. +#define TFT_DC 4 +#define TFT_CS 5 + +// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); + +#define SERIAL_OUT Serial + +unsigned long testFillScreen() { + unsigned long start = micros(); + tft.fillScreen(ILI9341_BLACK); + tft.fillScreen(ILI9341_RED); + tft.fillScreen(ILI9341_GREEN); + tft.fillScreen(ILI9341_BLUE); + tft.fillScreen(ILI9341_BLACK); + return micros() - start; +} + +unsigned long testText() { + tft.fillScreen(ILI9341_BLACK); + unsigned long start = micros(); + tft.setCursor(0, 0); + tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1); + tft.println("Hello World!"); + tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2); + tft.println(1234.56); + tft.setTextColor(ILI9341_RED); tft.setTextSize(3); + tft.println(0xDEADBEEF, HEX); + tft.println(); + tft.setTextColor(ILI9341_GREEN); + tft.setTextSize(5); + tft.println("Groop"); + tft.setTextSize(2); + tft.println("I implore thee,"); + tft.setTextSize(1); + tft.println("my foonting turlingdromes."); + tft.println("And hooptiously drangle me"); + tft.println("with crinkly bindlewurdles,"); + tft.println("Or I will rend thee"); + tft.println("in the gobberwarts"); + tft.println("with my blurglecruncheon,"); + tft.println("see if I don't!"); + return micros() - start; +} + +unsigned long testLines(uint16_t color) { + unsigned long start, t; + int x1, y1, x2, y2, + w = tft.width(), + h = tft.height(); + + tft.fillScreen(ILI9341_BLACK); + delay(0); + + x1 = y1 = 0; + y2 = h - 1; + start = micros(); + for(x2=0; x20; i-=6) { + delay(0); + i2 = i / 2; + start = micros(); + tft.fillRect(cx-i2, cy-i2, i, i, color1); + t += micros() - start; + // Outlines are not included in timing results + tft.drawRect(cx-i2, cy-i2, i, i, color2); + } + + return t; +} + +unsigned long testFilledCircles(uint8_t radius, uint16_t color) { + unsigned long start; + int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; + + tft.fillScreen(ILI9341_BLACK); + start = micros(); + for(x=radius; x10; i-=5) { + start = micros(); + tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(0, i, i)); + t += micros() - start; + tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(i, i, 0)); + } + + return t; +} + +unsigned long testRoundRects() { + unsigned long start; + int w, i, i2, + cx = tft.width() / 2 - 1, + cy = tft.height() / 2 - 1; + + tft.fillScreen(ILI9341_BLACK); + w = min(tft.width(), tft.height()); + start = micros(); + for(i=0; i20; i-=6) { + i2 = i / 2; + tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); + delay(0); + } + + return micros() - start; +} + + +void setup() { + SERIAL_OUT.begin(921600); + SERIAL_OUT.println("ILI9341 Test!"); + + tft.begin(); + + // read diagnostics (optional but can help debug problems) + uint8_t x = tft.readcommand8(ILI9341_RDMODE); + SERIAL_OUT.print("Display Power Mode: 0x"); SERIAL_OUT.println(x, HEX); + x = tft.readcommand8(ILI9341_RDMADCTL); + SERIAL_OUT.print("MADCTL Mode: 0x"); SERIAL_OUT.println(x, HEX); + x = tft.readcommand8(ILI9341_RDPIXFMT); + SERIAL_OUT.print("Pixel Format: 0x"); SERIAL_OUT.println(x, HEX); + x = tft.readcommand8(ILI9341_RDIMGFMT); + SERIAL_OUT.print("Image Format: 0x"); SERIAL_OUT.println(x, HEX); + x = tft.readcommand8(ILI9341_RDSELFDIAG); + SERIAL_OUT.print("Self Diagnostic: 0x"); SERIAL_OUT.println(x, HEX); + + SERIAL_OUT.println(F("Benchmark Time (microseconds)")); + + SERIAL_OUT.print(F("Screen fill ")); + SERIAL_OUT.println(testFillScreen()); + delay(500); + + SERIAL_OUT.print(F("Text ")); + SERIAL_OUT.println(testText()); + delay(3000); + + SERIAL_OUT.print(F("Lines ")); + SERIAL_OUT.println(testLines(ILI9341_CYAN)); + delay(500); + + SERIAL_OUT.print(F("Horiz/Vert Lines ")); + SERIAL_OUT.println(testFastLines(ILI9341_RED, ILI9341_BLUE)); + delay(500); + + SERIAL_OUT.print(F("Rectangles (outline) ")); + SERIAL_OUT.println(testRects(ILI9341_GREEN)); + delay(500); + + SERIAL_OUT.print(F("Rectangles (filled) ")); + SERIAL_OUT.println(testFilledRects(ILI9341_YELLOW, ILI9341_MAGENTA)); + delay(500); + + SERIAL_OUT.print(F("Circles (filled) ")); + SERIAL_OUT.println(testFilledCircles(10, ILI9341_MAGENTA)); + + SERIAL_OUT.print(F("Circles (outline) ")); + SERIAL_OUT.println(testCircles(10, ILI9341_WHITE)); + delay(500); + + SERIAL_OUT.print(F("Triangles (outline) ")); + SERIAL_OUT.println(testTriangles()); + delay(500); + + SERIAL_OUT.print(F("Triangles (filled) ")); + SERIAL_OUT.println(testFilledTriangles()); + delay(500); + + SERIAL_OUT.print(F("Rounded rects (outline) ")); + SERIAL_OUT.println(testRoundRects()); + delay(500); + + SERIAL_OUT.print(F("Rounded rects (filled) ")); + SERIAL_OUT.println(testFilledRoundRects()); + delay(500); + + SERIAL_OUT.println(F("Done!")); + +} + + +void loop(void) { + for(uint8_t rotation=0; rotation<4; rotation++) { + tft.setRotation(rotation); + testText(); + delay(1000); + } +} + diff --git a/libraries/Adafruit_ILI9341/examples/onoffbutton/onoffbutton.ino b/libraries/Adafruit_ILI9341/examples/onoffbutton/onoffbutton.ino new file mode 100644 index 0000000000..3365d3385d --- /dev/null +++ b/libraries/Adafruit_ILI9341/examples/onoffbutton/onoffbutton.ino @@ -0,0 +1,125 @@ +//This example implements a simple sliding On/Off button. The example +// demonstrates drawing and touch operations. +// +//Thanks to Adafruit forums member Asteroid for the original sketch! +// +#include +#include +#include +#include +#include + +// This is calibration data for the raw touch data to the screen coordinates +#define TS_MINX 150 +#define TS_MINY 130 +#define TS_MAXX 3800 +#define TS_MAXY 4000 + +#define STMPE_CS 8 +Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS); +#define TFT_CS 10 +#define TFT_DC 9 +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); + +boolean RecordOn = false; + +#define FRAME_X 210 +#define FRAME_Y 180 +#define FRAME_W 100 +#define FRAME_H 50 + +#define REDBUTTON_X FRAME_X +#define REDBUTTON_Y FRAME_Y +#define REDBUTTON_W (FRAME_W/2) +#define REDBUTTON_H FRAME_H + +#define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) +#define GREENBUTTON_Y FRAME_Y +#define GREENBUTTON_W (FRAME_W/2) +#define GREENBUTTON_H FRAME_H + +void drawFrame() +{ + tft.drawRect(FRAME_X, FRAME_Y, FRAME_W, FRAME_H, ILI9341_BLACK); +} + +void redBtn() +{ + tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_RED); + tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_BLUE); + drawFrame(); + tft.setCursor(GREENBUTTON_X + 6 , GREENBUTTON_Y + (GREENBUTTON_H/2)); + tft.setTextColor(ILI9341_WHITE); + tft.setTextSize(2); + tft.println("ON"); + RecordOn = false; +} + +void greenBtn() +{ + tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_GREEN); + tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_BLUE); + drawFrame(); + tft.setCursor(REDBUTTON_X + 6 , REDBUTTON_Y + (REDBUTTON_H/2)); + tft.setTextColor(ILI9341_WHITE); + tft.setTextSize(2); + tft.println("OFF"); + RecordOn = true; +} + +void setup(void) +{ + Serial.begin(9600); + tft.begin(); + if (!ts.begin()) { + Serial.println("Unable to start touchscreen."); + } + else { + Serial.println("Touchscreen started."); + } + + tft.fillScreen(ILI9341_BLUE); + // origin = left,top landscape (USB left upper) + tft.setRotation(1); + redBtn(); +} + +void loop() +{ + // See if there's any touch data for us + if (!ts.bufferEmpty()) + { + // Retrieve a point + TS_Point p = ts.getPoint(); + // Scale using the calibration #'s + // and rotate coordinate system + p.x = map(p.x, TS_MINY, TS_MAXY, 0, tft.height()); + p.y = map(p.y, TS_MINX, TS_MAXX, 0, tft.width()); + int y = tft.height() - p.x; + int x = p.y; + + if (RecordOn) + { + if((x > REDBUTTON_X) && (x < (REDBUTTON_X + REDBUTTON_W))) { + if ((y > REDBUTTON_Y) && (y <= (REDBUTTON_Y + REDBUTTON_H))) { + Serial.println("Red btn hit"); + redBtn(); + } + } + } + else //Record is off (RecordOn == false) + { + if((x > GREENBUTTON_X) && (x < (GREENBUTTON_X + GREENBUTTON_W))) { + if ((y > GREENBUTTON_Y) && (y <= (GREENBUTTON_Y + GREENBUTTON_H))) { + Serial.println("Green btn hit"); + greenBtn(); + } + } + } + + Serial.println(RecordOn); + } +} + + + diff --git a/libraries/Adafruit_ILI9341/examples/onoffbutton_breakout/onoffbutton_breakout.ino b/libraries/Adafruit_ILI9341/examples/onoffbutton_breakout/onoffbutton_breakout.ino new file mode 100644 index 0000000000..aa8cb9992f --- /dev/null +++ b/libraries/Adafruit_ILI9341/examples/onoffbutton_breakout/onoffbutton_breakout.ino @@ -0,0 +1,133 @@ +//This example implements a simple sliding On/Off button. The example +// demonstrates drawing and touch operations. +// +//Thanks to Adafruit forums member Asteroid for the original sketch! +// +#include +#include +#include +#include +#include + +//Touchscreen X+ X- Y+ Y- pins +#define YP A3 // must be an analog pin, use "An" notation! +#define XM A2 // must be an analog pin, use "An" notation! +#define YM 5 // can be a digital pin +#define XP 4 // can be a digital pin + +// This is calibration data for the raw touch data to the screen coordinates +#define TS_MINX 150 +#define TS_MINY 120 +#define TS_MAXX 920 +#define TS_MAXY 940 + +#define MINPRESSURE 10 +#define MAXPRESSURE 1000 + +// For better pressure precision, we need to know the resistance +// between X+ and X- Use any multimeter to read it +// For the one we're using, its 300 ohms across the X plate +TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); + + +#define TFT_CS 10 +#define TFT_DC 9 +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); + +boolean RecordOn = false; + +#define FRAME_X 210 +#define FRAME_Y 180 +#define FRAME_W 100 +#define FRAME_H 50 + +#define REDBUTTON_X FRAME_X +#define REDBUTTON_Y FRAME_Y +#define REDBUTTON_W (FRAME_W/2) +#define REDBUTTON_H FRAME_H + +#define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) +#define GREENBUTTON_Y FRAME_Y +#define GREENBUTTON_W (FRAME_W/2) +#define GREENBUTTON_H FRAME_H + +void drawFrame() +{ + tft.drawRect(FRAME_X, FRAME_Y, FRAME_W, FRAME_H, ILI9341_BLACK); +} + +void redBtn() +{ + tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_RED); + tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_BLUE); + drawFrame(); + tft.setCursor(GREENBUTTON_X + 6 , GREENBUTTON_Y + (GREENBUTTON_H/2)); + tft.setTextColor(ILI9341_WHITE); + tft.setTextSize(2); + tft.println("ON"); + RecordOn = false; +} + +void greenBtn() +{ + tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_GREEN); + tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_BLUE); + drawFrame(); + tft.setCursor(REDBUTTON_X + 6 , REDBUTTON_Y + (REDBUTTON_H/2)); + tft.setTextColor(ILI9341_WHITE); + tft.setTextSize(2); + tft.println("OFF"); + RecordOn = true; +} + +void setup(void) +{ + Serial.begin(9600); + tft.begin(); + + tft.fillScreen(ILI9341_BLUE); + // origin = left,top landscape (USB left upper) + tft.setRotation(1); + redBtn(); +} + +void loop() +{ + // Retrieve a point + TSPoint p = ts.getPoint(); + + // See if there's any touch data for us + if (p.z > MINPRESSURE && p.z < MAXPRESSURE) + { + // Scale using the calibration #'s + // and rotate coordinate system + p.x = map(p.x, TS_MINY, TS_MAXY, 0, tft.height()); + p.y = map(p.y, TS_MINX, TS_MAXX, 0, tft.width()); + int y = tft.height() - p.x; + int x = p.y; + + if (RecordOn) + { + if((x > REDBUTTON_X) && (x < (REDBUTTON_X + REDBUTTON_W))) { + if ((y > REDBUTTON_Y) && (y <= (REDBUTTON_Y + REDBUTTON_H))) { + Serial.println("Red btn hit"); + redBtn(); + } + } + } + else //Record is off (RecordOn == false) + { + if((x > GREENBUTTON_X) && (x < (GREENBUTTON_X + GREENBUTTON_W))) { + if ((y > GREENBUTTON_Y) && (y <= (GREENBUTTON_Y + GREENBUTTON_H))) { + Serial.println("Green btn hit"); + greenBtn(); + } + } + } + + Serial.println(RecordOn); + } +} + + + diff --git a/libraries/Adafruit_ILI9341/examples/spitftbitmap/spitftbitmap.ino b/libraries/Adafruit_ILI9341/examples/spitftbitmap/spitftbitmap.ino new file mode 100644 index 0000000000..f87d6f7e75 --- /dev/null +++ b/libraries/Adafruit_ILI9341/examples/spitftbitmap/spitftbitmap.ino @@ -0,0 +1,189 @@ +/*************************************************** + This is our Bitmap drawing example for the Adafruit ILI9341 Breakout and Shield + ----> http://www.adafruit.com/products/1651 + + Check out the links above for our tutorials and wiring diagrams + These displays use SPI to communicate, 4 or 5 pins are required to + interface (RST is optional) + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + MIT license, all text above must be included in any redistribution + ****************************************************/ + + +#include // Core graphics library +#include "Adafruit_ILI9341.h" // Hardware-specific library +#include +#include + +// TFT display and SD card will share the hardware SPI interface. +// Hardware SPI pins are specific to the Arduino board type and +// cannot be remapped to alternate pins. For Arduino Uno, +// Duemilanove, etc., pin 11 = MOSI, pin 12 = MISO, pin 13 = SCK. + +#define TFT_DC 9 +#define TFT_CS 10 +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); + +#define SD_CS 4 + +void setup(void) { + Serial.begin(9600); + + tft.begin(); + tft.fillScreen(ILI9341_BLUE); + + Serial.print("Initializing SD card..."); + if (!SD.begin(SD_CS)) { + Serial.println("failed!"); + } + Serial.println("OK!"); + + bmpDraw("purple.bmp", 0, 0); +} + +void loop() { +} + +// This function opens a Windows Bitmap (BMP) file and +// displays it at the given coordinates. It's sped up +// by reading many pixels worth of data at a time +// (rather than pixel by pixel). Increasing the buffer +// size takes more of the Arduino's precious RAM but +// makes loading a little faster. 20 pixels seems a +// good balance. + +#define BUFFPIXEL 20 + +void bmpDraw(char *filename, uint8_t x, uint16_t y) { + + File bmpFile; + int bmpWidth, bmpHeight; // W+H in pixels + uint8_t bmpDepth; // Bit depth (currently must be 24) + uint32_t bmpImageoffset; // Start of image data in file + uint32_t rowSize; // Not always = bmpWidth; may have padding + uint8_t sdbuffer[3*BUFFPIXEL]; // pixel buffer (R+G+B per pixel) + uint8_t buffidx = sizeof(sdbuffer); // Current position in sdbuffer + boolean goodBmp = false; // Set to true on valid header parse + boolean flip = true; // BMP is stored bottom-to-top + int w, h, row, col; + uint8_t r, g, b; + uint32_t pos = 0, startTime = millis(); + + if((x >= tft.width()) || (y >= tft.height())) return; + + Serial.println(); + Serial.print(F("Loading image '")); + Serial.print(filename); + Serial.println('\''); + + // Open requested file on SD card + if ((bmpFile = SD.open(filename)) == NULL) { + Serial.print(F("File not found")); + return; + } + + // Parse BMP header + if(read16(bmpFile) == 0x4D42) { // BMP signature + Serial.print(F("File size: ")); Serial.println(read32(bmpFile)); + (void)read32(bmpFile); // Read & ignore creator bytes + bmpImageoffset = read32(bmpFile); // Start of image data + Serial.print(F("Image Offset: ")); Serial.println(bmpImageoffset, DEC); + // Read DIB header + Serial.print(F("Header size: ")); Serial.println(read32(bmpFile)); + bmpWidth = read32(bmpFile); + bmpHeight = read32(bmpFile); + if(read16(bmpFile) == 1) { // # planes -- must be '1' + bmpDepth = read16(bmpFile); // bits per pixel + Serial.print(F("Bit Depth: ")); Serial.println(bmpDepth); + if((bmpDepth == 24) && (read32(bmpFile) == 0)) { // 0 = uncompressed + + goodBmp = true; // Supported BMP format -- proceed! + Serial.print(F("Image size: ")); + Serial.print(bmpWidth); + Serial.print('x'); + Serial.println(bmpHeight); + + // BMP rows are padded (if needed) to 4-byte boundary + rowSize = (bmpWidth * 3 + 3) & ~3; + + // If bmpHeight is negative, image is in top-down order. + // This is not canon but has been observed in the wild. + if(bmpHeight < 0) { + bmpHeight = -bmpHeight; + flip = false; + } + + // Crop area to be loaded + w = bmpWidth; + h = bmpHeight; + if((x+w-1) >= tft.width()) w = tft.width() - x; + if((y+h-1) >= tft.height()) h = tft.height() - y; + + // Set TFT address window to clipped image bounds + tft.setAddrWindow(x, y, x+w-1, y+h-1); + + for (row=0; row= sizeof(sdbuffer)) { // Indeed + bmpFile.read(sdbuffer, sizeof(sdbuffer)); + buffidx = 0; // Set index to beginning + } + + // Convert pixel from BMP to TFT format, push to display + b = sdbuffer[buffidx++]; + g = sdbuffer[buffidx++]; + r = sdbuffer[buffidx++]; + tft.pushColor(tft.color565(r,g,b)); + } // end pixel + } // end scanline + Serial.print(F("Loaded in ")); + Serial.print(millis() - startTime); + Serial.println(" ms"); + } // end goodBmp + } + } + + bmpFile.close(); + if(!goodBmp) Serial.println(F("BMP format not recognized.")); +} + +// These read 16- and 32-bit types from the SD card file. +// BMP data is stored little-endian, Arduino is little-endian too. +// May need to reverse subscript order if porting elsewhere. + +uint16_t read16(File &f) { + uint16_t result; + ((uint8_t *)&result)[0] = f.read(); // LSB + ((uint8_t *)&result)[1] = f.read(); // MSB + return result; +} + +uint32_t read32(File &f) { + uint32_t result; + ((uint8_t *)&result)[0] = f.read(); // LSB + ((uint8_t *)&result)[1] = f.read(); + ((uint8_t *)&result)[2] = f.read(); + ((uint8_t *)&result)[3] = f.read(); // MSB + return result; +} diff --git a/libraries/Adafruit_ILI9341/examples/touchpaint/touchpaint.ino b/libraries/Adafruit_ILI9341/examples/touchpaint/touchpaint.ino new file mode 100644 index 0000000000..227abdc84d --- /dev/null +++ b/libraries/Adafruit_ILI9341/examples/touchpaint/touchpaint.ino @@ -0,0 +1,146 @@ +/*************************************************** + This is our touchscreen painting example for the Adafruit ILI9341 Shield + ----> http://www.adafruit.com/products/1651 + + Check out the links above for our tutorials and wiring diagrams + These displays use SPI to communicate, 4 or 5 pins are required to + interface (RST is optional) + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + MIT license, all text above must be included in any redistribution + ****************************************************/ + + +#include // Core graphics library +#include +#include // this is needed even tho we aren't using it +#include +#include + +// This is calibration data for the raw touch data to the screen coordinates +#define TS_MINX 150 +#define TS_MINY 130 +#define TS_MAXX 3800 +#define TS_MAXY 4000 + +// The STMPE610 uses hardware SPI on the shield, and #8 +#define STMPE_CS 8 +Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS); + +// The display also uses hardware SPI, plus #9 & #10 +#define TFT_CS 10 +#define TFT_DC 9 +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); + +// Size of the color selection boxes and the paintbrush size +#define BOXSIZE 40 +#define PENRADIUS 3 +int oldcolor, currentcolor; + +void setup(void) { + // while (!Serial); // used for leonardo debugging + + Serial.begin(9600); + Serial.println(F("Touch Paint!")); + + tft.begin(); + + if (!ts.begin()) { + Serial.println("Couldn't start touchscreen controller"); + while (1); + } + Serial.println("Touchscreen started"); + + tft.fillScreen(ILI9341_BLACK); + + // make the color selection boxes + tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED); + tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW); + tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN); + tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN); + tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE); + tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA); + + // select the current color 'red' + tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + currentcolor = ILI9341_RED; +} + + +void loop() +{ + // See if there's any touch data for us + if (ts.bufferEmpty()) { + return; + } + /* + // You can also wait for a touch + if (! ts.touched()) { + return; + } + */ + + // Retrieve a point + TS_Point p = ts.getPoint(); + + /* + Serial.print("X = "); Serial.print(p.x); + Serial.print("\tY = "); Serial.print(p.y); + Serial.print("\tPressure = "); Serial.println(p.z); + */ + + // Scale from ~0->4000 to tft.width using the calibration #'s + p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width()); + p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height()); + + /* + Serial.print("("); Serial.print(p.x); + Serial.print(", "); Serial.print(p.y); + Serial.println(")"); + */ + + if (p.y < BOXSIZE) { + oldcolor = currentcolor; + + if (p.x < BOXSIZE) { + currentcolor = ILI9341_RED; + tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*2) { + currentcolor = ILI9341_YELLOW; + tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*3) { + currentcolor = ILI9341_GREEN; + tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*4) { + currentcolor = ILI9341_CYAN; + tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*5) { + currentcolor = ILI9341_BLUE; + tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } else if (p.x < BOXSIZE*6) { + currentcolor = ILI9341_MAGENTA; + tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE); + } + + if (oldcolor != currentcolor) { + if (oldcolor == ILI9341_RED) + tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED); + if (oldcolor == ILI9341_YELLOW) + tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW); + if (oldcolor == ILI9341_GREEN) + tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN); + if (oldcolor == ILI9341_CYAN) + tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN); + if (oldcolor == ILI9341_BLUE) + tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE); + if (oldcolor == ILI9341_MAGENTA) + tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA); + } + } + if (((p.y-PENRADIUS) > BOXSIZE) && ((p.y+PENRADIUS) < tft.height())) { + tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor); + } +} diff --git a/libraries/Adafruit_ILI9341/library.properties b/libraries/Adafruit_ILI9341/library.properties new file mode 100644 index 0000000000..aa621a9429 --- /dev/null +++ b/libraries/Adafruit_ILI9341/library.properties @@ -0,0 +1,9 @@ +name=Adafruit ILI9341 +version=1.0.0 +author=Adafruit +maintainer=Adafruit +sentence=Library for Adafruit ILI9341 displays +paragraph=Library for Adafruit ILI9341 displays +category=Display +url=https://github.com/adafruit/Adafruit_ILI9341 +architectures=*