Initial commit

This commit is contained in:
2026-03-31 13:17:21 +02:00
commit 7eeecff042
6821 changed files with 3514215 additions and 0 deletions

View File

@@ -0,0 +1,182 @@
#ifndef FreeMono8pt7b_H
#define FreeMono8pt7b_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#undef PROGMEM
#define PROGMEM STORE_ATTR
#elif defined(__IMXRT1052__) || defined(__IMXRT1062__)
// PROGMEM is defefind for T4 to place data in specific memory section
#undef PROGMEM
#define PROGMEM
#else
#define PROGMEM
#endif
const uint8_t FreeMono8pt7bBitmaps[] PROGMEM = {
0x00, 0xFE, 0x40, 0x49, 0x24, 0x92, 0x48, 0x14, 0x28, 0x53, 0xF2, 0x44,
0xBF, 0x94, 0x28, 0x50, 0x00, 0x10, 0x79, 0x12, 0x03, 0x80, 0xC0, 0xC3,
0xFC, 0x20, 0x30, 0x91, 0x21, 0x80, 0x67, 0x13, 0x09, 0x12, 0x18, 0x39,
0x04, 0x10, 0x62, 0x59, 0x62, 0x74, 0x49, 0x24, 0x1A, 0xAA, 0xA5, 0x29,
0x55, 0x6A, 0x20, 0x82, 0x7E, 0x51, 0x20, 0x21, 0x09, 0xF2, 0x10, 0x80,
0x6B, 0x48, 0xFE, 0xF0, 0x04, 0x10, 0x82, 0x10, 0x42, 0x08, 0x21, 0x04,
0x20, 0x31, 0x28, 0x61, 0x86, 0x18, 0x61, 0x48, 0xC0, 0x23, 0x28, 0x42,
0x10, 0x84, 0x27, 0xC0, 0x7B, 0x28, 0x41, 0x08, 0x62, 0x10, 0x83, 0xF0,
0xF8, 0x18, 0x10, 0x21, 0x80, 0x80, 0x81, 0x84, 0xF0, 0x08, 0xE2, 0x92,
0x49, 0x28, 0x9F, 0x08, 0x70, 0x78, 0x81, 0x03, 0xE4, 0x60, 0x40, 0x81,
0xC4, 0x70, 0x3D, 0x84, 0x20, 0xBB, 0x38, 0x61, 0x4C, 0xE0, 0xFC, 0x10,
0x42, 0x08, 0x21, 0x04, 0x10, 0x80, 0x7B, 0x38, 0x61, 0x79, 0x38, 0x61,
0xCD, 0xE0, 0x79, 0x8A, 0x0C, 0x1C, 0x6F, 0x40, 0x82, 0x09, 0xE0, 0xF0,
0x3C, 0x6C, 0x00, 0xD6, 0x80, 0x02, 0x18, 0xC6, 0x06, 0x03, 0x01, 0x80,
0xFF, 0x00, 0xFF, 0x40, 0x60, 0x30, 0x10, 0xC2, 0x18, 0x00, 0x7A, 0x10,
0x43, 0x18, 0x80, 0x00, 0x30, 0x38, 0x8A, 0x14, 0xEB, 0x54, 0xA9, 0x4F,
0x80, 0x80, 0xF0, 0x38, 0x0A, 0x05, 0x04, 0x42, 0x21, 0xF1, 0x04, 0x82,
0xE3, 0x80, 0xFC, 0x42, 0x42, 0x42, 0x7C, 0x43, 0x41, 0x41, 0xFE, 0x3D,
0x43, 0x81, 0x80, 0x80, 0x80, 0xC0, 0x61, 0x3E, 0xFC, 0x42, 0x41, 0x41,
0x41, 0x41, 0x41, 0x42, 0xFC, 0xFE, 0x42, 0x40, 0x48, 0x78, 0x48, 0x40,
0x41, 0xFF, 0xFF, 0x41, 0x40, 0x48, 0x78, 0x48, 0x40, 0x40, 0xF0, 0x3D,
0x21, 0xA0, 0x10, 0x08, 0x04, 0x3E, 0x04, 0x82, 0x3E, 0x00, 0xE7, 0x42,
0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0xE7, 0xF9, 0x08, 0x42, 0x10, 0x84,
0xF8, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0xC6, 0x7C, 0xE7, 0x21,
0x11, 0x0B, 0x06, 0x82, 0x21, 0x10, 0x84, 0xE1, 0x80, 0xE0, 0x81, 0x02,
0x04, 0x08, 0x10, 0xA1, 0xFE, 0xE1, 0xD8, 0x65, 0x29, 0x4A, 0x4C, 0x93,
0x24, 0x09, 0x02, 0xE1, 0xC0, 0xC7, 0x62, 0x62, 0x52, 0x52, 0x4A, 0x4A,
0x46, 0xE2, 0x3C, 0x42, 0xC3, 0x81, 0x81, 0x81, 0xC3, 0x42, 0x3C, 0xFC,
0x8D, 0x0A, 0x14, 0x6F, 0x90, 0x20, 0xF0, 0x3C, 0x42, 0xC3, 0x81, 0x81,
0x81, 0xC3, 0x42, 0x3C, 0x19, 0x26, 0xFC, 0x46, 0x42, 0x46, 0x78, 0x44,
0x44, 0x42, 0xE1, 0x3A, 0xCD, 0x0A, 0x03, 0xC0, 0x60, 0xE3, 0xBC, 0xFF,
0x91, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0xE7, 0x42, 0x42, 0x42,
0x42, 0x42, 0x42, 0x66, 0x3C, 0xE3, 0xA0, 0x90, 0x44, 0x42, 0x20, 0x90,
0x50, 0x28, 0x08, 0x00, 0xF3, 0x90, 0x24, 0xC9, 0x34, 0x55, 0x14, 0xC5,
0x30, 0x8C, 0x23, 0x00, 0xC7, 0x42, 0x24, 0x28, 0x10, 0x28, 0x44, 0x42,
0xE7, 0xE3, 0xA1, 0x08, 0x82, 0x80, 0x80, 0x40, 0x20, 0x10, 0x1C, 0x00,
0xFA, 0x21, 0x08, 0x21, 0x08, 0x61, 0xFC, 0xEA, 0xAA, 0xAB, 0x82, 0x04,
0x10, 0x20, 0x81, 0x04, 0x10, 0x20, 0x81, 0xD5, 0x55, 0x57, 0x21, 0x44,
0xA1, 0xFF, 0xC0, 0x90, 0x7C, 0x02, 0x7E, 0xC2, 0x82, 0x86, 0x7B, 0x81,
0x02, 0x05, 0xCC, 0x50, 0x60, 0xC1, 0xC5, 0x70, 0x3D, 0x43, 0x81, 0x80,
0x80, 0x40, 0x3F, 0x02, 0x02, 0x02, 0x3A, 0x46, 0x82, 0x82, 0x82, 0x46,
0x3B, 0x3C, 0x86, 0x0F, 0xF8, 0x08, 0x4F, 0x00, 0x3A, 0x11, 0xF4, 0x21,
0x08, 0x47, 0x80, 0x3A, 0x8E, 0x0C, 0x18, 0x28, 0xCE, 0x81, 0x02, 0x38,
0x40, 0x40, 0x40, 0x5C, 0x62, 0x42, 0x42, 0x42, 0x42, 0xE7, 0x20, 0x18,
0x42, 0x10, 0x84, 0xF8, 0x20, 0xF1, 0x11, 0x11, 0x11, 0x1E, 0x81, 0x02,
0x04, 0xE9, 0x14, 0x38, 0x48, 0x89, 0x1C, 0x61, 0x08, 0x42, 0x10, 0x84,
0x27, 0xC0, 0xB6, 0xC9, 0x89, 0x89, 0x89, 0x89, 0xC9, 0x5C, 0x62, 0x42,
0x42, 0x42, 0x42, 0xE7, 0x3C, 0x42, 0x81, 0x81, 0x81, 0x42, 0x3C, 0xDC,
0x62, 0x41, 0x41, 0x41, 0x62, 0x5C, 0x40, 0x40, 0xE0, 0x3B, 0x46, 0x82,
0x82, 0x82, 0x46, 0x3A, 0x02, 0x02, 0x07, 0xCC, 0xE1, 0x02, 0x04, 0x08,
0x3C, 0x00, 0x3D, 0x14, 0x0E, 0x06, 0x1F, 0x80, 0x40, 0x83, 0xE2, 0x04,
0x08, 0x10, 0x21, 0x3C, 0x8E, 0x18, 0x61, 0x86, 0x37, 0x40, 0xF3, 0x90,
0x88, 0x84, 0x41, 0x40, 0xA0, 0x30, 0xE3, 0xA0, 0x92, 0x46, 0xA3, 0x51,
0xB0, 0x88, 0xE6, 0x44, 0x28, 0x10, 0x2C, 0x42, 0xE7, 0xE7, 0x42, 0x44,
0x24, 0x28, 0x18, 0x10, 0x10, 0x20, 0xF0, 0xFA, 0x21, 0x08, 0x42, 0x07,
0xC0, 0x69, 0x25, 0x12, 0x49, 0x30, 0xFF, 0xF0, 0xC9, 0x24, 0x52, 0x49,
0x60, 0x60, 0xA4, 0x30 };
const GFXglyph FreeMono8pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 10, 0, 0 }, // 0x20 ' '
{ 1, 1, 10, 10, 4, -9 }, // 0x21 '!'
{ 3, 6, 5, 10, 2, -9 }, // 0x22 '"'
{ 7, 7, 11, 10, 1, -9 }, // 0x23 '#'
{ 17, 7, 10, 10, 1, -9 }, // 0x24 '$'
{ 26, 7, 10, 10, 1, -9 }, // 0x25 '%'
{ 35, 6, 9, 10, 2, -8 }, // 0x26 '&'
{ 42, 3, 5, 10, 3, -9 }, // 0x27 '''
{ 44, 2, 12, 10, 5, -9 }, // 0x28 '('
{ 47, 2, 12, 10, 3, -9 }, // 0x29 ')'
{ 50, 6, 6, 10, 2, -9 }, // 0x2A '*'
{ 55, 5, 7, 10, 2, -7 }, // 0x2B '+'
{ 60, 3, 5, 10, 2, -2 }, // 0x2C ','
{ 62, 7, 1, 10, 1, -4 }, // 0x2D '-'
{ 63, 2, 2, 10, 4, -1 }, // 0x2E '.'
{ 64, 6, 12, 10, 2, -10 }, // 0x2F '/'
{ 73, 6, 10, 10, 2, -9 }, // 0x30 '0'
{ 81, 5, 10, 10, 2, -9 }, // 0x31 '1'
{ 88, 6, 10, 10, 2, -9 }, // 0x32 '2'
{ 96, 7, 10, 10, 1, -9 }, // 0x33 '3'
{ 105, 6, 10, 10, 2, -9 }, // 0x34 '4'
{ 113, 7, 10, 10, 1, -9 }, // 0x35 '5'
{ 122, 6, 10, 10, 2, -9 }, // 0x36 '6'
{ 130, 6, 10, 10, 2, -9 }, // 0x37 '7'
{ 138, 6, 10, 10, 2, -9 }, // 0x38 '8'
{ 146, 7, 10, 10, 2, -9 }, // 0x39 '9'
{ 155, 2, 7, 10, 4, -6 }, // 0x3A ':'
{ 157, 3, 9, 10, 2, -6 }, // 0x3B ';'
{ 161, 7, 7, 10, 1, -7 }, // 0x3C '<'
{ 168, 8, 3, 10, 1, -5 }, // 0x3D '='
{ 171, 7, 7, 10, 1, -7 }, // 0x3E '>'
{ 178, 6, 9, 10, 2, -8 }, // 0x3F '?'
{ 185, 7, 11, 10, 2, -9 }, // 0x40 '@'
{ 195, 9, 9, 10, 0, -8 }, // 0x41 'A'
{ 206, 8, 9, 10, 1, -8 }, // 0x42 'B'
{ 215, 8, 9, 10, 1, -8 }, // 0x43 'C'
{ 224, 8, 9, 10, 1, -8 }, // 0x44 'D'
{ 233, 8, 9, 10, 1, -8 }, // 0x45 'E'
{ 242, 8, 9, 10, 1, -8 }, // 0x46 'F'
{ 251, 9, 9, 10, 1, -8 }, // 0x47 'G'
{ 262, 8, 9, 10, 1, -8 }, // 0x48 'H'
{ 271, 5, 9, 10, 2, -8 }, // 0x49 'I'
{ 277, 8, 9, 10, 1, -8 }, // 0x4A 'J'
{ 286, 9, 9, 10, 1, -8 }, // 0x4B 'K'
{ 297, 7, 9, 10, 2, -8 }, // 0x4C 'L'
{ 305, 10, 9, 10, 0, -8 }, // 0x4D 'M'
{ 317, 8, 9, 10, 1, -8 }, // 0x4E 'N'
{ 326, 8, 9, 10, 1, -8 }, // 0x4F 'O'
{ 335, 7, 9, 10, 1, -8 }, // 0x50 'P'
{ 343, 8, 11, 10, 1, -8 }, // 0x51 'Q'
{ 354, 8, 9, 10, 1, -8 }, // 0x52 'R'
{ 363, 7, 9, 10, 1, -8 }, // 0x53 'S'
{ 371, 8, 9, 10, 1, -8 }, // 0x54 'T'
{ 380, 8, 9, 10, 1, -8 }, // 0x55 'U'
{ 389, 9, 9, 10, 0, -8 }, // 0x56 'V'
{ 400, 10, 9, 10, 0, -8 }, // 0x57 'W'
{ 412, 8, 9, 10, 1, -8 }, // 0x58 'X'
{ 421, 9, 9, 10, 1, -8 }, // 0x59 'Y'
{ 432, 6, 9, 10, 2, -8 }, // 0x5A 'Z'
{ 439, 2, 12, 10, 4, -9 }, // 0x5B '['
{ 442, 6, 12, 10, 2, -10 }, // 0x5C '\'
{ 451, 2, 12, 10, 3, -9 }, // 0x5D ']'
{ 454, 6, 4, 10, 2, -9 }, // 0x5E '^'
{ 457, 10, 1, 10, 0, 2 }, // 0x5F '_'
{ 459, 2, 2, 10, 2, -9 }, // 0x60 '`'
{ 460, 8, 7, 10, 1, -6 }, // 0x61 'a'
{ 467, 7, 10, 10, 2, -9 }, // 0x62 'b'
{ 476, 8, 7, 10, 1, -6 }, // 0x63 'c'
{ 483, 8, 10, 10, 1, -9 }, // 0x64 'd'
{ 493, 7, 7, 10, 1, -6 }, // 0x65 'e'
{ 500, 5, 10, 10, 3, -9 }, // 0x66 'f'
{ 507, 7, 10, 10, 1, -6 }, // 0x67 'g'
{ 516, 8, 10, 10, 1, -9 }, // 0x68 'h'
{ 526, 5, 9, 10, 2, -8 }, // 0x69 'i'
{ 532, 4, 12, 10, 3, -8 }, // 0x6A 'j'
{ 538, 7, 10, 10, 2, -9 }, // 0x6B 'k'
{ 547, 5, 10, 10, 2, -9 }, // 0x6C 'l'
{ 554, 8, 7, 10, 1, -6 }, // 0x6D 'm'
{ 561, 8, 7, 10, 1, -6 }, // 0x6E 'n'
{ 568, 8, 7, 10, 1, -6 }, // 0x6F 'o'
{ 575, 8, 10, 10, 1, -6 }, // 0x70 'p'
{ 585, 8, 10, 10, 1, -6 }, // 0x71 'q'
{ 595, 7, 7, 10, 2, -6 }, // 0x72 'r'
{ 602, 6, 7, 10, 2, -6 }, // 0x73 's'
{ 608, 7, 9, 10, 1, -8 }, // 0x74 't'
{ 616, 6, 7, 10, 2, -6 }, // 0x75 'u'
{ 622, 9, 7, 10, 0, -6 }, // 0x76 'v'
{ 630, 9, 7, 10, 0, -6 }, // 0x77 'w'
{ 638, 8, 7, 10, 1, -6 }, // 0x78 'x'
{ 645, 8, 10, 10, 1, -6 }, // 0x79 'y'
{ 655, 6, 7, 10, 2, -6 }, // 0x7A 'z'
{ 661, 3, 12, 10, 4, -9 }, // 0x7B '{'
{ 666, 1, 12, 10, 4, -9 }, // 0x7C '|'
{ 668, 3, 12, 10, 3, -9 }, // 0x7D '}'
{ 673, 7, 3, 10, 1, -5 } }; // 0x7E '~'
const GFXfont FreeMono8pt7b PROGMEM = {
(uint8_t *)FreeMono8pt7bBitmaps,
(GFXglyph *)FreeMono8pt7bGlyphs,
0x20, 0x7E, 16 };
// Approx. 1348 bytes
#endif // FreeMono8pt7b_H

