commit 0276c35750c46d12d7ee924712df5f0668159372 Author: YiHui Liu Date: Sat Jan 8 18:32:31 2022 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d96f37 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch + +*.code-workspace +tool.py \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..e80666b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d47c719 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "files.associations": { + "algorithm": "cpp", + "atomic": "cpp", + "*.tcc": "cpp", + "ostream": "cpp" + } +} \ No newline at end of file diff --git a/include/.gitkeep b/include/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lib/image/font.h b/lib/image/font.h new file mode 100644 index 0000000..e248c4f --- /dev/null +++ b/lib/image/font.h @@ -0,0 +1,856 @@ +// Created by http://oleddisplay.squix.ch/ Consider a donation +// In case of problems make sure that you are using the font file with the correct version! +#ifndef __FONT__ +#define __FONT__ + +#include + +const unsigned char Roboto_Mono_13[] PROGMEM = { + 0x08, // Width: 8 + 0x11, // Height: 17 + 0x20, // First Char: 32 + 0xE0, // Numbers of Chars: 224 + + // Jump Table: + 0xFF, 0xFF, 0x00, 0x08, // 32:65535 + 0x00, 0x00, 0x0E, 0x08, // 33:0 + 0x00, 0x0E, 0x0D, 0x08, // 34:14 + 0x00, 0x1B, 0x14, 0x08, // 35:27 + 0x00, 0x2F, 0x14, 0x08, // 36:47 + 0x00, 0x43, 0x17, 0x08, // 37:67 + 0x00, 0x5A, 0x17, 0x08, // 38:90 + 0x00, 0x71, 0x0A, 0x08, // 39:113 + 0x00, 0x7B, 0x11, 0x08, // 40:123 + 0x00, 0x8C, 0x0E, 0x08, // 41:140 + 0x00, 0x9A, 0x13, 0x08, // 42:154 + 0x00, 0xAD, 0x14, 0x08, // 43:173 + 0x00, 0xC1, 0x0B, 0x08, // 44:193 + 0x00, 0xCC, 0x11, 0x08, // 45:204 + 0x00, 0xDD, 0x0E, 0x08, // 46:221 + 0x00, 0xEB, 0x13, 0x08, // 47:235 + 0x00, 0xFE, 0x14, 0x08, // 48:254 + 0x01, 0x12, 0x0E, 0x08, // 49:274 + 0x01, 0x20, 0x14, 0x08, // 50:288 + 0x01, 0x34, 0x11, 0x08, // 51:308 + 0x01, 0x45, 0x14, 0x08, // 52:325 + 0x01, 0x59, 0x14, 0x08, // 53:345 + 0x01, 0x6D, 0x14, 0x08, // 54:365 + 0x01, 0x81, 0x13, 0x08, // 55:385 + 0x01, 0x94, 0x14, 0x08, // 56:404 + 0x01, 0xA8, 0x14, 0x08, // 57:424 + 0x01, 0xBC, 0x0E, 0x08, // 58:444 + 0x01, 0xCA, 0x0E, 0x08, // 59:458 + 0x01, 0xD8, 0x11, 0x08, // 60:472 + 0x01, 0xE9, 0x14, 0x08, // 61:489 + 0x01, 0xFD, 0x14, 0x08, // 62:509 + 0x02, 0x11, 0x13, 0x08, // 63:529 + 0x02, 0x24, 0x14, 0x08, // 64:548 + 0x02, 0x38, 0x14, 0x08, // 65:568 + 0x02, 0x4C, 0x14, 0x08, // 66:588 + 0x02, 0x60, 0x14, 0x08, // 67:608 + 0x02, 0x74, 0x14, 0x08, // 68:628 + 0x02, 0x88, 0x14, 0x08, // 69:648 + 0x02, 0x9C, 0x13, 0x08, // 70:668 + 0x02, 0xAF, 0x14, 0x08, // 71:687 + 0x02, 0xC3, 0x14, 0x08, // 72:707 + 0x02, 0xD7, 0x14, 0x08, // 73:727 + 0x02, 0xEB, 0x14, 0x08, // 74:747 + 0x02, 0xFF, 0x17, 0x08, // 75:767 + 0x03, 0x16, 0x14, 0x08, // 76:790 + 0x03, 0x2A, 0x14, 0x08, // 77:810 + 0x03, 0x3E, 0x14, 0x08, // 78:830 + 0x03, 0x52, 0x14, 0x08, // 79:850 + 0x03, 0x66, 0x13, 0x08, // 80:870 + 0x03, 0x79, 0x14, 0x08, // 81:889 + 0x03, 0x8D, 0x14, 0x08, // 82:909 + 0x03, 0xA1, 0x14, 0x08, // 83:929 + 0x03, 0xB5, 0x13, 0x08, // 84:949 + 0x03, 0xC8, 0x14, 0x08, // 85:968 + 0x03, 0xDC, 0x13, 0x08, // 86:988 + 0x03, 0xEF, 0x16, 0x08, // 87:1007 + 0x04, 0x05, 0x14, 0x08, // 88:1029 + 0x04, 0x19, 0x13, 0x08, // 89:1049 + 0x04, 0x2C, 0x14, 0x08, // 90:1068 + 0x04, 0x40, 0x0E, 0x08, // 91:1088 + 0x04, 0x4E, 0x11, 0x08, // 92:1102 + 0x04, 0x5F, 0x0E, 0x08, // 93:1119 + 0x04, 0x6D, 0x11, 0x08, // 94:1133 + 0x04, 0x7E, 0x14, 0x08, // 95:1150 + 0x04, 0x92, 0x0D, 0x08, // 96:1170 + 0x04, 0x9F, 0x14, 0x08, // 97:1183 + 0x04, 0xB3, 0x14, 0x08, // 98:1203 + 0x04, 0xC7, 0x14, 0x08, // 99:1223 + 0x04, 0xDB, 0x14, 0x08, // 100:1243 + 0x04, 0xEF, 0x14, 0x08, // 101:1263 + 0x05, 0x03, 0x13, 0x08, // 102:1283 + 0x05, 0x16, 0x14, 0x08, // 103:1302 + 0x05, 0x2A, 0x14, 0x08, // 104:1322 + 0x05, 0x3E, 0x14, 0x08, // 105:1342 + 0x05, 0x52, 0x0E, 0x08, // 106:1362 + 0x05, 0x60, 0x14, 0x08, // 107:1376 + 0x05, 0x74, 0x14, 0x08, // 108:1396 + 0x05, 0x88, 0x14, 0x08, // 109:1416 + 0x05, 0x9C, 0x14, 0x08, // 110:1436 + 0x05, 0xB0, 0x14, 0x08, // 111:1456 + 0x05, 0xC4, 0x14, 0x08, // 112:1476 + 0x05, 0xD8, 0x14, 0x08, // 113:1496 + 0x05, 0xEC, 0x13, 0x08, // 114:1516 + 0x05, 0xFF, 0x14, 0x08, // 115:1535 + 0x06, 0x13, 0x14, 0x08, // 116:1555 + 0x06, 0x27, 0x14, 0x08, // 117:1575 + 0x06, 0x3B, 0x13, 0x08, // 118:1595 + 0x06, 0x4E, 0x16, 0x08, // 119:1614 + 0x06, 0x64, 0x14, 0x08, // 120:1636 + 0x06, 0x78, 0x13, 0x08, // 121:1656 + 0x06, 0x8B, 0x14, 0x08, // 122:1675 + 0x06, 0x9F, 0x11, 0x08, // 123:1695 + 0x06, 0xB0, 0x0B, 0x08, // 124:1712 + 0x06, 0xBB, 0x11, 0x08, // 125:1723 + 0x06, 0xCC, 0x14, 0x08, // 126:1740 + 0xFF, 0xFF, 0x00, 0x08, // 127:65535 + 0xFF, 0xFF, 0x00, 0x08, // 128:65535 + 0xFF, 0xFF, 0x00, 0x08, // 129:65535 + 0xFF, 0xFF, 0x00, 0x08, // 130:65535 + 0xFF, 0xFF, 0x00, 0x08, // 131:65535 + 0xFF, 0xFF, 0x00, 0x08, // 132:65535 + 0xFF, 0xFF, 0x00, 0x08, // 133:65535 + 0xFF, 0xFF, 0x00, 0x08, // 134:65535 + 0xFF, 0xFF, 0x00, 0x08, // 135:65535 + 0xFF, 0xFF, 0x00, 0x08, // 136:65535 + 0xFF, 0xFF, 0x00, 0x08, // 137:65535 + 0xFF, 0xFF, 0x00, 0x08, // 138:65535 + 0xFF, 0xFF, 0x00, 0x08, // 139:65535 + 0xFF, 0xFF, 0x00, 0x08, // 140:65535 + 0xFF, 0xFF, 0x00, 0x08, // 141:65535 + 0xFF, 0xFF, 0x00, 0x08, // 142:65535 + 0xFF, 0xFF, 0x00, 0x08, // 143:65535 + 0xFF, 0xFF, 0x00, 0x08, // 144:65535 + 0xFF, 0xFF, 0x00, 0x08, // 145:65535 + 0xFF, 0xFF, 0x00, 0x08, // 146:65535 + 0xFF, 0xFF, 0x00, 0x08, // 147:65535 + 0xFF, 0xFF, 0x00, 0x08, // 148:65535 + 0xFF, 0xFF, 0x00, 0x08, // 149:65535 + 0xFF, 0xFF, 0x00, 0x08, // 150:65535 + 0xFF, 0xFF, 0x00, 0x08, // 151:65535 + 0xFF, 0xFF, 0x00, 0x08, // 152:65535 + 0xFF, 0xFF, 0x00, 0x08, // 153:65535 + 0xFF, 0xFF, 0x00, 0x08, // 154:65535 + 0xFF, 0xFF, 0x00, 0x08, // 155:65535 + 0xFF, 0xFF, 0x00, 0x08, // 156:65535 + 0xFF, 0xFF, 0x00, 0x08, // 157:65535 + 0xFF, 0xFF, 0x00, 0x08, // 158:65535 + 0xFF, 0xFF, 0x00, 0x08, // 159:65535 + 0xFF, 0xFF, 0x00, 0x08, // 160:65535 + 0x06, 0xE0, 0x0D, 0x08, // 161:1760 + 0x06, 0xED, 0x14, 0x08, // 162:1773 + 0x07, 0x01, 0x14, 0x08, // 163:1793 + 0x07, 0x15, 0x14, 0x08, // 164:1813 + 0x07, 0x29, 0x16, 0x08, // 165:1833 + 0x07, 0x3F, 0x0B, 0x08, // 166:1855 + 0x07, 0x4A, 0x14, 0x08, // 167:1866 + 0x07, 0x5E, 0x10, 0x08, // 168:1886 + 0x07, 0x6E, 0x14, 0x08, // 169:1902 + 0x07, 0x82, 0x11, 0x08, // 170:1922 + 0x07, 0x93, 0x11, 0x08, // 171:1939 + 0x07, 0xA4, 0x11, 0x08, // 172:1956 + 0x07, 0xB5, 0x11, 0x08, // 173:1973 + 0x07, 0xC6, 0x14, 0x08, // 174:1990 + 0x07, 0xDA, 0x10, 0x08, // 175:2010 + 0x07, 0xEA, 0x10, 0x08, // 176:2026 + 0x07, 0xFA, 0x14, 0x08, // 177:2042 + 0x08, 0x0E, 0x11, 0x08, // 178:2062 + 0x08, 0x1F, 0x10, 0x08, // 179:2079 + 0x08, 0x2F, 0x0D, 0x08, // 180:2095 + 0x08, 0x3C, 0x14, 0x08, // 181:2108 + 0x08, 0x50, 0x11, 0x08, // 182:2128 + 0x08, 0x61, 0x0E, 0x08, // 183:2145 + 0x08, 0x6F, 0x0E, 0x08, // 184:2159 + 0x08, 0x7D, 0x0E, 0x08, // 185:2173 + 0x08, 0x8B, 0x10, 0x08, // 186:2187 + 0x08, 0x9B, 0x11, 0x08, // 187:2203 + 0x08, 0xAC, 0x14, 0x08, // 188:2220 + 0x08, 0xC0, 0x14, 0x08, // 189:2240 + 0x08, 0xD4, 0x14, 0x08, // 190:2260 + 0x08, 0xE8, 0x14, 0x08, // 191:2280 + 0x08, 0xFC, 0x14, 0x08, // 192:2300 + 0x09, 0x10, 0x14, 0x08, // 193:2320 + 0x09, 0x24, 0x14, 0x08, // 194:2340 + 0x09, 0x38, 0x14, 0x08, // 195:2360 + 0x09, 0x4C, 0x14, 0x08, // 196:2380 + 0x09, 0x60, 0x14, 0x08, // 197:2400 + 0x09, 0x74, 0x17, 0x08, // 198:2420 + 0x09, 0x8B, 0x14, 0x08, // 199:2443 + 0x09, 0x9F, 0x14, 0x08, // 200:2463 + 0x09, 0xB3, 0x14, 0x08, // 201:2483 + 0x09, 0xC7, 0x14, 0x08, // 202:2503 + 0x09, 0xDB, 0x14, 0x08, // 203:2523 + 0x09, 0xEF, 0x14, 0x08, // 204:2543 + 0x0A, 0x03, 0x14, 0x08, // 205:2563 + 0x0A, 0x17, 0x14, 0x08, // 206:2583 + 0x0A, 0x2B, 0x14, 0x08, // 207:2603 + 0x0A, 0x3F, 0x14, 0x08, // 208:2623 + 0x0A, 0x53, 0x14, 0x08, // 209:2643 + 0x0A, 0x67, 0x14, 0x08, // 210:2663 + 0x0A, 0x7B, 0x14, 0x08, // 211:2683 + 0x0A, 0x8F, 0x14, 0x08, // 212:2703 + 0x0A, 0xA3, 0x14, 0x08, // 213:2723 + 0x0A, 0xB7, 0x14, 0x08, // 214:2743 + 0x0A, 0xCB, 0x14, 0x08, // 215:2763 + 0x0A, 0xDF, 0x14, 0x08, // 216:2783 + 0x0A, 0xF3, 0x14, 0x08, // 217:2803 + 0x0B, 0x07, 0x14, 0x08, // 218:2823 + 0x0B, 0x1B, 0x14, 0x08, // 219:2843 + 0x0B, 0x2F, 0x14, 0x08, // 220:2863 + 0x0B, 0x43, 0x13, 0x08, // 221:2883 + 0x0B, 0x56, 0x14, 0x08, // 222:2902 + 0x0B, 0x6A, 0x14, 0x08, // 223:2922 + 0x0B, 0x7E, 0x14, 0x08, // 224:2942 + 0x0B, 0x92, 0x14, 0x08, // 225:2962 + 0x0B, 0xA6, 0x14, 0x08, // 226:2982 + 0x0B, 0xBA, 0x14, 0x08, // 227:3002 + 0x0B, 0xCE, 0x14, 0x08, // 228:3022 + 0x0B, 0xE2, 0x14, 0x08, // 229:3042 + 0x0B, 0xF6, 0x17, 0x08, // 230:3062 + 0x0C, 0x0D, 0x14, 0x08, // 231:3085 + 0x0C, 0x21, 0x14, 0x08, // 232:3105 + 0x0C, 0x35, 0x14, 0x08, // 233:3125 + 0x0C, 0x49, 0x14, 0x08, // 234:3145 + 0x0C, 0x5D, 0x14, 0x08, // 235:3165 + 0x0C, 0x71, 0x14, 0x08, // 236:3185 + 0x0C, 0x85, 0x14, 0x08, // 237:3205 + 0x0C, 0x99, 0x14, 0x08, // 238:3225 + 0x0C, 0xAD, 0x14, 0x08, // 239:3245 + 0x0C, 0xC1, 0x14, 0x08, // 240:3265 + 0x0C, 0xD5, 0x14, 0x08, // 241:3285 + 0x0C, 0xE9, 0x14, 0x08, // 242:3305 + 0x0C, 0xFD, 0x14, 0x08, // 243:3325 + 0x0D, 0x11, 0x14, 0x08, // 244:3345 + 0x0D, 0x25, 0x14, 0x08, // 245:3365 + 0x0D, 0x39, 0x14, 0x08, // 246:3385 + 0x0D, 0x4D, 0x14, 0x08, // 247:3405 + 0x0D, 0x61, 0x14, 0x08, // 248:3425 + 0x0D, 0x75, 0x14, 0x08, // 249:3445 + 0x0D, 0x89, 0x14, 0x08, // 250:3465 + 0x0D, 0x9D, 0x14, 0x08, // 251:3485 + 0x0D, 0xB1, 0x14, 0x08, // 252:3505 + 0x0D, 0xC5, 0x13, 0x08, // 253:3525 + 0x0D, 0xD8, 0x14, 0x08, // 254:3544 + 0x0D, 0xEC, 0x13, 0x08, // 255:3564 + + // Font Data: + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x13,0x00,0x00,0x10, // 33 + 0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38, // 34 + 0x00,0x02,0x00,0x40,0x12,0x00,0xC0,0x0F,0x00,0x70,0x02,0x00,0x40,0x1E,0x00,0xE0,0x03,0x00,0x50,0x02, // 35 + 0x00,0x00,0x00,0x60,0x0C,0x00,0xF0,0x18,0x00,0x88,0x10,0x00,0x8C,0x31,0x00,0x10,0x1B,0x00,0x20,0x0E, // 36 + 0x60,0x00,0x00,0x90,0x00,0x00,0x90,0x0C,0x00,0x60,0x03,0x00,0x80,0x0C,0x00,0x60,0x12,0x00,0x00,0x12,0x00,0x00,0x0C, // 37 + 0x00,0x00,0x00,0x40,0x0E,0x00,0xF0,0x13,0x00,0x90,0x13,0x00,0x90,0x16,0x00,0x60,0x0C,0x00,0x00,0x16,0x00,0x00,0x10, // 38 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38, // 39 + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0xE0,0x38,0x00,0x18,0x40,0x00,0x08,0x80, // 40 + 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x80,0x00,0x10,0x60,0x00,0xE0,0x1F, // 41 + 0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x04,0x00,0x00,0x03,0x00,0xE0,0x03,0x00,0x80,0x04,0x00,0x80, // 42 + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0xE0,0x0F,0x00,0xE0,0x0F,0x00,0x00,0x01,0x00,0x00,0x01, // 43 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x70, // 44 + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01, // 45 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x18, // 46 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x0E,0x00,0xC0,0x01,0x00,0x70,0x00,0x00,0x10, // 47 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x30,0x1A,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0xB0,0x18,0x00,0xE0,0x0F, // 48 + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0xF0,0x1F, // 49 + 0x00,0x00,0x00,0x60,0x18,0x00,0x10,0x1C,0x00,0x10,0x16,0x00,0x10,0x13,0x00,0xE0,0x10,0x00,0x00,0x10, // 50 + 0x00,0x00,0x00,0x20,0x08,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0xE0,0x0E, // 51 + 0x00,0x04,0x00,0x00,0x06,0x00,0x80,0x05,0x00,0x40,0x04,0x00,0x30,0x04,0x00,0xF0,0x1F,0x00,0x00,0x04, // 52 + 0x00,0x00,0x00,0x00,0x0C,0x00,0xF0,0x19,0x00,0x90,0x10,0x00,0x90,0x10,0x00,0x90,0x19,0x00,0x10,0x0F, // 53 + 0x00,0x00,0x00,0xC0,0x0F,0x00,0x20,0x19,0x00,0x90,0x10,0x00,0x90,0x10,0x00,0x80,0x19,0x00,0x00,0x06, // 54 + 0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x10,0x00,0x10,0x0C,0x00,0x10,0x03,0x00,0xF0,0x00,0x00,0x30, // 55 + 0x00,0x00,0x00,0x40,0x0E,0x00,0xF0,0x1A,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0xB0,0x1A,0x00,0xE0,0x0E, // 56 + 0x00,0x00,0x00,0xE0,0x01,0x00,0x30,0x13,0x00,0x10,0x12,0x00,0x10,0x1A,0x00,0x60,0x0D,0x00,0xC0,0x03, // 57 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x18,0x00,0x60,0x18, // 58 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x80,0x00,0x60,0x70, // 59 + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x80,0x02,0x00,0x80,0x04,0x00,0xC0,0x0C, // 60 + 0x00,0x00,0x00,0x80,0x04,0x00,0x80,0x04,0x00,0x80,0x04,0x00,0x80,0x04,0x00,0x80,0x04,0x00,0x80,0x04, // 61 + 0x00,0x00,0x00,0x40,0x0C,0x00,0x80,0x04,0x00,0x80,0x04,0x00,0x80,0x02,0x00,0x00,0x03,0x00,0x00,0x01, // 62 + 0x00,0x00,0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x10,0x16,0x00,0x10,0x13,0x00,0xF0,0x01,0x00,0x60, // 63 + 0x80,0x03,0x00,0x60,0x0C,0x00,0xB0,0x17,0x00,0x50,0x14,0x00,0x50,0x13,0x00,0x90,0x14,0x00,0xE0,0x07, // 64 + 0x00,0x00,0x00,0x00,0x1C,0x00,0x80,0x03,0x00,0x70,0x02,0x00,0x70,0x02,0x00,0x80,0x03,0x00,0x00,0x1C, // 65 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0xB0,0x11,0x00,0xE0,0x0E, // 66 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x30,0x18,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x30,0x18,0x00,0x60,0x0C, // 67 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x20,0x08,0x00,0xC0,0x07, // 68 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x10,0x10, // 69 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x10,0x01,0x00,0x10,0x01,0x00,0x10,0x01,0x00,0x10,0x01,0x00,0x10, // 70 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x30,0x18,0x00,0x10,0x10,0x00,0x10,0x11,0x00,0x30,0x11,0x00,0x20,0x0F, // 71 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0xF0,0x1F, // 72 + 0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0xF0,0x1F,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x10,0x10, // 73 + 0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0xF0,0x0F,0x00,0xF0,0x07, // 74 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x40,0x06,0x00,0x30,0x0C,0x00,0x10,0x18,0x00,0x00,0x10, // 75 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10, // 76 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x70,0x00,0x00,0x80,0x03,0x00,0x80,0x03,0x00,0x70,0x00,0x00,0xF0,0x1F, // 77 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x60,0x00,0x00,0x80,0x01,0x00,0x00,0x06,0x00,0x00,0x1C,0x00,0xF0,0x1F, // 78 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x30,0x18,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x30,0x18,0x00,0xC0,0x07, // 79 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x10,0x01,0x00,0x10,0x01,0x00,0x10,0x01,0x00,0x10,0x01,0x00,0xE0, // 80 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x30,0x18,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x30,0x38,0x00,0xE0,0x2F, // 81 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x10,0x01,0x00,0x10,0x01,0x00,0x10,0x03,0x00,0xB0,0x0F,0x00,0xE0,0x18, // 82 + 0x00,0x00,0x00,0xE0,0x0C,0x00,0xB0,0x18,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x30,0x13,0x00,0x60,0x0E, // 83 + 0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0xF0,0x1F,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10, // 84 + 0x00,0x00,0x00,0xF0,0x0F,0x00,0x00,0x18,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x18,0x00,0xF0,0x0F, // 85 + 0x10,0x00,0x00,0x70,0x00,0x00,0x80,0x03,0x00,0x00,0x1C,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x70, // 86 + 0x10,0x00,0x00,0xF0,0x0F,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0xF0,0x01,0x00,0x00,0x1E,0x00,0xF0,0x0F,0x00,0x10, // 87 + 0x00,0x00,0x00,0x10,0x18,0x00,0x60,0x0C,0x00,0x80,0x03,0x00,0x80,0x03,0x00,0x60,0x0C,0x00,0x10,0x10, // 88 + 0x10,0x00,0x00,0x30,0x00,0x00,0xC0,0x00,0x00,0x00,0x1F,0x00,0x80,0x01,0x00,0x60,0x00,0x00,0x30, // 89 + 0x00,0x00,0x00,0x10,0x18,0x00,0x10,0x16,0x00,0x10,0x13,0x00,0xD0,0x10,0x00,0x70,0x10,0x00,0x10,0x10, // 90 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x7F,0x00,0x04,0x40, // 91 + 0x00,0x00,0x00,0x10,0x00,0x00,0x70,0x00,0x00,0x80,0x01,0x00,0x00,0x0E,0x00,0x00,0x30, // 92 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x40,0x00,0xFC,0x7F, // 93 + 0x00,0x00,0x00,0x00,0x01,0x00,0xC0,0x01,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x80,0x01, // 94 + 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20, // 95 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10, // 96 + 0x00,0x00,0x00,0x80,0x0C,0x00,0xC0,0x12,0x00,0x40,0x12,0x00,0x40,0x12,0x00,0xC0,0x1F,0x00,0x00,0x1F, // 97 + 0x00,0x00,0x00,0xF8,0x1F,0x00,0x80,0x08,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0xC0,0x18,0x00,0x80,0x0F, // 98 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xC0,0x18,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0xC0,0x18,0x00,0x80,0x08, // 99 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xC0,0x18,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0xF8,0x0F,0x00,0xF8,0x1F, // 100 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xC0,0x1A,0x00,0x40,0x12,0x00,0x40,0x12,0x00,0xC0,0x12,0x00,0x80,0x0B, // 101 + 0x00,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0xF0,0x1F,0x00,0x48,0x00,0x00,0x48,0x00,0x00,0x48, // 102 + 0x00,0x00,0x00,0x80,0x4F,0x00,0xC0,0x98,0x00,0x40,0x90,0x00,0x40,0x90,0x00,0x80,0xE8,0x00,0xC0,0x3F, // 103 + 0x00,0x00,0x00,0xF8,0x1F,0x00,0x80,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0xC0,0x00,0x00,0x80,0x1F, // 104 + 0x00,0x00,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0x50,0x10,0x00,0xD0,0x1F,0x00,0x00,0x10,0x00,0x00,0x10, // 105 + 0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x80,0x00,0x40,0x80,0x00,0xD0,0x7F, // 106 + 0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x02,0x00,0x00,0x03,0x00,0x80,0x04,0x00,0x40,0x18,0x00,0x40,0x10, // 107 + 0x00,0x00,0x00,0x08,0x10,0x00,0x08,0x10,0x00,0x08,0x10,0x00,0xF8,0x1F,0x00,0x00,0x10,0x00,0x00,0x10, // 108 + 0x00,0x00,0x00,0xC0,0x1F,0x00,0x40,0x00,0x00,0xC0,0x1F,0x00,0xC0,0x00,0x00,0x40,0x00,0x00,0xC0,0x1F, // 109 + 0x00,0x00,0x00,0xC0,0x1F,0x00,0x80,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0xC0,0x00,0x00,0x80,0x1F, // 110 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xC0,0x18,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0xC0,0x18,0x00,0x80,0x0F, // 111 + 0x00,0x00,0x00,0xC0,0xFF,0x00,0x80,0x08,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0xC0,0x18,0x00,0x80,0x0F, // 112 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xC0,0x18,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0x80,0xFF,0x00,0xC0,0xFF, // 113 + 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0x00,0x80,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x40, // 114 + 0x00,0x00,0x00,0x80,0x09,0x00,0xC0,0x19,0x00,0x40,0x12,0x00,0x40,0x12,0x00,0xC0,0x16,0x00,0x80,0x0C, // 115 + 0x00,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0xF0,0x1F,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0x40,0x10, // 116 + 0x00,0x00,0x00,0xC0,0x0F,0x00,0x00,0x18,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0xC0,0x1F, // 117 + 0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x07,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x80,0x03,0x00,0xC0, // 118 + 0x40,0x00,0x00,0x80,0x0F,0x00,0x00,0x1C,0x00,0xC0,0x03,0x00,0x80,0x07,0x00,0x00,0x18,0x00,0xC0,0x07,0x00,0x40, // 119 + 0x00,0x00,0x00,0x40,0x10,0x00,0x80,0x08,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0xC0,0x08,0x00,0x40,0x10, // 120 + 0x40,0x00,0x00,0xC0,0x80,0x00,0x00,0xC7,0x00,0x00,0x7C,0x00,0x00,0x1C,0x00,0x80,0x03,0x00,0xC0, // 121 + 0x00,0x00,0x00,0x40,0x10,0x00,0x40,0x1C,0x00,0x40,0x16,0x00,0x40,0x13,0x00,0xC0,0x10,0x00,0x40,0x10, // 122 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x80,0x03,0x00,0xF8,0x3E,0x00,0x04,0x40, // 123 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF, // 124 + 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x40,0x00,0x7C,0x7C,0x00,0xF0,0x1E,0x00,0x00,0x01, // 125 + 0x00,0x03,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x00,0x02,0x00,0x80,0x03, // 126 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xFC,0x00,0x40, // 161 + 0x00,0x00,0x00,0x00,0x0F,0x00,0x80,0x10,0x00,0x60,0x60,0x00,0x60,0x60,0x00,0x80,0x10,0x00,0x00,0x09, // 162 + 0x00,0x00,0x00,0x00,0x11,0x00,0xE0,0x1F,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x10,0x10,0x00,0x20,0x10, // 163 + 0x00,0x00,0x00,0xC0,0x1F,0x00,0xC0,0x18,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0xC0,0x18,0x00,0xC0,0x1F, // 164 + 0x10,0x00,0x00,0x30,0x05,0x00,0xC0,0x05,0x00,0x00,0x1F,0x00,0x80,0x05,0x00,0x60,0x05,0x00,0x30,0x05,0x00,0x10, // 165 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7D, // 166 + 0x00,0x00,0x00,0xE0,0x67,0x00,0x90,0x89,0x00,0x10,0x89,0x00,0x10,0x89,0x00,0x30,0xD9,0x00,0x60,0x7E, // 167 + 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, // 168 + 0x00,0x00,0x00,0x80,0x0F,0x00,0x40,0x17,0x00,0xC0,0x18,0x00,0xC0,0x18,0x00,0x40,0x15,0x00,0x80,0x0F, // 169 + 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x50,0x01,0x00,0x50,0x01,0x00,0xE0,0x01, // 170 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x80,0x08,0x00,0x00,0x07,0x00,0x80,0x08, // 171 + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x03, // 172 + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01, // 173 + 0x00,0x00,0x00,0x80,0x0F,0x00,0x40,0x15,0x00,0xC0,0x12,0x00,0xC0,0x16,0x00,0x40,0x11,0x00,0x80,0x0F, // 174 + 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10, // 175 + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x50,0x00,0x00,0x50,0x00,0x00,0x20, // 176 + 0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x11,0x00,0xE0,0x17,0x00,0xE0,0x17,0x00,0x00,0x11,0x00,0x00,0x11, // 177 + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01,0x00,0x90,0x01,0x00,0x50,0x01,0x00,0x20,0x01, // 178 + 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x50,0x01,0x00,0x50,0x01,0x00,0xA0, // 179 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10, // 180 + 0x00,0x00,0x00,0xC0,0xFF,0x00,0x00,0x18,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0xC0,0x0F,0x00,0xC0,0x1F, // 181 + 0x00,0x00,0x00,0xC0,0x00,0x00,0xE0,0x01,0x00,0xF0,0x03,0x00,0xF0,0x03,0x00,0xF0,0x1F, // 182 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01, // 183 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,0xC0, // 184 + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0xF0,0x01, // 185 + 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x10,0x01,0x00,0x10,0x01,0x00,0xE0, // 186 + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x00,0x00,0x07,0x00,0x80,0x09,0x00,0x00,0x07, // 187 + 0x10,0x00,0x00,0xF0,0x00,0x00,0x08,0x0C,0x00,0x00,0x03,0x00,0xC0,0x0C,0x00,0x20,0x0A,0x00,0x00,0x1F, // 188 + 0x10,0x00,0x00,0xF0,0x00,0x00,0x08,0x0C,0x00,0x00,0x03,0x00,0xC0,0x12,0x00,0x20,0x19,0x00,0x00,0x16, // 189 + 0x90,0x00,0x00,0xA8,0x00,0x00,0xF0,0x0C,0x00,0x00,0x03,0x00,0xC0,0x0C,0x00,0x20,0x0A,0x00,0x00,0x1F, // 190 + 0x00,0x00,0x00,0x00,0x70,0x00,0x00,0xD8,0x00,0x40,0x87,0x00,0x40,0x83,0x00,0x00,0xC0,0x00,0x00,0x20, // 191 + 0x00,0x00,0x00,0x00,0x1C,0x00,0x84,0x03,0x00,0x78,0x02,0x00,0x70,0x02,0x00,0x80,0x03,0x00,0x00,0x1C, // 192 + 0x00,0x00,0x00,0x00,0x1C,0x00,0x80,0x03,0x00,0x70,0x02,0x00,0x74,0x02,0x00,0x84,0x03,0x00,0x00,0x1C, // 193 + 0x00,0x00,0x00,0x00,0x1C,0x00,0x84,0x03,0x00,0x72,0x02,0x00,0x72,0x02,0x00,0x84,0x03,0x00,0x00,0x1C, // 194 + 0x00,0x00,0x00,0x00,0x1C,0x00,0x86,0x03,0x00,0x72,0x02,0x00,0x74,0x02,0x00,0x86,0x03,0x00,0x00,0x1C, // 195 + 0x00,0x00,0x00,0x00,0x1C,0x00,0x84,0x03,0x00,0x70,0x02,0x00,0x70,0x02,0x00,0x84,0x03,0x00,0x00,0x1C, // 196 + 0x00,0x00,0x00,0x00,0x1C,0x00,0x82,0x03,0x00,0x75,0x02,0x00,0x77,0x02,0x00,0x80,0x03,0x00,0x00,0x1C, // 197 + 0x00,0x10,0x00,0x00,0x1C,0x00,0x80,0x07,0x00,0x60,0x04,0x00,0xF0,0x1F,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x00,0x10, // 198 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x30,0x18,0x00,0x10,0xB0,0x00,0x10,0xD0,0x00,0x30,0x18,0x00,0x60,0x0C, // 199 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x14,0x11,0x00,0x18,0x11,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x10,0x10, // 200 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x14,0x11,0x00,0x14,0x11,0x00,0x10,0x10, // 201 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x14,0x11,0x00,0x12,0x11,0x00,0x12,0x11,0x00,0x14,0x11,0x00,0x10,0x10, // 202 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x14,0x11,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x14,0x11,0x00,0x10,0x10, // 203 + 0x00,0x00,0x00,0x10,0x10,0x00,0x14,0x10,0x00,0xF8,0x1F,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x10,0x10, // 204 + 0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0xF4,0x1F,0x00,0x14,0x10,0x00,0x10,0x10,0x00,0x10,0x10, // 205 + 0x00,0x00,0x00,0x14,0x10,0x00,0x12,0x10,0x00,0xF2,0x1F,0x00,0x14,0x10,0x00,0x10,0x10,0x00,0x10,0x10, // 206 + 0x00,0x00,0x00,0x10,0x10,0x00,0x14,0x10,0x00,0xF0,0x1F,0x00,0x10,0x10,0x00,0x14,0x10,0x00,0x10,0x10, // 207 + 0x00,0x01,0x00,0xF0,0x1F,0x00,0x10,0x11,0x00,0x10,0x11,0x00,0x10,0x10,0x00,0x20,0x08,0x00,0xE0,0x0F, // 208 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x66,0x00,0x00,0x82,0x01,0x00,0x04,0x06,0x00,0x06,0x1C,0x00,0xF0,0x1F, // 209 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x34,0x18,0x00,0x18,0x10,0x00,0x10,0x10,0x00,0x30,0x18,0x00,0xC0,0x07, // 210 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x30,0x18,0x00,0x10,0x10,0x00,0x14,0x10,0x00,0x34,0x18,0x00,0xC0,0x07, // 211 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x34,0x18,0x00,0x12,0x10,0x00,0x12,0x10,0x00,0x34,0x18,0x00,0xC0,0x07, // 212 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x36,0x18,0x00,0x12,0x10,0x00,0x14,0x10,0x00,0x36,0x18,0x00,0xC0,0x07, // 213 + 0x00,0x00,0x00,0xE0,0x0F,0x00,0x34,0x18,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x34,0x18,0x00,0xC0,0x07, // 214 + 0x00,0x00,0x00,0x40,0x08,0x00,0xC0,0x04,0x00,0x80,0x03,0x00,0x80,0x03,0x00,0xC0,0x04,0x00,0x40,0x08, // 215 + 0x00,0x10,0x00,0xE0,0x1F,0x00,0x30,0x1C,0x00,0x10,0x13,0x00,0x90,0x10,0x00,0x70,0x18,0x00,0xD8,0x07, // 216 + 0x00,0x00,0x00,0xF0,0x0F,0x00,0x00,0x18,0x00,0x04,0x10,0x00,0x08,0x10,0x00,0x00,0x18,0x00,0xF0,0x0F, // 217 + 0x00,0x00,0x00,0xF0,0x0F,0x00,0x00,0x18,0x00,0x00,0x10,0x00,0x04,0x10,0x00,0x04,0x18,0x00,0xF0,0x0F, // 218 + 0x00,0x00,0x00,0xF0,0x0F,0x00,0x04,0x18,0x00,0x02,0x10,0x00,0x02,0x10,0x00,0x04,0x18,0x00,0xF0,0x0F, // 219 + 0x00,0x00,0x00,0xF0,0x0F,0x00,0x04,0x18,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x04,0x18,0x00,0xF0,0x0F, // 220 + 0x10,0x00,0x00,0x30,0x00,0x00,0xC0,0x00,0x00,0x00,0x1F,0x00,0x84,0x01,0x00,0x64,0x00,0x00,0x30, // 221 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x40,0x04,0x00,0x40,0x04,0x00,0x40,0x04,0x00,0x40,0x04,0x00,0x80,0x03, // 222 + 0x00,0x00,0x00,0xF0,0x1F,0x00,0x18,0x00,0x00,0x08,0x10,0x00,0xC8,0x11,0x00,0x30,0x12,0x00,0x00,0x0C, // 223 + 0x00,0x00,0x00,0x80,0x0C,0x00,0xD0,0x12,0x00,0x60,0x12,0x00,0x40,0x12,0x00,0xC0,0x1F,0x00,0x00,0x1F, // 224 + 0x00,0x00,0x00,0x80,0x0C,0x00,0xC0,0x12,0x00,0x40,0x12,0x00,0x50,0x12,0x00,0xD0,0x1F,0x00,0x00,0x1F, // 225 + 0x00,0x00,0x00,0x80,0x0C,0x00,0xD0,0x12,0x00,0x48,0x12,0x00,0x48,0x12,0x00,0xD0,0x1F,0x00,0x00,0x1F, // 226 + 0x00,0x00,0x00,0x80,0x0C,0x00,0xD8,0x12,0x00,0x48,0x12,0x00,0x50,0x12,0x00,0xD8,0x1F,0x00,0x00,0x1F, // 227 + 0x00,0x00,0x00,0x80,0x0C,0x00,0xD0,0x12,0x00,0x40,0x12,0x00,0x40,0x12,0x00,0xD0,0x1F,0x00,0x00,0x1F, // 228 + 0x00,0x00,0x00,0x80,0x0C,0x00,0xC8,0x12,0x00,0x54,0x12,0x00,0x5C,0x12,0x00,0xC0,0x1F,0x00,0x00,0x1F, // 229 + 0x80,0x0C,0x00,0xC0,0x16,0x00,0x40,0x12,0x00,0xC0,0x0F,0x00,0xC0,0x1A,0x00,0x40,0x12,0x00,0xC0,0x13,0x00,0x00,0x03, // 230 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xC0,0x18,0x00,0x40,0xB0,0x00,0x40,0xD0,0x00,0xC0,0x18,0x00,0x80,0x08, // 231 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xD0,0x1A,0x00,0x60,0x12,0x00,0x40,0x12,0x00,0xC0,0x12,0x00,0x80,0x0B, // 232 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xC0,0x1A,0x00,0x40,0x12,0x00,0x50,0x12,0x00,0xD0,0x12,0x00,0x80,0x0B, // 233 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xD0,0x1A,0x00,0x48,0x12,0x00,0x48,0x12,0x00,0xD0,0x12,0x00,0x80,0x0B, // 234 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xD0,0x1A,0x00,0x40,0x12,0x00,0x40,0x12,0x00,0xD0,0x12,0x00,0x80,0x0B, // 235 + 0x00,0x00,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0x50,0x10,0x00,0xE0,0x1F,0x00,0x00,0x10,0x00,0x00,0x10, // 236 + 0x00,0x00,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0xD0,0x1F,0x00,0x10,0x10,0x00,0x00,0x10, // 237 + 0x00,0x00,0x00,0x40,0x10,0x00,0x50,0x10,0x00,0x48,0x10,0x00,0xC8,0x1F,0x00,0x10,0x10,0x00,0x00,0x10, // 238 + 0x00,0x00,0x00,0x40,0x10,0x00,0x50,0x10,0x00,0x40,0x10,0x00,0xC0,0x1F,0x00,0x10,0x10,0x00,0x00,0x10, // 239 + 0x00,0x04,0x00,0x00,0x0F,0x00,0xC0,0x10,0x00,0xB0,0x10,0x00,0xB0,0x10,0x00,0xF0,0x0D,0x00,0x90,0x07, // 240 + 0x00,0x00,0x00,0xC0,0x1F,0x00,0x98,0x00,0x00,0x48,0x00,0x00,0x50,0x00,0x00,0xD8,0x00,0x00,0x80,0x1F, // 241 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xD0,0x18,0x00,0x60,0x10,0x00,0x40,0x10,0x00,0xC0,0x18,0x00,0x80,0x0F, // 242 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xC0,0x18,0x00,0x40,0x10,0x00,0x50,0x10,0x00,0xD0,0x18,0x00,0x80,0x0F, // 243 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xD0,0x18,0x00,0x48,0x10,0x00,0x48,0x10,0x00,0xD0,0x18,0x00,0x80,0x0F, // 244 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xD8,0x18,0x00,0x48,0x10,0x00,0x50,0x10,0x00,0xD8,0x18,0x00,0x80,0x0F, // 245 + 0x00,0x00,0x00,0x80,0x0F,0x00,0xD0,0x18,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0xD0,0x18,0x00,0x80,0x0F, // 246 + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x40,0x09,0x00,0x40,0x09,0x00,0x00,0x01,0x00,0x00,0x01, // 247 + 0x00,0x00,0x00,0x80,0x1F,0x00,0xC0,0x18,0x00,0x40,0x16,0x00,0x40,0x11,0x00,0xE0,0x18,0x00,0x80,0x0F, // 248 + 0x00,0x00,0x00,0xC0,0x0F,0x00,0x10,0x18,0x00,0x20,0x10,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0xC0,0x1F, // 249 + 0x00,0x00,0x00,0xC0,0x0F,0x00,0x00,0x18,0x00,0x00,0x10,0x00,0x10,0x10,0x00,0x10,0x08,0x00,0xC0,0x1F, // 250 + 0x00,0x00,0x00,0xC0,0x0F,0x00,0x10,0x18,0x00,0x08,0x10,0x00,0x08,0x10,0x00,0x10,0x08,0x00,0xC0,0x1F, // 251 + 0x00,0x00,0x00,0xC0,0x0F,0x00,0x10,0x18,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x10,0x08,0x00,0xC0,0x1F, // 252 + 0x40,0x00,0x00,0xC0,0x80,0x00,0x00,0xC7,0x00,0x00,0x7C,0x00,0x10,0x1C,0x00,0x90,0x03,0x00,0xC0, // 253 + 0x00,0x00,0x00,0xF8,0xFF,0x00,0x80,0x08,0x00,0x40,0x10,0x00,0x40,0x10,0x00,0xC0,0x18,0x00,0x80,0x0F, // 254 + 0x40,0x00,0x00,0xC0,0x80,0x00,0x10,0xC7,0x00,0x00,0x7C,0x00,0x00,0x1C,0x00,0x90,0x03,0x00,0xC0 // 255 +}; + +const unsigned char Roboto_Mono_10[] PROGMEM = { + 0x06, // Width: 6 + 0x0D, // Height: 13 + 0x20, // First Char: 32 + 0xE0, // Numbers of Chars: 224 + + // Jump Table: + 0xFF, 0xFF, 0x00, 0x06, // 32:65535 + 0x00, 0x00, 0x08, 0x06, // 33:0 + 0x00, 0x08, 0x07, 0x06, // 34:8 + 0x00, 0x0F, 0x0B, 0x06, // 35:15 + 0x00, 0x1A, 0x0A, 0x06, // 36:26 + 0x00, 0x24, 0x0C, 0x06, // 37:36 + 0x00, 0x30, 0x0C, 0x06, // 38:48 + 0x00, 0x3C, 0x05, 0x06, // 39:60 + 0x00, 0x41, 0x08, 0x06, // 40:65 + 0x00, 0x49, 0x08, 0x06, // 41:73 + 0x00, 0x51, 0x09, 0x06, // 42:81 + 0x00, 0x5A, 0x09, 0x06, // 43:90 + 0x00, 0x63, 0x06, 0x06, // 44:99 + 0x00, 0x69, 0x09, 0x06, // 45:105 + 0x00, 0x72, 0x08, 0x06, // 46:114 + 0x00, 0x7A, 0x09, 0x06, // 47:122 + 0x00, 0x83, 0x0A, 0x06, // 48:131 + 0x00, 0x8D, 0x08, 0x06, // 49:141 + 0x00, 0x95, 0x0A, 0x06, // 50:149 + 0x00, 0x9F, 0x0A, 0x06, // 51:159 + 0x00, 0xA9, 0x0B, 0x06, // 52:169 + 0x00, 0xB4, 0x0A, 0x06, // 53:180 + 0x00, 0xBE, 0x0A, 0x06, // 54:190 + 0x00, 0xC8, 0x09, 0x06, // 55:200 + 0x00, 0xD1, 0x0A, 0x06, // 56:209 + 0x00, 0xDB, 0x0A, 0x06, // 57:219 + 0x00, 0xE5, 0x08, 0x06, // 58:229 + 0x00, 0xED, 0x08, 0x06, // 59:237 + 0x00, 0xF5, 0x0A, 0x06, // 60:245 + 0x00, 0xFF, 0x09, 0x06, // 61:255 + 0x01, 0x08, 0x09, 0x06, // 62:264 + 0x01, 0x11, 0x09, 0x06, // 63:273 + 0x01, 0x1A, 0x0B, 0x06, // 64:282 + 0x01, 0x25, 0x0C, 0x06, // 65:293 + 0x01, 0x31, 0x0A, 0x06, // 66:305 + 0x01, 0x3B, 0x0A, 0x06, // 67:315 + 0x01, 0x45, 0x0B, 0x06, // 68:325 + 0x01, 0x50, 0x0A, 0x06, // 69:336 + 0x01, 0x5A, 0x09, 0x06, // 70:346 + 0x01, 0x63, 0x0A, 0x06, // 71:355 + 0x01, 0x6D, 0x0A, 0x06, // 72:365 + 0x01, 0x77, 0x0A, 0x06, // 73:375 + 0x01, 0x81, 0x0A, 0x06, // 74:385 + 0x01, 0x8B, 0x0C, 0x06, // 75:395 + 0x01, 0x97, 0x0A, 0x06, // 76:407 + 0x01, 0xA1, 0x0A, 0x06, // 77:417 + 0x01, 0xAB, 0x0A, 0x06, // 78:427 + 0x01, 0xB5, 0x0A, 0x06, // 79:437 + 0x01, 0xBF, 0x0B, 0x06, // 80:447 + 0x01, 0xCA, 0x0C, 0x06, // 81:458 + 0x01, 0xD6, 0x0C, 0x06, // 82:470 + 0x01, 0xE2, 0x0B, 0x06, // 83:482 + 0x01, 0xED, 0x0B, 0x06, // 84:493 + 0x01, 0xF8, 0x0A, 0x06, // 85:504 + 0x02, 0x02, 0x0B, 0x06, // 86:514 + 0x02, 0x0D, 0x0B, 0x06, // 87:525 + 0x02, 0x18, 0x0C, 0x06, // 88:536 + 0x02, 0x24, 0x0B, 0x06, // 89:548 + 0x02, 0x2F, 0x0A, 0x06, // 90:559 + 0x02, 0x39, 0x08, 0x06, // 91:569 + 0x02, 0x41, 0x0A, 0x06, // 92:577 + 0x02, 0x4B, 0x08, 0x06, // 93:587 + 0x02, 0x53, 0x09, 0x06, // 94:595 + 0x02, 0x5C, 0x0A, 0x06, // 95:604 + 0x02, 0x66, 0x07, 0x06, // 96:614 + 0x02, 0x6D, 0x0A, 0x06, // 97:621 + 0x02, 0x77, 0x0A, 0x06, // 98:631 + 0x02, 0x81, 0x0A, 0x06, // 99:641 + 0x02, 0x8B, 0x0A, 0x06, // 100:651 + 0x02, 0x95, 0x0A, 0x06, // 101:661 + 0x02, 0x9F, 0x0B, 0x06, // 102:671 + 0x02, 0xAA, 0x0A, 0x06, // 103:682 + 0x02, 0xB4, 0x0A, 0x06, // 104:692 + 0x02, 0xBE, 0x0A, 0x06, // 105:702 + 0x02, 0xC8, 0x08, 0x06, // 106:712 + 0x02, 0xD0, 0x0C, 0x06, // 107:720 + 0x02, 0xDC, 0x0A, 0x06, // 108:732 + 0x02, 0xE6, 0x0C, 0x06, // 109:742 + 0x02, 0xF2, 0x0A, 0x06, // 110:754 + 0x02, 0xFC, 0x0A, 0x06, // 111:764 + 0x03, 0x06, 0x0A, 0x06, // 112:774 + 0x03, 0x10, 0x0A, 0x06, // 113:784 + 0x03, 0x1A, 0x09, 0x06, // 114:794 + 0x03, 0x23, 0x0A, 0x06, // 115:803 + 0x03, 0x2D, 0x0A, 0x06, // 116:813 + 0x03, 0x37, 0x0A, 0x06, // 117:823 + 0x03, 0x41, 0x0B, 0x06, // 118:833 + 0x03, 0x4C, 0x0B, 0x06, // 119:844 + 0x03, 0x57, 0x0C, 0x06, // 120:855 + 0x03, 0x63, 0x0B, 0x06, // 121:867 + 0x03, 0x6E, 0x0A, 0x06, // 122:878 + 0x03, 0x78, 0x0A, 0x06, // 123:888 + 0x03, 0x82, 0x06, 0x06, // 124:898 + 0x03, 0x88, 0x09, 0x06, // 125:904 + 0x03, 0x91, 0x0B, 0x06, // 126:913 + 0xFF, 0xFF, 0x00, 0x06, // 127:65535 + 0xFF, 0xFF, 0x00, 0x06, // 128:65535 + 0xFF, 0xFF, 0x00, 0x06, // 129:65535 + 0xFF, 0xFF, 0x00, 0x06, // 130:65535 + 0xFF, 0xFF, 0x00, 0x06, // 131:65535 + 0xFF, 0xFF, 0x00, 0x06, // 132:65535 + 0xFF, 0xFF, 0x00, 0x06, // 133:65535 + 0xFF, 0xFF, 0x00, 0x06, // 134:65535 + 0xFF, 0xFF, 0x00, 0x06, // 135:65535 + 0xFF, 0xFF, 0x00, 0x06, // 136:65535 + 0xFF, 0xFF, 0x00, 0x06, // 137:65535 + 0xFF, 0xFF, 0x00, 0x06, // 138:65535 + 0xFF, 0xFF, 0x00, 0x06, // 139:65535 + 0xFF, 0xFF, 0x00, 0x06, // 140:65535 + 0xFF, 0xFF, 0x00, 0x06, // 141:65535 + 0xFF, 0xFF, 0x00, 0x06, // 142:65535 + 0xFF, 0xFF, 0x00, 0x06, // 143:65535 + 0xFF, 0xFF, 0x00, 0x06, // 144:65535 + 0xFF, 0xFF, 0x00, 0x06, // 145:65535 + 0xFF, 0xFF, 0x00, 0x06, // 146:65535 + 0xFF, 0xFF, 0x00, 0x06, // 147:65535 + 0xFF, 0xFF, 0x00, 0x06, // 148:65535 + 0xFF, 0xFF, 0x00, 0x06, // 149:65535 + 0xFF, 0xFF, 0x00, 0x06, // 150:65535 + 0xFF, 0xFF, 0x00, 0x06, // 151:65535 + 0xFF, 0xFF, 0x00, 0x06, // 152:65535 + 0xFF, 0xFF, 0x00, 0x06, // 153:65535 + 0xFF, 0xFF, 0x00, 0x06, // 154:65535 + 0xFF, 0xFF, 0x00, 0x06, // 155:65535 + 0xFF, 0xFF, 0x00, 0x06, // 156:65535 + 0xFF, 0xFF, 0x00, 0x06, // 157:65535 + 0xFF, 0xFF, 0x00, 0x06, // 158:65535 + 0xFF, 0xFF, 0x00, 0x06, // 159:65535 + 0xFF, 0xFF, 0x00, 0x06, // 160:65535 + 0x03, 0x9C, 0x07, 0x06, // 161:924 + 0x03, 0xA3, 0x0A, 0x06, // 162:931 + 0x03, 0xAD, 0x0C, 0x06, // 163:941 + 0x03, 0xB9, 0x0C, 0x06, // 164:953 + 0x03, 0xC5, 0x0B, 0x06, // 165:965 + 0x03, 0xD0, 0x06, 0x06, // 166:976 + 0x03, 0xD6, 0x0B, 0x06, // 167:982 + 0x03, 0xE1, 0x09, 0x06, // 168:993 + 0x03, 0xEA, 0x0B, 0x06, // 169:1002 + 0x03, 0xF5, 0x09, 0x06, // 170:1013 + 0x03, 0xFE, 0x0A, 0x06, // 171:1022 + 0x04, 0x08, 0x09, 0x06, // 172:1032 + 0x04, 0x11, 0x09, 0x06, // 173:1041 + 0x04, 0x1A, 0x0B, 0x06, // 174:1050 + 0x04, 0x25, 0x09, 0x06, // 175:1061 + 0x04, 0x2E, 0x07, 0x06, // 176:1070 + 0x04, 0x35, 0x0A, 0x06, // 177:1077 + 0x04, 0x3F, 0x09, 0x06, // 178:1087 + 0x04, 0x48, 0x09, 0x06, // 179:1096 + 0x04, 0x51, 0x07, 0x06, // 180:1105 + 0x04, 0x58, 0x0A, 0x06, // 181:1112 + 0x04, 0x62, 0x0A, 0x06, // 182:1122 + 0x04, 0x6C, 0x07, 0x06, // 183:1132 + 0x04, 0x73, 0x08, 0x06, // 184:1139 + 0x04, 0x7B, 0x07, 0x06, // 185:1147 + 0x04, 0x82, 0x09, 0x06, // 186:1154 + 0x04, 0x8B, 0x09, 0x06, // 187:1163 + 0x04, 0x94, 0x0C, 0x06, // 188:1172 + 0x04, 0xA0, 0x0C, 0x06, // 189:1184 + 0x04, 0xAC, 0x0C, 0x06, // 190:1196 + 0x04, 0xB8, 0x0A, 0x06, // 191:1208 + 0x04, 0xC2, 0x0C, 0x06, // 192:1218 + 0x04, 0xCE, 0x0C, 0x06, // 193:1230 + 0x04, 0xDA, 0x0C, 0x06, // 194:1242 + 0x04, 0xE6, 0x0C, 0x06, // 195:1254 + 0x04, 0xF2, 0x0C, 0x06, // 196:1266 + 0x04, 0xFE, 0x0C, 0x06, // 197:1278 + 0x05, 0x0A, 0x0C, 0x06, // 198:1290 + 0x05, 0x16, 0x0A, 0x06, // 199:1302 + 0x05, 0x20, 0x0A, 0x06, // 200:1312 + 0x05, 0x2A, 0x0A, 0x06, // 201:1322 + 0x05, 0x34, 0x0A, 0x06, // 202:1332 + 0x05, 0x3E, 0x0A, 0x06, // 203:1342 + 0x05, 0x48, 0x0A, 0x06, // 204:1352 + 0x05, 0x52, 0x0A, 0x06, // 205:1362 + 0x05, 0x5C, 0x0A, 0x06, // 206:1372 + 0x05, 0x66, 0x0A, 0x06, // 207:1382 + 0x05, 0x70, 0x0B, 0x06, // 208:1392 + 0x05, 0x7B, 0x0A, 0x06, // 209:1403 + 0x05, 0x85, 0x0A, 0x06, // 210:1413 + 0x05, 0x8F, 0x0A, 0x06, // 211:1423 + 0x05, 0x99, 0x0A, 0x06, // 212:1433 + 0x05, 0xA3, 0x0A, 0x06, // 213:1443 + 0x05, 0xAD, 0x0A, 0x06, // 214:1453 + 0x05, 0xB7, 0x0A, 0x06, // 215:1463 + 0x05, 0xC1, 0x0B, 0x06, // 216:1473 + 0x05, 0xCC, 0x0A, 0x06, // 217:1484 + 0x05, 0xD6, 0x0A, 0x06, // 218:1494 + 0x05, 0xE0, 0x0A, 0x06, // 219:1504 + 0x05, 0xEA, 0x0A, 0x06, // 220:1514 + 0x05, 0xF4, 0x0B, 0x06, // 221:1524 + 0x05, 0xFF, 0x09, 0x06, // 222:1535 + 0x06, 0x08, 0x0A, 0x06, // 223:1544 + 0x06, 0x12, 0x0A, 0x06, // 224:1554 + 0x06, 0x1C, 0x0A, 0x06, // 225:1564 + 0x06, 0x26, 0x0A, 0x06, // 226:1574 + 0x06, 0x30, 0x0A, 0x06, // 227:1584 + 0x06, 0x3A, 0x0A, 0x06, // 228:1594 + 0x06, 0x44, 0x0A, 0x06, // 229:1604 + 0x06, 0x4E, 0x0C, 0x06, // 230:1614 + 0x06, 0x5A, 0x0A, 0x06, // 231:1626 + 0x06, 0x64, 0x0A, 0x06, // 232:1636 + 0x06, 0x6E, 0x0A, 0x06, // 233:1646 + 0x06, 0x78, 0x0A, 0x06, // 234:1656 + 0x06, 0x82, 0x0A, 0x06, // 235:1666 + 0x06, 0x8C, 0x0A, 0x06, // 236:1676 + 0x06, 0x96, 0x0A, 0x06, // 237:1686 + 0x06, 0xA0, 0x0A, 0x06, // 238:1696 + 0x06, 0xAA, 0x0A, 0x06, // 239:1706 + 0x06, 0xB4, 0x0A, 0x06, // 240:1716 + 0x06, 0xBE, 0x0A, 0x06, // 241:1726 + 0x06, 0xC8, 0x0A, 0x06, // 242:1736 + 0x06, 0xD2, 0x0A, 0x06, // 243:1746 + 0x06, 0xDC, 0x0A, 0x06, // 244:1756 + 0x06, 0xE6, 0x0A, 0x06, // 245:1766 + 0x06, 0xF0, 0x0A, 0x06, // 246:1776 + 0x06, 0xFA, 0x09, 0x06, // 247:1786 + 0x07, 0x03, 0x0A, 0x06, // 248:1795 + 0x07, 0x0D, 0x0A, 0x06, // 249:1805 + 0x07, 0x17, 0x0A, 0x06, // 250:1815 + 0x07, 0x21, 0x0A, 0x06, // 251:1825 + 0x07, 0x2B, 0x0A, 0x06, // 252:1835 + 0x07, 0x35, 0x0B, 0x06, // 253:1845 + 0x07, 0x40, 0x0A, 0x06, // 254:1856 + 0x07, 0x4A, 0x0B, 0x06, // 255:1866 + + // Font Data: + 0x00,0x00,0x00,0x00,0x7C,0x02,0x00,0x02, // 33 + 0x00,0x00,0x00,0x00,0x1C,0x00,0x1C, // 34 + 0x80,0x00,0x90,0x03,0xFC,0x00,0x90,0x03,0xFC,0x00,0x10, // 35 + 0x00,0x00,0x38,0x01,0x24,0x02,0x46,0x06,0xD8,0x03, // 36 + 0x18,0x00,0x24,0x01,0xD8,0x00,0xB0,0x01,0x48,0x02,0x80,0x01, // 37 + 0x00,0x00,0xD8,0x03,0x24,0x02,0xDC,0x02,0x00,0x03,0xC0,0x02, // 38 + 0x00,0x00,0x00,0x00,0x1C, // 39 + 0x00,0x00,0x00,0x00,0xF0,0x07,0x0C,0x08, // 40 + 0x00,0x00,0x00,0x00,0x0C,0x0C,0xF0,0x03, // 41 + 0x00,0x00,0xB0,0x00,0xE0,0x00,0x78,0x00,0xA0, // 42 + 0x00,0x00,0x40,0x00,0x40,0x00,0xF8,0x01,0x40, // 43 + 0x00,0x00,0x00,0x00,0x00,0x0E, // 44 + 0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40, // 45 + 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x03, // 46 + 0x00,0x00,0x00,0x02,0x80,0x01,0x70,0x00,0x0C, // 47 + 0x00,0x00,0xF8,0x01,0x44,0x02,0x24,0x02,0xF8,0x01, // 48 + 0x00,0x00,0x08,0x00,0x08,0x00,0xFC,0x03, // 49 + 0x10,0x00,0x0C,0x03,0x84,0x02,0x44,0x02,0x38,0x02, // 50 + 0x80,0x00,0x0C,0x03,0x24,0x02,0x24,0x02,0xD8,0x01, // 51 + 0x80,0x00,0xE0,0x00,0x90,0x00,0x8C,0x00,0xFC,0x03,0x80, // 52 + 0x00,0x00,0x3C,0x01,0x24,0x02,0x24,0x02,0xE4,0x03, // 53 + 0x00,0x00,0xF8,0x01,0x24,0x02,0x24,0x02,0xC0,0x01, // 54 + 0x00,0x00,0x04,0x02,0x84,0x03,0x64,0x00,0x1C, // 55 + 0x00,0x00,0xD8,0x01,0x24,0x02,0x24,0x02,0xDC,0x03, // 56 + 0x00,0x00,0x38,0x00,0x44,0x02,0x44,0x02,0xF8,0x01, // 57 + 0x00,0x00,0x00,0x00,0x20,0x02,0x30,0x03, // 58 + 0x00,0x00,0x00,0x00,0x20,0x00,0x30,0x0E, // 59 + 0x00,0x00,0xC0,0x00,0xC0,0x00,0xA0,0x00,0x20,0x01, // 60 + 0x00,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0, // 61 + 0x00,0x00,0x20,0x01,0xA0,0x00,0xC0,0x00,0x40, // 62 + 0x00,0x00,0x08,0x00,0x84,0x02,0x44,0x02,0x3C, // 63 + 0xF0,0x00,0x48,0x03,0xB4,0x02,0x74,0x02,0x8C,0x00,0x70, // 64 + 0x00,0x02,0xC0,0x01,0xB8,0x00,0x9C,0x00,0xE0,0x01,0x00,0x02, // 65 + 0x00,0x00,0xFC,0x03,0x24,0x02,0x24,0x02,0xDC,0x03, // 66 + 0x00,0x00,0xF8,0x01,0x04,0x02,0x04,0x02,0x0C,0x03, // 67 + 0x00,0x00,0xFC,0x03,0x04,0x02,0x04,0x02,0x98,0x01,0x60, // 68 + 0x00,0x00,0xFC,0x03,0x24,0x02,0x24,0x02,0x24,0x02, // 69 + 0x00,0x00,0xFC,0x03,0x44,0x00,0x44,0x00,0x44, // 70 + 0x60,0x00,0x98,0x01,0x04,0x02,0x44,0x02,0xCC,0x03, // 71 + 0x00,0x00,0xFC,0x03,0x20,0x00,0x20,0x00,0xFC,0x03, // 72 + 0x00,0x00,0x04,0x02,0xFC,0x03,0x04,0x02,0x04,0x02, // 73 + 0x80,0x00,0x00,0x03,0x00,0x02,0x00,0x02,0xFC,0x01, // 74 + 0x00,0x00,0xFC,0x03,0x20,0x00,0xD8,0x00,0x0C,0x03,0x04,0x02, // 75 + 0x00,0x00,0xFC,0x03,0x00,0x02,0x00,0x02,0x00,0x02, // 76 + 0x00,0x00,0xFC,0x03,0xF0,0x00,0x70,0x00,0xFC,0x03, // 77 + 0x00,0x00,0xFC,0x03,0x30,0x00,0xC0,0x00,0xFC,0x03, // 78 + 0x00,0x00,0xF8,0x01,0x04,0x02,0x04,0x02,0xF8,0x01, // 79 + 0x00,0x00,0xFC,0x03,0x44,0x00,0x44,0x00,0x6C,0x00,0x10, // 80 + 0x60,0x00,0x98,0x01,0x04,0x02,0x04,0x02,0x98,0x05,0x60,0x04, // 81 + 0x00,0x00,0xFC,0x03,0x44,0x00,0xC4,0x00,0x3C,0x03,0x00,0x02, // 82 + 0x00,0x00,0x38,0x01,0x24,0x02,0x44,0x02,0xCC,0x03,0x90, // 83 + 0x04,0x00,0x04,0x00,0x04,0x00,0xFC,0x03,0x04,0x00,0x04, // 84 + 0x00,0x00,0xFC,0x01,0x00,0x02,0x00,0x02,0xFC,0x01, // 85 + 0x04,0x00,0x38,0x00,0xC0,0x03,0xC0,0x03,0x3C,0x00,0x04, // 86 + 0x0C,0x00,0xF0,0x03,0xF8,0x00,0x7C,0x00,0xE0,0x03,0x1C, // 87 + 0x04,0x02,0x0C,0x03,0xF0,0x00,0xF0,0x00,0x0C,0x03,0x04,0x02, // 88 + 0x04,0x00,0x1C,0x00,0xE0,0x03,0x70,0x00,0x0C,0x00,0x04, // 89 + 0x00,0x00,0x04,0x03,0xC4,0x02,0x34,0x02,0x0C,0x02, // 90 + 0x00,0x00,0x00,0x00,0xFE,0x0F,0x02,0x08, // 91 + 0x00,0x00,0x04,0x00,0x38,0x00,0xC0,0x01,0x00,0x02, // 92 + 0x00,0x00,0x00,0x00,0x02,0x08,0xFE,0x0F, // 93 + 0x00,0x00,0x20,0x00,0x1C,0x00,0x1C,0x00,0x20, // 94 + 0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04, // 95 + 0x00,0x00,0x00,0x00,0x04,0x00,0x04, // 96 + 0x00,0x00,0xB0,0x03,0x50,0x02,0x50,0x02,0xE0,0x03, // 97 + 0x00,0x00,0xFC,0x03,0x10,0x02,0x10,0x02,0xF0,0x03, // 98 + 0x00,0x00,0xE0,0x01,0x10,0x02,0x10,0x02,0x30,0x01, // 99 + 0x00,0x00,0xE0,0x01,0x10,0x02,0x10,0x02,0xFC,0x03, // 100 + 0x00,0x00,0xE0,0x01,0x50,0x02,0x50,0x02,0x70,0x03, // 101 + 0x00,0x00,0x10,0x00,0xFC,0x03,0x12,0x00,0x12,0x00,0x02, // 102 + 0x00,0x00,0xE0,0x09,0x10,0x0A,0x10,0x0A,0xF0,0x07, // 103 + 0x00,0x00,0xFC,0x03,0x10,0x00,0x10,0x00,0xF0,0x03, // 104 + 0x00,0x00,0x10,0x02,0x10,0x02,0xF4,0x03,0x00,0x02, // 105 + 0x00,0x00,0x10,0x08,0x10,0x08,0xF4,0x07, // 106 + 0x00,0x00,0xFC,0x03,0x40,0x00,0xA0,0x01,0x10,0x02,0x00,0x02, // 107 + 0x00,0x00,0x04,0x02,0x04,0x02,0xFC,0x03,0x00,0x02, // 108 + 0xF0,0x03,0x10,0x00,0x10,0x00,0xF0,0x03,0x10,0x00,0xE0,0x03, // 109 + 0x00,0x00,0xF0,0x03,0x10,0x00,0x10,0x00,0xF0,0x03, // 110 + 0x00,0x00,0xE0,0x01,0x10,0x02,0x10,0x02,0xE0,0x01, // 111 + 0x00,0x00,0xF0,0x0F,0x10,0x02,0x10,0x02,0xE0,0x01, // 112 + 0x00,0x00,0xE0,0x01,0x10,0x02,0x10,0x02,0xF0,0x0F, // 113 + 0x00,0x00,0x00,0x00,0xF0,0x03,0x10,0x00,0x10, // 114 + 0x00,0x00,0x60,0x01,0x50,0x02,0x90,0x02,0xB0,0x03, // 115 + 0x00,0x00,0x10,0x00,0xFC,0x01,0x10,0x02,0x10,0x02, // 116 + 0x00,0x00,0xF0,0x03,0x00,0x02,0x00,0x02,0xF0,0x03, // 117 + 0x10,0x00,0x70,0x00,0x80,0x03,0x80,0x03,0x70,0x00,0x10, // 118 + 0x30,0x00,0xC0,0x03,0xE0,0x00,0xF0,0x00,0xC0,0x03,0x30, // 119 + 0x00,0x00,0x10,0x02,0xE0,0x01,0xE0,0x00,0x30,0x03,0x10,0x02, // 120 + 0x10,0x00,0x70,0x08,0x80,0x07,0x80,0x01,0x70,0x00,0x10, // 121 + 0x00,0x00,0x10,0x03,0x90,0x02,0x70,0x02,0x30,0x02, // 122 + 0x00,0x00,0x00,0x00,0x40,0x00,0xBC,0x07,0x02,0x08, // 123 + 0x00,0x00,0x00,0x00,0xFC,0x0F, // 124 + 0x00,0x00,0x00,0x00,0x06,0x0C,0xB8,0x03,0x40, // 125 + 0x80,0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x80,0x00,0x40, // 126 + 0x00,0x00,0x00,0x00,0x90,0x0F,0x10, // 161 + 0x00,0x00,0xE0,0x01,0x10,0x02,0x18,0x06,0x20,0x01, // 162 + 0x00,0x00,0xF8,0x03,0x44,0x02,0x44,0x02,0x0C,0x02,0x00,0x02, // 163 + 0x00,0x00,0xF0,0x03,0x10,0x02,0x10,0x02,0x30,0x03,0xD0,0x02, // 164 + 0x04,0x00,0xD8,0x00,0xF0,0x03,0xF0,0x00,0xD8,0x00,0x04, // 165 + 0x00,0x00,0x00,0x00,0xBC,0x07, // 166 + 0x80,0x04,0x7C,0x19,0x24,0x11,0x44,0x12,0x4C,0x1F,0x80, // 167 + 0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x04, // 168 + 0xC0,0x00,0x20,0x01,0xF0,0x03,0xF0,0x03,0x20,0x01,0xC0, // 169 + 0x00,0x00,0x20,0x00,0x54,0x00,0x54,0x00,0x68, // 170 + 0x00,0x00,0xC0,0x00,0x20,0x01,0xC0,0x00,0x20,0x01, // 171 + 0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xC0, // 172 + 0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40, // 173 + 0xC0,0x00,0x20,0x01,0xF0,0x02,0xF0,0x02,0x20,0x01,0xC0, // 174 + 0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04, // 175 + 0x00,0x00,0x00,0x00,0x1C,0x00,0x1C, // 176 + 0x00,0x00,0x20,0x02,0x20,0x02,0xF8,0x02,0x20,0x02, // 177 + 0x00,0x00,0x00,0x00,0x6C,0x00,0x54,0x00,0x48, // 178 + 0x00,0x00,0x00,0x00,0x64,0x00,0x54,0x00,0x28, // 179 + 0x00,0x00,0x00,0x00,0x04,0x00,0x04, // 180 + 0x00,0x00,0xF0,0x0F,0x00,0x02,0x00,0x02,0xF0,0x03, // 181 + 0x00,0x00,0x38,0x00,0x7C,0x00,0x7C,0x00,0xFC,0x03, // 182 + 0x00,0x00,0x00,0x00,0x40,0x00,0x40, // 183 + 0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x0C, // 184 + 0x00,0x00,0x00,0x00,0x04,0x00,0x3C, // 185 + 0x00,0x00,0x18,0x00,0x24,0x00,0x24,0x00,0x18, // 186 + 0x00,0x00,0x20,0x01,0xC0,0x00,0x20,0x01,0xC0, // 187 + 0x00,0x00,0x38,0x01,0xC0,0x00,0x20,0x01,0x90,0x01,0xC0,0x03, // 188 + 0x00,0x00,0x38,0x01,0x80,0x00,0x60,0x02,0x30,0x03,0xC0,0x02, // 189 + 0x24,0x00,0x34,0x01,0xFC,0x00,0x20,0x01,0x90,0x01,0xC0,0x03, // 190 + 0x00,0x00,0x00,0x07,0x90,0x08,0x50,0x08,0x00,0x04, // 191 + 0x00,0x02,0xC0,0x01,0xB9,0x00,0x9E,0x00,0xE0,0x01,0x00,0x02, // 192 + 0x00,0x02,0xC0,0x01,0xB8,0x00,0x9E,0x00,0xE1,0x01,0x00,0x02, // 193 + 0x00,0x02,0xC0,0x01,0xBA,0x00,0x9D,0x00,0xE2,0x01,0x00,0x02, // 194 + 0x00,0x02,0xC0,0x01,0xB9,0x00,0x9D,0x00,0xE1,0x01,0x00,0x02, // 195 + 0x00,0x02,0xC1,0x01,0xB8,0x00,0x9D,0x00,0xE1,0x01,0x00,0x02, // 196 + 0x00,0x02,0xC0,0x01,0xBF,0x00,0x9F,0x00,0xE0,0x01,0x00,0x02, // 197 + 0x00,0x02,0xC0,0x01,0xB8,0x00,0xFC,0x03,0x24,0x02,0x24,0x02, // 198 + 0x00,0x00,0xF8,0x01,0x04,0x0A,0x04,0x0E,0x0C,0x03, // 199 + 0x00,0x00,0xFD,0x03,0x26,0x02,0x24,0x02,0x24,0x02, // 200 + 0x00,0x00,0xFC,0x03,0x24,0x02,0x26,0x02,0x25,0x02, // 201 + 0x00,0x00,0xFC,0x03,0x26,0x02,0x25,0x02,0x26,0x02, // 202 + 0x00,0x00,0xFD,0x03,0x24,0x02,0x25,0x02,0x25,0x02, // 203 + 0x00,0x00,0x05,0x02,0xFE,0x03,0x04,0x02,0x04,0x02, // 204 + 0x00,0x00,0x04,0x02,0xFE,0x03,0x05,0x02,0x04,0x02, // 205 + 0x00,0x00,0x06,0x02,0xFD,0x03,0x06,0x02,0x04,0x02, // 206 + 0x00,0x00,0x05,0x02,0xFC,0x03,0x05,0x02,0x05,0x02, // 207 + 0x20,0x00,0xFC,0x03,0x24,0x02,0x04,0x02,0x08,0x01,0xF0, // 208 + 0x00,0x00,0xFC,0x03,0x31,0x00,0xC1,0x00,0xFD,0x03, // 209 + 0x00,0x00,0xF8,0x01,0x05,0x02,0x06,0x02,0xF8,0x01, // 210 + 0x00,0x00,0xF8,0x01,0x04,0x02,0x06,0x02,0xF9,0x01, // 211 + 0x00,0x00,0xF8,0x01,0x06,0x02,0x05,0x02,0xFA,0x01, // 212 + 0x00,0x00,0xF8,0x01,0x05,0x02,0x05,0x02,0xF9,0x01, // 213 + 0x00,0x00,0xF9,0x01,0x04,0x02,0x05,0x02,0xF9,0x01, // 214 + 0x00,0x00,0x20,0x01,0xC0,0x00,0xC0,0x00,0x20,0x01, // 215 + 0x60,0x02,0x98,0x03,0xC4,0x02,0x24,0x02,0xFC,0x01,0x04, // 216 + 0x00,0x00,0xFC,0x01,0x01,0x02,0x02,0x02,0xFC,0x01, // 217 + 0x00,0x00,0xFC,0x01,0x00,0x02,0x02,0x02,0xFD,0x01, // 218 + 0x00,0x00,0xFC,0x01,0x02,0x02,0x01,0x02,0xFE,0x01, // 219 + 0x00,0x00,0xFD,0x01,0x00,0x02,0x01,0x02,0xFD,0x01, // 220 + 0x04,0x00,0x1C,0x00,0xE0,0x03,0x72,0x00,0x0D,0x00,0x04, // 221 + 0x00,0x00,0xFC,0x03,0x90,0x00,0x90,0x00,0xF0, // 222 + 0x00,0x00,0xFC,0x03,0x02,0x02,0x72,0x02,0xCC,0x03, // 223 + 0x00,0x00,0xB4,0x03,0x58,0x02,0x50,0x02,0xE0,0x03, // 224 + 0x00,0x00,0xB0,0x03,0x50,0x02,0x58,0x02,0xE4,0x03, // 225 + 0x00,0x00,0xB0,0x03,0x58,0x02,0x54,0x02,0xE8,0x03, // 226 + 0x00,0x00,0xB0,0x03,0x54,0x02,0x54,0x02,0xE4,0x03, // 227 + 0x00,0x00,0xB4,0x03,0x50,0x02,0x54,0x02,0xE4,0x03, // 228 + 0x00,0x00,0xB0,0x03,0x5C,0x02,0x5C,0x02,0xE0,0x03, // 229 + 0xA0,0x01,0x50,0x02,0xF0,0x03,0x50,0x03,0x50,0x02,0x60,0x02, // 230 + 0x00,0x00,0xE0,0x01,0x10,0x0A,0x10,0x0E,0x30,0x01, // 231 + 0x00,0x00,0xE4,0x01,0x58,0x02,0x50,0x02,0x70,0x03, // 232 + 0x00,0x00,0xE0,0x01,0x50,0x02,0x58,0x02,0x74,0x03, // 233 + 0x00,0x00,0xE0,0x01,0x58,0x02,0x54,0x02,0x78,0x03, // 234 + 0x00,0x00,0xE4,0x01,0x50,0x02,0x54,0x02,0x74,0x03, // 235 + 0x00,0x00,0x10,0x02,0x14,0x02,0xF8,0x03,0x00,0x02, // 236 + 0x00,0x00,0x10,0x02,0x10,0x02,0xF8,0x03,0x04,0x02, // 237 + 0x00,0x00,0x10,0x02,0x18,0x02,0xF4,0x03,0x08,0x02, // 238 + 0x00,0x00,0x14,0x02,0x10,0x02,0xF4,0x03,0x04,0x02, // 239 + 0x80,0x00,0x60,0x03,0x34,0x02,0x28,0x02,0xF4,0x01, // 240 + 0x00,0x00,0xF0,0x03,0x14,0x00,0x14,0x00,0xF4,0x03, // 241 + 0x00,0x00,0xE4,0x01,0x18,0x02,0x10,0x02,0xE0,0x01, // 242 + 0x00,0x00,0xE0,0x01,0x10,0x02,0x18,0x02,0xE4,0x01, // 243 + 0x00,0x00,0xE0,0x01,0x18,0x02,0x14,0x02,0xE8,0x01, // 244 + 0x00,0x00,0xE0,0x01,0x14,0x02,0x14,0x02,0xE4,0x01, // 245 + 0x00,0x00,0xE4,0x01,0x10,0x02,0x14,0x02,0xE4,0x01, // 246 + 0x00,0x00,0x40,0x00,0x48,0x01,0x48,0x01,0x40, // 247 + 0x00,0x00,0xE0,0x03,0x90,0x03,0x70,0x02,0xE8,0x01, // 248 + 0x00,0x00,0xF4,0x03,0x08,0x02,0x00,0x02,0xF0,0x03, // 249 + 0x00,0x00,0xF0,0x03,0x00,0x02,0x08,0x02,0xF4,0x03, // 250 + 0x00,0x00,0xF0,0x03,0x08,0x02,0x04,0x02,0xF8,0x03, // 251 + 0x00,0x00,0xF4,0x03,0x00,0x02,0x04,0x02,0xF4,0x03, // 252 + 0x10,0x00,0x70,0x08,0x80,0x07,0x88,0x01,0x74,0x00,0x10, // 253 + 0x00,0x00,0xFE,0x0F,0x10,0x02,0x10,0x02,0xF0,0x01, // 254 + 0x10,0x00,0x74,0x08,0x80,0x07,0x84,0x01,0x74,0x00,0x10 // 255 +}; + +#endif \ No newline at end of file diff --git a/lib/image/image.cpp b/lib/image/image.cpp new file mode 100644 index 0000000..0b9ae15 --- /dev/null +++ b/lib/image/image.cpp @@ -0,0 +1,76 @@ +#ifndef __IMAGE__ +#include +#endif + +#include +#include + +extern String ver; +extern String localIP; + +// Overlays are statically drawn on top of a frame +int overlaysCount = 1; +OverlayCallback overlays[] = { msOverlay }; + +void msOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) { + String time(""); + + if( localIP == "Unconnected" ) { + unsigned long mscount = millis(); + unsigned long sec = mscount / 1000; + unsigned long mse = mscount / 100 - sec * 10; + time = (String)sec + "." + (String)mse; + } + + + display->setTextAlignment(TEXT_ALIGN_CENTER); + display->drawString(64, 50, time); +} + +// frames +// int frameCount = 4; +// FrameCallback frames[] = { oled_web_page, oled_mqtt_page, oled_bilibili_page, oled_os_page }; +int frameCount = 1; +FrameCallback frames[] = { oled_os_page }; + +static void oled_title(OLEDDisplay *display) { + // Title + display->setFont(Roboto_Mono_13); + + display->setTextAlignment(TEXT_ALIGN_LEFT); + display->drawString(0, 0, "INFO BOARD"); + + display->setFont(Roboto_Mono_10); +} + +void oled_web_page(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { + +} + +void oled_mqtt_page(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { + +} + +void oled_bilibili_page(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { + +} + +void oled_os_page(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { + // Title + oled_title(display); + + // Version + display->drawFastImage(0, 16, 16, 16, board_icon); + display->drawString(24, 18, ver); + + // WiFi + if( localIP == "Unconnected") + display->drawFastImage(0, 34, 16, 16, wifi_unconnected_icon); + else + display->drawFastImage(0, 34, 16, 16, wifi_connected_icon); + display->drawString(24, 36, localIP); + + // + + display->display(); +} \ No newline at end of file diff --git a/lib/image/image.h b/lib/image/image.h new file mode 100644 index 0000000..a7ce020 --- /dev/null +++ b/lib/image/image.h @@ -0,0 +1,74 @@ +#ifndef __IMAGE__ +#define __IMAGE__ + +#include +#include +#include + +// wifi已连接图标 16*16 +const unsigned char wifi_connected_icon[] PROGMEM = { + 0x18,0x00,0x0c,0x00,0x8c,0x01,0x86,0x01,0xc6,0x00,0xc3,0x18,0x63,0x18,0x63,0xcc, + 0x63,0xcc,0x63,0x18,0xc3,0x18,0xc6,0x00,0x86,0x01,0x8c,0x01,0x0c,0x00,0x18,0x00 +}; +// wifi未连接图标 16*16 +const unsigned char wifi_unconnected_icon[] PROGMEM = { + 0x18,0xc0,0x0c,0xe0,0x8c,0x71,0x86,0x39,0xc6,0x1c,0xc3,0x1e,0x63,0x1f,0xe3,0xcf, + 0xe3,0xcd,0xe3,0x18,0xf3,0x18,0xfe,0x00,0x9e,0x01,0x8e,0x01,0x0f,0x00,0x1b,0x00 +}; +// 路由器图标 16*16 +const unsigned char router_icon[] PROGMEM = { + 0x38,0xfc,0x70,0x84,0xe0,0xb4,0xc0,0xa5,0x80,0xa7,0x00,0xa7,0x00,0x86,0x00,0x84, + 0x00,0x84,0x00,0x86,0x00,0x87,0x80,0xb7,0xc0,0xb5,0xe0,0x84,0x70,0x84,0x38,0xfc, +}; +// 板子图标 16*16 +const unsigned char board_icon[] PROGMEM = { + 0xff,0xff,0x01,0x80,0x3f,0x80,0x23,0x80,0x23,0x80,0x3f,0x80,0x01,0x80,0xff,0xff, + 0x00,0x00,0x30,0x0c,0xe0,0x07,0x06,0x60,0x1c,0x38,0xf0,0x0f,0x00,0x00,0x00,0x00 +}; + +// bilibili 24*24 +const unsigned char bilibilitv_icon[] PROGMEM = { + 0x00,0x00,0x02,0x00,0x00,0x03,0x30,0x00,0x01,0xe0,0x80,0x01, + 0x80,0xc3,0x00,0x00,0xef,0x00,0xff,0xff,0xff,0x03,0x00,0xc0, + 0xf9,0xff,0xdf,0x09,0x00,0xd0,0x09,0x00,0xd0,0x89,0xc1,0xd1, + 0xe9,0x81,0xd3,0x69,0x00,0xd6,0x09,0x91,0xd0,0x09,0xdb,0xd0, + 0x09,0x7e,0xd0,0x0d,0x00,0xd0,0x4d,0x89,0xdb,0xfb,0xff,0xdf, + 0x03,0x00,0xc0,0xff,0xff,0xff,0x78,0x00,0x1e,0x30,0x00,0x0c +}; + +const uint8_t active_symbol_icon[] PROGMEM = { + B00000000, + B00000000, + B00011000, + B00100100, + B01000010, + B01000010, + B00100100, + B00011000 +}; + +const uint8_t inactive_symbol_icon[] PROGMEM = { + B00000000, + B00000000, + B00000000, + B00000000, + B00011000, + B00011000, + B00000000, + B00000000 +}; + +void oled_web_page(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); +void oled_mqtt_page(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); +void oled_bilibili_page(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); +void oled_os_page(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); + +extern int frameCount; +extern FrameCallback frames[]; + +void msOverlay(OLEDDisplay *display, OLEDDisplayUiState* state); + +extern int overlaysCount; +extern OverlayCallback overlays[]; + +#endif \ No newline at end of file diff --git a/lib/utils/utils.cpp b/lib/utils/utils.cpp new file mode 100644 index 0000000..5f83f7f --- /dev/null +++ b/lib/utils/utils.cpp @@ -0,0 +1,55 @@ +#ifdef __UTILS__ +#include +#endif + +#include + +#include +#include +#include +#include + +#include + +String ver("v0.0.1"); +String localIP("Unconnected"); + +String NAME = "仙女小可"; //改成自己的名字 +static String UID = "450115492"; //改成自己的UID +static String followerUrl = "http://api.bilibili.com/x/relation/stat?vmid=" + UID; // 粉丝数 +static String viewAndLikesUrl = "http://api.bilibili.com/x/space/upstat?mid=" + UID; // 播放数、点赞数 + +long follower_hist = 0; // 历史粉丝数 +long follower = 0; // 粉丝数 +long view = 0; // 播放数 +long likes = 0; // 获赞数 + +static DynamicJsonDocument jsonBuffer(256); + +void getFollower(String url) { + HTTPClient http; + http.begin(url); + + int res_code = http.GET(); + if( res_code == 200 ) { + String res = http.getString(); + DeserializationError error = deserializeJson(jsonBuffer, res); + + if( error ) { + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.f_str()); + return; + } + + follower_hist = follower; + follower = jsonBuffer["data"]["follower"]; + } else { + Serial.printf("[HTTP] GET... failed, error: %d\n", res_code); + } + + http.end(); +} + +void getViewAndLikes(String url) { + +} \ No newline at end of file diff --git a/lib/utils/utils.h b/lib/utils/utils.h new file mode 100644 index 0000000..ae6ae5a --- /dev/null +++ b/lib/utils/utils.h @@ -0,0 +1,18 @@ +#ifndef __UTILS__ +#define __UTILS__ + +#include + +extern String ver; +extern String localIP; + +extern String NAME; +extern long follower_hist; +extern long follower; +extern long view; +extern long likes; + +void getFollower(String url); +void getViewAndLikes(String url); + +#endif diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..b1ef69f --- /dev/null +++ b/platformio.ini @@ -0,0 +1,22 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 +framework = arduino +board_build.f_cpu = 80000000L +upload_speed = 115200 +monitor_speed = 115200 +lib_deps = + thingpulse/ESP8266 and ESP32 OLED driver for SSD1306 displays@^4.2.1 + tzapu/WiFiManager@^0.16.0 + arduino-libraries/NTPClient@^3.1.0 + bblanchon/ArduinoJson@^6.18.5 diff --git a/src/main.back b/src/main.back new file mode 100644 index 0000000..9f8d5b8 --- /dev/null +++ b/src/main.back @@ -0,0 +1,81 @@ +#include + +#include +#include + +#include +#include +#include + +#include + +// Global arguments +Ticker tick; +// 128 * 64 display +SSD1306Wire display(0x3c, 4, 5); + +void init_system(); +void init_OLED(); +void init_WiFi(); +void configModeCallback(WiFiManager *config); +void blink(); + +void setup() { + init_system(); + init_OLED(); + // init_WiFi(); + + // tick.detach(); + + // digitalWrite(LED_BUILTIN, LOW); +} + +void loop() { + // put your main code here, to run repeatedly: +} + +void init_system() { + Serial.begin(115200); + pinMode(LED_BUILTIN, OUTPUT); + tick.attach(1, blink); +} + +void init_OLED() { + display.init(); + display.flipScreenVertically(); + display.setContrast(255); + display.setFont(Roboto_Mono_13); + + oled_page1(display, "Unconnected"); +} + +void init_WiFi() { + WiFiManager manager; + + manager.setDebugOutput(true); + manager.setRemoveDuplicateAPs(true); + manager.setMinimumSignalQuality(40); + + manager.setAPCallback(configModeCallback); + manager.setAPStaticIPConfig( + IPAddress(10, 1, 1, 1), + IPAddress(10, 0, 1, 1), + IPAddress(255, 255, 255, 0) + ); + + if( !manager.autoConnect("Info Board", "cj160217") ) { + ESP.reset(); + delay(1000); + } + + oled_page1(display, WiFi.localIP().toString()); +} + +void configModeCallback(WiFiManager *config) { + tick.attach(0.1, blink); +} + +void blink() { + int state = digitalRead(LED_BUILTIN); + digitalWrite(LED_BUILTIN, !state); +} \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..e53c3a4 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,98 @@ +#include + +#include +#include + +#include +#include +#include +#include + +#include + +// Global arguments +Ticker tick; +// 128 * 64 display +SSD1306Wire display(0x3c, 4, 5); +OLEDDisplayUi ui(&display); + +void init_system(); +void init_OLED(); +void init_WiFi(); +void configModeCallback(WiFiManager *config); +void blink(); + +void setup() { + init_system(); + init_OLED(); + // init_WiFi(); + + // tick.detach(); + + // digitalWrite(LED_BUILTIN, LOW); +} + +void loop() { + int remainingTimeBudget = ui.update(); + + if (remainingTimeBudget > 0) { + // You can do some work here + // Don't do stuff if you are below your + // time budget. + delay(remainingTimeBudget); + } +} + +void init_system() { + Serial.begin(115200); + pinMode(LED_BUILTIN, OUTPUT); + tick.attach(1, blink); +} + +void init_OLED() { + display.init(); + display.setContrast(255); + display.setFont(Roboto_Mono_10); + + ui.setTargetFPS(15); + ui.setActiveSymbol(active_symbol_icon); + ui.setInactiveSymbol(inactive_symbol_icon); + ui.setIndicatorPosition(RIGHT); + ui.setIndicatorDirection(LEFT_RIGHT); + ui.setFrameAnimation(SLIDE_LEFT); + + ui.setFrames(frames, frameCount); + ui.setOverlays(overlays, overlaysCount); + ui.init(); + + display.flipScreenVertically(); +} + +void init_WiFi() { + WiFiManager manager; + + manager.setDebugOutput(true); + manager.setRemoveDuplicateAPs(true); + manager.setMinimumSignalQuality(40); + + manager.setAPCallback(configModeCallback); + manager.setAPStaticIPConfig( + IPAddress(10, 1, 1, 1), + IPAddress(10, 0, 1, 1), + IPAddress(255, 255, 255, 0) + ); + + if( !manager.autoConnect("Info Board", "cj160217") ) { + ESP.reset(); + delay(1000); + } +} + +void configModeCallback(WiFiManager *config) { + tick.attach(0.1, blink); +} + +void blink() { + int state = digitalRead(LED_BUILTIN); + digitalWrite(LED_BUILTIN, !state); +} \ No newline at end of file diff --git a/test/.gitkeep b/test/.gitkeep new file mode 100644 index 0000000..e69de29