v.0.1.0 fonts as vectors
This commit is contained in:
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
@@ -1,6 +1,9 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"ostream": "cpp",
|
||||
"font_5x7,cpp": "cpp"
|
||||
"font_5x7,cpp": "cpp",
|
||||
"map": "cpp",
|
||||
"format": "cpp",
|
||||
"system_error": "cpp"
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,14 @@
|
||||
#include "font_16x16.h"
|
||||
|
||||
// Function to get font data for a character
|
||||
const uint16_t *getFontChar_16x16(char c)
|
||||
const std::vector<uint16_t> &getFontChar_16x16(char c)
|
||||
{
|
||||
for (int i = 0; i < sizeof(font_chars_16x16) - 1; i++)
|
||||
auto it = font_16x16.find(c);
|
||||
if (it != font_16x16.end())
|
||||
{
|
||||
if (font_chars_16x16[i] == c)
|
||||
{
|
||||
return font_16x16[i];
|
||||
}
|
||||
return it->second;
|
||||
}
|
||||
return font_16x16[0]; // Return space if not found (index of ' ')
|
||||
return font_16x16.at(' '); // Fallback to space
|
||||
}
|
||||
|
||||
const uint8_t fontHeight_16x16()
|
||||
|
||||
@@ -1,203 +1,120 @@
|
||||
#ifndef FONT_16X16_H
|
||||
#define FONT_16X16_H
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
const uint16_t font_16x16[][16] = {
|
||||
// Space (index 0)
|
||||
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // ' '
|
||||
|
||||
// Exclamation mark (index 1)
|
||||
{0x0006, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x0006, 0x0000, 0x000F, 0x000F, 0x0000, 0x0000}, // '!'
|
||||
|
||||
// Double quote (index 2)
|
||||
{0x0363, 0x0363, 0x0363, 0x0363, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '"'
|
||||
|
||||
// Hash (index 3)
|
||||
{0x0318, 0x0318, 0x0318, 0x0FFF, 0x0FFF, 0x0318, 0x0318, 0x0318, 0x0318, 0x0FFF, 0x0FFF, 0x0318, 0x0318, 0x0318, 0x0000, 0x0000}, // '#'
|
||||
|
||||
// Dollar (index 4)
|
||||
{0x0078, 0x00FE, 0x01CF, 0x01C7, 0x01C0, 0x00F8, 0x007C, 0x000F, 0x0007, 0x01C7, 0x01CF, 0x00FE, 0x0078, 0x0010, 0x0000, 0x0000}, // '$'
|
||||
|
||||
// Percent (index 5)
|
||||
{0x0E0E, 0x1B0E, 0x1B1C, 0x0E38, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x070E, 0x0E1B, 0x1C1B, 0x380E, 0x0000, 0x0000, 0x0000, 0x0000}, // '%'
|
||||
|
||||
// Ampersand (index 6)
|
||||
{0x07C0, 0x0EE0, 0x1C70, 0x1C70, 0x0EE0, 0x07C0, 0x0FC7, 0x1CE7, 0x387E, 0x383C, 0x387E, 0x1CFF, 0x0FE7, 0x07C0, 0x0000, 0x0000}, // '&'
|
||||
|
||||
// Single quote (index 7)
|
||||
{0x0003, 0x0003, 0x0003, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '''
|
||||
|
||||
// Left parenthesis (index 8)
|
||||
{0x0007, 0x000E, 0x001C, 0x001C, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x001C, 0x001C, 0x000E, 0x0007, 0x0000, 0x0000}, // '('
|
||||
|
||||
// Right parenthesis (index 9)
|
||||
{0x0038, 0x001C, 0x000E, 0x000E, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x000E, 0x000E, 0x001C, 0x0038, 0x0000, 0x0000}, // ')'
|
||||
|
||||
// Asterisk (index 10)
|
||||
{0x0030, 0x01B3, 0x00FC, 0x0078, 0x00FC, 0x01B3, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '*'
|
||||
|
||||
// Plus (index 11)
|
||||
{0x0000, 0x0000, 0x0060, 0x0060, 0x0060, 0x0060, 0x03FF, 0x03FF, 0x0060, 0x0060, 0x0060, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000}, // '+'
|
||||
|
||||
// Comma (index 12)
|
||||
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0003, 0x0006, 0x0000, 0x0000}, // ','
|
||||
|
||||
// Minus (index 13)
|
||||
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '-'
|
||||
|
||||
// Period (index 14)
|
||||
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000}, // '.'
|
||||
|
||||
// Slash (index 15)
|
||||
{0x0003, 0x0007, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0E00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000}, // '/'
|
||||
|
||||
// Numbers 0-9 (index 16-25)
|
||||
{0x01F8, 0x03FC, 0x070E, 0x0606, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0606, 0x070E, 0x03FC, 0x01F8, 0x0000, 0x0000}, // '0'
|
||||
{0x000C, 0x001C, 0x003C, 0x007C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x007F, 0x007F, 0x0000, 0x0000}, // '1'
|
||||
{0x00FC, 0x01FE, 0x0387, 0x0303, 0x0003, 0x0007, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x03FF, 0x03FF, 0x0000, 0x0000}, // '2'
|
||||
{0x00FC, 0x01FE, 0x0387, 0x0303, 0x0003, 0x0007, 0x007E, 0x007E, 0x0007, 0x0003, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000, 0x0000}, // '3'
|
||||
{0x000E, 0x001E, 0x003E, 0x006E, 0x00CE, 0x018E, 0x030E, 0x060E, 0x07FF, 0x07FF, 0x000E, 0x000E, 0x000E, 0x000E, 0x0000, 0x0000}, // '4'
|
||||
{0x03FF, 0x03FF, 0x0300, 0x0300, 0x0300, 0x03FC, 0x03FE, 0x0007, 0x0003, 0x0003, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000, 0x0000}, // '5'
|
||||
{0x00FC, 0x01FE, 0x0387, 0x0303, 0x0300, 0x037C, 0x03FE, 0x0387, 0x0303, 0x0303, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000, 0x0000}, // '6'
|
||||
{0x03FF, 0x03FF, 0x0003, 0x0007, 0x000E, 0x001C, 0x0038, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0000, 0x0000}, // '7'
|
||||
{0x00FC, 0x01FE, 0x0387, 0x0303, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x01FE, 0x0387, 0x0303, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000}, // '8'
|
||||
{0x00FC, 0x01FE, 0x0387, 0x0303, 0x0303, 0x0387, 0x01FF, 0x00FF, 0x0003, 0x0003, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000, 0x0000}, // '9'
|
||||
|
||||
// Colon (index 26)
|
||||
{0x0000, 0x0000, 0x0000, 0x0003, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000}, // ':'
|
||||
|
||||
// Semicolon (index 27)
|
||||
{0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0003, 0x0006, 0x0000, 0x0000}, // ';'
|
||||
|
||||
// Less than (index 28)
|
||||
{0x0003, 0x000F, 0x003C, 0x00F0, 0x03C0, 0x0700, 0x03C0, 0x00F0, 0x003C, 0x000F, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '<'
|
||||
|
||||
// Equal (index 29)
|
||||
{0x0000, 0x0000, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '='
|
||||
|
||||
// Greater than (index 30)
|
||||
{0x0600, 0x0780, 0x01E0, 0x0078, 0x001E, 0x0007, 0x001E, 0x0078, 0x01E0, 0x0780, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '>'
|
||||
|
||||
// Question mark (index 31)
|
||||
{0x007C, 0x00FE, 0x01C7, 0x0183, 0x0003, 0x0007, 0x000E, 0x001C, 0x0018, 0x0000, 0x0018, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000}, // '?'
|
||||
|
||||
// At symbol (index 32)
|
||||
{0x01F8, 0x03FC, 0x070E, 0x0606, 0x0E3F, 0x0E7F, 0x0E67, 0x0E67, 0x0E67, 0x0E7F, 0x0E3E, 0x0600, 0x070E, 0x03FC, 0x01F8, 0x0000}, // '@'
|
||||
|
||||
// Uppercase A-Z (index 33-58)
|
||||
{0x0070, 0x00F8, 0x00F8, 0x01DC, 0x01DC, 0x038E, 0x038E, 0x038E, 0x03FE, 0x07FF, 0x0707, 0x0707, 0x0707, 0x0707, 0x0000, 0x0000}, // 'A'
|
||||
{0x07F8, 0x07FC, 0x070E, 0x070E, 0x070E, 0x071C, 0x07F8, 0x07FC, 0x070E, 0x0707, 0x0707, 0x0707, 0x070E, 0x07FE, 0x07FC, 0x0000}, // 'B'
|
||||
{0x01FC, 0x03FE, 0x0787, 0x0703, 0x0E00, 0x0E00, 0x0E00, 0x0E00, 0x0E00, 0x0E00, 0x0703, 0x0787, 0x03FE, 0x01FC, 0x0000, 0x0000}, // 'C'
|
||||
{0x0FF0, 0x0FFC, 0x0E1E, 0x0E0E, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E0E, 0x0E1E, 0x0FFC, 0x0FF0, 0x0000, 0x0000}, // 'D'
|
||||
{0x07FF, 0x07FF, 0x0700, 0x0700, 0x0700, 0x0700, 0x07FC, 0x07FC, 0x0700, 0x0700, 0x0700, 0x0700, 0x07FF, 0x07FF, 0x0000, 0x0000}, // 'E'
|
||||
{0x07FF, 0x07FF, 0x0700, 0x0700, 0x0700, 0x0700, 0x07FC, 0x07FC, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0000, 0x0000}, // 'F'
|
||||
{0x01FC, 0x03FE, 0x0787, 0x0703, 0x0E00, 0x0E00, 0x0E3F, 0x0E3F, 0x0E07, 0x0E07, 0x0707, 0x0787, 0x03FF, 0x01FF, 0x0000, 0x0000}, // 'G'
|
||||
{0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0FFF, 0x0FFF, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0000, 0x0000}, // 'H'
|
||||
{0x007F, 0x007F, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x007F, 0x007F, 0x0000, 0x0000}, // 'I'
|
||||
{0x007F, 0x007F, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x071C, 0x071C, 0x0738, 0x03F8, 0x01F0, 0x0000, 0x0000}, // 'J'
|
||||
{0x0E0E, 0x0E1C, 0x0E38, 0x0E70, 0x0EE0, 0x0FC0, 0x0FC0, 0x0FE0, 0x0EF0, 0x0E78, 0x0E3C, 0x0E1C, 0x0E0E, 0x0E07, 0x0000, 0x0000}, // 'K'
|
||||
{0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x07FF, 0x07FF, 0x0000, 0x0000}, // 'L'
|
||||
{0x1C07, 0x1E0F, 0x1E0F, 0x1F1F, 0x1F1F, 0x1DB7, 0x1DB7, 0x1DB7, 0x1CE7, 0x1CE7, 0x1CE7, 0x1C07, 0x1C07, 0x1C07, 0x0000, 0x0000}, // 'M'
|
||||
{0x0E07, 0x0F07, 0x0F07, 0x0F87, 0x0FC7, 0x0EE7, 0x0E77, 0x0E77, 0x0E3F, 0x0E1F, 0x0E1F, 0x0E0F, 0x0E07, 0x0E07, 0x0000, 0x0000}, // 'N'
|
||||
{0x01F8, 0x03FC, 0x078E, 0x0706, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0706, 0x078E, 0x03FC, 0x01F8, 0x0000, 0x0000}, // 'O'
|
||||
{0x07F8, 0x07FC, 0x070E, 0x0707, 0x0707, 0x0707, 0x070E, 0x07FC, 0x07F8, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0000, 0x0000}, // 'P'
|
||||
{0x01F8, 0x03FC, 0x078E, 0x0706, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E67, 0x077E, 0x07BE, 0x03FC, 0x01F7, 0x0000, 0x0000}, // 'Q'
|
||||
{0x0FF0, 0x0FF8, 0x0E1C, 0x0E0E, 0x0E0E, 0x0E0E, 0x0E1C, 0x0FF8, 0x0FF0, 0x0E78, 0x0E3C, 0x0E1E, 0x0E0E, 0x0E07, 0x0000, 0x0000}, // 'R'
|
||||
{0x01FC, 0x03FE, 0x0787, 0x0703, 0x0700, 0x0780, 0x03FC, 0x00FE, 0x0007, 0x0003, 0x0703, 0x0787, 0x03FE, 0x01FC, 0x0000, 0x0000}, // 'S'
|
||||
{0x07FF, 0x07FF, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0000, 0x0000}, // 'T'
|
||||
{0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x070E, 0x07FE, 0x01F8, 0x0000, 0x0000}, // 'U'
|
||||
{0x0E07, 0x0E07, 0x070E, 0x070E, 0x070E, 0x039C, 0x039C, 0x039C, 0x01F8, 0x01F8, 0x01F8, 0x00F0, 0x00F0, 0x00F0, 0x0000, 0x0000}, // 'V'
|
||||
{0x0E0E, 0x0E0E, 0x0E0E, 0x0E0E, 0x0E0E, 0x0E0E, 0x06B6, 0x06B6, 0x06B6, 0x07F7, 0x07F7, 0x07F7, 0x03E3, 0x03E3, 0x0000, 0x0000}, // 'W'
|
||||
{0x0E07, 0x070E, 0x070E, 0x039C, 0x01F8, 0x01F8, 0x00F0, 0x00F0, 0x01F8, 0x01F8, 0x039C, 0x070E, 0x070E, 0x0E07, 0x0000, 0x0000}, // 'X'
|
||||
{0x0E07, 0x070E, 0x070E, 0x039C, 0x039C, 0x01F8, 0x01F8, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x0000, 0x0000}, // 'Y'
|
||||
{0x07FF, 0x07FF, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0E00, 0x0E00, 0x07FF, 0x07FF, 0x0000, 0x0000}, // 'Z'
|
||||
|
||||
// Left bracket (index 59)
|
||||
{0x003F, 0x003F, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x003F, 0x003F, 0x0000}, // '['
|
||||
|
||||
// Backslash (index 60)
|
||||
{0x3000, 0x3800, 0x1C00, 0x0E00, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0070, 0x0038, 0x001C, 0x000E, 0x0007, 0x0003, 0x0000, 0x0000}, // '\\'
|
||||
|
||||
// Right bracket (index 61)
|
||||
{0x003F, 0x003F, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x003F, 0x003F, 0x0000}, // ']'
|
||||
|
||||
// Caret (index 62)
|
||||
{0x0030, 0x0078, 0x00FC, 0x01CE, 0x0387, 0x0303, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '^'
|
||||
|
||||
// Underscore (index 63)
|
||||
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF}, // '_'
|
||||
|
||||
// Backtick (index 64)
|
||||
{0x000C, 0x0006, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '`'
|
||||
|
||||
// Lowercase a-z (index 65-90)
|
||||
{0x0000, 0x0000, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0007, 0x007F, 0x00FF, 0x01C7, 0x0387, 0x0387, 0x01FF, 0x00F7, 0x0000, 0x0000}, // 'a'
|
||||
{0x0380, 0x0380, 0x0380, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x03CF, 0x03FE, 0x03BC, 0x0000, 0x0000}, // 'b'
|
||||
{0x0000, 0x0000, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0383, 0x0380, 0x0380, 0x0380, 0x0383, 0x01C7, 0x00FE, 0x007C, 0x0000, 0x0000}, // 'c'
|
||||
{0x0007, 0x0007, 0x0007, 0x0077, 0x00FF, 0x01CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x00FF, 0x0077, 0x0000, 0x0000}, // 'd'
|
||||
{0x0000, 0x0000, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0383, 0x03FF, 0x03FF, 0x0380, 0x0381, 0x01C3, 0x00FF, 0x007C, 0x0000, 0x0000}, // 'e'
|
||||
{0x001F, 0x003F, 0x0078, 0x0070, 0x01FE, 0x01FE, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0000, 0x0000}, // 'f'
|
||||
{0x0000, 0x0000, 0x0000, 0x0077, 0x00FF, 0x01CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x00FF, 0x0077, 0x0007, 0x01FE, 0x01FC}, // 'g'
|
||||
{0x0380, 0x0380, 0x0380, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0000, 0x0000}, // 'h'
|
||||
{0x000C, 0x000C, 0x0000, 0x003C, 0x003C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x003F, 0x003F, 0x0000, 0x0000}, // 'i'
|
||||
{0x0003, 0x0003, 0x0000, 0x000F, 0x000F, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0E3, 0x0E3, 0x007E, 0x003C}, // 'j'
|
||||
{0x0700, 0x0700, 0x0700, 0x070E, 0x071C, 0x0738, 0x0770, 0x07E0, 0x07E0, 0x0770, 0x0738, 0x071C, 0x070E, 0x0707, 0x0000, 0x0000}, // 'k'
|
||||
{0x003C, 0x003C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x003F, 0x003F, 0x0000, 0x0000}, // 'l'
|
||||
{0x0000, 0x0000, 0x0000, 0x0EE7, 0x0FFF, 0x0F3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0000, 0x0000}, // 'm'
|
||||
{0x0000, 0x0000, 0x0000, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0000, 0x0000}, // 'n'
|
||||
{0x0000, 0x0000, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0383, 0x0383, 0x0383, 0x0383, 0x0383, 0x01C7, 0x00FE, 0x007C, 0x0000, 0x0000}, // 'o'
|
||||
{0x0000, 0x0000, 0x0000, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x03CF, 0x03FE, 0x03BC, 0x0380, 0x0380, 0x0380}, // 'p'
|
||||
{0x0000, 0x0000, 0x0000, 0x0077, 0x00FF, 0x01CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x00FF, 0x0077, 0x0007, 0x0007, 0x0007}, // 'q'
|
||||
{0x0000, 0x0000, 0x0000, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0000, 0x0000}, // 'r'
|
||||
{0x0000, 0x0000, 0x0000, 0x00FC, 0x01FE, 0x0387, 0x0380, 0x01F8, 0x00FE, 0x0007, 0x0007, 0x0387, 0x03FE, 0x01FC, 0x0000, 0x0000}, // 's'
|
||||
{0x0038, 0x0038, 0x0038, 0x00FF, 0x00FF, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x001F, 0x000F, 0x0000, 0x0000}, // 't'
|
||||
{0x0000, 0x0000, 0x0000, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x01FF, 0x0077, 0x0000, 0x0000}, // 'u'
|
||||
{0x0000, 0x0000, 0x0000, 0x0707, 0x0707, 0x038E, 0x038E, 0x038E, 0x01DC, 0x01DC, 0x00F8, 0x00F8, 0x0070, 0x0070, 0x0000, 0x0000}, // 'v'
|
||||
{0x0000, 0x0000, 0x0000, 0x0E0E, 0x0E0E, 0x0E0E, 0x06B6, 0x06B6, 0x06B6, 0x07F7, 0x07F7, 0x07F7, 0x03E3, 0x03E3, 0x0000, 0x0000}, // 'w'
|
||||
{0x0000, 0x0000, 0x0000, 0x0707, 0x038E, 0x01DC, 0x00F8, 0x0070, 0x0070, 0x00F8, 0x01DC, 0x038E, 0x0707, 0x0707, 0x0000, 0x0000}, // 'x'
|
||||
{0x0000, 0x0000, 0x0000, 0x0707, 0x0707, 0x038E, 0x038E, 0x01DC, 0x01DC, 0x00F8, 0x00F8, 0x0070, 0x0070, 0x00E0, 0x01C0, 0x0000}, // 'y'
|
||||
{0x0000, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x03FF, 0x03FF, 0x0000, 0x0000}, // 'z'
|
||||
|
||||
// Left brace (index 91)
|
||||
{0x000F, 0x001E, 0x001C, 0x001C, 0x001C, 0x001C, 0x0038, 0x0070, 0x0038, 0x001C, 0x001C, 0x001C, 0x001C, 0x001E, 0x000F, 0x0000}, // '{'
|
||||
|
||||
// Vertical bar (index 92)
|
||||
{0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0000}, // '|'
|
||||
|
||||
// Right brace (index 93)
|
||||
{0x0078, 0x003C, 0x001C, 0x001C, 0x001C, 0x001C, 0x000E, 0x0007, 0x000E, 0x001C, 0x001C, 0x001C, 0x001C, 0x003C, 0x0078, 0x0000}, // '}'
|
||||
|
||||
// Tilde (index 94)
|
||||
{0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01C7, 0x03EF, 0x077E, 0x0738, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '~'
|
||||
|
||||
// Degree symbol (index 95)
|
||||
{0x000E, 0x001F, 0x001F, 0x001F, 0x000E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '°'
|
||||
|
||||
// Umlaut characters (index 96-101)
|
||||
{0x018C, 0x018C, 0x0000, 0x00F8, 0x01FC, 0x038E, 0x038E, 0x038E, 0x03FE, 0x07FF, 0x0707, 0x0707, 0x0707, 0x0707, 0x0000, 0x0000}, // 'Ä'
|
||||
{0x0318, 0x0318, 0x0000, 0x01F8, 0x03FC, 0x078E, 0x0706, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0706, 0x078E, 0x03FC, 0x01F8, 0x0000}, // 'Ö'
|
||||
{0x0318, 0x0318, 0x0000, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x070E, 0x07FE, 0x01F8, 0x0000}, // 'Ü'
|
||||
{0x00C6, 0x00C6, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0007, 0x007F, 0x00FF, 0x01C7, 0x0387, 0x0387, 0x01FF, 0x00F7, 0x0000, 0x0000}, // 'ä'
|
||||
{0x00C6, 0x00C6, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0383, 0x0383, 0x0383, 0x0383, 0x0383, 0x01C7, 0x00FE, 0x007C, 0x0000, 0x0000}, // 'ö'
|
||||
{0x00C6, 0x00C6, 0x0000, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x01FF, 0x0077, 0x0000, 0x0000}, // 'ü'
|
||||
|
||||
// Eszett (index 102)
|
||||
{0x007C, 0x00FE, 0x01C7, 0x01C7, 0x01C7, 0x01CE, 0x01FC, 0x01FE, 0x01CF, 0x01C7, 0x01C7, 0x01CF, 0x01FE, 0x01BC, 0x0180, 0x0180}, // 'ß'
|
||||
|
||||
// Bullet (index 103)
|
||||
{0x0000, 0x0000, 0x0000, 0x0000, 0x003C, 0x007E, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x007E, 0x003C, 0x0000, 0x0000, 0x0000, 0x0000}, // '•'
|
||||
|
||||
// Euro symbol (index 104)
|
||||
{0x01F8, 0x07FC, 0x0F0E, 0x1C07, 0x1FC0, 0x1FC0, 0x3800, 0x1FC0, 0x1FC0, 0x3800, 0x1FC0, 0x1FC0, 0x1C07, 0x0F0E, 0x07FC, 0x01F8}, // '€'
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
const std::map<uint8_t, std::vector<uint16_t>> font_16x16 = {
|
||||
{' ', {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'!', {0x0006, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x000F, 0x0006, 0x0000, 0x000F, 0x000F, 0x0000, 0x0000}},
|
||||
{'"', {0x0363, 0x0363, 0x0363, 0x0363, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'#', {0x0318, 0x0318, 0x0318, 0x0FFF, 0x0FFF, 0x0318, 0x0318, 0x0318, 0x0318, 0x0FFF, 0x0FFF, 0x0318, 0x0318, 0x0318, 0x0000, 0x0000}},
|
||||
{'$', {0x0078, 0x00FE, 0x01CF, 0x01C7, 0x01C0, 0x00F8, 0x007C, 0x000F, 0x0007, 0x01C7, 0x01CF, 0x00FE, 0x0078, 0x0010, 0x0000, 0x0000}},
|
||||
{'%', {0x0E0E, 0x1B0E, 0x1B1C, 0x0E38, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x070E, 0x0E1B, 0x1C1B, 0x380E, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'&', {0x07C0, 0x0EE0, 0x1C70, 0x1C70, 0x0EE0, 0x07C0, 0x0FC7, 0x1CE7, 0x387E, 0x383C, 0x387E, 0x1CFF, 0x0FE7, 0x07C0, 0x0000, 0x0000}},
|
||||
{'\'', {0x0003, 0x0003, 0x0003, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'(', {0x0007, 0x000E, 0x001C, 0x001C, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x001C, 0x001C, 0x000E, 0x0007, 0x0000, 0x0000}},
|
||||
{')', {0x0038, 0x001C, 0x000E, 0x000E, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x000E, 0x000E, 0x001C, 0x0038, 0x0000, 0x0000}},
|
||||
{'*', {0x0030, 0x01B3, 0x00FC, 0x0078, 0x00FC, 0x01B3, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'+', {0x0000, 0x0000, 0x0060, 0x0060, 0x0060, 0x0060, 0x03FF, 0x03FF, 0x0060, 0x0060, 0x0060, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{',', {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0003, 0x0006, 0x0000, 0x0000}},
|
||||
{'-', {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'.', {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'/', {0x0003, 0x0007, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0E00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'0', {0x01F8, 0x03FC, 0x070E, 0x0606, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0606, 0x070E, 0x03FC, 0x01F8, 0x0000, 0x0000}},
|
||||
{'1', {0x000C, 0x001C, 0x003C, 0x007C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x007F, 0x007F, 0x0000, 0x0000}},
|
||||
{'2', {0x00FC, 0x01FE, 0x0387, 0x0303, 0x0003, 0x0007, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x03FF, 0x03FF, 0x0000, 0x0000}},
|
||||
{'3', {0x00FC, 0x01FE, 0x0387, 0x0303, 0x0003, 0x0007, 0x007E, 0x007E, 0x0007, 0x0003, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000, 0x0000}},
|
||||
{'4', {0x000E, 0x001E, 0x003E, 0x006E, 0x00CE, 0x018E, 0x030E, 0x060E, 0x07FF, 0x07FF, 0x000E, 0x000E, 0x000E, 0x000E, 0x0000, 0x0000}},
|
||||
{'5', {0x03FF, 0x03FF, 0x0300, 0x0300, 0x0300, 0x03FC, 0x03FE, 0x0007, 0x0003, 0x0003, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000, 0x0000}},
|
||||
{'6', {0x00FC, 0x01FE, 0x0387, 0x0303, 0x0300, 0x037C, 0x03FE, 0x0387, 0x0303, 0x0303, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000, 0x0000}},
|
||||
{'7', {0x03FF, 0x03FF, 0x0003, 0x0007, 0x000E, 0x001C, 0x0038, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0000, 0x0000}},
|
||||
{'8', {0x00FC, 0x01FE, 0x0387, 0x0303, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x01FE, 0x0387, 0x0303, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000}},
|
||||
{'9', {0x00FC, 0x01FE, 0x0387, 0x0303, 0x0303, 0x0387, 0x01FF, 0x00FF, 0x0003, 0x0003, 0x0303, 0x0387, 0x01FE, 0x00FC, 0x0000, 0x0000}},
|
||||
{':', {0x0000, 0x0000, 0x0000, 0x0003, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{';', {0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0003, 0x0006, 0x0000, 0x0000}},
|
||||
{'<', {0x0003, 0x000F, 0x003C, 0x00F0, 0x03C0, 0x0700, 0x03C0, 0x00F0, 0x003C, 0x000F, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'=', {0x0000, 0x0000, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'>', {0x0600, 0x0780, 0x01E0, 0x0078, 0x001E, 0x0007, 0x001E, 0x0078, 0x01E0, 0x0780, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'?', {0x007C, 0x00FE, 0x01C7, 0x0183, 0x0003, 0x0007, 0x000E, 0x001C, 0x0018, 0x0000, 0x0018, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'@', {0x01F8, 0x03FC, 0x070E, 0x0606, 0x0E3F, 0x0E7F, 0x0E67, 0x0E67, 0x0E67, 0x0E7F, 0x0E3E, 0x0600, 0x070E, 0x03FC, 0x01F8, 0x0000}},
|
||||
{'A', {0x0070, 0x00F8, 0x00F8, 0x01DC, 0x01DC, 0x038E, 0x038E, 0x038E, 0x03FE, 0x07FF, 0x0707, 0x0707, 0x0707, 0x0707, 0x0000, 0x0000}},
|
||||
{'B', {0x07F8, 0x07FC, 0x070E, 0x070E, 0x070E, 0x071C, 0x07F8, 0x07FC, 0x070E, 0x0707, 0x0707, 0x0707, 0x070E, 0x07FE, 0x07FC, 0x0000}},
|
||||
{'C', {0x01FC, 0x03FE, 0x0787, 0x0703, 0x0E00, 0x0E00, 0x0E00, 0x0E00, 0x0E00, 0x0E00, 0x0703, 0x0787, 0x03FE, 0x01FC, 0x0000, 0x0000}},
|
||||
{'D', {0x0FF0, 0x0FFC, 0x0E1E, 0x0E0E, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E0E, 0x0E1E, 0x0FFC, 0x0FF0, 0x0000, 0x0000}},
|
||||
{'E', {0x07FF, 0x07FF, 0x0700, 0x0700, 0x0700, 0x0700, 0x07FC, 0x07FC, 0x0700, 0x0700, 0x0700, 0x0700, 0x07FF, 0x07FF, 0x0000, 0x0000}},
|
||||
{'F', {0x07FF, 0x07FF, 0x0700, 0x0700, 0x0700, 0x0700, 0x07FC, 0x07FC, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0000, 0x0000}},
|
||||
{'G', {0x01FC, 0x03FE, 0x0787, 0x0703, 0x0E00, 0x0E00, 0x0E3F, 0x0E3F, 0x0E07, 0x0E07, 0x0707, 0x0787, 0x03FF, 0x01FF, 0x0000, 0x0000}},
|
||||
{'H', {0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0FFF, 0x0FFF, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0000, 0x0000}},
|
||||
{'I', {0x007F, 0x007F, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x007F, 0x007F, 0x0000, 0x0000}},
|
||||
{'J', {0x007F, 0x007F, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x071C, 0x071C, 0x0738, 0x03F8, 0x01F0, 0x0000, 0x0000}},
|
||||
{'K', {0x0E0E, 0x0E1C, 0x0E38, 0x0E70, 0x0EE0, 0x0FC0, 0x0FC0, 0x0FE0, 0x0EF0, 0x0E78, 0x0E3C, 0x0E1C, 0x0E0E, 0x0E07, 0x0000, 0x0000}},
|
||||
{'L', {0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x07FF, 0x07FF, 0x0000, 0x0000}},
|
||||
{'M', {0x1C07, 0x1E0F, 0x1E0F, 0x1F1F, 0x1F1F, 0x1DB7, 0x1DB7, 0x1CE7, 0x1CE7, 0x1CE7, 0x1C07, 0x1C07, 0x1C07, 0x1C07, 0x0000, 0x0000}},
|
||||
{'N', {0x0E07, 0x0F07, 0x0F07, 0x0F87, 0x0FC7, 0x0EE7, 0x0E77, 0x0E77, 0x0E3F, 0x0E1F, 0x0E1F, 0x0E0F, 0x0E07, 0x0E07, 0x0000, 0x0000}},
|
||||
{'O', {0x01F8, 0x03FC, 0x078E, 0x0706, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0706, 0x078E, 0x03FC, 0x01F8, 0x0000, 0x0000}},
|
||||
{'P', {0x07F8, 0x07FC, 0x070E, 0x0707, 0x0707, 0x0707, 0x070E, 0x07FC, 0x07F8, 0x0700, 0x0700, 0x0700, 0x0700, 0x0700, 0x0000, 0x0000}},
|
||||
{'Q', {0x01F8, 0x03FC, 0x078E, 0x0706, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E67, 0x077E, 0x07BE, 0x03FC, 0x01F7, 0x0000, 0x0000}},
|
||||
{'R', {0x0FF0, 0x0FF8, 0x0E1C, 0x0E0E, 0x0E0E, 0x0E0E, 0x0E1C, 0x0FF8, 0x0FF0, 0x0E78, 0x0E3C, 0x0E1E, 0x0E0E, 0x0E07, 0x0000, 0x0000}},
|
||||
{'S', {0x01FC, 0x03FE, 0x0787, 0x0703, 0x0700, 0x0780, 0x03FC, 0x00FE, 0x0007, 0x0003, 0x0703, 0x0787, 0x03FE, 0x01FC, 0x0000, 0x0000}},
|
||||
{'T', {0x07FF, 0x07FF, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0000, 0x0000}},
|
||||
{'U', {0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x070E, 0x07FE, 0x01F8, 0x0000, 0x0000}},
|
||||
{'V', {0x0E07, 0x0E07, 0x070E, 0x070E, 0x070E, 0x039C, 0x039C, 0x039C, 0x01F8, 0x01F8, 0x01F8, 0x00F0, 0x00F0, 0x00F0, 0x0000, 0x0000}},
|
||||
{'W', {0x0E0E, 0x0E0E, 0x0E0E, 0x0E0E, 0x0E0E, 0x0E0E, 0x06B6, 0x06B6, 0x06B6, 0x07F7, 0x07F7, 0x07F7, 0x03E3, 0x03E3, 0x0000, 0x0000}},
|
||||
{'X', {0x0E07, 0x070E, 0x070E, 0x039C, 0x01F8, 0x01F8, 0x00F0, 0x00F0, 0x01F8, 0x01F8, 0x039C, 0x070E, 0x070E, 0x0E07, 0x0000, 0x0000}},
|
||||
{'Y', {0x0E07, 0x070E, 0x070E, 0x039C, 0x039C, 0x01F8, 0x01F8, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x0000, 0x0000}},
|
||||
{'Z', {0x07FF, 0x07FF, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x0700, 0x0E00, 0x0E00, 0x07FF, 0x07FF, 0x0000, 0x0000}},
|
||||
{'[', {0x003F, 0x003F, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x003F, 0x003F, 0x0000}},
|
||||
{'\\', {0x3000, 0x3800, 0x1C00, 0x0E00, 0x0700, 0x0380, 0x01C0, 0x00E0, 0x0070, 0x0038, 0x001C, 0x000E, 0x0007, 0x0003, 0x0000, 0x0000}},
|
||||
{']', {0x003F, 0x003F, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x003F, 0x003F, 0x0000}},
|
||||
{'^', {0x0030, 0x0078, 0x00FC, 0x01CE, 0x0387, 0x0303, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'_', {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF}},
|
||||
{'`', {0x000C, 0x0006, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
{'a', {0x0000, 0x0000, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0007, 0x007F, 0x00FF, 0x01C7, 0x0387, 0x0387, 0x01FF, 0x00F7, 0x0000, 0x0000}},
|
||||
{'b', {0x0380, 0x0380, 0x0380, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x03CF, 0x03FE, 0x03BC, 0x0000, 0x0000}},
|
||||
{'c', {0x0000, 0x0000, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0383, 0x0380, 0x0380, 0x0380, 0x0383, 0x01C7, 0x00FE, 0x007C, 0x0000, 0x0000}},
|
||||
{'d', {0x0007, 0x0007, 0x0007, 0x0077, 0x00FF, 0x01CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x00FF, 0x0077, 0x0000, 0x0000}},
|
||||
{'e', {0x0000, 0x0000, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0383, 0x03FF, 0x03FF, 0x0380, 0x0381, 0x01C3, 0x00FF, 0x007C, 0x0000, 0x0000}},
|
||||
{'f', {0x001F, 0x003F, 0x0078, 0x0070, 0x01FE, 0x01FE, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0000, 0x0000}},
|
||||
{'g', {0x0000, 0x0000, 0x0000, 0x0077, 0x00FF, 0x01CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x00FF, 0x0077, 0x0007, 0x01FE, 0x01FC}},
|
||||
{'h', {0x0380, 0x0380, 0x0380, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0000, 0x0000}},
|
||||
{'i', {0x000C, 0x000C, 0x0000, 0x003C, 0x003C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x003F, 0x003F, 0x0000, 0x0000}},
|
||||
{'j', {0x0003, 0x0003, 0x0000, 0x000F, 0x000F, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0E03, 0x0E03, 0x007E, 0x003C}},
|
||||
{'k', {0x0700, 0x0700, 0x0700, 0x070E, 0x071C, 0x0738, 0x0770, 0x07E0, 0x07E0, 0x0770, 0x0738, 0x071C, 0x070E, 0x0707, 0x0000, 0x0000}},
|
||||
{'l', {0x003C, 0x003C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x003F, 0x003F, 0x0000, 0x0000}},
|
||||
{'m', {0x0000, 0x0000, 0x0000, 0x0EE7, 0x0FFF, 0x0F3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0E3B, 0x0000, 0x0000}},
|
||||
{'n', {0x0000, 0x0000, 0x0000, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0000, 0x0000}},
|
||||
{'o', {0x0000, 0x0000, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0383, 0x0383, 0x0383, 0x0383, 0x0383, 0x01C7, 0x00FE, 0x007C, 0x0000, 0x0000}},
|
||||
{'p', {0x0000, 0x0000, 0x0000, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x03CF, 0x03FE, 0x03BC, 0x0380, 0x0380, 0x0380}},
|
||||
{'q', {0x0000, 0x0000, 0x0000, 0x0077, 0x00FF, 0x01CF, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x00FF, 0x0077, 0x0007, 0x0007, 0x0007}},
|
||||
{'r', {0x0000, 0x0000, 0x0000, 0x03BC, 0x03FE, 0x03CF, 0x0387, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0000, 0x0000}},
|
||||
{'s', {0x0000, 0x0000, 0x0000, 0x00FC, 0x01FE, 0x0387, 0x0380, 0x01F8, 0x00FE, 0x0007, 0x0007, 0x0387, 0x03FE, 0x01FC, 0x0000, 0x0000}},
|
||||
{'t', {0x0038, 0x0038, 0x0038, 0x00FF, 0x00FF, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x001F, 0x000F, 0x0000, 0x0000}},
|
||||
{'u', {0x0000, 0x0000, 0x0000, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x01FF, 0x0077, 0x0000, 0x0000}},
|
||||
{'v', {0x0000, 0x0000, 0x0000, 0x0707, 0x0707, 0x038E, 0x038E, 0x038E, 0x01DC, 0x01DC, 0x00F8, 0x00F8, 0x0070, 0x0070, 0x0000, 0x0000}},
|
||||
{'w', {0x0000, 0x0000, 0x0000, 0x0E0E, 0x0E0E, 0x0E0E, 0x06B6, 0x06B6, 0x06B6, 0x07F7, 0x07F7, 0x07F7, 0x03E3, 0x03E3, 0x0000, 0x0000}},
|
||||
{'x', {0x0000, 0x0000, 0x0000, 0x0707, 0x038E, 0x01DC, 0x00F8, 0x0070, 0x0070, 0x00F8, 0x01DC, 0x038E, 0x0707, 0x0707, 0x0000, 0x0000}},
|
||||
{'y', {0x0000, 0x0000, 0x0000, 0x0707, 0x0707, 0x038E, 0x038E, 0x01DC, 0x01DC, 0x00F8, 0x00F8, 0x0070, 0x0070, 0x00E0, 0x01C0, 0x0000}},
|
||||
{'z', {0x0000, 0x0000, 0x0000, 0x03FF, 0x03FF, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0380, 0x03FF, 0x03FF, 0x0000, 0x0000}},
|
||||
{'{', {0x000F, 0x001E, 0x001C, 0x001C, 0x001C, 0x001C, 0x0038, 0x0070, 0x0038, 0x001C, 0x001C, 0x001C, 0x001C, 0x001E, 0x000F, 0x0000}},
|
||||
{'|', {0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0000}},
|
||||
{'}', {0x0078, 0x003C, 0x001C, 0x001C, 0x001C, 0x001C, 0x000E, 0x0007, 0x000E, 0x001C, 0x001C, 0x001C, 0x001C, 0x003C, 0x0078, 0x0000}},
|
||||
{'~', {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01C7, 0x03EF, 0x077E, 0x0738, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
// {'°', {0x000E, 0x001F, 0x001F, 0x001F, 0x000E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
// {'Ä', {0x018C, 0x018C, 0x0000, 0x00F8, 0x01FC, 0x038E, 0x038E, 0x038E, 0x03FE, 0x07FF, 0x0707, 0x0707, 0x0707, 0x0707, 0x0000, 0x0000}},
|
||||
// {'Ö', {0x0318, 0x0318, 0x0000, 0x01F8, 0x03FC, 0x078E, 0x0706, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0706, 0x078E, 0x03FC, 0x01F8, 0x0000}},
|
||||
// {'Ü', {0x0318, 0x0318, 0x0000, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x0E07, 0x070E, 0x07FE, 0x01F8, 0x0000}},
|
||||
// {'ä', {0x00C6, 0x00C6, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0007, 0x007F, 0x00FF, 0x01C7, 0x0387, 0x0387, 0x01FF, 0x00F7, 0x0000, 0x0000}},
|
||||
// {'ö', {0x00C6, 0x00C6, 0x0000, 0x007C, 0x00FE, 0x01C7, 0x0383, 0x0383, 0x0383, 0x0383, 0x0383, 0x01C7, 0x00FE, 0x007C, 0x0000, 0x0000}},
|
||||
// {'ü', {0x00C6, 0x00C6, 0x0000, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x01CF, 0x01FF, 0x0077, 0x0000, 0x0000}},
|
||||
// {'ß', {0x007C, 0x00FE, 0x01C7, 0x01C7, 0x01C7, 0x01CE, 0x01FC, 0x01FE, 0x01CF, 0x01C7, 0x01C7, 0x01CF, 0x01FE, 0x01BC, 0x0180, 0x0180}},
|
||||
// {'•', {0x0000, 0x0000, 0x0000, 0x0000, 0x003C, 0x007E, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x007E, 0x003C, 0x0000, 0x0000, 0x0000, 0x0000}},
|
||||
// {'€', {0x01F8, 0x07FC, 0x0F0E, 0x1C07, 0x1FC0, 0x1FC0, 0x3800, 0x1FC0, 0x1FC0, 0x3800, 0x1FC0, 0x1FC0, 0x1C07, 0x0F0E, 0x07FC, 0x01F8}}
|
||||
};
|
||||
|
||||
// Character mapping
|
||||
const char font_chars_16x16[] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°ÄÖÜäßäöü•€";
|
||||
|
||||
// Declarations only
|
||||
const uint16_t *getFontChar_16x16(char c);
|
||||
const std::vector<uint16_t> &getFontChar_16x16(char c);
|
||||
const uint8_t fontHeight_16x16();
|
||||
|
||||
#endif
|
||||
@@ -1,16 +1,14 @@
|
||||
#include "font_5x7.h"
|
||||
|
||||
// Function to get font data for a character
|
||||
const uint8_t *getFontChar_5x7(char c)
|
||||
const std::vector<uint8_t> &getFontChar_5x7(char c)
|
||||
{
|
||||
for (int i = 0; i < sizeof(font_chars_5x7) - 1; i++)
|
||||
auto it = font_5x7.find(c);
|
||||
if (it != font_5x7.end())
|
||||
{
|
||||
if (font_chars_5x7[i] == c)
|
||||
{
|
||||
return font_5x7[i];
|
||||
}
|
||||
return it->second;
|
||||
}
|
||||
return font_5x7[52]; // Return space if not found (index of ' ')
|
||||
return font_5x7.at(' '); // Fallback to space
|
||||
}
|
||||
|
||||
const uint8_t fontHeight_5x7()
|
||||
|
||||
@@ -1,124 +1,122 @@
|
||||
#ifndef FONT_5X7_H
|
||||
#define FONT_5X7_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
// 5x7 Font mit optimierten Zeichenbreiten
|
||||
const uint8_t font_5x7[][7] = {
|
||||
using namespace std;
|
||||
|
||||
const std::map<uint8_t, std::vector<uint8_t>> font_5x7 = {
|
||||
// Uppercase letters (A-Z)
|
||||
{0x0E, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x11}, // 'A' Width: 5
|
||||
{0x1E, 0x11, 0x11, 0x1E, 0x11, 0x11, 0x1E}, // 'B' Width: 5
|
||||
{0x0E, 0x11, 0x10, 0x10, 0x10, 0x11, 0x0E}, // 'C' Width: 5
|
||||
{0x1E, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1E}, // 'D' Width: 5
|
||||
{0x1F, 0x10, 0x10, 0x1E, 0x10, 0x10, 0x1F}, // 'E' Width: 5
|
||||
{0x1F, 0x10, 0x10, 0x1E, 0x10, 0x10, 0x10}, // 'F' Width: 5
|
||||
{0x0E, 0x11, 0x10, 0x13, 0x11, 0x11, 0x0F}, // 'G' Width: 5
|
||||
{0x11, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x11}, // 'H' Width: 5
|
||||
{0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07}, // 'I' Width: 3
|
||||
{0x07, 0x02, 0x02, 0x02, 0x02, 0x12, 0x0C}, // 'J' Width: 4
|
||||
{0x11, 0x12, 0x14, 0x18, 0x14, 0x12, 0x11}, // 'K' Width: 5
|
||||
{0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F}, // 'L' Width: 5
|
||||
{0x11, 0x1B, 0x15, 0x15, 0x11, 0x11, 0x11}, // 'M' Width: 5
|
||||
{0x11, 0x19, 0x19, 0x15, 0x13, 0x13, 0x11}, // 'N' Width: 5
|
||||
{0x0E, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E}, // 'O' Width: 5
|
||||
{0x1E, 0x11, 0x11, 0x1E, 0x10, 0x10, 0x10}, // 'P' Width: 5
|
||||
{0x0E, 0x11, 0x11, 0x11, 0x15, 0x12, 0x0D}, // 'Q' Width: 5
|
||||
{0x1E, 0x11, 0x11, 0x1E, 0x14, 0x12, 0x11}, // 'R' Width: 5
|
||||
{0x0F, 0x10, 0x10, 0x0E, 0x01, 0x01, 0x1E}, // 'S' Width: 5
|
||||
{0x1F, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, // 'T' Width: 5
|
||||
{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E}, // 'U' Width: 5
|
||||
{0x11, 0x11, 0x11, 0x11, 0x11, 0x0A, 0x04}, // 'V' Width: 5
|
||||
{0x11, 0x11, 0x11, 0x15, 0x15, 0x15, 0x0A}, // 'W' Width: 5
|
||||
{0x11, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x11}, // 'X' Width: 5
|
||||
{0x11, 0x11, 0x0A, 0x04, 0x04, 0x04, 0x04}, // 'Y' Width: 5
|
||||
{0x1F, 0x01, 0x02, 0x04, 0x08, 0x10, 0x1F}, // 'Z' Width: 5
|
||||
{'A', {0x0E, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x11}},
|
||||
{'B', {0x1E, 0x11, 0x11, 0x1E, 0x11, 0x11, 0x1E}},
|
||||
{'C', {0x0E, 0x11, 0x10, 0x10, 0x10, 0x11, 0x0E}},
|
||||
{'D', {0x1E, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1E}},
|
||||
{'E', {0x1F, 0x10, 0x10, 0x1E, 0x10, 0x10, 0x1F}},
|
||||
{'F', {0x1F, 0x10, 0x10, 0x1E, 0x10, 0x10, 0x10}},
|
||||
{'G', {0x0E, 0x11, 0x10, 0x13, 0x11, 0x11, 0x0F}},
|
||||
{'H', {0x11, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x11}},
|
||||
{'I', {0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07}},
|
||||
{'J', {0x07, 0x02, 0x02, 0x02, 0x02, 0x12, 0x0C}},
|
||||
{'K', {0x11, 0x12, 0x14, 0x18, 0x14, 0x12, 0x11}},
|
||||
{'L', {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F}},
|
||||
{'M', {0x11, 0x1B, 0x15, 0x15, 0x11, 0x11, 0x11}},
|
||||
{'N', {0x11, 0x19, 0x19, 0x15, 0x13, 0x13, 0x11}},
|
||||
{'O', {0x0E, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E}},
|
||||
{'P', {0x1E, 0x11, 0x11, 0x1E, 0x10, 0x10, 0x10}},
|
||||
{'Q', {0x0E, 0x11, 0x11, 0x11, 0x15, 0x12, 0x0D}},
|
||||
{'R', {0x1E, 0x11, 0x11, 0x1E, 0x14, 0x12, 0x11}},
|
||||
{'S', {0x0F, 0x10, 0x10, 0x0E, 0x01, 0x01, 0x1E}},
|
||||
{'T', {0x1F, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}},
|
||||
{'U', {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E}},
|
||||
{'V', {0x11, 0x11, 0x11, 0x11, 0x11, 0x0A, 0x04}},
|
||||
{'W', {0x11, 0x11, 0x11, 0x15, 0x15, 0x15, 0x0A}},
|
||||
{'X', {0x11, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x11}},
|
||||
{'Y', {0x11, 0x11, 0x0A, 0x04, 0x04, 0x04, 0x04}},
|
||||
{'Z', {0x1F, 0x01, 0x02, 0x04, 0x08, 0x10, 0x1F}},
|
||||
|
||||
// Lowercase letters (a-z)
|
||||
{0x00, 0x00, 0x0E, 0x01, 0x0F, 0x11, 0x0F}, // 'a' Width: 4
|
||||
{0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1E}, // 'b' Width: 5
|
||||
{0x00, 0x00, 0x0E, 0x11, 0x10, 0x11, 0x0E}, // 'c' Width: 4
|
||||
{0x01, 0x01, 0x0D, 0x13, 0x11, 0x11, 0x0F}, // 'd' Width: 5
|
||||
{0x00, 0x00, 0x0E, 0x11, 0x1F, 0x10, 0x0E}, // 'e' Width: 4
|
||||
{0x06, 0x09, 0x08, 0x1C, 0x08, 0x08, 0x08}, // 'f' Width: 4
|
||||
{0x00, 0x0F, 0x11, 0x11, 0x0F, 0x01, 0x0E}, // 'g' Width: 5
|
||||
{0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x11}, // 'h' Width: 5
|
||||
{0x00, 0x02, 0x00, 0x06, 0x02, 0x02, 0x07}, // 'i' Width: 2
|
||||
{0x00, 0x02, 0x00, 0x06, 0x02, 0x12, 0x0C}, // 'j' Width: 3
|
||||
{0x10, 0x10, 0x12, 0x14, 0x18, 0x14, 0x12}, // 'k' Width: 4
|
||||
{0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07}, // 'l' Width: 3
|
||||
{0x00, 0x00, 0x1A, 0x15, 0x15, 0x15, 0x15}, // 'm' Width: 5
|
||||
{0x00, 0x00, 0x16, 0x19, 0x11, 0x11, 0x11}, // 'n' Width: 5
|
||||
{0x00, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x0E}, // 'o' Width: 4
|
||||
{0x00, 0x00, 0x1E, 0x11, 0x1E, 0x10, 0x10}, // 'p' Width: 5
|
||||
{0x00, 0x00, 0x0D, 0x13, 0x0F, 0x01, 0x01}, // 'q' Width: 5
|
||||
{0x00, 0x00, 0x16, 0x19, 0x10, 0x10, 0x10}, // 'r' Width: 5
|
||||
{0x00, 0x00, 0x0E, 0x10, 0x0E, 0x01, 0x1E}, // 's' Width: 4
|
||||
{0x08, 0x08, 0x1C, 0x08, 0x08, 0x09, 0x06}, // 't' Width: 4
|
||||
{0x00, 0x00, 0x11, 0x11, 0x11, 0x13, 0x0D}, // 'u' Width: 5
|
||||
{0x00, 0x00, 0x11, 0x11, 0x11, 0x0A, 0x04}, // 'v' Width: 5
|
||||
{0x00, 0x00, 0x11, 0x11, 0x15, 0x15, 0x0A}, // 'w' Width: 5
|
||||
{0x00, 0x00, 0x11, 0x0A, 0x04, 0x0A, 0x11}, // 'x' Width: 5
|
||||
{0x00, 0x00, 0x11, 0x11, 0x0F, 0x01, 0x0E}, // 'y' Width: 5
|
||||
{0x00, 0x00, 0x1F, 0x02, 0x04, 0x08, 0x1F}, // 'z' Width: 5
|
||||
{'a', {0x00, 0x00, 0x0E, 0x01, 0x0F, 0x11, 0x0F}},
|
||||
{'b', {0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1E}},
|
||||
{'c', {0x00, 0x00, 0x0E, 0x11, 0x10, 0x11, 0x0E}},
|
||||
{'d', {0x01, 0x01, 0x0D, 0x13, 0x11, 0x11, 0x0F}},
|
||||
{'e', {0x00, 0x00, 0x0E, 0x11, 0x1F, 0x10, 0x0E}},
|
||||
{'f', {0x06, 0x09, 0x08, 0x1C, 0x08, 0x08, 0x08}},
|
||||
{'g', {0x00, 0x0F, 0x11, 0x11, 0x0F, 0x01, 0x0E}},
|
||||
{'h', {0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x11}},
|
||||
{'i', {0x00, 0x02, 0x00, 0x06, 0x02, 0x02, 0x07}},
|
||||
{'j', {0x00, 0x02, 0x00, 0x06, 0x02, 0x12, 0x0C}},
|
||||
{'k', {0x10, 0x10, 0x12, 0x14, 0x18, 0x14, 0x12}},
|
||||
{'l', {0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07}},
|
||||
{'m', {0x00, 0x00, 0x1A, 0x15, 0x15, 0x15, 0x15}},
|
||||
{'n', {0x00, 0x00, 0x16, 0x19, 0x11, 0x11, 0x11}},
|
||||
{'o', {0x00, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x0E}},
|
||||
{'p', {0x00, 0x00, 0x1E, 0x11, 0x1E, 0x10, 0x10}},
|
||||
{'q', {0x00, 0x00, 0x0D, 0x13, 0x0F, 0x01, 0x01}},
|
||||
{'r', {0x00, 0x00, 0x16, 0x19, 0x10, 0x10, 0x10}},
|
||||
{'s', {0x00, 0x00, 0x0E, 0x10, 0x0E, 0x01, 0x1E}},
|
||||
{'t', {0x08, 0x08, 0x1C, 0x08, 0x08, 0x09, 0x06}},
|
||||
{'u', {0x00, 0x00, 0x11, 0x11, 0x11, 0x13, 0x0D}},
|
||||
{'v', {0x00, 0x00, 0x11, 0x11, 0x11, 0x0A, 0x04}},
|
||||
{'w', {0x00, 0x00, 0x11, 0x11, 0x15, 0x15, 0x0A}},
|
||||
{'x', {0x00, 0x00, 0x11, 0x0A, 0x04, 0x0A, 0x11}},
|
||||
{'y', {0x00, 0x00, 0x11, 0x11, 0x0F, 0x01, 0x0E}},
|
||||
{'z', {0x00, 0x00, 0x1F, 0x02, 0x04, 0x08, 0x1F}},
|
||||
|
||||
// Numbers (0-9)
|
||||
{0x0E, 0x11, 0x13, 0x15, 0x19, 0x11, 0x0E}, // '0' Width: 5
|
||||
{0x02, 0x06, 0x02, 0x02, 0x02, 0x02, 0x07}, // '1' Width: 3
|
||||
{0x0E, 0x11, 0x01, 0x02, 0x04, 0x08, 0x1F}, // '2' Width: 5
|
||||
{0x1F, 0x02, 0x04, 0x02, 0x01, 0x11, 0x0E}, // '3' Width: 5
|
||||
{0x02, 0x06, 0x0A, 0x12, 0x1F, 0x02, 0x02}, // '4' Width: 5
|
||||
{0x1F, 0x10, 0x1E, 0x01, 0x01, 0x11, 0x0E}, // '5' Width: 5
|
||||
{0x06, 0x08, 0x10, 0x1E, 0x11, 0x11, 0x0E}, // '6' Width: 5
|
||||
{0x1F, 0x01, 0x02, 0x04, 0x08, 0x08, 0x08}, // '7' Width: 5
|
||||
{0x0E, 0x11, 0x11, 0x0E, 0x11, 0x11, 0x0E}, // '8' Width: 5
|
||||
{0x0E, 0x11, 0x11, 0x0F, 0x01, 0x02, 0x0C}, // '9' Width: 5
|
||||
{'0', {0x0E, 0x11, 0x13, 0x15, 0x19, 0x11, 0x0E}},
|
||||
{'1', {0x02, 0x06, 0x02, 0x02, 0x02, 0x02, 0x07}},
|
||||
{'2', {0x0E, 0x11, 0x01, 0x02, 0x04, 0x08, 0x1F}},
|
||||
{'3', {0x1F, 0x02, 0x04, 0x02, 0x01, 0x11, 0x0E}},
|
||||
{'4', {0x02, 0x06, 0x0A, 0x12, 0x1F, 0x02, 0x02}},
|
||||
{'5', {0x1F, 0x10, 0x1E, 0x01, 0x01, 0x11, 0x0E}},
|
||||
{'6', {0x06, 0x08, 0x10, 0x1E, 0x11, 0x11, 0x0E}},
|
||||
{'7', {0x1F, 0x01, 0x02, 0x04, 0x08, 0x08, 0x08}},
|
||||
{'8', {0x0E, 0x11, 0x11, 0x0E, 0x11, 0x11, 0x0E}},
|
||||
{'9', {0x0E, 0x11, 0x11, 0x0F, 0x01, 0x02, 0x0C}},
|
||||
|
||||
// Punctuation and symbols
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ' ' Width: 2
|
||||
{0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01}, // '!' Width: 1
|
||||
{0x0E, 0x11, 0x02, 0x04, 0x04, 0x00, 0x04}, // '?' Width: 5
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, // '.' Width: 1
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02}, // ',' Width: 1
|
||||
{0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00}, // ':' Width: 1
|
||||
{0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02}, // ';' Width: 1
|
||||
{0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, // "'" Width: 1
|
||||
{0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}, // '"' Width: 3
|
||||
{0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00}, // '-' Width: 5
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F}, // '_' Width: 5
|
||||
{0x00, 0x04, 0x04, 0x1F, 0x04, 0x04, 0x00}, // '+' Width: 5
|
||||
{0x00, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00}, // '=' Width: 5
|
||||
{0x00, 0x0A, 0x04, 0x1F, 0x04, 0x0A, 0x00}, // '*' Width: 5
|
||||
{0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00}, // '/' Width: 5
|
||||
{0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00}, // '\\' Width: 5
|
||||
{0x01, 0x02, 0x04, 0x04, 0x04, 0x02, 0x01}, // '(' Width: 3
|
||||
{0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x04}, // ')' Width: 3
|
||||
{0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07}, // '[' Width: 3
|
||||
{0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07}, // ']' Width: 3
|
||||
{0x03, 0x02, 0x02, 0x04, 0x02, 0x02, 0x03}, // '{' Width: 3
|
||||
{0x06, 0x02, 0x02, 0x01, 0x02, 0x02, 0x06}, // '}' Width: 3
|
||||
{0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00}, // '<' Width: 4
|
||||
{0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00}, // '>' Width: 4
|
||||
{0x0E, 0x11, 0x17, 0x15, 0x17, 0x10, 0x0E}, // '@' Width: 5
|
||||
{0x0A, 0x0A, 0x1F, 0x0A, 0x1F, 0x0A, 0x0A}, // '#' Width: 5
|
||||
{0x04, 0x0F, 0x14, 0x0E, 0x05, 0x1E, 0x04}, // '$' Width: 5
|
||||
{0x18, 0x19, 0x02, 0x04, 0x08, 0x13, 0x03}, // '%' Width: 5
|
||||
{0x0C, 0x12, 0x14, 0x08, 0x15, 0x12, 0x0D}, // '&' Width: 5
|
||||
{0x04, 0x0A, 0x11, 0x00, 0x00, 0x00, 0x00}, // '^' Width: 5
|
||||
{0x00, 0x00, 0x00, 0x0D, 0x12, 0x00, 0x00}, // '~' Width: 5
|
||||
{' ', {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'!', {0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01}},
|
||||
{'?', {0x0E, 0x11, 0x02, 0x04, 0x04, 0x00, 0x04}},
|
||||
{'.', {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}},
|
||||
{',', {0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02}},
|
||||
{':', {0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00}},
|
||||
{';', {0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02}},
|
||||
{'\'', {0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'"', {0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'-', {0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00}},
|
||||
{'_', {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F}},
|
||||
{'+', {0x00, 0x04, 0x04, 0x1F, 0x04, 0x04, 0x00}},
|
||||
{'=', {0x00, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00}},
|
||||
{'*', {0x00, 0x0A, 0x04, 0x1F, 0x04, 0x0A, 0x00}},
|
||||
{'/', {0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00}},
|
||||
{'\\', {0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00}},
|
||||
{'(', {0x01, 0x02, 0x04, 0x04, 0x04, 0x02, 0x01}},
|
||||
{')', {0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x04}},
|
||||
{'[', {0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07}},
|
||||
{']', {0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07}},
|
||||
{'{', {0x03, 0x02, 0x02, 0x04, 0x02, 0x02, 0x03}},
|
||||
{'}', {0x06, 0x02, 0x02, 0x01, 0x02, 0x02, 0x06}},
|
||||
{'<', {0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00}},
|
||||
{'>', {0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00}},
|
||||
{'@', {0x0E, 0x11, 0x17, 0x15, 0x17, 0x10, 0x0E}},
|
||||
{'#', {0x0A, 0x0A, 0x1F, 0x0A, 0x1F, 0x0A, 0x0A}},
|
||||
{'$', {0x04, 0x0F, 0x14, 0x0E, 0x05, 0x1E, 0x04}},
|
||||
{'%', {0x18, 0x19, 0x02, 0x04, 0x08, 0x13, 0x03}},
|
||||
{'&', {0x0C, 0x12, 0x14, 0x08, 0x15, 0x12, 0x0D}},
|
||||
|
||||
// Special characters
|
||||
{0x07, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00}, // '°' Width: 3
|
||||
{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, // '|' Width: 1
|
||||
{0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, // '`' Width: 2
|
||||
{0x0F, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D}, // '¶' Width: 5
|
||||
{0x00, 0x00, 0x02, 0x07, 0x02, 0x00, 0x00} // '•' Width: 3
|
||||
// {'°', {0x07, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'|', {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}},
|
||||
{'`', {0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}},
|
||||
// {'¶', {0x0F, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D}},
|
||||
// {'•', {0x00, 0x00, 0x02, 0x07, 0x02, 0x00, 0x00}}
|
||||
};
|
||||
|
||||
// Character mapping
|
||||
const char font_chars_5x7[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 !?.,:;'\"-_+=*/\\()[]{}<>@#$%&^~°|`¶•";
|
||||
|
||||
// Declarations only
|
||||
const uint8_t *getFontChar_5x7(char c);
|
||||
const vector<uint8_t> &getFontChar_5x7(char c);
|
||||
const uint8_t fontHeight_5x7();
|
||||
|
||||
#endif
|
||||
@@ -1,16 +1,14 @@
|
||||
#include "font_8x8.h"
|
||||
|
||||
// Function to get font data for a character
|
||||
const uint8_t *getFontChar_8x8(char c)
|
||||
const std::vector<uint8_t> &getFontChar_8x8(char c)
|
||||
{
|
||||
for (int i = 0; i < sizeof(font_chars_8x8) - 1; i++)
|
||||
auto it = font_8x8.find(c);
|
||||
if (it != font_8x8.end())
|
||||
{
|
||||
if (font_chars_8x8[i] == c)
|
||||
{
|
||||
return font_8x8[i];
|
||||
}
|
||||
return it->second;
|
||||
}
|
||||
return font_8x8[0]; // Return space if not found (index of ' ')
|
||||
return font_8x8.at(' '); // Fallback to space
|
||||
}
|
||||
|
||||
const uint8_t fontHeight_8x8()
|
||||
|
||||
@@ -1,117 +1,117 @@
|
||||
#ifndef FONT_8X8_H
|
||||
#define FONT_8X8_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
const uint8_t font_8x8[][8] = {
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ' ' (Space)
|
||||
{0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x03, 0x00}, // '!'
|
||||
{0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '"'
|
||||
{0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // '#'
|
||||
{0x0C, 0x1F, 0x30, 0x1E, 0x03, 0x3E, 0x0C, 0x00}, // '$'
|
||||
{0x31, 0x33, 0x06, 0x0C, 0x18, 0x33, 0x23, 0x00}, // '%'
|
||||
{0x3C, 0x66, 0x3C, 0x38, 0x67, 0x66, 0x3F, 0x00}, // '&'
|
||||
{0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // "'"
|
||||
{0x03, 0x06, 0x0C, 0x0C, 0x0C, 0x06, 0x03, 0x00}, // '('
|
||||
{0x0C, 0x06, 0x03, 0x03, 0x03, 0x06, 0x0C, 0x00}, // ')'
|
||||
{0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // '*'
|
||||
{0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // '+'
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x06}, // ','
|
||||
{0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // '-'
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00}, // '.'
|
||||
{0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00}, // '/'
|
||||
{0x1E, 0x33, 0x37, 0x3B, 0x33, 0x33, 0x1E, 0x00}, // '0'
|
||||
{0x0C, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // '1'
|
||||
{0x1E, 0x33, 0x03, 0x06, 0x0C, 0x18, 0x3F, 0x00}, // '2'
|
||||
{0x1E, 0x33, 0x03, 0x0E, 0x03, 0x33, 0x1E, 0x00}, // '3'
|
||||
{0x06, 0x0E, 0x1E, 0x36, 0x3F, 0x06, 0x06, 0x00}, // '4'
|
||||
{0x3F, 0x30, 0x3E, 0x03, 0x03, 0x33, 0x1E, 0x00}, // '5'
|
||||
{0x1E, 0x33, 0x30, 0x3E, 0x33, 0x33, 0x1E, 0x00}, // '6'
|
||||
{0x3F, 0x03, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x00}, // '7'
|
||||
{0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // '8'
|
||||
{0x1E, 0x33, 0x33, 0x1F, 0x03, 0x33, 0x1E, 0x00}, // '9'
|
||||
{0x00, 0x03, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00}, // ':'
|
||||
{0x00, 0x03, 0x03, 0x00, 0x00, 0x03, 0x03, 0x06}, // ';'
|
||||
{0x00, 0x03, 0x06, 0x0C, 0x06, 0x03, 0x00, 0x00}, // '<'
|
||||
{0x00, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x00, 0x00}, // '='
|
||||
{0x00, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x00, 0x00}, // '>'
|
||||
{0x1E, 0x33, 0x06, 0x0C, 0x0C, 0x00, 0x0C, 0x00}, // '?'
|
||||
{0x3C, 0x42, 0x99, 0xA5, 0xA5, 0x9E, 0x40, 0x3C}, // '@'
|
||||
{0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // 'A'
|
||||
{0x3E, 0x33, 0x33, 0x3E, 0x33, 0x33, 0x3E, 0x00}, // 'B'
|
||||
{0x1E, 0x33, 0x30, 0x30, 0x30, 0x33, 0x1E, 0x00}, // 'C'
|
||||
{0x3C, 0x36, 0x33, 0x33, 0x33, 0x36, 0x3C, 0x00}, // 'D'
|
||||
{0x3F, 0x30, 0x30, 0x3C, 0x30, 0x30, 0x3F, 0x00}, // 'E'
|
||||
{0x3F, 0x30, 0x30, 0x3C, 0x30, 0x30, 0x30, 0x00}, // 'F'
|
||||
{0x1E, 0x33, 0x30, 0x37, 0x33, 0x33, 0x1E, 0x00}, // 'G'
|
||||
{0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // 'H'
|
||||
{0x0F, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0F, 0x00}, // 'I'
|
||||
{0x0F, 0x06, 0x06, 0x06, 0x06, 0x36, 0x1C, 0x00}, // 'J'
|
||||
{0x33, 0x36, 0x3C, 0x38, 0x3C, 0x36, 0x33, 0x00}, // 'K'
|
||||
{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3F, 0x00}, // 'L'
|
||||
{0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x63, 0x00}, // 'M'
|
||||
{0x33, 0x3B, 0x3F, 0x3F, 0x37, 0x33, 0x33, 0x00}, // 'N'
|
||||
{0x1E, 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x00}, // 'O'
|
||||
{0x3E, 0x33, 0x33, 0x3E, 0x30, 0x30, 0x30, 0x00}, // 'P'
|
||||
{0x1E, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x07, 0x00}, // 'Q'
|
||||
{0x3E, 0x33, 0x33, 0x3E, 0x3C, 0x36, 0x33, 0x00}, // 'R'
|
||||
{0x1E, 0x33, 0x30, 0x1E, 0x03, 0x33, 0x1E, 0x00}, // 'S'
|
||||
{0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00}, // 'T'
|
||||
{0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x00}, // 'U'
|
||||
{0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // 'V'
|
||||
{0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // 'W'
|
||||
{0x33, 0x33, 0x1E, 0x0C, 0x1E, 0x33, 0x33, 0x00}, // 'X'
|
||||
{0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x0C, 0x00}, // 'Y'
|
||||
{0x3F, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x3F, 0x00}, // 'Z'
|
||||
{0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x00}, // '['
|
||||
{0x00, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00}, // '\'
|
||||
{0x0F, 0x03, 0x03, 0x03, 0x03, 0x03, 0x0F, 0x00}, // ']'
|
||||
{0x0C, 0x1E, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00}, // '^'
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F}, // '_'
|
||||
{0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '`'
|
||||
{0x00, 0x00, 0x1E, 0x03, 0x1F, 0x33, 0x1F, 0x00}, // 'a'
|
||||
{0x30, 0x30, 0x3E, 0x33, 0x33, 0x33, 0x3E, 0x00}, // 'b'
|
||||
{0x00, 0x00, 0x1E, 0x33, 0x30, 0x33, 0x1E, 0x00}, // 'c'
|
||||
{0x03, 0x03, 0x1F, 0x33, 0x33, 0x33, 0x1F, 0x00}, // 'd'
|
||||
{0x00, 0x00, 0x1E, 0x33, 0x3F, 0x30, 0x1E, 0x00}, // 'e'
|
||||
{0x0E, 0x1B, 0x18, 0x3C, 0x18, 0x18, 0x18, 0x00}, // 'f'
|
||||
{0x00, 0x00, 0x1F, 0x33, 0x33, 0x1F, 0x03, 0x3E}, // 'g'
|
||||
{0x30, 0x30, 0x3E, 0x33, 0x33, 0x33, 0x33, 0x00}, // 'h'
|
||||
{0x06, 0x00, 0x0E, 0x06, 0x06, 0x06, 0x0F, 0x00}, // 'i'
|
||||
{0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x1E}, // 'j'
|
||||
{0x30, 0x30, 0x33, 0x36, 0x3C, 0x36, 0x33, 0x00}, // 'k'
|
||||
{0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0F, 0x00}, // 'l'
|
||||
{0x00, 0x00, 0x66, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // 'm'
|
||||
{0x00, 0x00, 0x3E, 0x33, 0x33, 0x33, 0x33, 0x00}, // 'n'
|
||||
{0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // 'o'
|
||||
{0x00, 0x00, 0x3E, 0x33, 0x33, 0x3E, 0x30, 0x30}, // 'p'
|
||||
{0x00, 0x00, 0x1F, 0x33, 0x33, 0x1F, 0x03, 0x03}, // 'q'
|
||||
{0x00, 0x00, 0x3E, 0x33, 0x30, 0x30, 0x30, 0x00}, // 'r'
|
||||
{0x00, 0x00, 0x1F, 0x30, 0x1E, 0x03, 0x3E, 0x00}, // 's'
|
||||
{0x0C, 0x0C, 0x1F, 0x0C, 0x0C, 0x0C, 0x07, 0x00}, // 't'
|
||||
{0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x1F, 0x00}, // 'u'
|
||||
{0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // 'v'
|
||||
{0x00, 0x00, 0x63, 0x6B, 0x7F, 0x3E, 0x36, 0x00}, // 'w'
|
||||
{0x00, 0x00, 0x33, 0x1E, 0x0C, 0x1E, 0x33, 0x00}, // 'x'
|
||||
{0x00, 0x00, 0x33, 0x33, 0x33, 0x1F, 0x06, 0x3C}, // 'y'
|
||||
{0x00, 0x00, 0x3F, 0x06, 0x0C, 0x18, 0x3F, 0x00}, // 'z'
|
||||
{0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // '{'
|
||||
{0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00}, // '|'
|
||||
{0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // '}'
|
||||
{0x00, 0x00, 0x00, 0x1B, 0x36, 0x00, 0x00, 0x00}, // '~'
|
||||
{0x0E, 0x11, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00}, // '°'
|
||||
{0x1F, 0x3D, 0x3D, 0x3D, 0x1D, 0x05, 0x05, 0x00}, // '¶'
|
||||
{0x00, 0x00, 0x06, 0x0F, 0x0F, 0x06, 0x00, 0x00}, // '•'
|
||||
{0x1C, 0x3E, 0x7F, 0x7F, 0x1C, 0x1C, 0x3E, 0x00}, // '♠'
|
||||
{0x1C, 0x1C, 0x3E, 0x7F, 0x36, 0x1C, 0x3E, 0x00}, // '♣'
|
||||
{0x36, 0x7F, 0x7F, 0x7F, 0x3E, 0x1C, 0x08, 0x00}, // '♥'
|
||||
{0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x1C, 0x08, 0x00}, // '♦'
|
||||
const std::map<uint8_t, std::vector<uint8_t>> font_8x8 = {
|
||||
{' ', {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'!', {0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x03, 0x00}},
|
||||
{'"', {0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'#', {0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}},
|
||||
{'$', {0x0C, 0x1F, 0x30, 0x1E, 0x03, 0x3E, 0x0C, 0x00}},
|
||||
{'%', {0x31, 0x33, 0x06, 0x0C, 0x18, 0x33, 0x23, 0x00}},
|
||||
{'&', {0x3C, 0x66, 0x3C, 0x38, 0x67, 0x66, 0x3F, 0x00}},
|
||||
{'\'', {0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'(', {0x03, 0x06, 0x0C, 0x0C, 0x0C, 0x06, 0x03, 0x00}},
|
||||
{')', {0x0C, 0x06, 0x03, 0x03, 0x03, 0x06, 0x0C, 0x00}},
|
||||
{'*', {0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}},
|
||||
{'+', {0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}},
|
||||
{',', {0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x06}},
|
||||
{'-', {0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'.', {0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00}},
|
||||
{'/', {0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00}},
|
||||
{'0', {0x1E, 0x33, 0x37, 0x3B, 0x33, 0x33, 0x1E, 0x00}},
|
||||
{'1', {0x0C, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}},
|
||||
{'2', {0x1E, 0x33, 0x03, 0x06, 0x0C, 0x18, 0x3F, 0x00}},
|
||||
{'3', {0x1E, 0x33, 0x03, 0x0E, 0x03, 0x33, 0x1E, 0x00}},
|
||||
{'4', {0x06, 0x0E, 0x1E, 0x36, 0x3F, 0x06, 0x06, 0x00}},
|
||||
{'5', {0x3F, 0x30, 0x3E, 0x03, 0x03, 0x33, 0x1E, 0x00}},
|
||||
{'6', {0x1E, 0x33, 0x30, 0x3E, 0x33, 0x33, 0x1E, 0x00}},
|
||||
{'7', {0x3F, 0x03, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x00}},
|
||||
{'8', {0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}},
|
||||
{'9', {0x1E, 0x33, 0x33, 0x1F, 0x03, 0x33, 0x1E, 0x00}},
|
||||
{':', {0x00, 0x03, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00}},
|
||||
{';', {0x00, 0x03, 0x03, 0x00, 0x00, 0x03, 0x03, 0x06}},
|
||||
{'<', {0x00, 0x03, 0x06, 0x0C, 0x06, 0x03, 0x00, 0x00}},
|
||||
{'=', {0x00, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x00, 0x00}},
|
||||
{'>', {0x00, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x00, 0x00}},
|
||||
{'?', {0x1E, 0x33, 0x06, 0x0C, 0x0C, 0x00, 0x0C, 0x00}},
|
||||
{'@', {0x3C, 0x42, 0x99, 0xA5, 0xA5, 0x9E, 0x40, 0x3C}},
|
||||
{'A', {0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}},
|
||||
{'B', {0x3E, 0x33, 0x33, 0x3E, 0x33, 0x33, 0x3E, 0x00}},
|
||||
{'C', {0x1E, 0x33, 0x30, 0x30, 0x30, 0x33, 0x1E, 0x00}},
|
||||
{'D', {0x3C, 0x36, 0x33, 0x33, 0x33, 0x36, 0x3C, 0x00}},
|
||||
{'E', {0x3F, 0x30, 0x30, 0x3C, 0x30, 0x30, 0x3F, 0x00}},
|
||||
{'F', {0x3F, 0x30, 0x30, 0x3C, 0x30, 0x30, 0x30, 0x00}},
|
||||
{'G', {0x1E, 0x33, 0x30, 0x37, 0x33, 0x33, 0x1E, 0x00}},
|
||||
{'H', {0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}},
|
||||
{'I', {0x0F, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0F, 0x00}},
|
||||
{'J', {0x0F, 0x06, 0x06, 0x06, 0x06, 0x36, 0x1C, 0x00}},
|
||||
{'K', {0x33, 0x36, 0x3C, 0x38, 0x3C, 0x36, 0x33, 0x00}},
|
||||
{'L', {0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3F, 0x00}},
|
||||
{'M', {0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x63, 0x00}},
|
||||
{'N', {0x33, 0x3B, 0x3F, 0x3F, 0x37, 0x33, 0x33, 0x00}},
|
||||
{'O', {0x1E, 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x00}},
|
||||
{'P', {0x3E, 0x33, 0x33, 0x3E, 0x30, 0x30, 0x30, 0x00}},
|
||||
{'Q', {0x1E, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x07, 0x00}},
|
||||
{'R', {0x3E, 0x33, 0x33, 0x3E, 0x3C, 0x36, 0x33, 0x00}},
|
||||
{'S', {0x1E, 0x33, 0x30, 0x1E, 0x03, 0x33, 0x1E, 0x00}},
|
||||
{'T', {0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00}},
|
||||
{'U', {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x00}},
|
||||
{'V', {0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}},
|
||||
{'W', {0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}},
|
||||
{'X', {0x33, 0x33, 0x1E, 0x0C, 0x1E, 0x33, 0x33, 0x00}},
|
||||
{'Y', {0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x0C, 0x00}},
|
||||
{'Z', {0x3F, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x3F, 0x00}},
|
||||
{'[', {0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x00}},
|
||||
{'\\', {0x00, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00}},
|
||||
{']', {0x0F, 0x03, 0x03, 0x03, 0x03, 0x03, 0x0F, 0x00}},
|
||||
{'^', {0x0C, 0x1E, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'_', {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F}},
|
||||
{'`', {0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
|
||||
{'a', {0x00, 0x00, 0x1E, 0x03, 0x1F, 0x33, 0x1F, 0x00}},
|
||||
{'b', {0x30, 0x30, 0x3E, 0x33, 0x33, 0x33, 0x3E, 0x00}},
|
||||
{'c', {0x00, 0x00, 0x1E, 0x33, 0x30, 0x33, 0x1E, 0x00}},
|
||||
{'d', {0x03, 0x03, 0x1F, 0x33, 0x33, 0x33, 0x1F, 0x00}},
|
||||
{'e', {0x00, 0x00, 0x1E, 0x33, 0x3F, 0x30, 0x1E, 0x00}},
|
||||
{'f', {0x0E, 0x1B, 0x18, 0x3C, 0x18, 0x18, 0x18, 0x00}},
|
||||
{'g', {0x00, 0x00, 0x1F, 0x33, 0x33, 0x1F, 0x03, 0x3E}},
|
||||
{'h', {0x30, 0x30, 0x3E, 0x33, 0x33, 0x33, 0x33, 0x00}},
|
||||
{'i', {0x06, 0x00, 0x0E, 0x06, 0x06, 0x06, 0x0F, 0x00}},
|
||||
{'j', {0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x1E}},
|
||||
{'k', {0x30, 0x30, 0x33, 0x36, 0x3C, 0x36, 0x33, 0x00}},
|
||||
{'l', {0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0F, 0x00}},
|
||||
{'m', {0x00, 0x00, 0x66, 0x7F, 0x7F, 0x6B, 0x63, 0x00}},
|
||||
{'n', {0x00, 0x00, 0x3E, 0x33, 0x33, 0x33, 0x33, 0x00}},
|
||||
{'o', {0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}},
|
||||
{'p', {0x00, 0x00, 0x3E, 0x33, 0x33, 0x3E, 0x30, 0x30}},
|
||||
{'q', {0x00, 0x00, 0x1F, 0x33, 0x33, 0x1F, 0x03, 0x03}},
|
||||
{'r', {0x00, 0x00, 0x3E, 0x33, 0x30, 0x30, 0x30, 0x00}},
|
||||
{'s', {0x00, 0x00, 0x1F, 0x30, 0x1E, 0x03, 0x3E, 0x00}},
|
||||
{'t', {0x0C, 0x0C, 0x1F, 0x0C, 0x0C, 0x0C, 0x07, 0x00}},
|
||||
{'u', {0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x1F, 0x00}},
|
||||
{'v', {0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}},
|
||||
{'w', {0x00, 0x00, 0x63, 0x6B, 0x7F, 0x3E, 0x36, 0x00}},
|
||||
{'x', {0x00, 0x00, 0x33, 0x1E, 0x0C, 0x1E, 0x33, 0x00}},
|
||||
{'y', {0x00, 0x00, 0x33, 0x33, 0x33, 0x1F, 0x06, 0x3C}},
|
||||
{'z', {0x00, 0x00, 0x3F, 0x06, 0x0C, 0x18, 0x3F, 0x00}},
|
||||
{'{', {0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}},
|
||||
{'|', {0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00}},
|
||||
{'}', {0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}},
|
||||
{'~', {0x00, 0x00, 0x00, 0x1B, 0x36, 0x00, 0x00, 0x00}},
|
||||
// {'°', {0x0E, 0x11, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00}},
|
||||
// {'¶', {0x1F, 0x3D, 0x3D, 0x3D, 0x1D, 0x05, 0x05, 0x00}},
|
||||
// {'•', {0x00, 0x00, 0x06, 0x0F, 0x0F, 0x06, 0x00, 0x00}},
|
||||
// {'♠', {0x1C, 0x3E, 0x7F, 0x7F, 0x1C, 0x1C, 0x3E, 0x00}},
|
||||
// {'♣', {0x1C, 0x1C, 0x3E, 0x7F, 0x36, 0x1C, 0x3E, 0x00}},
|
||||
// {'♥', {0x36, 0x7F, 0x7F, 0x7F, 0x3E, 0x1C, 0x08, 0x00}},
|
||||
// {'♦', {0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x1C, 0x08, 0x00}}
|
||||
};
|
||||
|
||||
// Character mapping
|
||||
const char font_chars_8x8[] = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°¶•♠♣♥♦";
|
||||
// Declarations only
|
||||
const uint8_t *getFontChar_8x8(char c);
|
||||
const std::vector<uint8_t> &getFontChar_8x8(char c);
|
||||
const uint8_t fontHeight_8x8();
|
||||
|
||||
#endif
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "LedMatrix.h"
|
||||
#include <fonts.hpp>
|
||||
|
||||
LedMatrix::LedMatrix(uint8_t h, uint8_t w)
|
||||
: height(h), width(w), num_leds(h * w), leds(num_leds)
|
||||
@@ -10,12 +11,22 @@ LedMatrix::~LedMatrix()
|
||||
{
|
||||
}
|
||||
|
||||
// N entspricht Font-Height
|
||||
template <size_t N>
|
||||
const uint8_t LedMatrix::getFontHeight()
|
||||
{
|
||||
#ifdef USE_FONT_5x7
|
||||
return 7;
|
||||
#elifdef USE_FONT_8x8
|
||||
return 8;
|
||||
#elifdef USE_FONT_16x16
|
||||
return 16;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t LedMatrix::charWidth(const uint8_t *charMatrix)
|
||||
{
|
||||
const uint16_t fHeight = getFontHeight();
|
||||
uint16_t max_val = 0;
|
||||
for (size_t i = 0; i < N; i++)
|
||||
for (size_t i = 0; i < fHeight; i++)
|
||||
{
|
||||
if (charMatrix[i] > max_val)
|
||||
max_val = charMatrix[i];
|
||||
@@ -47,9 +58,17 @@ void LedMatrix::drawPixel(int x, int y, CRGB color)
|
||||
|
||||
uint8_t LedMatrix::drawChar(int x, int y, char c, CRGB color)
|
||||
{
|
||||
const uint8_t *fontData = getFontChar_5x7(c);
|
||||
const u_int8_t char_width_pixel = charWidth<7>(fontData);
|
||||
const u_int8_t font_height = fontHeight_5x7();
|
||||
#ifdef USE_FONT_5x7
|
||||
const std::map<uint8_t, std::vector<uint8_t>> &font = font_5x7;
|
||||
#elifdef USE_FONT_8x8
|
||||
const std::map<uint8_t, std::vector<uint8_t>> &font = font_8x8;
|
||||
#elifdef USE_FONT_16x16
|
||||
const std::map<uint8_t, std::vector<uint8_t>> &font = font_16x16;
|
||||
#endif
|
||||
const vector<uint8_t> &fontData_ = getFontChar(c, font);
|
||||
const uint8_t *fontData = fontData_.data();
|
||||
const u_int8_t char_width_pixel = charWidth(fontData);
|
||||
const u_int8_t font_height = getFontHeight();
|
||||
const u_int8_t font_width = 5;
|
||||
|
||||
for (u_int8_t row = 0; row < font_height; row++)
|
||||
@@ -89,22 +108,29 @@ void LedMatrix::drawText(int x, int y, const char *text, CRGB color)
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t LedMatrix::getTextWidth(const char *text)
|
||||
const uint8_t LedMatrix::getTextWidth(const char *text)
|
||||
{
|
||||
uint8_t totalWidth = 0;
|
||||
for (uint8_t i = 0; text[i] != '\0'; i++)
|
||||
{
|
||||
const uint8_t *fontData = getFontChar_5x7(text[i]);
|
||||
totalWidth += charWidth<7>(fontData) + 1; // char width + spacing
|
||||
#ifdef USE_FONT_5x7
|
||||
const std::map<uint8_t, std::vector<uint8_t>> &font = font_5x7;
|
||||
#elifdef USE_FONT_8x8
|
||||
const std::map<uint8_t, std::vector<uint8_t>> &font = font_8x8;
|
||||
#elifdef USE_FONT_16x16
|
||||
const std::map<uint8_t, std::vector<uint8_t>> &font = font_16x16;
|
||||
#endif
|
||||
const vector<uint8_t> &fontData_ = getFontChar(text[i], font);
|
||||
|
||||
const uint8_t *fontData = fontData_.data();
|
||||
totalWidth += charWidth(fontData) + 1; // char width + spacing
|
||||
}
|
||||
return totalWidth;
|
||||
}
|
||||
|
||||
void LedMatrix::clearRow(uint8_t y)
|
||||
{
|
||||
const u_int8_t font_height = fontHeight_5x7();
|
||||
|
||||
Serial.printf("clearRow: %dx%d@%d\n\r", font_height, width, y);
|
||||
const u_int8_t font_height = getFontHeight();
|
||||
|
||||
for (uint8_t line = y; line < (y + font_height); line++)
|
||||
{
|
||||
|
||||
@@ -3,13 +3,21 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define USE_FONT_5x7
|
||||
// #define USE_FONT_8x8
|
||||
// #define USE_FONT_16x16
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <FastLED.h>
|
||||
#include <vector>
|
||||
|
||||
#ifdef USE_FONT_5x7
|
||||
#include <font_5x7.h>
|
||||
// #include <font_8x8.h>
|
||||
// #include <font_16x16.h>
|
||||
#elifdef USE_FONT_8x8
|
||||
#include <font_8x8.h>
|
||||
#elifdef USE_FONT_16x16
|
||||
#include <font_16x16.h>
|
||||
#endif
|
||||
|
||||
class LedMatrix : public CFastLED
|
||||
{
|
||||
@@ -21,14 +29,14 @@ private:
|
||||
uint16_t num_leds; // default 64x64 = 4096 LEDs
|
||||
vector<CRGB> leds; // Automatic memory management
|
||||
|
||||
template <size_t N>
|
||||
uint8_t charWidth(const uint8_t *charMatrix);
|
||||
|
||||
// Text Scrolling
|
||||
int8_t scrollPosition = 0;
|
||||
unsigned long lastScrollTime = 0;
|
||||
|
||||
uint8_t getTextWidth(const char *text);
|
||||
const uint8_t getTextWidth(const char *text);
|
||||
const uint8_t getFontHeight();
|
||||
|
||||
public:
|
||||
LedMatrix(uint8_t h = 64, uint8_t w = 64);
|
||||
|
||||
11
lib/Utils/src/fonts.cpp
Normal file
11
lib/Utils/src/fonts.cpp
Normal file
@@ -0,0 +1,11 @@
|
||||
#include "fonts.hpp"
|
||||
|
||||
const std::vector<uint8_t> &getFontChar(char c, const std::map<uint8_t, std::vector<uint8_t>> &font)
|
||||
{
|
||||
auto it = font.find(c);
|
||||
if (it != font.end())
|
||||
{
|
||||
return it->second;
|
||||
}
|
||||
return font.at(' '); // Fallback to space
|
||||
}
|
||||
10
lib/Utils/src/fonts.hpp
Normal file
10
lib/Utils/src/fonts.hpp
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef FONTS_HPP
|
||||
#define FONTS_HPP
|
||||
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <stdint.h>
|
||||
|
||||
const std::vector<uint8_t> &getFontChar(char c, const std::map<uint8_t, std::vector<uint8_t>> &font);
|
||||
|
||||
#endif
|
||||
20
src/main.cpp
20
src/main.cpp
@@ -8,9 +8,21 @@ LedMatrix matrix;
|
||||
|
||||
void printCharMatrixSimple(char c)
|
||||
{
|
||||
const auto *fontData = getFontChar_5x7(c);
|
||||
const u_int8_t char_width_pixel = 5;
|
||||
matrix.drawText(58, 56, &c, CRGB::YellowGreen);
|
||||
matrix.show();
|
||||
|
||||
#ifdef USE_FONT_5x7
|
||||
const vector<uint8_t> &fontData_ = getFontChar_5x7(c);
|
||||
const u_int8_t font_height = fontHeight_5x7();
|
||||
#elifdef USE_FONT_8x8
|
||||
const vector<uint8_t> &fontData_ = getFontChar_8x8(c);
|
||||
const u_int8_t font_height = fontHeight_8x8();
|
||||
#elifdef USE_FONT_16x16
|
||||
const vector<uint16_t> &fontData_ = getFontChar_16x16(c);
|
||||
const u_int8_t font_height = fontHeight_16x16();
|
||||
#endif
|
||||
const auto *fontData = fontData_.data();
|
||||
const u_int8_t char_width_pixel = 5;
|
||||
|
||||
Serial.print("<");
|
||||
Serial.print(c);
|
||||
@@ -82,7 +94,7 @@ void setup()
|
||||
}
|
||||
|
||||
setupMatrix();
|
||||
// printCharMatrixSimple('A');
|
||||
printCharMatrixSimple('@');
|
||||
// number_to_bitarray_msb(0x11FF, 16, true);
|
||||
|
||||
// playWithBlinkLed();
|
||||
@@ -90,6 +102,6 @@ void setup()
|
||||
|
||||
void loop()
|
||||
{
|
||||
matrix.drawHorizontalScrollText(41, "scrolling...", CRGB::Wheat);
|
||||
// matrix.drawHorizontalScrollText(41, "scrolling...", CRGB::Wheat);
|
||||
delay(10);
|
||||
}
|
||||
Reference in New Issue
Block a user