View File

@@ -0,0 +1,251 @@
#ifndef FreeSansBold10pt7b_H
#define FreeSansBold10pt7b_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#undef PROGMEM
#define PROGMEM STORE_ATTR
#elif defined(__IMXRT1052__) || defined(__IMXRT1062__)
// PROGMEM is defefind for T4 to place data in specific memory section
#undef PROGMEM
#define PROGMEM
#else
#define PROGMEM
#endif
const uint8_t FreeSansBold10pt7bBitmaps[] PROGMEM = {
0x00, 0xFF, 0xFF, 0xFE, 0x48, 0x7F, 0xC0, 0xE7, 0xE7, 0xE7, 0xE7, 0x42,
0x0C, 0xC3, 0x39, 0xFF, 0xBF, 0xF7, 0xFE, 0x73, 0x0C, 0xE7, 0xFE, 0xFF,
0xDF, 0xF9, 0x8C, 0x33, 0x06, 0x60, 0x08, 0x0F, 0x87, 0xFB, 0xFE, 0xEB,
0xFA, 0x7F, 0x81, 0xF8, 0x1F, 0x82, 0xFE, 0x9F, 0xAF, 0xFF, 0xDF, 0xE3,
0xE0, 0x20, 0x3C, 0x08, 0x3F, 0x0C, 0x3F, 0xC4, 0x18, 0x66, 0x0F, 0xF2,
0x03, 0xF3, 0x00, 0xF3, 0x00, 0x01, 0x1C, 0x01, 0x9F, 0x00, 0x9F, 0xC0,
0xCC, 0x60, 0x47, 0xF0, 0x61, 0xF0, 0x60, 0x70, 0x0F, 0x00, 0xFC, 0x0F,
0xF0, 0x73, 0x83, 0x9C, 0x0F, 0xC0, 0x78, 0x0F, 0xF6, 0xE3, 0xF7, 0x0F,
0x3C, 0x79, 0xFF, 0xE7, 0xFB, 0x0F, 0x9C, 0xFF, 0xF4, 0x1C, 0x63, 0x8C,
0x71, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE1, 0xC7, 0x0C, 0x38, 0x60, 0xC0,
0xE1, 0x87, 0x0C, 0x38, 0x61, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0xE3, 0x8C,
0x71, 0x8C, 0x00, 0x10, 0x23, 0xF8, 0x82, 0x85, 0x00, 0x1C, 0x0E, 0x07,
0x1F, 0xFF, 0xFF, 0xFC, 0x70, 0x38, 0x1C, 0x00, 0xFF, 0x93, 0x80, 0xFF,
0xFE, 0xFF, 0x80, 0x08, 0xC4, 0x23, 0x18, 0x84, 0x63, 0x10, 0x8C, 0x40,
0x1E, 0x1F, 0xE7, 0xFB, 0xCF, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8,
0x7F, 0x3D, 0xFE, 0x7F, 0x87, 0x80, 0x0C, 0x7F, 0xFF, 0x1C, 0x71, 0xC7,
0x1C, 0x71, 0xC7, 0x1C, 0x70, 0x3E, 0x3F, 0xBF, 0xFC, 0x7E, 0x38, 0x1C,
0x0E, 0x0E, 0x1C, 0x1C, 0x1C, 0x1F, 0xFF, 0xFF, 0xFC, 0x3E, 0x3F, 0xBF,
0xFC, 0x70, 0x38, 0x1C, 0x38, 0x1E, 0x03, 0x81, 0xF8, 0xFF, 0xF7, 0xF1,
0xF0, 0x07, 0x07, 0x83, 0xC3, 0xE3, 0x71, 0x39, 0x9C, 0x8E, 0xC7, 0x7F,
0xFF, 0xFF, 0xF0, 0x70, 0x38, 0x7F, 0x9F, 0xE7, 0xF9, 0x80, 0x7E, 0x3F,
0xEF, 0xFB, 0x8F, 0x01, 0xC0, 0x7E, 0x3F, 0xFE, 0x7F, 0x8F, 0x80, 0x1F,
0x0F, 0xE7, 0xFD, 0xC0, 0xEF, 0x3F, 0xEF, 0xFF, 0xCF, 0xE1, 0xF8, 0x7F,
0x3D, 0xFE, 0x7F, 0x87, 0x80, 0xFF, 0xFF, 0xFF, 0xE0, 0x60, 0x70, 0x30,
0x38, 0x18, 0x1C, 0x0E, 0x06, 0x07, 0x03, 0x81, 0xC0, 0x1F, 0x0F, 0xFB,
0xFF, 0xF0, 0x7E, 0x0E, 0xFF, 0x9F, 0xF7, 0x8F, 0xE0, 0xFC, 0x1F, 0xC7,
0xBF, 0xE7, 0xFC, 0x3E, 0x00, 0x3E, 0x3F, 0x9F, 0xDC, 0x7E, 0x3F, 0x1F,
0x8F, 0xFF, 0x7F, 0x9D, 0xF8, 0xEF, 0xE7, 0xF1, 0xE0, 0xFF, 0x80, 0x07,
0xFC, 0xFF, 0x80, 0x07, 0xFC, 0x9C, 0x00, 0x40, 0xF0, 0xFD, 0xF8, 0xF0,
0x38, 0x0F, 0xC0, 0x7E, 0x03, 0xC0, 0x30, 0xFF, 0xFF, 0xFF, 0xFC, 0x00,
0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x0F, 0xC0, 0x7C, 0x03, 0xC0,
0xF0, 0xF9, 0xF8, 0xF0, 0x20, 0x00, 0x1F, 0x1F, 0xE7, 0xFB, 0xC7, 0xE1,
0xC0, 0x70, 0x1C, 0x0E, 0x07, 0x03, 0x80, 0xE0, 0x00, 0x0E, 0x03, 0x80,
0xE0, 0x03, 0xF8, 0x03, 0xFF, 0x81, 0xE0, 0xF0, 0xE0, 0x0E, 0x70, 0x01,
0x98, 0x7B, 0x36, 0x31, 0x8F, 0x18, 0x63, 0xCC, 0x18, 0xF3, 0x04, 0x3C,
0xC3, 0x1B, 0x39, 0xCE, 0xE7, 0xDF, 0x18, 0xE7, 0x87, 0x00, 0x00, 0xF0,
0x20, 0x1F, 0xF8, 0x01, 0xFC, 0x00, 0x07, 0x80, 0x1E, 0x00, 0x7C, 0x03,
0xF0, 0x0F, 0xC0, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x38, 0x70, 0xFF, 0xC3,
0xFF, 0x1F, 0xFE, 0x70, 0x39, 0xC0, 0xEE, 0x03, 0xC0, 0xFF, 0x9F, 0xFB,
0xFF, 0xF0, 0x7E, 0x0F, 0xC1, 0xFF, 0xF7, 0xFC, 0xFF, 0xDC, 0x1F, 0x83,
0xF0, 0x7F, 0xFF, 0xFF, 0xBF, 0xE0, 0x0F, 0xC1, 0xFF, 0x1F, 0xFC, 0xF0,
0xFF, 0x03, 0xF0, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x3C, 0x0E,
0xF0, 0xF7, 0xFF, 0x1F, 0xF0, 0x3F, 0x00, 0xFF, 0x8F, 0xFC, 0xFF, 0xEE,
0x0E, 0xE0, 0xFE, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xFE,
0x0E, 0xFF, 0xEF, 0xFC, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0,
0x38, 0x0F, 0xFB, 0xFE, 0xFF, 0xB8, 0x0E, 0x03, 0x80, 0xFF, 0xFF, 0xFF,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x38, 0x0F, 0xFB, 0xFE, 0xFF,
0xB8, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x00, 0x0F, 0xC0, 0xFF, 0x8F,
0xFC, 0xF0, 0xF7, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x1F, 0xE0, 0xFF, 0x07,
0xFC, 0x0E, 0xF0, 0xF7, 0xFF, 0x9F, 0xEC, 0x3E, 0x60, 0xE0, 0xFC, 0x1F,
0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFC, 0x1F, 0x83,
0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8,
0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xF8,
0xFC, 0x7F, 0xFB, 0xF8, 0xF8, 0xE0, 0xF7, 0x0F, 0x38, 0x71, 0xC7, 0x0E,
0x70, 0x77, 0x03, 0xF0, 0x1F, 0xC0, 0xF7, 0x07, 0x3C, 0x38, 0xE1, 0xC3,
0x8E, 0x1E, 0x70, 0x7B, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07,
0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0xFF, 0xFF, 0xFE, 0xF0,
0x7F, 0xC3, 0xFF, 0x8F, 0xFE, 0x3F, 0xF8, 0xFF, 0xE3, 0xFF, 0x9D, 0xFF,
0x77, 0xED, 0xDF, 0xB7, 0x7E, 0xF9, 0xFB, 0xE7, 0xE7, 0x9F, 0x9E, 0x7E,
0x79, 0xC0, 0xE0, 0xFE, 0x1F, 0xC3, 0xFC, 0x7F, 0x8F, 0xF9, 0xFB, 0x3F,
0x77, 0xE6, 0xFC, 0xFF, 0x8F, 0xF1, 0xFE, 0x1F, 0xC3, 0xF8, 0x38, 0x0F,
0xC0, 0x7F, 0x83, 0xFF, 0x1E, 0x1E, 0x70, 0x3F, 0x80, 0x7E, 0x01, 0xF8,
0x07, 0xE0, 0x1F, 0x80, 0x77, 0x03, 0xDE, 0x1E, 0x3F, 0xF0, 0x7F, 0x80,
0xFC, 0x00, 0xFF, 0x9F, 0xFB, 0xFF, 0xF0, 0xFE, 0x0F, 0xC1, 0xF8, 0x7F,
0xFF, 0xFF, 0xDF, 0xF3, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0x0F,
0xC0, 0x7F, 0x83, 0xFF, 0x1E, 0x1E, 0x70, 0x3F, 0x80, 0x7E, 0x01, 0xF8,
0x07, 0xE0, 0x1F, 0x82, 0x77, 0x1F, 0x9E, 0x1E, 0x3F, 0xF8, 0x7F, 0xF0,
0xFD, 0x80, 0xFF, 0x8F, 0xFC, 0xFF, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xFF,
0xCF, 0xF8, 0xFF, 0xCE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0,
0xF0, 0x1F, 0x87, 0xFE, 0x7F, 0xFF, 0x07, 0xE0, 0x0E, 0x00, 0xFE, 0x07,
0xFE, 0x0F, 0xF0, 0x0F, 0x00, 0x7E, 0x0F, 0xFF, 0xE7, 0xFE, 0x1F, 0x80,
0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E,
0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0xE0, 0xFC, 0x1F,
0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83,
0xF8, 0xF7, 0xFC, 0xFF, 0x87, 0xC0, 0x70, 0x3B, 0x83, 0x9C, 0x1C, 0x60,
0xE3, 0x86, 0x1C, 0x70, 0x63, 0x83, 0x98, 0x1D, 0xC0, 0x6E, 0x03, 0x60,
0x1F, 0x00, 0xF8, 0x03, 0x80, 0x1C, 0x00, 0xF0, 0xE1, 0xEE, 0x1C, 0x39,
0xC3, 0x87, 0x38, 0xF8, 0xE3, 0x1F, 0x1C, 0x73, 0xE3, 0x0E, 0x7C, 0xE1,
0xCF, 0xDC, 0x1B, 0x9B, 0x03, 0x73, 0x60, 0x7E, 0x6C, 0x0F, 0xCF, 0x80,
0xF8, 0xE0, 0x1E, 0x1C, 0x03, 0xC3, 0x80, 0x70, 0x7B, 0xC3, 0x8E, 0x38,
0x39, 0xC1, 0xDC, 0x07, 0xE0, 0x3E, 0x00, 0xE0, 0x0F, 0x80, 0x7E, 0x07,
0x70, 0x39, 0xC3, 0x8F, 0x3C, 0x39, 0xC1, 0xE0, 0xF0, 0x73, 0x83, 0x9E,
0x38, 0x71, 0xC3, 0xDC, 0x0E, 0xE0, 0x76, 0x01, 0xF0, 0x07, 0x00, 0x38,
0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0xC0, 0xF0, 0x3C, 0x07, 0x01, 0xC0,
0x78, 0x0F, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xCE, 0x73, 0x9C, 0xE7,
0x39, 0xCE, 0x73, 0x9C, 0xFF, 0xFE, 0xC3, 0x04, 0x18, 0x60, 0x83, 0x0C,
0x10, 0x61, 0x82, 0x0C, 0x30, 0xFF, 0xFE, 0x73, 0x9C, 0xE7, 0x39, 0xCE,
0x73, 0x9C, 0xE7, 0xFF, 0xFE, 0x1C, 0x0F, 0x07, 0x86, 0xC3, 0x33, 0x99,
0x8E, 0xC3, 0xC1, 0x80, 0xFF, 0xFF, 0xFF, 0xE6, 0x30, 0x3E, 0x1F, 0xC7,
0xFB, 0x8E, 0x07, 0x9F, 0xEE, 0x3B, 0x8E, 0xFF, 0x9F, 0xE3, 0xBC, 0xE0,
0x1C, 0x03, 0x80, 0x70, 0x0E, 0xF1, 0xFF, 0xBF, 0xF7, 0x8F, 0xE0, 0xFC,
0x1F, 0x83, 0xF8, 0xFF, 0xFD, 0xFF, 0xBB, 0xC0, 0x1F, 0x1F, 0xE7, 0xFF,
0xC7, 0xE0, 0x38, 0x0E, 0x03, 0xC7, 0x7F, 0xDF, 0xE1, 0xF0, 0x01, 0xC0,
0x70, 0x1C, 0x07, 0x1D, 0xDF, 0xF7, 0xFF, 0xCF, 0xE1, 0xF8, 0x7E, 0x1F,
0xCF, 0x7F, 0xDF, 0xF3, 0xDC, 0x1E, 0x1F, 0xE7, 0xFB, 0x87, 0xFF, 0xFF,
0xFE, 0x03, 0xC7, 0x7F, 0xDF, 0xE1, 0xE0, 0x3D, 0xF7, 0xDC, 0xFB, 0xE7,
0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x00, 0x1D, 0xDF, 0xF7, 0xFF, 0xCF,
0xE1, 0xF8, 0x7E, 0x1F, 0xCF, 0x7F, 0xDF, 0xF3, 0xDC, 0x07, 0xF3, 0xDF,
0xE3, 0xF0, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xEF, 0x3F, 0xEF, 0xFF, 0xC7,
0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1C, 0xFF, 0x8F, 0xFF,
0xFF, 0xFF, 0xF8, 0x77, 0x70, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0xFF,
0xE0, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE3, 0xB9, 0xCE, 0xF3, 0xB8, 0xFC,
0x3F, 0x8F, 0xE3, 0x9C, 0xE7, 0xB8, 0xEE, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xF8, 0xEF, 0x1E, 0xFF, 0xBF, 0xFF, 0xFF, 0xF1, 0xC7, 0xE1, 0xC7,
0xE1, 0xC7, 0xE1, 0xC7, 0xE1, 0xC7, 0xE1, 0xC7, 0xE1, 0xC7, 0xE1, 0xC7,
0xEF, 0x3F, 0xEF, 0xFF, 0xC7, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8,
0x7E, 0x1C, 0x1F, 0x07, 0xF9, 0xFF, 0x78, 0xFE, 0x0F, 0xC1, 0xF8, 0x3F,
0x8F, 0x7F, 0xC7, 0xF8, 0x7C, 0x00, 0xEF, 0x1F, 0xF3, 0xFF, 0x78, 0xFE,
0x0F, 0xC1, 0xF8, 0x3F, 0x8F, 0xFF, 0xDF, 0xF3, 0xBC, 0x70, 0x0E, 0x01,
0xC0, 0x38, 0x00, 0x1D, 0xCF, 0xF7, 0xFF, 0xCF, 0xE1, 0xF8, 0x7E, 0x1F,
0xCF, 0x7F, 0xDF, 0xF1, 0xDC, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0xEF, 0xFF,
0xFC, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x00, 0x3E, 0x1F, 0xEF, 0xFB, 0x87,
0xFC, 0x1F, 0xE1, 0xFF, 0x87, 0xFF, 0xDF, 0xE3, 0xF0, 0x73, 0xBF, 0xF7,
0x39, 0xCE, 0x73, 0x9E, 0xF3, 0x80, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1,
0xF8, 0x7E, 0x1F, 0x8F, 0xFF, 0xDF, 0xF3, 0xDC, 0xE0, 0xCE, 0x39, 0xC7,
0x38, 0xC3, 0x38, 0x77, 0x0E, 0xC0, 0xD8, 0x1F, 0x03, 0xC0, 0x38, 0x00,
0xE3, 0x8E, 0xC7, 0x1D, 0xCF, 0x3B, 0x9E, 0x67, 0x7C, 0xC6, 0xDB, 0x8D,
0x9F, 0x1F, 0x3C, 0x3E, 0x78, 0x38, 0xF0, 0x71, 0xC0, 0x71, 0xCF, 0x78,
0xEE, 0x0F, 0x81, 0xF0, 0x1C, 0x07, 0xC0, 0xF8, 0x3B, 0x8E, 0x39, 0xC7,
0x00, 0xE0, 0xEE, 0x39, 0xC7, 0x18, 0xC3, 0xB8, 0x77, 0x06, 0xC0, 0xF8,
0x0F, 0x01, 0xC0, 0x38, 0x06, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xFF, 0x7F,
0xBF, 0xC1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE0, 0xFF, 0xFF, 0xFF, 0xE0, 0x19,
0xCE, 0x63, 0x18, 0xC6, 0x37, 0xBC, 0x63, 0x18, 0xC6, 0x39, 0xC6, 0xFF,
0xFF, 0xE0, 0xC7, 0x38, 0xC6, 0x31, 0x8C, 0x63, 0xDE, 0xC6, 0x31, 0x8C,
0xE7, 0x30, 0x70, 0x7C, 0x63, 0xE0, 0xE0 };
const GFXglyph FreeSansBold10pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 6, 0, 0 }, // 0x20 ' '
{ 1, 3, 14, 7, 2, -13 }, // 0x21 '!'
{ 7, 8, 5, 9, 1, -14 }, // 0x22 '"'
{ 12, 11, 13, 11, 0, -12 }, // 0x23 '#'
{ 30, 10, 16, 11, 1, -14 }, // 0x24 '$'
{ 50, 17, 14, 18, 0, -13 }, // 0x25 '%'
{ 80, 13, 14, 14, 1, -13 }, // 0x26 '&'
{ 103, 3, 5, 5, 1, -14 }, // 0x27 '''
{ 105, 6, 19, 7, 1, -14 }, // 0x28 '('
{ 120, 6, 19, 7, 0, -14 }, // 0x29 ')'
{ 135, 7, 6, 8, 0, -14 }, // 0x2A '*'
{ 141, 9, 9, 12, 2, -8 }, // 0x2B '+'
{ 152, 3, 6, 5, 1, -2 }, // 0x2C ','
{ 155, 5, 3, 7, 1, -6 }, // 0x2D '-'
{ 157, 3, 3, 5, 1, -2 }, // 0x2E '.'
{ 159, 5, 14, 6, 0, -13 }, // 0x2F '/'
{ 168, 10, 14, 11, 1, -13 }, // 0x30 '0'
{ 186, 6, 14, 11, 2, -13 }, // 0x31 '1'
{ 197, 9, 14, 11, 1, -13 }, // 0x32 '2'
{ 213, 9, 14, 11, 1, -13 }, // 0x33 '3'
{ 229, 9, 14, 11, 1, -13 }, // 0x34 '4'
{ 245, 10, 14, 11, 1, -13 }, // 0x35 '5'
{ 263, 10, 14, 11, 1, -13 }, // 0x36 '6'
{ 281, 9, 14, 11, 1, -13 }, // 0x37 '7'
{ 297, 11, 14, 11, 0, -13 }, // 0x38 '8'
{ 317, 9, 14, 11, 1, -13 }, // 0x39 '9'
{ 333, 3, 10, 5, 1, -9 }, // 0x3A ':'
{ 337, 3, 13, 5, 1, -9 }, // 0x3B ';'
{ 342, 10, 10, 12, 1, -9 }, // 0x3C '<'
{ 355, 10, 8, 12, 1, -8 }, // 0x3D '='
{ 365, 10, 10, 12, 1, -9 }, // 0x3E '>'
{ 378, 10, 15, 12, 1, -14 }, // 0x3F '?'
{ 397, 18, 18, 20, 1, -14 }, // 0x40 '@'
{ 438, 14, 15, 14, 0, -14 }, // 0x41 'A'
{ 465, 11, 15, 14, 2, -14 }, // 0x42 'B'
{ 486, 13, 15, 14, 1, -14 }, // 0x43 'C'
{ 511, 12, 15, 14, 2, -14 }, // 0x44 'D'
{ 534, 10, 15, 13, 2, -14 }, // 0x45 'E'
{ 553, 10, 15, 13, 2, -14 }, // 0x46 'F'
{ 572, 13, 15, 15, 1, -14 }, // 0x47 'G'
{ 597, 11, 15, 15, 2, -14 }, // 0x48 'H'
{ 618, 3, 15, 6, 2, -14 }, // 0x49 'I'
{ 624, 9, 15, 11, 1, -14 }, // 0x4A 'J'
{ 641, 13, 15, 15, 2, -14 }, // 0x4B 'K'
{ 666, 9, 15, 12, 2, -14 }, // 0x4C 'L'
{ 683, 14, 15, 17, 2, -14 }, // 0x4D 'M'
{ 710, 11, 15, 15, 2, -14 }, // 0x4E 'N'
{ 731, 14, 15, 16, 1, -14 }, // 0x4F 'O'
{ 758, 11, 15, 14, 2, -14 }, // 0x50 'P'
{ 779, 14, 15, 16, 1, -14 }, // 0x51 'Q'
{ 806, 12, 15, 14, 2, -14 }, // 0x52 'R'
{ 829, 12, 15, 14, 1, -14 }, // 0x53 'S'
{ 852, 11, 15, 13, 1, -14 }, // 0x54 'T'
{ 873, 11, 15, 15, 2, -14 }, // 0x55 'U'
{ 894, 13, 15, 13, 0, -14 }, // 0x56 'V'
{ 919, 19, 15, 19, 0, -14 }, // 0x57 'W'
{ 955, 13, 15, 13, 0, -14 }, // 0x58 'X'
{ 980, 13, 15, 13, 0, -14 }, // 0x59 'Y'
{ 1005, 11, 15, 12, 1, -14 }, // 0x5A 'Z'
{ 1026, 5, 19, 7, 1, -14 }, // 0x5B '['
{ 1038, 6, 14, 6, 0, -13 }, // 0x5C '\'
{ 1049, 5, 19, 7, 0, -14 }, // 0x5D ']'
{ 1061, 9, 9, 12, 1, -13 }, // 0x5E '^'
{ 1072, 12, 2, 11, 0, 3 }, // 0x5F '_'
{ 1075, 4, 3, 5, 0, -14 }, // 0x60 '`'
{ 1077, 10, 11, 11, 1, -10 }, // 0x61 'a'
{ 1091, 11, 15, 12, 1, -14 }, // 0x62 'b'
{ 1112, 10, 11, 11, 1, -10 }, // 0x63 'c'
{ 1126, 10, 15, 12, 1, -14 }, // 0x64 'd'
{ 1145, 10, 11, 12, 1, -10 }, // 0x65 'e'
{ 1159, 6, 15, 7, 1, -14 }, // 0x66 'f'
{ 1171, 10, 15, 12, 1, -10 }, // 0x67 'g'
{ 1190, 10, 15, 12, 1, -14 }, // 0x68 'h'
{ 1209, 3, 15, 6, 1, -14 }, // 0x69 'i'
{ 1215, 4, 19, 6, 0, -14 }, // 0x6A 'j'
{ 1225, 10, 15, 11, 1, -14 }, // 0x6B 'k'
{ 1244, 3, 15, 5, 1, -14 }, // 0x6C 'l'
{ 1250, 16, 11, 18, 1, -10 }, // 0x6D 'm'
{ 1272, 10, 11, 12, 1, -10 }, // 0x6E 'n'
{ 1286, 11, 11, 12, 1, -10 }, // 0x6F 'o'
{ 1302, 11, 15, 12, 1, -10 }, // 0x70 'p'
{ 1323, 10, 15, 12, 1, -10 }, // 0x71 'q'
{ 1342, 6, 11, 8, 1, -10 }, // 0x72 'r'
{ 1351, 10, 11, 11, 1, -10 }, // 0x73 's'
{ 1365, 5, 13, 7, 1, -12 }, // 0x74 't'
{ 1374, 10, 11, 12, 1, -10 }, // 0x75 'u'
{ 1388, 11, 11, 11, 0, -10 }, // 0x76 'v'
{ 1404, 15, 11, 16, 0, -10 }, // 0x77 'w'
{ 1425, 11, 11, 11, 0, -10 }, // 0x78 'x'
{ 1441, 11, 15, 11, 0, -10 }, // 0x79 'y'
{ 1462, 9, 11, 10, 1, -10 }, // 0x7A 'z'
{ 1475, 5, 19, 8, 0, -14 }, // 0x7B '{'
{ 1487, 1, 19, 6, 2, -14 }, // 0x7C '|'
{ 1490, 5, 19, 8, 2, -14 }, // 0x7D '}'
{ 1502, 9, 4, 10, 0, -6 } }; // 0x7E '~'
const GFXfont FreeSansBold10pt7b PROGMEM = {
(uint8_t *)FreeSansBold10pt7bBitmaps,
(GFXglyph *)FreeSansBold10pt7bGlyphs,
0x20, 0x7E, 24 };
// Approx. 2179 bytes
#endif // FreeSansBold10pt7b_H

View File

@@ -0,0 +1,312 @@
#ifndef FreeSerifBoldItalic12pt7b_H
#define FreeSerifBoldItalic12pt7b_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#undef PROGMEM
#define PROGMEM STORE_ATTR
#elif defined(__IMXRT1052__) || defined(__IMXRT1062__)
// PROGMEM is defefind for T4 to place data in specific memory section
#undef PROGMEM
#define PROGMEM
#else
#define PROGMEM
#endif
const uint8_t FreeSerifBoldItalic12pt7bBitmaps[] PROGMEM = {
0x00, 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x10,
0x00, 0x00, 0x60, 0xF0, 0xF0, 0x60, 0x61, 0xF1, 0xF8, 0xF8, 0x6C, 0x34,
0x12, 0x08, 0x01, 0x8C, 0x06, 0x60, 0x31, 0x80, 0xCC, 0x06, 0x30, 0xFF,
0xF0, 0xC6, 0x03, 0x18, 0x0C, 0xC0, 0x63, 0x0F, 0xFF, 0x0C, 0x60, 0x33,
0x01, 0x8C, 0x06, 0x30, 0x19, 0x80, 0x00, 0x80, 0x08, 0x07, 0xC1, 0x97,
0x31, 0x33, 0x13, 0x3A, 0x23, 0xE0, 0x1E, 0x01, 0xF0, 0x07, 0x80, 0x7C,
0x05, 0xC4, 0xCC, 0x48, 0xCC, 0x8C, 0xF8, 0x83, 0x30, 0x1E, 0x01, 0x00,
0x00, 0x02, 0x07, 0x83, 0x03, 0x9F, 0x81, 0xC4, 0x20, 0x71, 0x10, 0x3C,
0x44, 0x0E, 0x22, 0x03, 0x88, 0x80, 0xE4, 0x40, 0x1E, 0x31, 0xE0, 0x08,
0xE4, 0x06, 0x71, 0x01, 0x3C, 0x40, 0x8E, 0x10, 0x23, 0x88, 0x10, 0xE2,
0x04, 0x39, 0x02, 0x07, 0x80, 0x00, 0xF0, 0x01, 0x98, 0x03, 0x98, 0x03,
0x98, 0x03, 0xB0, 0x03, 0xE0, 0x03, 0x80, 0x0F, 0x9F, 0x19, 0xCE, 0x31,
0xCC, 0x61, 0xC8, 0xE1, 0xC8, 0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x78,
0x79, 0x3F, 0xBE, 0x7F, 0xED, 0x20, 0x02, 0x08, 0x20, 0xC3, 0x0E, 0x18,
0x30, 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x20, 0x40, 0x80, 0x81, 0x01,
0x00, 0x10, 0x10, 0x20, 0x20, 0x40, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x70,
0xE1, 0x83, 0x0C, 0x18, 0x61, 0x86, 0x00, 0x00, 0x0C, 0x33, 0x6C, 0x9B,
0xAE, 0x1C, 0x3F, 0xEC, 0x9B, 0x36, 0x0C, 0x02, 0x00, 0x06, 0x00, 0x60,
0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60,
0x06, 0x00, 0x60, 0x31, 0xCE, 0x31, 0x08, 0x98, 0xFF, 0xFF, 0xC0, 0x6F,
0xF6, 0x01, 0x80, 0x60, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0x30, 0x1C,
0x06, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03, 0x00, 0x03, 0x81, 0xC8,
0x71, 0x1C, 0x33, 0x86, 0xE1, 0xDC, 0x3B, 0x87, 0xE0, 0xFC, 0x3B, 0x87,
0x70, 0xEC, 0x39, 0x87, 0x31, 0xC2, 0x30, 0x3C, 0x00, 0x01, 0xC3, 0xF0,
0x38, 0x0E, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38,
0x1E, 0x07, 0x01, 0xC0, 0xF0, 0xFF, 0x80, 0x07, 0x81, 0xF8, 0x47, 0x90,
0x70, 0x0E, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01,
0x80, 0x40, 0x8F, 0xF3, 0xFC, 0xFF, 0x80, 0x07, 0xC3, 0x3C, 0x03, 0x80,
0x70, 0x0C, 0x03, 0x81, 0xC0, 0xFC, 0x07, 0xC0, 0x78, 0x07, 0x00, 0xE0,
0x1C, 0x03, 0x30, 0xE7, 0x10, 0x7C, 0x00, 0x00, 0x10, 0x01, 0x80, 0x3C,
0x03, 0xE0, 0x2E, 0x02, 0x70, 0x23, 0x82, 0x38, 0x21, 0xC2, 0x0E, 0x1F,
0xF9, 0xFF, 0xC0, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0xF0, 0x7E,
0x0F, 0xE0, 0x80, 0x08, 0x01, 0xE0, 0x1F, 0x83, 0xF8, 0x03, 0xC0, 0x1C,
0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x08, 0x61, 0x8F, 0x30, 0x7C, 0x00, 0x00,
0x60, 0x78, 0x1C, 0x0F, 0x01, 0xC0, 0x70, 0x1F, 0xC3, 0x8C, 0xE1, 0xDC,
0x3B, 0x87, 0x61, 0xEC, 0x3D, 0x87, 0x31, 0xE2, 0x38, 0x3C, 0x00, 0x3F,
0xEF, 0xF9, 0xFF, 0x60, 0xC8, 0x18, 0x06, 0x00, 0x80, 0x30, 0x0C, 0x01,
0x80, 0x60, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0x03, 0x81, 0x88,
0x61, 0x8C, 0x31, 0x86, 0x38, 0xC7, 0xF0, 0x78, 0x0F, 0x86, 0x71, 0x87,
0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x23, 0x18, 0x3E, 0x00, 0x07, 0x81, 0xC8,
0x71, 0x8E, 0x33, 0xC6, 0x70, 0xCE, 0x39, 0xC7, 0x38, 0xE3, 0x38, 0x3F,
0x01, 0xC0, 0x38, 0x0E, 0x07, 0x81, 0xC0, 0xE0, 0x00, 0x0C, 0x3C, 0x78,
0x60, 0x00, 0x00, 0x00, 0x61, 0xE3, 0xC3, 0x00, 0x0E, 0x0F, 0x0F, 0x0E,
0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x18, 0x10, 0x20, 0x40, 0x00,
0x10, 0x07, 0x01, 0xF0, 0x7C, 0x3F, 0x0F, 0x80, 0xE0, 0x0F, 0x80, 0x3E,
0x00, 0xF8, 0x03, 0xF0, 0x0F, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C,
0x00, 0xF8, 0x01, 0xE0, 0x1F, 0x07, 0xE0, 0xF8, 0x1F, 0x01, 0xE0, 0x0C,
0x00, 0x00, 0x1E, 0x19, 0x8C, 0xE6, 0x70, 0x38, 0x38, 0x18, 0x18, 0x18,
0x08, 0x08, 0x00, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x03, 0xF0,
0x07, 0x06, 0x06, 0x00, 0x86, 0x0E, 0x66, 0x0D, 0xDB, 0x0C, 0xE7, 0x06,
0x33, 0x83, 0x31, 0xC3, 0x18, 0xE1, 0x8C, 0x70, 0xCC, 0x4C, 0x66, 0x46,
0x1F, 0xC1, 0x80, 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x10, 0x00, 0x30,
0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0x78, 0x03, 0x78,
0x02, 0x38, 0x04, 0x38, 0x0C, 0x38, 0x0F, 0xF8, 0x18, 0x3C, 0x30, 0x3C,
0x20, 0x3C, 0x60, 0x3C, 0xF8, 0x7F, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F,
0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, 0x0F, 0xE0, 0x1E, 0x3C,
0x1E, 0x1E, 0x1C, 0x1E, 0x3C, 0x1E, 0x3C, 0x1E, 0x3C, 0x3E, 0x38, 0x3C,
0x7C, 0x78, 0xFF, 0xE0, 0x01, 0xF2, 0x0E, 0x1C, 0x38, 0x18, 0xF0, 0x33,
0xC0, 0x4F, 0x00, 0x9E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0,
0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x04, 0x1E, 0x30, 0x0F, 0x80,
0x1F, 0xFC, 0x01, 0xE3, 0xC0, 0x70, 0x78, 0x1C, 0x0E, 0x0F, 0x03, 0xC3,
0xC0, 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xC0,
0x78, 0xF0, 0x1E, 0x3C, 0x0F, 0x0F, 0x03, 0xC3, 0x81, 0xC1, 0xF1, 0xE0,
0xFF, 0xE0, 0x00, 0x1F, 0xFF, 0x83, 0xC1, 0xC1, 0xC0, 0x40, 0xE0, 0x20,
0xF0, 0x00, 0x78, 0xC0, 0x38, 0x40, 0x1F, 0xE0, 0x1E, 0x70, 0x0F, 0x18,
0x07, 0x08, 0x03, 0x84, 0x03, 0xC0, 0x61, 0xE0, 0x20, 0xE0, 0x30, 0xF8,
0x78, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x07, 0x87, 0x07, 0x02, 0x07, 0x02,
0x0F, 0x00, 0x0F, 0x18, 0x0E, 0x10, 0x0F, 0xF0, 0x1E, 0x70, 0x1E, 0x30,
0x1C, 0x20, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x7C, 0x00,
0xFE, 0x00, 0x01, 0xF9, 0x03, 0xC3, 0x83, 0x81, 0xC3, 0x80, 0x43, 0xC0,
0x23, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x3F, 0xF8, 0x0F, 0x3C,
0x07, 0x9E, 0x03, 0xCF, 0x01, 0xC3, 0x80, 0xE1, 0xE0, 0xF0, 0x78, 0x70,
0x0F, 0xE0, 0x00, 0x1F, 0xE7, 0xF0, 0x78, 0x3C, 0x07, 0x83, 0xC0, 0x70,
0x3C, 0x0F, 0x03, 0x80, 0xF0, 0x78, 0x0E, 0x07, 0x80, 0xE0, 0x70, 0x1F,
0xFF, 0x01, 0xE0, 0xF0, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x3C, 0x1E, 0x03,
0xC1, 0xE0, 0x38, 0x1E, 0x07, 0xC3, 0xE0, 0xFE, 0x7F, 0x00, 0x1F, 0xC1,
0xE0, 0x70, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x38, 0x1E, 0x07, 0x81, 0xC0,
0x70, 0x3C, 0x0F, 0x03, 0x81, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x03, 0xC0,
0x0F, 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0,
0x0F, 0x00, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x0E, 0x70, 0x3B, 0xC0,
0xCE, 0x01, 0xF0, 0x00, 0x1F, 0xEF, 0x83, 0xC1, 0x81, 0xC1, 0x80, 0xE1,
0x80, 0xF1, 0x80, 0x79, 0x00, 0x39, 0x00, 0x1F, 0x80, 0x1F, 0xE0, 0x0F,
0x70, 0x07, 0x3C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0xC0, 0xE0, 0xE0,
0xF8, 0x78, 0xFE, 0xFE, 0x00, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38,
0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00,
0x70, 0x00, 0xE0, 0x03, 0xC0, 0x27, 0x00, 0xCE, 0x03, 0x3C, 0x1E, 0xFF,
0xFC, 0x0F, 0x80, 0x7E, 0x0F, 0x00, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x0F,
0x80, 0xB8, 0x17, 0x01, 0x70, 0x5E, 0x02, 0xF1, 0xBC, 0x05, 0xE2, 0x70,
0x11, 0xC8, 0xE0, 0x23, 0xB3, 0xC0, 0x47, 0x47, 0x81, 0x0F, 0x8E, 0x02,
0x1E, 0x1C, 0x04, 0x38, 0x78, 0x08, 0x70, 0xF0, 0x30, 0xC3, 0xE0, 0xF9,
0x8F, 0xE0, 0x1F, 0x03, 0xE0, 0xF0, 0x38, 0x1E, 0x02, 0x03, 0xE0, 0xC0,
0xBC, 0x10, 0x13, 0xC2, 0x02, 0x78, 0x40, 0x47, 0x90, 0x10, 0xF2, 0x02,
0x0F, 0x40, 0x41, 0xE8, 0x18, 0x1E, 0x02, 0x03, 0xC0, 0x40, 0x38, 0x08,
0x06, 0x03, 0x00, 0x40, 0x10, 0x08, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E,
0x0E, 0x1E, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF8,
0x1F, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70,
0x70, 0x38, 0xE0, 0x1F, 0x80, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07,
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x1E, 0x0E, 0x3C, 0x1F, 0xF0, 0x1E,
0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C,
0x00, 0xFE, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, 0x1E, 0x0F, 0x3C,
0x0F, 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x1F, 0xF8, 0x1F, 0xF0, 0x1E, 0xF0,
0x1E, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, 0x39, 0xC0, 0x0E,
0x00, 0x08, 0x02, 0x3F, 0x04, 0x7F, 0xF8, 0x83, 0xF0, 0x1F, 0xFC, 0x07,
0x9E, 0x07, 0x8F, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E,
0x3C, 0x1F, 0xF0, 0x1E, 0xF0, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0x78, 0x3C,
0x78, 0x3C, 0x78, 0x7C, 0x3C, 0xFE, 0x3E, 0x07, 0x91, 0xC7, 0x18, 0x73,
0x82, 0x38, 0x23, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x01, 0xE0,
0x1E, 0x40, 0xE4, 0x0E, 0x60, 0xCE, 0x1C, 0x9F, 0x00, 0x7F, 0xFE, 0xE7,
0x9D, 0x0E, 0x16, 0x3C, 0x20, 0x78, 0x40, 0xE0, 0x01, 0xC0, 0x07, 0x80,
0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x0F,
0x00, 0x1E, 0x00, 0xFF, 0x00, 0x7F, 0x1F, 0x3C, 0x0E, 0x38, 0x04, 0x38,
0x0C, 0x78, 0x08, 0x78, 0x08, 0x70, 0x08, 0x70, 0x10, 0xF0, 0x10, 0xF0,
0x10, 0xF0, 0x10, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x40, 0x78,
0xC0, 0x3F, 0x00, 0xFF, 0x1F, 0x3C, 0x06, 0x3C, 0x04, 0x3C, 0x08, 0x3C,
0x08, 0x3C, 0x10, 0x1C, 0x20, 0x1C, 0x20, 0x1E, 0x40, 0x1E, 0x80, 0x1E,
0x80, 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0xFE,
0x7C, 0x79, 0xE1, 0xC1, 0x8F, 0x0E, 0x08, 0x78, 0x70, 0x43, 0xC7, 0x84,
0x1E, 0x3E, 0x20, 0x72, 0xF2, 0x03, 0x97, 0x90, 0x1D, 0x1D, 0x00, 0xE8,
0xE8, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x0E, 0x00,
0x20, 0x60, 0x01, 0x02, 0x00, 0x1F, 0xCF, 0x83, 0xC1, 0x81, 0xE1, 0x80,
0x71, 0x80, 0x39, 0x80, 0x1F, 0x80, 0x07, 0x80, 0x03, 0x80, 0x01, 0xE0,
0x01, 0xF0, 0x00, 0xB8, 0x00, 0x9C, 0x00, 0x8F, 0x00, 0x83, 0x80, 0xC1,
0xC0, 0xE0, 0xF0, 0xF9, 0xFE, 0x00, 0xFE, 0x7D, 0xE0, 0x63, 0x81, 0x0F,
0x08, 0x1C, 0x40, 0x71, 0x01, 0xE8, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01,
0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00,
0x1F, 0xFE, 0x38, 0x78, 0x60, 0xF1, 0x83, 0xC2, 0x0F, 0x00, 0x1E, 0x00,
0x78, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0,
0x47, 0x81, 0x1F, 0x06, 0x3C, 0x3C, 0xFF, 0xF0, 0x07, 0xC1, 0x80, 0xE0,
0x30, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30,
0x0C, 0x07, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0xE0, 0xC3, 0x06, 0x18,
0x61, 0x83, 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x60, 0xC3, 0x0F, 0x81, 0xC0,
0xE0, 0x60, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, 0xC0,
0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x1F, 0x00, 0x0C, 0x07, 0x81, 0xE0,
0xDC, 0x33, 0x18, 0xC6, 0x1B, 0x06, 0xC0, 0xC0, 0xFF, 0xF0, 0xC7, 0x0C,
0x30, 0x07, 0x70, 0xCE, 0x1C, 0xE3, 0x8E, 0x70, 0xC7, 0x0C, 0x71, 0xCE,
0x1C, 0xE1, 0x8E, 0x79, 0xE9, 0xA7, 0x1C, 0x02, 0x07, 0xC0, 0x38, 0x06,
0x01, 0xC0, 0x38, 0x06, 0x71, 0xF7, 0x38, 0xE7, 0x1C, 0xC3, 0xB8, 0x77,
0x1C, 0xE3, 0xB8, 0xE7, 0x18, 0xE6, 0x0F, 0x80, 0x07, 0x0C, 0xCE, 0x66,
0x07, 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0xBC, 0x87, 0x80, 0x00, 0x08,
0x03, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x7F, 0x03, 0x3C,
0x1C, 0xE0, 0xE3, 0x87, 0x0E, 0x1C, 0x70, 0x71, 0xC3, 0x87, 0x0E, 0x3C,
0x38, 0xE8, 0xE5, 0xA1, 0xE7, 0x00, 0x07, 0x0C, 0xCE, 0x66, 0x37, 0x33,
0xBB, 0xB1, 0xE0, 0xE0, 0x70, 0xB8, 0x8F, 0x00, 0x00, 0x38, 0x01, 0xB0,
0x0C, 0xC0, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xE0, 0x03, 0x80,
0x0E, 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0x80,
0x0E, 0x00, 0x38, 0x00, 0xC0, 0x33, 0x00, 0xD8, 0x01, 0xC0, 0x00, 0x07,
0x80, 0x73, 0xC7, 0x1C, 0x38, 0xE1, 0xCF, 0x06, 0x70, 0x1E, 0x01, 0x00,
0x1C, 0x00, 0xFC, 0x07, 0xF0, 0xC7, 0x8C, 0x0C, 0x60, 0x63, 0x86, 0x07,
0xE0, 0x01, 0x00, 0xF8, 0x01, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x31,
0xC3, 0xBE, 0x1E, 0x70, 0xE3, 0x8F, 0x38, 0x71, 0xC3, 0x8E, 0x1C, 0xE1,
0xC7, 0x0E, 0x3A, 0x71, 0xD3, 0x0F, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x6F,
0x8E, 0x31, 0xC7, 0x18, 0x63, 0x8E, 0xBC, 0xE0, 0x00, 0xE0, 0x1C, 0x03,
0x80, 0x00, 0x00, 0x0F, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x0E, 0x01,
0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x01, 0xC3, 0x38, 0x6E, 0x07,
0x80, 0x01, 0x00, 0xF8, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x33,
0xE3, 0x8C, 0x1C, 0xC0, 0xE4, 0x06, 0x40, 0x7E, 0x03, 0xF0, 0x1D, 0x81,
0xCE, 0x0E, 0x72, 0x71, 0xA3, 0x8E, 0x00, 0x06, 0x7C, 0x70, 0xE1, 0xC3,
0x0E, 0x1C, 0x38, 0x61, 0xC3, 0x87, 0x1C, 0x38, 0x72, 0xE9, 0xE0, 0x3C,
0x73, 0xC7, 0x7D, 0x71, 0xE7, 0x9C, 0xF1, 0xCE, 0x3C, 0xF3, 0x8E, 0x39,
0xC3, 0x8E, 0x71, 0xC3, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xD7, 0x1C, 0x7B,
0x8E, 0x1C, 0x3C, 0xF1, 0xD7, 0x1E, 0x73, 0xCE, 0x3C, 0xE3, 0x8E, 0x39,
0xC7, 0x1C, 0x71, 0xC7, 0x1D, 0x71, 0xEE, 0x1C, 0x0F, 0x06, 0x63, 0x9D,
0xC7, 0x71, 0xF8, 0x7E, 0x3F, 0x8E, 0xE3, 0xB9, 0xC6, 0x60, 0xF0, 0x0F,
0x38, 0x1F, 0x70, 0x71, 0xC1, 0xC7, 0x0E, 0x1C, 0x38, 0xF0, 0xE3, 0x83,
0x8E, 0x1C, 0x70, 0x71, 0xC1, 0xCE, 0x07, 0xE0, 0x38, 0x00, 0xE0, 0x03,
0x80, 0x3F, 0x00, 0x07, 0x70, 0xCE, 0x18, 0xE3, 0x8E, 0x70, 0xE7, 0x1C,
0xF1, 0xCE, 0x1C, 0xE3, 0x8E, 0x38, 0xE7, 0x87, 0xB0, 0x07, 0x00, 0x70,
0x0F, 0x03, 0xF8, 0x0D, 0xDF, 0x71, 0xAC, 0xF0, 0x38, 0x0E, 0x03, 0x81,
0xC0, 0x70, 0x1C, 0x0E, 0x00, 0x1D, 0x99, 0x8C, 0x46, 0x23, 0x80, 0xE0,
0x70, 0x1C, 0x06, 0x23, 0x19, 0x1F, 0x00, 0x0C, 0x10, 0xE3, 0xF3, 0x86,
0x1C, 0x38, 0x71, 0xC3, 0x87, 0x0E, 0x9E, 0x38, 0x00, 0xF8, 0xE3, 0x8E,
0x38, 0xC3, 0x9C, 0x71, 0xC7, 0x18, 0x71, 0x87, 0x38, 0xE3, 0x8E, 0xFA,
0xF3, 0xAE, 0x3C, 0xF0, 0xDC, 0x33, 0x0C, 0xC2, 0x31, 0x8C, 0xC3, 0x60,
0xF0, 0x38, 0x0C, 0x02, 0x00, 0xE0, 0x86, 0xE3, 0x0C, 0xC6, 0x19, 0x9C,
0x23, 0x78, 0xC7, 0xF9, 0x0E, 0x74, 0x1C, 0xF0, 0x31, 0xC0, 0x43, 0x00,
0x84, 0x00, 0x0E, 0x31, 0xF3, 0x83, 0xA0, 0x0E, 0x00, 0x70, 0x03, 0x80,
0x1C, 0x00, 0xE0, 0x0B, 0x02, 0x5D, 0x3C, 0xF1, 0xC3, 0x00, 0x04, 0x67,
0x8C, 0x79, 0x87, 0x10, 0xE2, 0x1C, 0x81, 0x90, 0x3A, 0x07, 0x80, 0xF0,
0x1C, 0x03, 0x00, 0x60, 0x08, 0x32, 0x07, 0x80, 0x3F, 0xCF, 0xE6, 0x30,
0x08, 0x04, 0x02, 0x01, 0x00, 0xC0, 0x30, 0x1E, 0x0F, 0x98, 0x76, 0x07,
0x00, 0x01, 0xE0, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x80, 0x60,
0x0C, 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x00, 0x40, 0x0C, 0x01, 0x80, 0x70,
0x0E, 0x01, 0xC0, 0x30, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
0xE0, 0x18, 0x06, 0x01, 0x80, 0xE0, 0x38, 0x0C, 0x03, 0x00, 0xC0, 0x10,
0x1F, 0x07, 0x03, 0x80, 0xE0, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0xE0,
0x00, 0x38, 0x0F, 0xCD, 0x1F, 0x80, 0xE0 };
const GFXglyph FreeSerifBoldItalic12pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 6, 0, 0 }, // 0x20 ' '
{ 1, 8, 17, 9, 2, -15 }, // 0x21 '!'
{ 18, 9, 7, 13, 4, -15 }, // 0x22 '"'
{ 26, 14, 16, 12, -1, -15 }, // 0x23 '#'
{ 54, 12, 20, 12, 0, -17 }, // 0x24 '$'
{ 84, 18, 18, 20, 1, -16 }, // 0x25 '%'
{ 125, 16, 17, 19, 0, -15 }, // 0x26 '&'
{ 159, 3, 7, 7, 3, -15 }, // 0x27 '''
{ 162, 7, 21, 8, 1, -15 }, // 0x28 '('
{ 181, 7, 21, 8, -1, -15 }, // 0x29 ')'
{ 200, 10, 10, 12, 1, -15 }, // 0x2A '*'
{ 213, 12, 12, 14, 1, -11 }, // 0x2B '+'
{ 231, 5, 8, 6, -2, -3 }, // 0x2C ','
{ 236, 6, 3, 8, 0, -6 }, // 0x2D '-'
{ 239, 4, 4, 6, 0, -2 }, // 0x2E '.'
{ 241, 10, 16, 8, 0, -15 }, // 0x2F '/'
{ 261, 11, 17, 12, 0, -15 }, // 0x30 '0'
{ 285, 10, 17, 12, 0, -15 }, // 0x31 '1'
{ 307, 11, 17, 12, 0, -15 }, // 0x32 '2'
{ 331, 11, 17, 12, 0, -15 }, // 0x33 '3'
{ 355, 13, 16, 12, 0, -15 }, // 0x34 '4'
{ 381, 12, 17, 12, 0, -15 }, // 0x35 '5'
{ 407, 11, 17, 12, 1, -15 }, // 0x36 '6'
{ 431, 11, 16, 12, 2, -15 }, // 0x37 '7'
{ 453, 11, 17, 12, 0, -15 }, // 0x38 '8'
{ 477, 11, 17, 12, 0, -15 }, // 0x39 '9'
{ 501, 7, 12, 6, 0, -10 }, // 0x3A ':'
{ 512, 8, 15, 6, -1, -10 }, // 0x3B ';'
{ 527, 12, 13, 14, 1, -12 }, // 0x3C '<'
{ 547, 12, 6, 14, 2, -8 }, // 0x3D '='
{ 556, 13, 13, 14, 1, -12 }, // 0x3E '>'
{ 578, 9, 17, 12, 2, -15 }, // 0x3F '?'
{ 598, 17, 16, 20, 1, -15 }, // 0x40 '@'
{ 632, 16, 17, 17, 0, -15 }, // 0x41 'A'
{ 666, 16, 17, 15, 0, -15 }, // 0x42 'B'
{ 700, 15, 17, 15, 1, -15 }, // 0x43 'C'
{ 732, 18, 17, 17, 0, -15 }, // 0x44 'D'
{ 771, 17, 17, 15, 0, -15 }, // 0x45 'E'
{ 808, 16, 17, 15, 0, -15 }, // 0x46 'F'
{ 842, 17, 17, 17, 1, -15 }, // 0x47 'G'
{ 879, 20, 17, 18, 0, -15 }, // 0x48 'H'
{ 922, 10, 17, 9, 0, -15 }, // 0x49 'I'
{ 944, 14, 18, 12, 0, -15 }, // 0x4A 'J'
{ 976, 17, 17, 16, 0, -15 }, // 0x4B 'K'
{ 1013, 15, 17, 15, 0, -15 }, // 0x4C 'L'
{ 1045, 23, 17, 21, 0, -15 }, // 0x4D 'M'
{ 1094, 19, 17, 17, 0, -15 }, // 0x4E 'N'
{ 1135, 16, 17, 16, 1, -15 }, // 0x4F 'O'
{ 1169, 16, 17, 14, 0, -15 }, // 0x50 'P'
{ 1203, 16, 21, 16, 1, -15 }, // 0x51 'Q'
{ 1245, 16, 17, 16, 0, -15 }, // 0x52 'R'
{ 1279, 12, 17, 12, 0, -15 }, // 0x53 'S'
{ 1305, 15, 17, 14, 2, -15 }, // 0x54 'T'
{ 1337, 16, 17, 17, 3, -15 }, // 0x55 'U'
{ 1371, 16, 16, 17, 3, -15 }, // 0x56 'V'
{ 1403, 21, 16, 22, 3, -15 }, // 0x57 'W'
{ 1445, 17, 17, 17, 0, -15 }, // 0x58 'X'
{ 1482, 14, 17, 15, 3, -15 }, // 0x59 'Y'
{ 1512, 15, 17, 13, 0, -15 }, // 0x5A 'Z'
{ 1544, 10, 20, 8, -1, -15 }, // 0x5B '['
{ 1569, 6, 16, 10, 3, -15 }, // 0x5C '\'
{ 1581, 9, 20, 8, -1, -15 }, // 0x5D ']'
{ 1604, 10, 9, 14, 2, -15 }, // 0x5E '^'
{ 1616, 12, 1, 12, 0, 4 }, // 0x5F '_'
{ 1618, 5, 4, 8, 2, -15 }, // 0x60 '`'
{ 1621, 12, 12, 12, 0, -10 }, // 0x61 'a'
{ 1639, 11, 18, 12, 1, -16 }, // 0x62 'b'
{ 1664, 9, 12, 10, 1, -10 }, // 0x63 'c'
{ 1678, 14, 18, 12, 0, -16 }, // 0x64 'd'
{ 1710, 9, 12, 10, 1, -10 }, // 0x65 'e'
{ 1724, 14, 22, 12, -2, -16 }, // 0x66 'f'
{ 1763, 13, 16, 12, -1, -10 }, // 0x67 'g'
{ 1789, 13, 18, 13, 0, -16 }, // 0x68 'h'
{ 1819, 6, 17, 7, 1, -15 }, // 0x69 'i'
{ 1832, 11, 21, 8, -2, -15 }, // 0x6A 'j'
{ 1861, 13, 18, 12, 0, -16 }, // 0x6B 'k'
{ 1891, 7, 18, 7, 1, -16 }, // 0x6C 'l'
{ 1907, 18, 12, 18, 0, -10 }, // 0x6D 'm'
{ 1934, 12, 12, 13, 0, -10 }, // 0x6E 'n'
{ 1952, 10, 12, 11, 1, -10 }, // 0x6F 'o'
{ 1967, 14, 16, 12, -2, -10 }, // 0x70 'p'
{ 1995, 12, 16, 12, 0, -10 }, // 0x71 'q'
{ 2019, 10, 11, 10, 0, -10 }, // 0x72 'r'
{ 2033, 9, 12, 9, 0, -10 }, // 0x73 's'
{ 2047, 7, 15, 7, 1, -13 }, // 0x74 't'
{ 2061, 12, 12, 13, 1, -10 }, // 0x75 'u'
{ 2079, 10, 11, 11, 1, -10 }, // 0x76 'v'
{ 2093, 15, 11, 16, 1, -10 }, // 0x77 'w'
{ 2114, 13, 12, 11, -1, -10 }, // 0x78 'x'
{ 2134, 11, 16, 10, -1, -10 }, // 0x79 'y'
{ 2156, 10, 13, 10, 0, -10 }, // 0x7A 'z'
{ 2173, 11, 21, 8, 0, -16 }, // 0x7B '{'
{ 2202, 2, 16, 6, 3, -15 }, // 0x7C '|'
{ 2206, 10, 21, 8, -3, -16 }, // 0x7D '}'
{ 2233, 11, 4, 14, 1, -7 } }; // 0x7E '~'
const GFXfont FreeSerifBoldItalic12pt7b PROGMEM = {
(uint8_t *)FreeSerifBoldItalic12pt7bBitmaps,
(GFXglyph *)FreeSerifBoldItalic12pt7bGlyphs,
0x20, 0x7E, 28 };
// Approx. 2911 bytes
#endif // FreeSerifBoldItalic12pt7b_H

View File

@@ -0,0 +1,85 @@
/*******************************************************************************
* Start of Arduino_GFX setting
*
* Arduino_GFX try to find the settings depends on selected board in Arduino IDE
* Or you can define the display dev kit not in the board list
* Defalult pin list for non display dev kit:
* Arduino Nano, Micro and more: CS: 9, DC: 8, RST: 7, BL: 6, SCK: 13, MOSI: 11, MISO: 12
* ESP32 various dev board : CS: 5, DC: 27, RST: 33, BL: 22, SCK: 18, MOSI: 23, MISO: nil
* ESP32-C3 various dev board : CS: 7, DC: 2, RST: 1, BL: 3, SCK: 4, MOSI: 6, MISO: nil
* ESP32-S2 various dev board : CS: 34, DC: 35, RST: 33, BL: 21, SCK: 36, MOSI: 35, MISO: nil
* ESP32-S3 various dev board : CS: 40, DC: 41, RST: 42, BL: 48, SCK: 36, MOSI: 35, MISO: nil
* ESP8266 various dev board : CS: 15, DC: 4, RST: 2, BL: 5, SCK: 14, MOSI: 13, MISO: 12
* Raspberry Pi Pico dev board : CS: 17, DC: 27, RST: 26, BL: 28, SCK: 18, MOSI: 19, MISO: 16
* RTL8720 BW16 old patch core : CS: 18, DC: 17, RST: 2, BL: 23, SCK: 19, MOSI: 21, MISO: 20
* RTL8720_BW16 Official core : CS: 9, DC: 8, RST: 6, BL: 3, SCK: 10, MOSI: 12, MISO: 11
* RTL8722 dev board : CS: 18, DC: 17, RST: 22, BL: 23, SCK: 13, MOSI: 11, MISO: 12
* RTL8722_mini dev board : CS: 12, DC: 14, RST: 15, BL: 13, SCK: 11, MOSI: 9, MISO: 10
* Seeeduino XIAO dev board : CS: 3, DC: 2, RST: 1, BL: 0, SCK: 8, MOSI: 10, MISO: 9
* Teensy 4.1 dev board : CS: 39, DC: 41, RST: 40, BL: 22, SCK: 13, MOSI: 11, MISO: 12
******************************************************************************/
#include <Arduino_GFX_Library.h>
#include "pin_config.h"
#define GFX_BL DF_GFX_BL // default backlight pin, you may replace DF_GFX_BL to actual backlight pin
Arduino_ESP32RGBPanel *bus = new Arduino_ESP32RGBPanel(
-1, -1, -1, EXAMPLE_PIN_NUM_DE, EXAMPLE_PIN_NUM_VSYNC, EXAMPLE_PIN_NUM_HSYNC, EXAMPLE_PIN_NUM_PCLK,
EXAMPLE_PIN_NUM_DATA1, EXAMPLE_PIN_NUM_DATA2, EXAMPLE_PIN_NUM_DATA3, EXAMPLE_PIN_NUM_DATA4, EXAMPLE_PIN_NUM_DATA5,
EXAMPLE_PIN_NUM_DATA6, EXAMPLE_PIN_NUM_DATA7, EXAMPLE_PIN_NUM_DATA8, EXAMPLE_PIN_NUM_DATA9, EXAMPLE_PIN_NUM_DATA10, EXAMPLE_PIN_NUM_DATA11,
EXAMPLE_PIN_NUM_DATA13, EXAMPLE_PIN_NUM_DATA14, EXAMPLE_PIN_NUM_DATA15, EXAMPLE_PIN_NUM_DATA16, EXAMPLE_PIN_NUM_DATA17);
Arduino_GFX *gfx = new Arduino_ST7701_RGBPanel(bus, GFX_NOT_DEFINED, 0 /* rotation */, false /* IPS */, 480, 480,
st7701_type2_init_operations, sizeof(st7701_type2_init_operations), true,
50, 1, 30, 20, 1, 30);
/*******************************************************************************
* End of Arduino_GFX setting
******************************************************************************/
/* more fonts at: https://github.com/moononournation/ArduinoFreeFontFile.git */
#include "FreeMono8pt7b.h"
#include "FreeSansBold10pt7b.h"
#include "FreeSerifBoldItalic12pt7b.h"
void setup(void)
{
gfx->begin();
gfx->fillScreen(BLACK);
#ifdef GFX_BL
pinMode(GFX_BL, OUTPUT);
digitalWrite(GFX_BL, HIGH);
#endif
gfx->setCursor(10, 10);
gfx->setFont(&FreeMono8pt7b);
gfx->setTextColor(RED);
gfx->println("Hello World!");
delay(5000); // 5 seconds
}
void loop()
{
gfx->setCursor(random(gfx->width()), random(gfx->height()));
gfx->setTextColor(random(0xffff));
uint8_t textSize = random(3);
switch (textSize)
{
case 1:
gfx->setFont(&FreeMono8pt7b);
break;
case 2:
gfx->setFont(&FreeSansBold10pt7b);
break;
default:
gfx->setFont(&FreeSerifBoldItalic12pt7b);
break;
}
gfx->println("Hello World!");
delay(1000); // 1 second
}

View File

@@ -0,0 +1,117 @@
#include "XL9535_driver.h"
#include "Wire.h"
void XL9535::writeRegister(uint8_t reg, uint8_t *data, uint8_t len) {
_wire->beginTransmission(_address);
_wire->write(reg);
for (uint8_t i = 0; i < len; i++) {
_wire->write(data[i]);
}
_wire->endTransmission();
}
uint8_t XL9535::readRegister(uint8_t reg, uint8_t *data, uint8_t len) {
_wire->beginTransmission(_address);
_wire->write(reg);
_wire->endTransmission();
_wire->requestFrom(_address, len);
uint8_t index = 0;
while (index < len)
data[index++] = _wire->read();
return 0;
}
void XL9535::begin(bool A0, bool A1, bool A2, TwoWire *wire) {
_address = XL9535_IIC_ADDRESS | (A2 << 3) | (A1 << 2) | (A0 << 1);
_wire = wire;
is_found = true;
_wire->beginTransmission(_address);
if (!_wire->endTransmission()) {
Serial.println("Found xl9535");
} else {
Serial.println("xl9535 not found");
is_found = false;
}
}
void XL9535::pinMode(uint8_t pin, uint8_t mode) {
if (is_found) {
uint8_t port = 0;
if (pin > 7) {
readRegister(XL9535_CONFIG_PORT_1_REG, &port, 1);
if (mode == OUTPUT) {
port = port & (~(1 << (pin - 10)));
} else {
port = port | (1 << (pin - 10));
}
writeRegister(XL9535_CONFIG_PORT_1_REG, &port, 1);
} else {
readRegister(XL9535_CONFIG_PORT_0_REG, &port, 1);
if (mode == OUTPUT) {
port = port & (~(1 << pin));
} else {
port = port | (1 << pin);
}
writeRegister(XL9535_CONFIG_PORT_0_REG, &port, 1);
}
} else {
Serial.println("xl9535 not found");
}
}
void XL9535::pinMode8(uint8_t port, uint8_t pin, uint8_t mode) {
if (is_found) {
uint8_t _pin = (mode != OUTPUT) ? pin : ~pin;
if (port) {
writeRegister(XL9535_CONFIG_PORT_1_REG, &_pin, 1);
} else {
writeRegister(XL9535_CONFIG_PORT_0_REG, &_pin, 1);
}
} else {
Serial.println("xl9535 not found");
}
}
void XL9535::digitalWrite(uint8_t pin, uint8_t val) {
if (is_found) {
uint8_t port = 0;
uint8_t reg_data = 0;
if (pin > 7) {
readRegister(XL9535_OUTPUT_PORT_1_REG, &reg_data, 1);
reg_data = reg_data & (~(1 << (pin - 10)));
port = reg_data | val << (pin - 10);
writeRegister(XL9535_OUTPUT_PORT_1_REG, &port, 1);
} else {
readRegister(XL9535_OUTPUT_PORT_0_REG, &reg_data, 1);
reg_data = reg_data & (~(1 << pin));
port = reg_data | val << pin;
writeRegister(XL9535_OUTPUT_PORT_0_REG, &port, 1);
}
} else {
Serial.println("xl9535 not found");
}
}
int XL9535::digitalRead(uint8_t pin) {
if (is_found) {
int state = 0;
uint8_t port = 0;
if (pin > 7) {
readRegister(XL9535_INPUT_PORT_1_REG, &port, 1);
state = port & (pin - 10) ? 1 : 0;
} else {
readRegister(XL9535_INPUT_PORT_0_REG, &port, 1);
state = port & pin ? 1 : 0;
}
return state;
} else {
Serial.println("xl9535 not found");
}
return 0;
}
void XL9535::read_all_reg() {
uint8_t data;
for (uint8_t i = 0; i < 8; i++) {
readRegister(i, &data, 1);
Serial.printf("0x%02x : 0x%02X \r\n", i, data);
}
}

View File

@@ -0,0 +1,37 @@
#pragma once
#include "Arduino.h"
#include "Wire.h"
#define XL9535_IIC_ADDRESS 0X20
#define XL9535_INPUT_PORT_0_REG 0X00
#define XL9535_INPUT_PORT_1_REG 0X01
#define XL9535_OUTPUT_PORT_0_REG 0X02
#define XL9535_OUTPUT_PORT_1_REG 0X03
#define XL9535_INVERSION_PORT_0_REG 0X04
#define XL9535_INVERSION_PORT_1_REG 0X05
#define XL9535_CONFIG_PORT_0_REG 0X06
#define XL9535_CONFIG_PORT_1_REG 0X07
class XL9535 {
public:
XL9535(){};
~XL9535(){};
void begin(bool A0 = 0, bool A1 = 0, bool A2 = 0, TwoWire *wire = &Wire);
void pinMode(uint8_t pin, uint8_t mode);
void pinMode8(uint8_t port, uint8_t pin, uint8_t mode);
void digitalWrite(uint8_t pin, uint8_t val);
int digitalRead(uint8_t pin);
void read_all_reg();
protected:
void writeRegister(uint8_t reg, uint8_t *data, uint8_t len);
uint8_t readRegister(uint8_t reg, uint8_t *data, uint8_t len);
uint8_t _address;
TwoWire *_wire;
bool is_found;
};

View File

@@ -0,0 +1,57 @@
#pragma once
#define WIFI_SSID "xinyuandianzi"
#define WIFI_PASSWORD "AA15994823428"
#define EXAMPLE_LCD_PIXEL_CLOCK_HZ (8 * 1000 * 1000)
#define EXAMPLE_LCD_BK_LIGHT_ON_LEVEL 1
#define EXAMPLE_LCD_BK_LIGHT_OFF_LEVEL !EXAMPLE_LCD_BK_LIGHT_ON_LEVEL
#define EXAMPLE_PIN_NUM_BK_LIGHT 46
#define EXAMPLE_PIN_NUM_HSYNC 47
#define EXAMPLE_PIN_NUM_VSYNC 41
#define EXAMPLE_PIN_NUM_DE 45
#define EXAMPLE_PIN_NUM_PCLK 42
// #define EXAMPLE_PIN_NUM_DATA0 44
#define EXAMPLE_PIN_NUM_DATA1 21
#define EXAMPLE_PIN_NUM_DATA2 18
#define EXAMPLE_PIN_NUM_DATA3 17
#define EXAMPLE_PIN_NUM_DATA4 16
#define EXAMPLE_PIN_NUM_DATA5 15
#define EXAMPLE_PIN_NUM_DATA6 14
#define EXAMPLE_PIN_NUM_DATA7 13
#define EXAMPLE_PIN_NUM_DATA8 12
#define EXAMPLE_PIN_NUM_DATA9 11
#define EXAMPLE_PIN_NUM_DATA10 10
#define EXAMPLE_PIN_NUM_DATA11 9
// #define EXAMPLE_PIN_NUM_DATA12 43
#define EXAMPLE_PIN_NUM_DATA13 7
#define EXAMPLE_PIN_NUM_DATA14 6
#define EXAMPLE_PIN_NUM_DATA15 5
#define EXAMPLE_PIN_NUM_DATA16 3
#define EXAMPLE_PIN_NUM_DATA17 2
#define EXAMPLE_PIN_NUM_DISP_EN -1
// The pixel number in horizontal and vertical
#define EXAMPLE_LCD_H_RES 480
#define EXAMPLE_LCD_V_RES 480
#define IIC_SCL_PIN 48
#define IIC_SDA_PIN 8
#define SD_CLK_PIN 39
#define SD_CMD_PIN 40
#define SD_D0_PIN 38
#define BAT_VOLT_PIN 4
#define TP_INT_PIN 1
#define BOOT_BTN_PIN 0
/* XL9535 --- PIN - P0*/
#define TP_RES_PIN 1
#define PWR_EN_PIN 2
#define LCD_CS_PIN 3
#define LCD_SDA_PIN 4
#define LCD_CLK_PIN 5
#define LCD_RST_PIN 6
#define SD_CS_PIN 7