Sfoglia il codice sorgente

running initial version with STM32F103C8T6 MC

master
gituser 2 settimane fa
parent
commit
8bb9d6e7cd

+ 26
- 27
.cproject Vedi File

@@ -12,65 +12,64 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" cleanCommand="rm -f" description="" id="io.sloeber.core.sketch.0" name="Release" parent="io.sloeber.core.configuration.release">
<configuration artifactExtension="" artifactName="${ProjName}" buildProperties="" cleanCommand="rm -f" description="" errorParsers="org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser" id="io.sloeber.core.sketch.0" name="Release" parent="io.sloeber.core.configuration.release">
<folderInfo id="io.sloeber.core.sketch.0." name="/" resourcePath="">
<toolChain id="io.sloeber.core.toolChain.release.238326749" name="Arduino Toolchain (Sloeber edition)" superClass="io.sloeber.core.toolChain.release">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="io.sloeber.targetplatform.1648948546" name="Arduino Target" osList="all" superClass="io.sloeber.targetplatform"/>
<builder buildPath="${workspace_loc:/EchoLot}/Release" id="io.sloeber.sketch.builder.1113847030" keepEnvironmentInBuildfile="false" name="Arduino sketch builder" parallelBuildOn="false" superClass="io.sloeber.sketch.builder"/>
<tool id="io.sloeber.tool.sketch.compiler.cpp.1834339972" name="Arduino C++ Compiler" superClass="io.sloeber.tool.sketch.compiler.cpp">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.cpp.sketch.option.incpath.443035005" name="Include Paths (-I)" superClass="io.sloeber.compiler.cpp.sketch.option.incpath" valueType="includePath">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.cpp.sketch.option.incpath.443035005" name="Include Paths (-I)" superClass="io.sloeber.compiler.cpp.sketch.option.incpath" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/SPI/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Wire/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_BusIO}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/ezButton/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/RotaryEncoder/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/U8g2_for_Adafruit_GFX/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_GFX_Library}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Ucglib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/GFX_Library_for_Arduino/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Wire/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_BusIO}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_ST7735_and_ST7789_Library}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/LCDWIKI_GUI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/LCDWIKI_SPI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/EEPROM/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/EEPROM}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/Wire}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/Wire/utility}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/SPI/src}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.cpp.sketch.input.543353444" name="CPP source files" superClass="io.sloeber.compiler.cpp.sketch.input"/>
</tool>
<tool id="io.sloeber.tool.compiler.c.1392196145" name="Arduino C Compiler" superClass="io.sloeber.tool.compiler.c">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.c.sketch.option.incpath.1273991772" name="Include Paths (-I)" superClass="io.sloeber.compiler.c.sketch.option.incpath" valueType="includePath">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.c.sketch.option.incpath.1273991772" name="Include Paths (-I)" superClass="io.sloeber.compiler.c.sketch.option.incpath" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/SPI/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Wire/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_BusIO}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/ezButton/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/RotaryEncoder/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/U8g2_for_Adafruit_GFX/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_GFX_Library}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Ucglib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/GFX_Library_for_Arduino/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Wire/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_BusIO}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_ST7735_and_ST7789_Library}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/LCDWIKI_GUI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/LCDWIKI_SPI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/EEPROM/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/SPI/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/EEPROM}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/Wire}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/Wire/utility}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.c.sketch.input.1984508786" name="C Source Files" superClass="io.sloeber.compiler.c.sketch.input"/>
</tool>
<tool id="io.sloeber.tool.sketch.compiler.s.898088892" name="Arduino Assembler" superClass="io.sloeber.tool.sketch.compiler.s">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.asm.sketch.option.incpath.1371853642" name="Include Paths (-I)" superClass="io.sloeber.compiler.asm.sketch.option.incpath" valueType="includePath">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.asm.sketch.option.incpath.1371853642" name="Include Paths (-I)" superClass="io.sloeber.compiler.asm.sketch.option.incpath" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/SPI/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Wire/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_BusIO}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/ezButton/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/RotaryEncoder/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/U8g2_for_Adafruit_GFX/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_GFX_Library}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Ucglib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/GFX_Library_for_Arduino/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Wire/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_BusIO}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/Adafruit_ST7735_and_ST7789_Library}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/LCDWIKI_GUI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/LCDWIKI_SPI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/libraries/EEPROM/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/SPI/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/EEPROM}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/Wire}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/EchoLot/Wire/utility}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.S.sketch.input.2093386672" name="Assembly source files" superClass="io.sloeber.compiler.S.sketch.input"/>
</tool>
@@ -111,7 +110,7 @@
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="libraries/LCDWIKI_SPI/Example|libraries/LCDWIKI_SPI/Document|libraries/LCDWIKI_GUI/Document|libraries/Adafruit_GFX_Library/Fonts|libraries/Adafruit_GFX_Library/fontconvert|libraries/ST7789_AVR/images|libraries/?*/**/?xamples/**|libraries/?*/**/?xtras/**|libraries/?*/**/test*/**|libraries/?*/**/third-party/**|libraries/**/._*|libraries/?*/utility/*/*" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
<entry excluding="libraries/Adafruit_ST7735_and_ST7789_Library/Adafruit_ST7789.cpp|libraries/SrcWrapper/inc|libraries/LCDWIKI_SPI/Example|libraries/LCDWIKI_SPI/Document|libraries/LCDWIKI_GUI/Document|libraries/Adafruit_GFX_Library/Fonts|libraries/Adafruit_GFX_Library/fontconvert|libraries/ST7789_AVR/images|libraries/?*/**/?xamples/**|libraries/?*/**/?xtras/**|libraries/?*/**/test*/**|libraries/?*/**/third-party/**|libraries/**/._*|libraries/?*/utility/*/*" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>

+ 16
- 36
.project Vedi File

@@ -32,70 +32,50 @@
</natures>
<linkedResources>
<link>
<name>core/core</name>
<name>EEPROM</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/cores/arduino</locationURI>
<location>C:/Users/FSmilari/Documents/Arduino/hardware/Arduino_STM32/STM32F1/libraries/EEPROM</location>
</link>
<link>
<name>core/variant</name>
<name>SPI</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/variants/eightanaloginputs</locationURI>
<location>C:/Users/FSmilari/Documents/Arduino/hardware/Arduino_STM32/STM32F1/libraries/SPI</location>
</link>
<link>
<name>libraries/Adafruit_BusIO</name>
<name>Wire</name>
<type>2</type>
<location>C:/Users/FSmilari/Documents/Arduino/libraries/Adafruit_BusIO</location>
<location>C:/Users/FSmilari/Documents/Arduino/hardware/Arduino_STM32/STM32F1/libraries/Wire</location>
</link>
<link>
<name>libraries/Adafruit_GFX_Library</name>
<name>core/core</name>
<type>2</type>
<location>C:/Users/FSmilari/Documents/Arduino/libraries/Adafruit_GFX_Library</location>
<location>C:/Users/FSmilari/Documents/Arduino/hardware/Arduino_STM32/STM32F1/cores/maple</location>
</link>
<link>
<name>libraries/Adafruit_ST7735_and_ST7789_Library</name>
<name>core/variant</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/Adafruit_ST7735_and_ST7789_Library/1.11.0</locationURI>
<location>C:/Users/FSmilari/Documents/Arduino/hardware/Arduino_STM32/STM32F1/variants/generic_stm32f103c</location>
</link>
<link>
<name>libraries/GFX_Library_for_Arduino</name>
<name>libraries/Adafruit_BusIO</name>
<type>2</type>
<location>C:/Users/FSmilari/Documents/Arduino/libraries/GFX_Library_for_Arduino</location>
<location>C:/Users/FSmilari/Documents/Arduino/libraries/Adafruit_BusIO</location>
</link>
<link>
<name>libraries/LCDWIKI_GUI</name>
<name>libraries/Adafruit_GFX_Library</name>
<type>2</type>
<location>C:/Users/FSmilari/Documents/Arduino/libraries/LCDWIKI_GUI</location>
<location>C:/Users/FSmilari/Documents/Arduino/libraries/Adafruit_GFX_Library</location>
</link>
<link>
<name>libraries/LCDWIKI_SPI</name>
<name>libraries/Adafruit_ST7735_and_ST7789_Library</name>
<type>2</type>
<location>C:/Users/FSmilari/Documents/Arduino/libraries/LCDWIKI_SPI</location>
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/Adafruit_ST7735_and_ST7789_Library/1.11.0</locationURI>
</link>
<link>
<name>libraries/RotaryEncoder</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/RotaryEncoder/1.5.2</locationURI>
</link>
<link>
<name>libraries/SPI</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/libraries/SPI</locationURI>
</link>
<link>
<name>libraries/U8g2_for_Adafruit_GFX</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/U8g2_for_Adafruit_GFX/1.8.0</locationURI>
</link>
<link>
<name>libraries/Ucglib</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/Ucglib/1.5.2</locationURI>
</link>
<link>
<name>libraries/Wire</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/libraries/Wire</locationURI>
</link>
<link>
<name>libraries/ezButton</name>
<type>2</type>

+ 1
- 1
.settings/language.settings.xml Vedi File

@@ -2,7 +2,7 @@
<project>
<configuration id="io.sloeber.core.sketch.0" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider class="io.sloeber.core.toolchain.ArduinoLanguageProvider" console="false" env-hash="1698332270896085815" id="io.sloeber.languageSettingsProvider" keep-relative-paths="false" name="Arduino Compiler Settings" parameter="${COMMAND} -E -P -v -dD -D__IN_ECLIPSE__ &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="io.sloeber.core.toolchain.ArduinoLanguageProvider" console="false" env-hash="-462663789770053712" id="io.sloeber.languageSettingsProvider" keep-relative-paths="false" name="Arduino Compiler Settings" parameter="${COMMAND} -E -P -v -dD -D__IN_ECLIPSE__ &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

+ 1
- 0
.settings/org.eclipse.core.resources.prefs Vedi File

@@ -1,2 +1,3 @@
eclipse.preferences.version=1
encoding/EchoLot.ino=UTF-8
encoding/EchoLot.old=UTF-8

+ 8
- 4
.sproject Vedi File

@@ -1,8 +1,12 @@
Config.Release.board.BOARD.ID=nano
Config.Release.board.BOARD.MENU.cpu=atmega328old
Config.Release.board.BOARD.TXT=${SLOEBER_HOME}/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/boards.txt
Config.Release.board.BOARD.ID=genericSTM32F103C
Config.Release.board.BOARD.MENU.cpu=getMenuItemIDFromMenuItemName did not find menu item with name "ATmega328P (Old Bootloader)" for menu ID "cpu" and for boardID "nano"!
Config.Release.board.BOARD.MENU.cpu_speed=speed_72mhz
Config.Release.board.BOARD.MENU.device_variant=STM32F103C8
Config.Release.board.BOARD.MENU.opt=osstd
Config.Release.board.BOARD.MENU.upload_method=DFUUploadMethod
Config.Release.board.BOARD.TXT=C:/Users/FSmilari/Documents/Arduino/hardware/Arduino_STM32/STM32F1/boards.txt
Config.Release.board.PROGRAMMER.NAME=Default
Config.Release.board.UPLOAD.PORT=COM3
Config.Release.board.UPLOAD.PORT=COM6
Config.Release.compile.sloeber.extra.all=
Config.Release.compile.sloeber.extra.archive=
Config.Release.compile.sloeber.extra.assembly=

+ 168
- 0
Display.cpp Vedi File

@@ -0,0 +1,168 @@
/*
* Display.cpp
*
* Created on: 05.01.2026
* Author: FSmilari
*/

#include "Display.h"
#include "Adafruit_ST7735.h"
#include "images/SFToolsLogo.h"
#include "fonts/titillium_web_regular16pt7b.h" // Add a custom font
#include "fonts/titillium_web_regular12pt7b.h" // Add a custom font
//#include "fonts/titillium_web_regular8pt7b.h" // Add a custom font
#include <Fonts/FreeSans9pt7b.h> // Add a custom font
#include "images/stm32duino_logo.h"
#include "images/thermometer_32.h"
#include "images/gear.h"
#include "images/zzz.h"
#include "images/ruler.h"
#include "images/air.h"
#include "images/water.h"
#include "images/water_s.h"


//#define LED -1 // to +5v
//#define SCK PA5
//#define SDA PA7
//#define MISO -1
//#define MOSI SDA
#define CS PA2
#define DC PA1
#define RST PA0

#define ST7735_ARDUINOGREEN 0x04b3
#define ST7735_STM32BLUE 0x03d6

/*****************
** Constructors.
****************/
Display::Display() : tft(Adafruit_ST7735(CS, DC, RST)) { // @suppress("Abstract class cannot be instantiated")
angle = 0;
starttime = millis();
refreshScreen = true;
configValue = 0.0;
configUnit = "m/s";
}

void Display::init(void) {
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
tft.setRotation(1);
tft.setTextWrap(false);
tft.setTextColor(ST7735_WHITE);
refreshScreen = true;
}

void Display::display(void) {
if (!refreshScreen) {
return;
}

// redrawFrame();
refreshScreen = false;
}

void Display::drawXCenteredText(String txt, const GFXfont *font, uint8_t size, uint16_t col, int16_t y) {
int16_t x1, y1; // Top-left corner of text
uint16_t w, h; // Width and height

tft.setFont(font);
tft.setTextSize(size); // Set text size. Goes from 0 (the smallest) to 20 (very big)
tft.setTextColor(col);

// Get bounds starting from (0, 0)
tft.getTextBounds(txt, 0, 0, &x1, &y1, &w, &h);

// Calculate centered position
int16_t centered_x = (SCREEN_WIDTH - w) / 2 - 3;

// Set cursor and print
tft.setCursor(centered_x, y);
tft.print(txt);
}

void Display::drawText(String txt, const GFXfont *font, uint8_t size, uint16_t col, int16_t x, int16_t y) {
tft.setFont(font);
tft.setTextSize(size); // Set text size. Goes from 0 (the smallest) to 20 (very big)
tft.setTextColor(col);

tft.setCursor(x, y);
tft.print(txt);
}

void Display::clearDisplay(void) {
tft.fillScreen(ST7735_BLACK);
}

void Display::showBrand(int16_t x, int16_t y) {
drawBitmap(x, y, 128, 34, SFTools_Logo, ST7735_ORANGE);
}

void Display::showInitialization(void) {
redrawFrame();
drawXCenteredText("EchoLoT", &titillium_web_regular16pt7b, 1, ST7735_CYAN, 36);
drawXCenteredText("designed by", &FreeSans9pt7b, 1, ST7735_WHITE, 64);
showBrand(16, 84);
delay(3000);

redrawFrame();
drawText("powered by", &FreeSans9pt7b, 1, ST7735_CYAN, 35, 30);
tft.fillRoundRect(46, 42, 68, 68, 7, ST7735_STM32BLUE);
drawBitmap(48, 44, 64, 64, epd_bitmap_stm32duino_logo_icon, ST7735_WHITE);

// tft.drawBitmap(5, 100, epd_bitmap_gear, 24, 24, ST7735_YELLOW);
// tft.drawBitmap(40, 100, epd_bitmap_Zzz_24, 24, 24, ST7735_CYAN);
// tft.drawBitmap(75, 100, epd_bitmap_Measure_25, 25, 25, ST7735_RED);
// tft.fillTriangle(75, 98, 80, 102, 75, 107, ST7735_RED);
// tft.fillTriangle(82, 98, 87, 102, 82, 107, ST7735_RED);
// tft.fillTriangle(89, 98, 94, 102, 89, 107, ST7735_RED);
// tft.fillTriangle(96, 98, 101, 102, 96, 107, ST7735_RED);
//
// tft.drawBitmap(110, 100, epd_bitmap_air, 24, 24, ST7735_CYAN);
// tft.drawBitmap(110, 100, epd_bitmap_water, 24, 24, ST7735_BLUE);
// tft.drawBitmap(110, 100, epd_bitmap_water_s, 24, 24, ST7735_BLUE);
// tft.drawBitmap(1, 160 - 32, thermometer_icon_32, 32, 32, 0xE71C);


delay(3000);
}

void Display::showFrame(Status status) {
redrawFrame();

switch (status) {
case Status::IDLE:
break;
// case Status::TOOLCHANGE:
// drawStatusText(STATUS_TXT_TOOLCHG);
// break;
// case Status::CONFIG:
// drawStatusText(STATUS_TXT_CFG);
// break;
// case Status::NULLING:
// drawStatusText(STATUS_TXT_NULLING);
// break;
// case Status::DIVING:
// drawStatusText(STATUS_TXT_DIVING);
// break;
default:
break;
}
}

/* ===== Private methods ===== */
void Display::drawBitmap(int x, int y, int w, int h, const uint8_t bitmap[], uint16_t col) {
tft.drawBitmap(x, y, bitmap, w, h, col);
}

void Display::drawRGBBitmap(int x, int y, int w, int h, const uint16_t bitmap[]) {
tft.drawRGBBitmap(x, y, bitmap, w, h);
}


void Display::redrawFrame() {
clearDisplay();
tft.drawRoundRect(0, 0, 160, 128, 9, ST7735_CYAN);
tft.drawRoundRect(1, 1, 158, 126, 8, ST7735_CYAN);
}

+ 49
- 0
Display.h Vedi File

@@ -0,0 +1,49 @@
/*
* Display.h
*
* Wrapper class for Adafruit OLED display.
*
* Created on: 05.01.2026
* Author: FSmilari
*/

#ifndef DISPLAY_H_
#define DISPLAY_H_

#include <Adafruit_ST7735.h>
#include "images/SFToolsLogo.h"
#include "Status.h"

#define SCREEN_WIDTH 160
#define SCREEN_HEIGHT 128
#define SCREEN_ADDRESS 0x3C

class Display {
private:
Adafruit_ST7735 tft; // @suppress("Abstract class cannot be instantiated")
String configText;
String configOption;
float configValue;
String configUnit;
bool refreshScreen;
int angle;
unsigned long starttime;

void drawBitmap(int x, int y, int w, int h, const uint8_t bitmap[], uint16_t col);
void drawRGBBitmap(int x, int y, int w, int h, const uint16_t bitmap[]);
void redrawFrame();

public:
Display();
void init(void);
void display(void);
void clearDisplay(void);
void showBrand(int16_t x, int16_t y);
void showInitialization(void);
void showFrame(Status status);
void drawXCenteredText(String txt, const GFXfont *font, uint8_t s, uint16_t c, int16_t y);
void drawText(String txt, const GFXfont *font, uint8_t s, uint16_t c, int16_t x, int16_t y);

};

#endif /* DISPLAY_H_ */

+ 73
- 79
EchoLot.ino Vedi File

@@ -1,87 +1,65 @@
#include "C:/Users/FSmilari/Documents/Arduino/libraries/Adafruit_GFX_Library/Adafruit_GFX.h" // Include core graphics library
#include "D:/Programme/sloeber/4.4/arduinoPlugin/libraries/Adafruit_ST7735_and_ST7789_Library/1.11.0/Adafruit_ST7735.h" // Include Adafruit_ST7735 library to drive the display
#include "D:/Programme/sloeber/4.4/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/cores/arduino/Arduino.h"
#include "D:/Programme/sloeber/4.4/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/cores/arduino/HardwareSerial.h"
#include "D:/Programme/sloeber/4.4/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/cores/arduino/WString.h"
#include "D:/Programme/sloeber/4.4/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/variants/standard/pins_arduino.h"
#include "Arduino.h"
#include "ExEzButton.h"
#include "Status.h"
#include "fonts/titillium_web_regular20pt7b.h" // Add a custom font
#include "images/SFToolsLogo.h"
#include "images/thermometer_32.h"
#include "RotaryControler.h"
#include "EchoLotSetup.h"
#include "ThreePositionSwitch.h"
static const int RotEnc_Switch_Pin = 3;
static const int RotEnc_Clk_Pin = 4;
static const int RotEnc_Dta_Pin = 5;
static const int Measure_Pin = 6;
static const int echoPin = A5;
static const int trigPin = A4;
#define LED -1 // to +5v
#define SCK 13//A1 with SCK on 13 and SDA on 11 it is 10x faster!!!
#define SDA 11//A2
#define MISO -1
#define MOSI SDA
#define CS 10
#define DC 9
#define RST 8
static const int trigPin = PB11;
static const int echoPin = PB10;
static const int Pos3Sw_Pin1 = PB13;
static const int Pos3Sw_Pin2 = PB14;
static const int Pos3Sw_Pin3 = PB15;
static const int Measure_Pin = PB6;
static const int RotEnc_Clk_Pin = PB7;
static const int RotEnc_Dta_Pin = PB8;
static const int RotEnc_Switch_Pin = PB9;
Status actualStatus;
Status originStatus;
String oldStatus = "";
String lastDistance = "";
// Create display:
Adafruit_ST7735 tft = Adafruit_ST7735(CS, DC, RST);
RotaryControler RotaryControler(RotEnc_Dta_Pin, RotEnc_Clk_Pin, RotEnc_Switch_Pin);
ExEzButton MeasureBtn(Measure_Pin, false, 2000);
ThreePositionSwitch ThreePositionSwitch(Pos3Sw_Pin1, Pos3Sw_Pin2, Pos3Sw_Pin3);
Display Display;
EchoLotSetup EchoLotSetup(Display);
//*****************************************************************************************************
//*** Initialization routine. Reads the eeprom first and sets the (potentially new) configured values.
//*****************************************************************************************************
void Initialize() {
Display.showInitialization();
EchoLotSetup.initialize();
delay(50);
SetActualStatus(IDLE);
}
void setup() {
SetActualStatus(INITIALIZATION);
Serial.begin(115200);
delay(500);
pinMode(RotEnc_Switch_Pin, INPUT);
pinMode(RotEnc_Dta_Pin, INPUT);
pinMode(RotEnc_Clk_Pin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(Measure_Pin, INPUT);
pinMode(RotEnc_Switch_Pin, INPUT);
MeasureBtn.setDebounceTime(50);
RotaryControler.setDebounceTime(50);
ThreePositionSwitch.setDebounceTime(50);
// Display setup:
// Use this initializer if you're using a 1.8" TFT
tft.initR(INITR_BLACKTAB); // Initialize a ST7735S chip, black tab
tft.fillScreen(ST7735_BLACK); // Fill screen with black
tft.setRotation(2); // Set orientation of the display. Values are from 0 to 3. If not declared, orientation would be 0,
// which is portrait mode.
tft.setTextWrap(false); // By default, long lines of text are set to automatically “wrap� back to the leftmost column.
// To override this behavior (so text will run off the right side of the display - useful for
// scrolling marquee effects), use setTextWrap(false). The normal wrapping behavior is restored
// with setTextWrap(true).
tft.setCursor(0, 20); // Set position (x,y)
tft.setFont(&titillium_web_regular20pt7b);
tft.setTextSize(0); // Set text size. Goes from 0 (the smallest) to 20 (very big)
tft.setTextColor(ST7735_WHITE);
tft.println("Hello");
tft.drawBitmap(0, 80, SFTools_Logo, 128, 34, ST7735_GREEN);
tft.drawBitmap(1, 160 - 32, thermometer_icon_32, 32, 32, 0xE71C);
tft.drawBitmap(33, 160 - 32, thermometer_icon_32, 32, 32, ST7735_YELLOW);
tft.drawRect(48, 137, 2, 6, ST7735_YELLOW);
tft.drawBitmap(65, 160 - 32, thermometer_icon_32, 32, 32, ST7735_RED);
tft.drawRect(80, 133, 2, 10, ST7735_RED);
delay(3000);
Display.init();
SetActualStatus(INITIALIZATION);
tft.fillScreen(ST7735_BLACK); // Fill screen with black
Serial.println("Setup end");
delay(50);
}
void loop() {
@@ -92,16 +70,34 @@ void loop() {
switch (actualStatus) {
case INITIALIZATION:
Initialize();
SetActualStatus(IDLE);
break;
case CONFIGURATION:
break;
case IDLE:
case IDLE: {
if (RotaryControler.isSwitchLongPressed()) {
Serial.println("RotaryEnc Long SwitchPressed");
RotaryControler.resetPosition();
}
if (RotaryControler.isSwitchPressed()) {
Serial.println("RotaryEnc SwitchPressed");
} else if (MeasureBtn.isPressing()) {
SetActualStatus(MEASURING);
}
ThreePositionSwitch.loop();
int pin = ThreePositionSwitch.getPosition();
// Serial.print("3-Pos-Schalter Position: ");
// Serial.println(pin);
delay(200);
break;
}
case MEASURING:
if (MeasureBtn.isPressing()) {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
@@ -115,27 +111,25 @@ void loop() {
Serial.print("Distance:");
Serial.println(distance);
char buf[50];
sprintf(buf, "%lu cm", distance);
if (!lastDistance.equals(buf)) {
tft.fillRect(0, 20, 130, 50, ST7735_BLACK);
tft.setCursor(0, 50); // Set position (x,y)
tft.setFont(&titillium_web_regular20pt7b);
tft.setTextSize(0); // Set text size. Goes from 0 (the smallest) to 20 (very big)
tft.setTextColor(ST7735_CYAN);
tft.println(buf);
lastDistance = buf;
}
// char buf[50];
// sprintf(buf, "%lu cm", distance);
//
// if (!lastDistance.equals(buf)) {
// tft.fillRect(0, 20, 130, 50, ST7735_BLACK);
// tft.setCursor(0, 50); // Set position (x,y)
// tft.setFont(&titillium_web_regular20pt7b);
// tft.setTextSize(0); // Set text size. Goes from 0 (the smallest) to 20 (very big)
// tft.setTextColor(ST7735_CYAN);
// tft.println(buf);
// lastDistance = buf;
// }
delay(200);
// } else {
// mylcd.Fill_Screen(BLACK);
} else {
// tft.fillScreen(ST7735_BLACK);
SetActualStatus(IDLE);
}
break;
case MEASURING:
break;
default:
break;
}

+ 216
- 0
EchoLot.old Vedi File

@@ -0,0 +1,216 @@
#include "Adafruit_GFX.h" // Include core graphics library
#include "Adafruit_ST7735.h" // Include Adafruit_ST7735 library to drive the display
#include "Arduino.h"
#include "HardwareSerial.h"
#include "ExEzButton.h"
#include "Status.h"
#include "RotaryControler.h"
#include "EchoLotSetup.h"
#include "ThreePositionSwitch.h"

#include "fonts/titillium_web_regular16pt7b.h" // Add a custom font
#include "fonts/titillium_web_regular12pt7b.h" // Add a custom font
#include "fonts/titillium_web_regular8pt7b.h" // Add a custom font
#include "images/SFToolsLogo.h"
#include "images/thermometer_32.h"
#include "images/gear.h"
#include "images/zzz.h"
#include "images/ruler.h"
#include "images/air.h"
#include "images/water.h"
#include "images/water_s.h"

static const int trigPin = A0;
static const int echoPin = A1;

static const int RotEnc_Switch_Pin = A2;
static const int RotEnc_Clk_Pin = A3;
static const int RotEnc_Dta_Pin = A4;

static const int Pos3Sw_Pin1 = 3;
static const int Pos3Sw_Pin2 = 4;
static const int Pos3Sw_Pin3 = 5;

static const int Measure_Pin = 7;

#define LED -1 // to +5v
#define SCK 13//A1 with SCK on 13 and SDA on 11 it is 10x faster!!!
#define SDA 11//A2
#define MISO -1
#define MOSI SDA
#define CS 10
#define DC 9
#define RST 8

Status actualStatus;
Status originStatus;
String oldStatus = "";
String lastDistance = "";

// Create display:
Adafruit_ST7735 tft = Adafruit_ST7735(CS, DC, RST);
RotaryControler RotaryControler(RotEnc_Dta_Pin, RotEnc_Clk_Pin, RotEnc_Switch_Pin);
ExEzButton MeasureBtn(Measure_Pin, false, 2000);
ThreePositionSwitch ThreePositionSwitch(Pos3Sw_Pin1, Pos3Sw_Pin2, Pos3Sw_Pin3);
//Display Display;

void setup() {

SetActualStatus(INITIALIZATION);
// Display.init();

Serial.begin(115200);

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

pinMode(RotEnc_Switch_Pin, INPUT);
pinMode(RotEnc_Dta_Pin, INPUT);
pinMode(RotEnc_Clk_Pin, INPUT);

pinMode(Measure_Pin, INPUT);

MeasureBtn.setDebounceTime(50);
RotaryControler.setDebounceTime(50);
ThreePositionSwitch.setDebounceTime(50);

// Display setup:
// Use this initializer if you're using a 1.8" TFT
tft.initR(INITR_BLACKTAB); // Initialize a ST7735S chip, black tab
tft.fillScreen(ST7735_BLACK); // Fill screen with black
tft.setRotation(1); // Set orientation of the display. Values are from 0 to 3. If not declared, orientation would be 0,
// // which is portrait mode.
//
// tft.setTextWrap(false); // By default, long lines of text are set to automatically “wrap� back to the leftmost column.
// // To override this behavior (so text will run off the right side of the display - useful for
// // scrolling marquee effects), use setTextWrap(false). The normal wrapping behavior is restored
// // with setTextWrap(true).
//
tft.setCursor(0, 20); // Set position (x,y)
tft.setFont(&titillium_web_regular16pt7b);
tft.setTextSize(1); // Set text size. Goes from 0 (the smallest) to 20 (very big)
tft.setTextColor(ST7735_WHITE);
tft.println("AaBbCc012");

tft.setCursor(0, 60); // Set position (x,y)
tft.setFont(&titillium_web_regular12pt7b);
tft.setTextSize(1); // Set text size. Goes from 0 (the smallest) to 20 (very big)
tft.setTextColor(ST7735_WHITE);
tft.println("AaBbCc0129");

tft.setCursor(0, 80); // Set position (x,y)
tft.setFont(&titillium_web_regular8pt7b);
tft.setTextSize(1); // Set text size. Goes from 0 (the smallest) to 20 (very big)
tft.setTextColor(ST7735_WHITE);
tft.println("AaBbCc0129");

tft.drawBitmap(5, 100, epd_bitmap_gear, 24, 24, ST7735_YELLOW);

tft.drawBitmap(40, 100, epd_bitmap_Zzz_24, 24, 24, ST7735_CYAN);

tft.drawBitmap(75, 100, epd_bitmap_Measure_25, 25, 25, ST7735_RED);
tft.fillTriangle(75, 98, 80, 102, 75, 107, ST7735_RED);
tft.fillTriangle(82, 98, 87, 102, 82, 107, ST7735_RED);
tft.fillTriangle(89, 98, 94, 102, 89, 107, ST7735_RED);
tft.fillTriangle(96, 98, 101, 102, 96, 107, ST7735_RED);

// tft.drawBitmap(110, 100, epd_bitmap_air, 24, 24, ST7735_CYAN);
tft.drawBitmap(110, 100, epd_bitmap_water_s, 24, 24, ST7735_BLUE);

//
// tft.drawBitmap(0, 80, SFTools_Logo, 128, 34, ST7735_GREEN);
//
// tft.drawBitmap(1, 160 - 32, thermometer_icon_32, 32, 32, 0xE71C);
//
// tft.drawBitmap(33, 160 - 32, thermometer_icon_32, 32, 32, ST7735_YELLOW);
// tft.drawRect(48, 137, 2, 6, ST7735_YELLOW);
//
// tft.drawBitmap(110, 96, thermometer_icon_32, 32, 32, ST7735_RED);
// tft.drawRect(125, 101, 2, 10, ST7735_RED);
//
// delay(3000);
//
// tft.fillScreen(ST7735_BLACK); // Fill screen with black

// Display.display();
}

void loop() {

MeasureBtn.loop();
RotaryControler.loop();

switch (actualStatus) {

case INITIALIZATION:
SetActualStatus(IDLE);
break;

case CONFIGURATION:
break;

case IDLE:
if (RotaryControler.isSwitchLongPressed()) {
Serial.println("RotaryEnc Long SwitchPressed");
RotaryControler.resetPosition();
}
if (RotaryControler.isSwitchPressed()) {
Serial.println("RotaryEnc SwitchPressed");
} else if (MeasureBtn.isPressing()) {
SetActualStatus(MEASURING);
}

ThreePositionSwitch.loop();
int pin = ThreePositionSwitch.getPosition();
Serial.print("3-Pos-Schalter Position: ");
Serial.println(pin);


delay(200);

break;

case MEASURING:
if (MeasureBtn.isPressing()) {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(20);
digitalWrite(trigPin, LOW);

long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.03432 / 2;

Serial.print("Distance:");
Serial.println(distance);

char buf[50];
sprintf(buf, "%lu cm", distance);

if (!lastDistance.equals(buf)) {
// tft.fillRect(0, 20, 130, 50, ST7735_BLACK);
// tft.setCursor(0, 50); // Set position (x,y)
// tft.setFont(&titillium_web_regular20pt7b);
// tft.setTextSize(0); // Set text size. Goes from 0 (the smallest) to 20 (very big)
// tft.setTextColor(ST7735_CYAN);
// tft.println(buf);
lastDistance = buf;
}

delay(200);
} else {
// tft.fillScreen(ST7735_BLACK);
SetActualStatus(IDLE);
}
break;
default:
break;
}
}

void SetActualStatus(Status newStatus) {
if (actualStatus != newStatus) {
actualStatus = newStatus;
// Display.setRefreshScreen();
}
}

+ 211
- 0
EchoLotSetup.cpp Vedi File

@@ -0,0 +1,211 @@
/*
* EchoLotSetup.cpp
*
* Created on: 10.01.2026
* Author: FSmilari
*/

#include "EchoLotSetup.h"

#define ADDR_AIR_TEMP 0 // WORD
#define ADDR_WATER_TEMP 2 // +2 WORDs
#define ADDR_SONIC_AIR 4 // +2 WORDs
#define ADDR_SALTPERMIL 6 // +2 WORDs

// --------------------------------------------------
// Konstruktor
// --------------------------------------------------
EchoLotSetup::EchoLotSetup(Display &display) : display(display) {
airTemp = 20.0f;
waterTemp = 20.0f;
sonicSpeedAir = 343.0f;
saltPromilleWater = 35;

doInitialization = true;
configStepIndex = 0;
}

// --------------------------------------------------
// Initialisierung
// --------------------------------------------------
void EchoLotSetup::initialize() {
EEPROM.init();
readFromEEPROM();
doInitialization = false;
}

// --------------------------------------------------
// Rotary Switch (kurz)
// --------------------------------------------------
void EchoLotSetup::onRotaryControlerSwitch() {
configStepIndex++;
if (configStepIndex >= 5) {
configStepIndex = 0;
}
}

// --------------------------------------------------
// Rotary Switch (lang)
// --------------------------------------------------
void EchoLotSetup::onRotaryControlerLongSwitch() {

}

// --------------------------------------------------
// Rotary Drehung
// --------------------------------------------------
void EchoLotSetup::onRotaryControlerTurn(RotaryEncoder::Direction turn)
{
float delta = (turn == RotaryEncoder::Direction::CLOCKWISE) ? 1.0f : -1.0f;

switch (configStepIndex) {
case 0:
airTemp += delta;
break;
case 1:
waterTemp += delta;
break;
case 2:
sonicSpeedAir += delta;
break;
case 3:
saltPromilleWater += delta;
break;
default:
break;
}

}

// --------------------------------------------------
// Speichern bestätigen
// --------------------------------------------------
void EchoLotSetup::save() {
saveToEEPROM();
}

// --------------------------------------------------
// Abbrechen
// --------------------------------------------------
void EchoLotSetup::cancel() {
readFromEEPROM();
}

// --------------------------------------------------
// Display leeren
// --------------------------------------------------
void EchoLotSetup::clear() {
display.clearDisplay();
}

// --------------------------------------------------
// EEPROM lesen
// --------------------------------------------------
void EchoLotSetup::readFromEEPROM() {
setAirTemp(readFloatFromEEPROM(ADDR_AIR_TEMP));
setWaterTemp(readFloatFromEEPROM(ADDR_WATER_TEMP));
setSonicSpeedAir(readFloatFromEEPROM(ADDR_SONIC_AIR));
setSaltPromilleWater(readIntegerFromEEPROM(ADDR_SALTPERMIL));

printValues();
}

// --------------------------------------------------
// EEPROM schreiben
// --------------------------------------------------
void EchoLotSetup::saveToEEPROM() {
writeFloatToEEPROM(ADDR_AIR_TEMP, airTemp);
writeFloatToEEPROM(ADDR_WATER_TEMP, waterTemp);
writeFloatToEEPROM(ADDR_SONIC_AIR, sonicSpeedAir);
writeIntegerToEEPROM(ADDR_SALTPERMIL, saltPromilleWater);
}

// --------------------------------------------------
// Werte anzeigen
// --------------------------------------------------
void EchoLotSetup::printValues() {
String value = String(sonicSpeedAir);
Serial.print(String(AIRTEMP) + ": " + String(getAirTemp(), 1) + ", ");
Serial.print(String(WATERTEMP) + ": " + String(getWaterTemp(), 1) + ", ");
Serial.print(String(SONICSPEEDAIR) + ": " + String(getSonicSpeedAir(), 1) + ", ");
Serial.println(String(SALTPROMILLEWATER) + ": " + String(getSaltPromilleWater()));
}

// --------------------------------------------------
// Private Helper
// --------------------------------------------------
String EchoLotSetup::getCfgOptForStepIndex(byte index) {
return ConfigStep[index];
}

String EchoLotSetup::getCfgOptUnitForStepIndex(byte index) {
switch (index) {
case 0:
case 1:
return "°C";
case 2:
case 3:
return "m/s";
default:
return "";
}
}

float EchoLotSetup::getAirTemp() const {
return airTemp;
}

void EchoLotSetup::setAirTemp(float airTemp) {
this->airTemp = airTemp;
}

float EchoLotSetup::getWaterTemp() const {
return waterTemp;
}

void EchoLotSetup::setWaterTemp(float waterTemp) {
this->waterTemp = waterTemp;
}

float EchoLotSetup::getSonicSpeedAir() const {
return sonicSpeedAir;
}

void EchoLotSetup::setSonicSpeedAir(float sonicSpeedAir) {
this->sonicSpeedAir = sonicSpeedAir;
}

int EchoLotSetup::getSaltPromilleWater() const {
return saltPromilleWater;
}

void EchoLotSetup::setSaltPromilleWater(int saltPromilleWater) {
this->saltPromilleWater = saltPromilleWater;
}

void EchoLotSetup::writeFloatToEEPROM(uint16_t addr, float value) {
uint16_t *p = (uint16_t*) (void*) &value;

// float = 2 x uint16_t
EEPROM.update(addr, p[0]);
EEPROM.update(addr + 1, p[1]);
}

float EchoLotSetup::readFloatFromEEPROM(uint16_t addr) {
float value;
uint16_t *p = (uint16_t*) (void*) &value;

p[0] = EEPROM.read(addr);
p[1] = EEPROM.read(addr + 1);

return value;
}


void EchoLotSetup::writeIntegerToEEPROM(uint16_t addr, int value) {
EEPROM.update(addr, (uint16_t) value);
}

int EchoLotSetup::readIntegerFromEEPROM(uint16_t addr) {
return (int) EEPROM.read(addr);
}

+ 74
- 0
EchoLotSetup.h Vedi File

@@ -0,0 +1,74 @@
/*
* RouterSetup.h
*
* Created on: 05.01.2026
* Author: FSmilari
*/

#ifndef ECHOLOT_SETUP_H_
#define ECHOLOT_SETUP_H_

#include <stdint.h>
#include <stdio.h>
#include <RotaryEncoder.h>
#include <EEPROM.h>
#include "Display.h"

const static char ECHOLOT_NAMESPACE[] = "echolot_stp";
const static char AIRTEMP[] = "airTemp";
const static char WATERTEMP[] = "waterTemp";
const static char SONICSPEEDAIR[] = "sonicSpeedAir";
const static char SALTPROMILLEWATER[] = "saltPromilleWater";

const static String ConfigStep[5] = { "Temp. Luft", "Temp. Wasser", "Vsonic Luft", "Salzgeh. Wasser" };

#define eeprom_start_adress 0

class EchoLotSetup {
private:
Display &display;
float airTemp; // in °C
float waterTemp; // in °C
float sonicSpeedAir; // im m/s
int saltPromilleWater;

bool doInitialization;
byte configStepIndex;
String getCfgOptForStepIndex(byte configStepIndex);
String getCfgOptUnitForStepIndex(byte configStepIndex);

void writeFloatToEEPROM(uint16_t addr, float value);
float readFloatFromEEPROM(uint16_t addr);
void writeIntegerToEEPROM(uint16_t addr, int value);
int readIntegerFromEEPROM(uint16_t addr);

public:
// int eeprom_start_adress = 0;
const static int eeprom_signatur = 1024;
const static uint8_t version = 1;

EchoLotSetup(Display &display);
void initialize();
void onRotaryControlerSwitch();
void onRotaryControlerLongSwitch();
void onRotaryControlerTurn(RotaryEncoder::Direction turn);
void save();
void cancel();

void clear();
void readFromEEPROM();
void saveToEEPROM();

void printValues();

float getAirTemp() const;
void setAirTemp(float airTemp);
float getWaterTemp() const;
void setWaterTemp(float waterTemp);
float getSonicSpeedAir() const;
void setSonicSpeedAir(float sonicSpeedAir);
int getSaltPromilleWater() const;
void setSaltPromilleWater(int saltPromilleWater);
};

#endif /* ROUTER_SETUP_H_ */

TreePositionSwitch.cpp → ThreePositionSwitch.cpp Vedi File

@@ -5,12 +5,12 @@
* Author: FSmilari
*/

#include "TreePositionSwitch.h"
#include "ThreePositionSwitch.h"

/*****************
** Constructors.
****************/
TreePositionSwitch::TreePositionSwitch(int Pos1Pin, int Pos2Pin, int Pos3Pin) : Pos1_Pin(Pos1Pin), Pos2_Pin(Pos2Pin), Pos3_Pin(Pos3Pin), actualPosition(-1) {
ThreePositionSwitch::ThreePositionSwitch(int Pos1Pin, int Pos2Pin, int Pos3Pin) : Pos1_Pin(Pos1Pin), Pos2_Pin(Pos2Pin), Pos3_Pin(Pos3Pin), actualPosition(-1) {
lastDebounceTime = 0;

pinMode(Pos1_Pin, INPUT_PULLUP);
@@ -18,7 +18,7 @@ TreePositionSwitch::TreePositionSwitch(int Pos1Pin, int Pos2Pin, int Pos3Pin) :
pinMode(Pos3_Pin, INPUT_PULLUP);
}

void TreePositionSwitch::loop(void) {
void ThreePositionSwitch::loop(void) {
int currentReadPosition = -1;

if (digitalRead(Pos1_Pin) == LOW) {
@@ -43,10 +43,10 @@ void TreePositionSwitch::loop(void) {
}
}

int TreePositionSwitch::getPosition(void) {
int ThreePositionSwitch::getPosition(void) {
return actualPosition;
}
void TreePositionSwitch::setDebounceTime(unsigned long time) {
void ThreePositionSwitch::setDebounceTime(unsigned long time) {
lastDebounceTime = time;
}


TreePositionSwitch.h → ThreePositionSwitch.h Vedi File

@@ -5,13 +5,13 @@
* Author: FSmilari
*/

#ifndef TREEPOSITIONSWITCH_H_
#define TREEPOSITIONSWITCH_H_
#ifndef THREEPOSITIONSWITCH_H_
#define THREEPOSITIONSWITCH_H_

#include "RotaryEncoder.h"
#include "ExEzButton.h"

class TreePositionSwitch: public Loopable {
class ThreePositionSwitch: public Loopable {
private:
int actualPosition;
int Pos1_Pin;
@@ -23,10 +23,10 @@ class TreePositionSwitch: public Loopable {
int lastReadPosition = -1;

public:
TreePositionSwitch(int Pos1_Pin, int Pos2_Pin, int Pos3_Pin);
ThreePositionSwitch(int Pos1_Pin, int Pos2_Pin, int Pos3_Pin);
int getPosition(void);
void setDebounceTime(unsigned long time);
void loop(void) override;
};

#endif /* TREEPOSITIONSWITCH_H_ */
#endif /* THREEPOSITIONSWITCH_H_ */

+ 0
- 221
fonts/Rubik_Regular10pt7b.h Vedi File

@@ -1,221 +0,0 @@
const uint8_t Rubik_Regular10pt7bBitmaps[] PROGMEM = {
0x00, 0xDB, 0x6D, 0xB6, 0xDB, 0x0F, 0xC0, 0xDE, 0xF7, 0x90, 0x08, 0xC1,
0x8C, 0xFF, 0xF7, 0xFF, 0x19, 0x81, 0x18, 0x11, 0x8F, 0xFE, 0xFF, 0xE3,
0x10, 0x33, 0x00, 0x0C, 0x01, 0x80, 0xF8, 0x3F, 0xCE, 0x1D, 0x81, 0xB0,
0x03, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0x00, 0x3C, 0x07, 0xC1, 0xDF, 0xF0,
0xFC, 0x0C, 0x01, 0x80, 0x78, 0x1B, 0xF0, 0xCC, 0xC6, 0x33, 0x18, 0xCC,
0xC3, 0xF6, 0x07, 0xB0, 0x01, 0xDE, 0x06, 0xFC, 0x33, 0x31, 0x8C, 0xCE,
0x33, 0x30, 0xFD, 0x81, 0xE0, 0x1E, 0x01, 0xF8, 0x1C, 0xE0, 0xC3, 0x06,
0x18, 0x19, 0x80, 0x78, 0x07, 0xC6, 0x67, 0x36, 0x1D, 0xB0, 0x79, 0xC3,
0xC7, 0xFF, 0x1F, 0x9C, 0xFF, 0x1B, 0xD8, 0xCC, 0x63, 0x18, 0xC6, 0x31,
0x8C, 0x63, 0x0C, 0x63, 0xC6, 0xC7, 0x8C, 0x61, 0x8C, 0x63, 0x18, 0xC6,
0x31, 0x8C, 0x66, 0x37, 0xB0, 0x31, 0x2B, 0xFB, 0xE3, 0x8D, 0x92, 0x00,
0x0C, 0x03, 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03,
0x00, 0xFB, 0x60, 0xFF, 0xFC, 0xF0, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30,
0x30, 0x18, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x03, 0x01, 0x80, 0xC0, 0xC0,
0x60, 0x60, 0x00, 0x1F, 0x0F, 0xF9, 0x83, 0x60, 0x3C, 0x07, 0x80, 0xF0,
0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xB0, 0x67, 0xFC, 0x3E, 0x00, 0x0E,
0x3C, 0xFB, 0xBC, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0,
0x1F, 0x0F, 0xE6, 0x1D, 0x83, 0x00, 0xC0, 0x30, 0x18, 0x0E, 0x06, 0x03,
0x01, 0x80, 0xC0, 0x7F, 0xFF, 0xF0, 0xFF, 0xBF, 0xE0, 0x38, 0x1C, 0x0E,
0x03, 0x01, 0xF0, 0x7E, 0x01, 0xC0, 0x3C, 0x0F, 0x07, 0x7F, 0x8F, 0x80,
0x01, 0x80, 0x70, 0x1E, 0x03, 0xC0, 0xD8, 0x33, 0x0E, 0x61, 0x8C, 0x61,
0x9F, 0xFF, 0xFF, 0x80, 0xC0, 0x18, 0x03, 0x00, 0x7F, 0x9F, 0xE6, 0x01,
0x80, 0x60, 0x1F, 0x8F, 0xFB, 0x87, 0x00, 0xC0, 0x3C, 0x0F, 0x87, 0x7F,
0x8F, 0x80, 0x06, 0x03, 0x00, 0xC0, 0x60, 0x3E, 0x0F, 0xE6, 0x1B, 0x03,
0xC0, 0xF0, 0x3C, 0x0D, 0x86, 0x7F, 0x87, 0x80, 0xFF, 0xFF, 0xC0, 0xC0,
0x60, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x01, 0x80,
0x1E, 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF8, 0x77, 0xF9, 0xFE, 0xE1, 0xF0,
0x3C, 0x0F, 0x87, 0x7F, 0x87, 0x80, 0x1E, 0x1F, 0xE6, 0x1F, 0x03, 0xC0,
0xF0, 0x3E, 0x1D, 0xFE, 0x1F, 0x01, 0xC0, 0x60, 0x30, 0x1C, 0x06, 0x00,
0xF0, 0x03, 0xC0, 0xF0, 0x03, 0xE8, 0x03, 0x07, 0x1E, 0x38, 0x70, 0xC0,
0xC0, 0x70, 0x38, 0x1E, 0x07, 0x03, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x07,
0xFF, 0xFE, 0xC0, 0xE0, 0x70, 0x1C, 0x0E, 0x07, 0x07, 0x0E, 0x1C, 0x70,
0xE0, 0xC0, 0x3C, 0x3F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x1C,
0x0C, 0x06, 0x00, 0x01, 0x80, 0xC0, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0xF3,
0x80, 0x66, 0x36, 0x68, 0xFC, 0xF3, 0x99, 0xE6, 0x33, 0xCC, 0x67, 0x98,
0xCF, 0x39, 0x9A, 0x3F, 0xF6, 0x39, 0xCE, 0x01, 0x8E, 0x0E, 0x0F, 0xF8,
0x07, 0xE0, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x1B, 0x00, 0xCC, 0x0C, 0x60,
0x61, 0x83, 0x0C, 0x30, 0x61, 0xFF, 0x9F, 0xFC, 0xC0, 0x66, 0x01, 0xE0,
0x0C, 0xFF, 0x3F, 0xEC, 0x1F, 0x03, 0xC0, 0xF0, 0x7F, 0xFB, 0xFE, 0xC1,
0xF0, 0x3C, 0x0F, 0x07, 0xFF, 0xBF, 0xC0, 0x1F, 0x87, 0xF9, 0xC3, 0xF0,
0x3C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x81, 0xB8, 0x73,
0xFC, 0x3F, 0x00, 0xFF, 0x1F, 0xF3, 0x07, 0x60, 0x7C, 0x07, 0x80, 0xF0,
0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xE0, 0xEF, 0xF9, 0xFE, 0x00, 0xFF,
0xFF, 0xF0, 0x18, 0x0C, 0x06, 0x03, 0xFF, 0xFF, 0xC0, 0x60, 0x30, 0x18,
0x0F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x06, 0x03, 0xFF, 0xFF,
0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x1F, 0x83, 0xFE, 0x70, 0x6E,
0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x1F, 0xC0, 0x3C, 0x03, 0xE0, 0x77,
0x0E, 0x3F, 0xC1, 0xF8, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80,
0xFF, 0xFF, 0xFF, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xC0,
0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0xDF, 0xF0, 0x0C, 0x03, 0x00, 0xC0, 0x30,
0x0C, 0x03, 0x00, 0xC0, 0x3C, 0x0F, 0x06, 0x7F, 0x8F, 0x80, 0xC1, 0xF0,
0xEC, 0x73, 0x38, 0xD8, 0x3C, 0x0E, 0x03, 0xC0, 0xF8, 0x37, 0x0C, 0xE3,
0x1C, 0xC3, 0xB0, 0x70, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01,
0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xFF, 0xFC, 0xC0, 0x3E, 0x07, 0xE0,
0x7F, 0x0F, 0xF0, 0xFD, 0x9B, 0xD9, 0xBC, 0xF3, 0xCF, 0x3C, 0x63, 0xC6,
0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0xF8, 0x3E, 0x0F, 0xC3, 0xD0, 0xF6,
0x3C, 0xCF, 0x33, 0xC6, 0xF0, 0xBC, 0x3F, 0x07, 0xC1, 0xF0, 0x30, 0x1F,
0x07, 0xF1, 0x83, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78,
0x0F, 0x83, 0xB0, 0x63, 0xF8, 0x3E, 0x00, 0xFF, 0x3F, 0xEC, 0x1F, 0x03,
0xC0, 0xF0, 0x3C, 0x1F, 0xFE, 0xFF, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30,
0x00, 0x1F, 0x07, 0xF9, 0x83, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03,
0xC0, 0x78, 0x0F, 0x83, 0xB0, 0x63, 0xFC, 0x3F, 0x80, 0x18, 0xFF, 0x3F,
0xEC, 0x1F, 0x03, 0xC0, 0xF0, 0x7F, 0xFB, 0xFC, 0xC2, 0x30, 0xCC, 0x13,
0x06, 0xC0, 0xF0, 0x30, 0x3E, 0x0F, 0xF3, 0x87, 0x60, 0x6C, 0x00, 0xC0,
0x0F, 0x80, 0x3C, 0x00, 0xE0, 0x0F, 0x01, 0xF0, 0x77, 0xFC, 0x7E, 0x00,
0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03,
0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0,
0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0D, 0x86, 0x7F, 0x87, 0x80,
0xC0, 0x78, 0x0F, 0x01, 0xB0, 0x66, 0x0C, 0xC1, 0x8C, 0x61, 0x8C, 0x31,
0x83, 0x60, 0x6C, 0x0D, 0x80, 0xE0, 0x1C, 0x00, 0xC0, 0x0F, 0x00, 0x3C,
0x00, 0xF0, 0xC2, 0x43, 0x19, 0x9C, 0x66, 0x79, 0x99, 0xE6, 0x64, 0x90,
0xB3, 0x43, 0xCF, 0x0E, 0x3C, 0x38, 0x70, 0xE1, 0x80, 0x60, 0x37, 0x06,
0x30, 0xE1, 0x8C, 0x0D, 0x80, 0xF8, 0x07, 0x00, 0x70, 0x0F, 0x81, 0xD8,
0x18, 0xC3, 0x06, 0x60, 0x7E, 0x03, 0xC0, 0x36, 0x06, 0x60, 0x63, 0x0C,
0x39, 0xC1, 0x98, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60,
0x06, 0x00, 0x60, 0xFF, 0xFF, 0xF0, 0x18, 0x0E, 0x03, 0x01, 0x80, 0xC0,
0x70, 0x18, 0x0C, 0x06, 0x01, 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xF1, 0x8C,
0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xFE, 0xC0, 0x30, 0x18,
0x06, 0x03, 0x00, 0x80, 0x60, 0x30, 0x0C, 0x06, 0x01, 0x00, 0xC0, 0x60,
0x18, 0x0C, 0x02, 0x01, 0x80, 0xC0, 0xFF, 0xC6, 0x31, 0x8C, 0x63, 0x18,
0xC6, 0x31, 0x8C, 0x63, 0x1F, 0xFE, 0x31, 0xEC, 0xC0, 0xFF, 0xFF, 0xFF,
0xC0, 0xE3, 0x8E, 0x1E, 0x1F, 0x98, 0xEC, 0x30, 0xFB, 0x8F, 0x07, 0x87,
0xFF, 0xBE, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0D, 0xE7, 0xFB, 0x8F, 0x83,
0xC1, 0xE0, 0xF0, 0x7C, 0x7F, 0xF6, 0xF0, 0x3E, 0x3F, 0xB8, 0x78, 0x3C,
0x06, 0x03, 0x07, 0xC3, 0x7F, 0x1F, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0x03,
0x3E, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x87, 0x7F, 0xCF,
0xB0, 0x3E, 0x3F, 0xB0, 0xF0, 0x3F, 0xFF, 0xFF, 0x07, 0x86, 0x7F, 0x1F,
0x00, 0x1E, 0x7C, 0xC1, 0x83, 0x1F, 0xFF, 0x98, 0x30, 0x60, 0xC1, 0x83,
0x06, 0x0C, 0x00, 0x3E, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F,
0x87, 0x7F, 0xCF, 0xB4, 0x0D, 0x87, 0x7F, 0x87, 0xC0, 0xC0, 0x60, 0x30,
0x18, 0x0D, 0xE7, 0xFB, 0x8F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E,
0x0C, 0xFC, 0x0D, 0xB6, 0xDB, 0x6D, 0x80, 0x39, 0xC0, 0x01, 0x8C, 0x63,
0x18, 0xC6, 0x31, 0x8C, 0x63, 0xFF, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C,
0x36, 0x73, 0x71, 0xE0, 0xE0, 0x78, 0x36, 0x19, 0xCC, 0x76, 0x1C, 0xFF,
0xFF, 0xFF, 0xF0, 0xDC, 0xF3, 0xFF, 0xEE, 0x79, 0xF0, 0xC3, 0xC3, 0x0F,
0x0C, 0x3C, 0x30, 0xF0, 0xC3, 0xC3, 0x0F, 0x0C, 0x30, 0xDE, 0x7F, 0xB8,
0xF8, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xC0, 0x3E, 0x1F, 0xCE,
0x1B, 0x06, 0xC0, 0xF0, 0x3C, 0x1B, 0x86, 0x7F, 0x0F, 0x80, 0xDE, 0x7F,
0xB8, 0xF8, 0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0xFF, 0x6F, 0x30, 0x18, 0x0C,
0x06, 0x00, 0x3E, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x87,
0x7F, 0xCF, 0xB0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0xDF, 0xFE, 0x30, 0xC3,
0x0C, 0x30, 0xC3, 0x00, 0x1E, 0x3F, 0xD8, 0x6C, 0x03, 0x80, 0x38, 0x07,
0xC3, 0x7F, 0x9F, 0x00, 0x30, 0x60, 0xC1, 0x8F, 0xFF, 0xCC, 0x18, 0x30,
0x60, 0xC1, 0x83, 0xE3, 0xC0, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0,
0x3C, 0x0F, 0x87, 0x7F, 0xCF, 0xB0, 0xC0, 0xF0, 0x6C, 0x19, 0x8C, 0x63,
0x0D, 0x83, 0x60, 0x70, 0x1C, 0x03, 0x00, 0xC3, 0x07, 0x0C, 0x3C, 0x78,
0xD9, 0xE6, 0x66, 0x99, 0xB3, 0x63, 0xCF, 0x0E, 0x1C, 0x38, 0x70, 0x61,
0x80, 0xC1, 0xB1, 0x9D, 0xC6, 0xC1, 0xC0, 0xE0, 0xD8, 0xC6, 0xE3, 0xE0,
0xC0, 0xC0, 0xF0, 0x64, 0x19, 0x8C, 0x63, 0x0D, 0x83, 0x60, 0x70, 0x1C,
0x02, 0x01, 0x80, 0x60, 0x30, 0x0C, 0x00, 0xFF, 0xFF, 0x06, 0x0C, 0x18,
0x10, 0x30, 0x60, 0xFF, 0xFF, 0x0E, 0x3C, 0x61, 0x83, 0x06, 0x0C, 0x18,
0x71, 0x81, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x18, 0x3C, 0x38, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xF0, 0xE1, 0xE0, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x1C,
0x0C, 0x70, 0xC1, 0x83, 0x06, 0x0C, 0x31, 0xE3, 0x80, 0x7F, 0xFF, 0x80 };

const GFXglyph Rubik_Regular10pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 5, 0, 0 }, // 0x20 ' '
{ 1, 3, 14, 5, 1, -13 }, // 0x21 '!'
{ 7, 5, 4, 7, 1, -13 }, // 0x22 '"'
{ 10, 12, 11, 14, 1, -11 }, // 0x23 '#'
{ 27, 11, 18, 13, 1, -15 }, // 0x24 '$'
{ 52, 14, 14, 16, 1, -13 }, // 0x25 '%'
{ 77, 13, 14, 14, 1, -13 }, // 0x26 '&'
{ 100, 2, 4, 4, 1, -13 }, // 0x27 '''
{ 101, 5, 19, 7, 1, -15 }, // 0x28 '('
{ 113, 5, 19, 7, 1, -15 }, // 0x29 ')'
{ 125, 7, 7, 9, 1, -14 }, // 0x2A '*'
{ 132, 10, 10, 12, 1, -10 }, // 0x2B '+'
{ 145, 3, 4, 5, 1, -1 }, // 0x2C ','
{ 147, 7, 2, 10, 1, -6 }, // 0x2D '-'
{ 149, 2, 2, 5, 1, -1 }, // 0x2E '.'
{ 150, 9, 18, 10, 0, -15 }, // 0x2F '/'
{ 171, 11, 14, 13, 1, -13 }, // 0x30 '0'
{ 191, 7, 14, 8, 0, -13 }, // 0x31 '1'
{ 204, 10, 14, 11, 0, -13 }, // 0x32 '2'
{ 222, 10, 14, 12, 1, -13 }, // 0x33 '3'
{ 240, 11, 14, 12, 0, -13 }, // 0x34 '4'
{ 260, 10, 14, 12, 1, -13 }, // 0x35 '5'
{ 278, 10, 14, 12, 1, -13 }, // 0x36 '6'
{ 296, 9, 14, 10, 1, -13 }, // 0x37 '7'
{ 312, 10, 14, 12, 1, -13 }, // 0x38 '8'
{ 330, 10, 14, 12, 1, -13 }, // 0x39 '9'
{ 348, 2, 9, 5, 2, -8 }, // 0x3A ':'
{ 351, 2, 11, 6, 2, -8 }, // 0x3B ';'
{ 354, 8, 12, 10, 1, -12 }, // 0x3C '<'
{ 366, 9, 7, 11, 1, -9 }, // 0x3D '='
{ 374, 8, 12, 10, 1, -12 }, // 0x3E '>'
{ 386, 9, 14, 11, 1, -13 }, // 0x3F '?'
{ 402, 15, 17, 17, 1, -13 }, // 0x40 '@'
{ 434, 13, 14, 14, 0, -13 }, // 0x41 'A'
{ 457, 10, 14, 13, 2, -13 }, // 0x42 'B'
{ 475, 11, 14, 13, 1, -13 }, // 0x43 'C'
{ 495, 11, 14, 14, 2, -13 }, // 0x44 'D'
{ 515, 9, 14, 12, 2, -13 }, // 0x45 'E'
{ 531, 9, 14, 12, 2, -13 }, // 0x46 'F'
{ 547, 12, 14, 14, 1, -13 }, // 0x47 'G'
{ 568, 11, 14, 15, 2, -13 }, // 0x48 'H'
{ 588, 2, 14, 5, 2, -13 }, // 0x49 'I'
{ 592, 10, 14, 13, 1, -13 }, // 0x4A 'J'
{ 610, 10, 14, 12, 2, -13 }, // 0x4B 'K'
{ 628, 9, 14, 11, 2, -13 }, // 0x4C 'L'
{ 644, 12, 14, 16, 2, -13 }, // 0x4D 'M'
{ 665, 10, 14, 14, 2, -13 }, // 0x4E 'N'
{ 683, 11, 14, 13, 1, -13 }, // 0x4F 'O'
{ 703, 10, 14, 13, 2, -13 }, // 0x50 'P'
{ 721, 11, 15, 13, 1, -13 }, // 0x51 'Q'
{ 742, 10, 14, 13, 2, -13 }, // 0x52 'R'
{ 760, 11, 14, 13, 1, -13 }, // 0x53 'S'
{ 780, 10, 14, 11, 1, -13 }, // 0x54 'T'
{ 798, 10, 14, 14, 2, -13 }, // 0x55 'U'
{ 816, 11, 14, 13, 1, -13 }, // 0x56 'V'
{ 836, 14, 14, 16, 1, -13 }, // 0x57 'W'
{ 861, 12, 14, 13, 0, -13 }, // 0x58 'X'
{ 882, 12, 14, 13, 0, -13 }, // 0x59 'Y'
{ 903, 10, 14, 12, 1, -13 }, // 0x5A 'Z'
{ 921, 5, 19, 7, 1, -15 }, // 0x5B '['
{ 933, 9, 18, 10, 0, -15 }, // 0x5C '\'
{ 954, 5, 19, 6, 0, -15 }, // 0x5D ']'
{ 966, 6, 3, 8, 1, -14 }, // 0x5E '^'
{ 969, 13, 2, 15, 1, 0 }, // 0x5F '_'
{ 973, 5, 3, 7, 1, -14 }, // 0x60 '`'
{ 975, 9, 10, 11, 1, -9 }, // 0x61 'a'
{ 987, 9, 14, 12, 2, -13 }, // 0x62 'b'
{ 1003, 9, 10, 11, 1, -9 }, // 0x63 'c'
{ 1015, 10, 14, 13, 1, -13 }, // 0x64 'd'
{ 1033, 9, 10, 11, 1, -9 }, // 0x65 'e'
{ 1045, 7, 15, 8, 1, -14 }, // 0x66 'f'
{ 1059, 10, 14, 13, 1, -9 }, // 0x67 'g'
{ 1077, 9, 14, 12, 2, -13 }, // 0x68 'h'
{ 1093, 3, 14, 5, 1, -13 }, // 0x69 'i'
{ 1099, 5, 18, 5, -1, -13 }, // 0x6A 'j'
{ 1111, 9, 14, 10, 1, -13 }, // 0x6B 'k'
{ 1127, 2, 14, 5, 1, -13 }, // 0x6C 'l'
{ 1131, 14, 10, 17, 2, -9 }, // 0x6D 'm'
{ 1149, 9, 10, 12, 2, -9 }, // 0x6E 'n'
{ 1161, 10, 10, 12, 1, -9 }, // 0x6F 'o'
{ 1174, 9, 14, 12, 2, -9 }, // 0x70 'p'
{ 1190, 10, 14, 13, 1, -9 }, // 0x71 'q'
{ 1208, 6, 10, 8, 1, -9 }, // 0x72 'r'
{ 1216, 9, 10, 10, 0, -9 }, // 0x73 's'
{ 1228, 7, 14, 8, 0, -13 }, // 0x74 't'
{ 1241, 10, 10, 13, 1, -9 }, // 0x75 'u'
{ 1254, 10, 10, 11, 1, -9 }, // 0x76 'v'
{ 1267, 14, 10, 16, 1, -9 }, // 0x77 'w'
{ 1285, 9, 10, 11, 1, -9 }, // 0x78 'x'
{ 1297, 10, 14, 11, 1, -9 }, // 0x79 'y'
{ 1315, 8, 10, 10, 1, -9 }, // 0x7A 'z'
{ 1325, 7, 19, 8, 0, -15 }, // 0x7B '{'
{ 1342, 2, 22, 5, 1, -17 }, // 0x7C '|'
{ 1348, 7, 19, 8, 0, -15 }, // 0x7D '}'
{ 1365, 9, 2, 11, 1, -6 } }; // 0x7E '~'

const GFXfont Rubik_Regular10pt7b PROGMEM = {
(uint8_t *)Rubik_Regular10pt7bBitmaps,
(GFXglyph *)Rubik_Regular10pt7bGlyphs,
0x20, 0x7E, 23 };

// Approx. 2040 bytes

#pragma once

+ 250
- 0
fonts/titillium_web_regular12pt7b.h Vedi File

@@ -0,0 +1,250 @@
const uint8_t titillium_web_regular12pt7bBitmaps[] PROGMEM = {
0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xC0, 0x8C, 0x63, 0x18, 0xC4, 0x30, 0x83,
0x08, 0x30, 0x83, 0x08, 0xFF, 0xFF, 0xFF, 0x30, 0x83, 0x08, 0x30, 0x83,
0x08, 0xFF, 0xFF, 0xFF, 0x30, 0x83, 0x08, 0x30, 0x83, 0x08, 0x02, 0x01,
0x80, 0x60, 0xFF, 0xFF, 0xB1, 0x08, 0x42, 0x10, 0xC4, 0x3B, 0x07, 0xE0,
0x3E, 0x09, 0xC2, 0x30, 0x8C, 0x23, 0x08, 0xF6, 0xEF, 0xF0, 0x40, 0x10,
0x04, 0x00, 0x71, 0x8D, 0x90, 0x99, 0x08, 0xB0, 0x9A, 0x0F, 0x20, 0x62,
0x00, 0x60, 0x04, 0x00, 0x40, 0x0D, 0xE0, 0x93, 0x09, 0x31, 0x93, 0x11,
0x31, 0x1E, 0x07, 0x80, 0x3F, 0x80, 0x63, 0x81, 0x83, 0x03, 0x06, 0x02,
0x08, 0x06, 0x70, 0x0F, 0xC0, 0x76, 0x18, 0xC6, 0x33, 0x06, 0x66, 0x06,
0x8C, 0x07, 0x18, 0x06, 0x38, 0x1E, 0x3C, 0xE7, 0x3F, 0x86, 0xFC, 0x33,
0x36, 0x66, 0x6C, 0xCC, 0xCC, 0xCC, 0x66, 0x66, 0x33, 0x30, 0xCC, 0x66,
0x66, 0x33, 0x33, 0x33, 0x33, 0x33, 0x66, 0x6C, 0xC0, 0x0C, 0x48, 0xE8,
0x38, 0x3F, 0x68, 0xC8, 0x0C, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x61,
0xFF, 0xFF, 0xF8, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x6F, 0x6D,
0x00, 0xFE, 0xFC, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18,
0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x1F, 0x87, 0xF9, 0x83,
0xF0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xE0,
0x3C, 0x06, 0xC1, 0xDE, 0x70, 0xFC, 0x0C, 0x77, 0xFB, 0x8C, 0x30, 0xC3,
0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0xFE, 0x3F, 0xE0, 0x18, 0x06, 0x01,
0x80, 0x60, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x18, 0x0F,
0xFF, 0xFF, 0x7F, 0x8F, 0xF8, 0x03, 0x00, 0x60, 0x04, 0x01, 0x80, 0x71,
0xF8, 0x3F, 0xC0, 0x1C, 0x01, 0x80, 0x30, 0x06, 0x01, 0xDC, 0x77, 0xFC,
0x0C, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x03, 0x00, 0x30, 0x82, 0x08,
0x60, 0x86, 0x08, 0xC0, 0x8F, 0xFF, 0xFF, 0xF0, 0x08, 0x00, 0x80, 0x08,
0xFF, 0xBF, 0xEC, 0x03, 0x00, 0xC0, 0x20, 0x0B, 0xF3, 0xFE, 0x81, 0xC0,
0x30, 0x0C, 0x03, 0x00, 0xC0, 0x7E, 0x7B, 0xFC, 0x0F, 0xE7, 0xFD, 0xC0,
0x30, 0x04, 0x01, 0x80, 0x33, 0xE7, 0xFE, 0xC0, 0xF8, 0x0F, 0x01, 0xA0,
0x36, 0x06, 0xC0, 0xCE, 0x70, 0xFC, 0xFF, 0xFF, 0xF0, 0x0C, 0x06, 0x01,
0x80, 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03,
0x00, 0xC0, 0x3F, 0x87, 0xFE, 0xE0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0x60,
0xE3, 0xF8, 0x7F, 0xCE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0x79,
0xE3, 0xF8, 0x1F, 0x0F, 0xF1, 0x83, 0x60, 0x2C, 0x07, 0x80, 0xF0, 0x1F,
0x03, 0x7F, 0xE7, 0xEC, 0x01, 0x80, 0x30, 0x06, 0x01, 0x98, 0xF3, 0xF8,
0xF0, 0x03, 0xF0, 0x6C, 0x00, 0x03, 0x6D, 0x6C, 0x00, 0x40, 0x30, 0x3C,
0x3C, 0x38, 0x38, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0C, 0x01, 0xFF,
0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x80, 0x30, 0x07, 0x00, 0x78,
0x07, 0x80, 0x70, 0x1C, 0x1C, 0x1C, 0x1C, 0x0C, 0x02, 0x00, 0x7C, 0x7F,
0x80, 0xE0, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x02, 0x00,
0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0x03, 0xFF, 0x00, 0x78, 0x1E, 0x07,
0x00, 0x18, 0x60, 0x00, 0x66, 0x00, 0x03, 0xB0, 0x7F, 0x0D, 0x87, 0xB8,
0x78, 0x70, 0x43, 0xC3, 0x02, 0x0E, 0x18, 0x10, 0x70, 0xC0, 0x83, 0x86,
0x04, 0x1C, 0x30, 0x21, 0xE1, 0x81, 0x0F, 0x0C, 0x0C, 0x6C, 0x3B, 0xE6,
0x60, 0xF9, 0xF3, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xFF,
0xE0, 0x00, 0xFF, 0x00, 0x0F, 0x00, 0x78, 0x02, 0x60, 0x33, 0x01, 0x98,
0x0C, 0x60, 0xC3, 0x06, 0x18, 0x30, 0x41, 0x03, 0x18, 0x18, 0xFF, 0xC7,
0xFF, 0x20, 0x1B, 0x00, 0xD8, 0x06, 0xC0, 0x18, 0xFF, 0x0F, 0xFC, 0xC0,
0xEC, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x0C, 0xFF, 0x8C, 0x1E, 0xC0,
0x6C, 0x02, 0xC0, 0x3C, 0x06, 0xC0, 0x6F, 0xFE, 0xFF, 0x80, 0x0F, 0xC7,
0xFD, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03,
0x00, 0x20, 0x06, 0x00, 0xC0, 0x1C, 0x01, 0xE3, 0x1F, 0xE0, 0xFE, 0x0F,
0xFC, 0xC0, 0xEC, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C,
0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0xC0, 0xEF, 0xFC, 0xFF, 0x80,
0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xFF, 0xB0,
0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF,
0xFC, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xFF, 0xBF, 0xEC, 0x03,
0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0xE3, 0xFF, 0x30,
0x06, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0xFC, 0x0F, 0xC0,
0x34, 0x03, 0x60, 0x36, 0x03, 0x70, 0x33, 0xC7, 0x1F, 0xF0, 0xC0, 0x3C,
0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xFF, 0xFC,
0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x30,
0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6,
0x31, 0x8C, 0x63, 0x1F, 0xB8, 0xC0, 0x78, 0x1B, 0x03, 0x60, 0xCC, 0x19,
0x86, 0x31, 0xC6, 0x30, 0xFC, 0x1F, 0xC3, 0x18, 0x61, 0x8C, 0x39, 0x83,
0x30, 0x36, 0x06, 0xC0, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03,
0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0xFF, 0xFF,
0x80, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0, 0x0F, 0xD8, 0x1B, 0xD8,
0x1B, 0xC8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xC4, 0x23, 0xC6, 0x63, 0xC6,
0x63, 0xC2, 0x43, 0xC3, 0xC3, 0xC3, 0xC3, 0xC1, 0x83, 0xC0, 0x03, 0xF0,
0x3F, 0x03, 0xD0, 0x3D, 0x83, 0xD8, 0x3C, 0xC3, 0xCC, 0x3C, 0x63, 0xC6,
0x3C, 0x23, 0xC3, 0x3C, 0x33, 0xC1, 0xBC, 0x1B, 0xC0, 0xBC, 0x0F, 0xC0,
0x70, 0x0F, 0xC0, 0xFF, 0x83, 0x03, 0x18, 0x06, 0x60, 0x19, 0x80, 0x6C,
0x01, 0xB0, 0x02, 0xC0, 0x0F, 0x00, 0x2C, 0x00, 0x90, 0x06, 0x60, 0x19,
0x80, 0x67, 0x03, 0x0F, 0x3C, 0x1F, 0xE0, 0xFF, 0x1F, 0xFB, 0x03, 0xE0,
0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x1B, 0xFE, 0x60, 0x0C,
0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x00, 0x0F, 0xC0, 0xFF, 0x83, 0x03,
0x18, 0x06, 0x60, 0x19, 0x80, 0x6C, 0x01, 0xB0, 0x02, 0xC0, 0x0F, 0x00,
0x2C, 0x00, 0x90, 0x06, 0x60, 0x19, 0x80, 0x67, 0x03, 0x8F, 0x3C, 0x1F,
0xE0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0xFF, 0x0F, 0xFC, 0xC0, 0xEC, 0x06,
0xC0, 0x6C, 0x02, 0xC0, 0x2C, 0x06, 0xC0, 0xEF, 0xFC, 0xFF, 0x8C, 0x18,
0xC1, 0xCC, 0x0C, 0xC0, 0xCC, 0x06, 0xC0, 0x70, 0x1F, 0xEF, 0xF9, 0x80,
0x60, 0x0C, 0x01, 0x80, 0x38, 0x03, 0xC0, 0x1F, 0x80, 0x78, 0x03, 0x80,
0x30, 0x06, 0x00, 0xC0, 0x37, 0x9E, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0x06,
0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06,
0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x3C,
0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C,
0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0xE0, 0x67, 0x1E, 0x3F, 0x80,
0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06,
0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x19, 0x81, 0x98, 0x19, 0x80, 0xF0,
0x0F, 0x00, 0xC0, 0x00, 0x3C, 0x0E, 0x06, 0xC0, 0xE0, 0x6C, 0x0A, 0x06,
0x40, 0xB0, 0x66, 0x1B, 0x04, 0x61, 0xB0, 0xC6, 0x19, 0x0C, 0x61, 0x18,
0xC2, 0x31, 0x8C, 0x33, 0x18, 0x83, 0x30, 0x88, 0x32, 0x09, 0x83, 0x20,
0xD8, 0x16, 0x0D, 0x81, 0xE0, 0xF0, 0x1E, 0x07, 0x00, 0xE0, 0x1B, 0x01,
0x8C, 0x0C, 0x60, 0xC1, 0x84, 0x06, 0x60, 0x36, 0x00, 0xF0, 0x07, 0x00,
0x38, 0x01, 0x60, 0x19, 0x81, 0x8C, 0x0C, 0x30, 0xC1, 0x8C, 0x06, 0xE0,
0x18, 0xC0, 0x1B, 0x01, 0x98, 0x1C, 0x60, 0xC3, 0x8C, 0x0C, 0x60, 0x36,
0x01, 0xB0, 0x07, 0x00, 0x38, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00,
0x08, 0x00, 0x40, 0x02, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x80, 0x60, 0x18,
0x03, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, 0x1C, 0x03, 0x00, 0xC0,
0x30, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xF1, 0x8C, 0x63, 0x18, 0xC6, 0x31,
0x8C, 0x63, 0x18, 0xC6, 0x31, 0xFF, 0x80, 0xC0, 0x60, 0x30, 0x0C, 0x06,
0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03, 0x00, 0x80, 0x60, 0x30, 0x0C,
0x06, 0x01, 0x80, 0xFF, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C,
0x63, 0x18, 0xC7, 0xFF, 0x80, 0x06, 0x01, 0xC0, 0x2C, 0x0C, 0x83, 0x18,
0x61, 0x18, 0x37, 0x03, 0xFF, 0xFF, 0xFC, 0x83, 0x83, 0xC2, 0x7F, 0x08,
0x70, 0x06, 0x00, 0xC0, 0x18, 0x7F, 0x38, 0x66, 0x0C, 0xC1, 0x98, 0x33,
0x8F, 0x3F, 0x70, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x07, 0xFB, 0x8F, 0x83,
0xC1, 0xE0, 0xF0, 0x38, 0x1C, 0x1E, 0x0F, 0x07, 0x8E, 0xFE, 0x00, 0x3F,
0x38, 0x98, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x30, 0x1C, 0x47,
0xF0, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xCF, 0xF7, 0x1D, 0x83, 0xC0,
0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x36, 0x0D, 0xCF, 0x3F, 0xC0, 0x3F,
0x1C, 0x66, 0x0F, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0xC0, 0x18, 0x07,
0x04, 0xFF, 0x3E, 0xE1, 0x83, 0x06, 0x1F, 0xFF, 0xB0, 0x60, 0xC1, 0x83,
0x06, 0x0C, 0x18, 0x30, 0x60, 0x3F, 0xEC, 0x7F, 0x06, 0x60, 0x4C, 0x08,
0x83, 0x1F, 0xE1, 0xF8, 0x20, 0x0C, 0x00, 0xFC, 0x1F, 0xE6, 0x0F, 0x80,
0xF0, 0x1F, 0x06, 0x7F, 0xC3, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x07,
0xFB, 0x8F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83,
0xC1, 0x80, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0x18, 0xC0, 0x00, 0x0C, 0x63,
0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x84, 0x66, 0x60, 0xC0, 0x60, 0x30,
0x18, 0x0C, 0x06, 0x1F, 0x0D, 0x8C, 0xCC, 0x66, 0x3E, 0x1B, 0x8C, 0xC6,
0x33, 0x19, 0x86, 0xC1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0x7E,
0xF3, 0xE7, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x81, 0xC1, 0x81, 0xC1, 0x81,
0xC1, 0x81, 0xC1, 0x81, 0xC1, 0x81, 0xC1, 0x81, 0xC1, 0x81, 0xFF, 0x79,
0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x30,
0x3F, 0x1C, 0x76, 0x0F, 0x03, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0xD8,
0x37, 0x1C, 0xFE, 0xFF, 0x79, 0xF0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x81,
0xC1, 0xE0, 0xF1, 0xDF, 0xCC, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x00, 0x3F,
0xDC, 0x36, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x37,
0x3C, 0xFF, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xDF, 0xFE, 0x30,
0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0x7F, 0xF0, 0xF0, 0x18, 0x0E, 0x03,
0xF0, 0x7E, 0x03, 0x01, 0x80, 0xF8, 0xFF, 0xE0, 0x60, 0xC1, 0x83, 0x0F,
0xFF, 0xD8, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x0C, 0x1F, 0x81, 0xC0,
0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0xC1, 0xE0, 0xF9, 0xEF, 0xF0,
0xC0, 0xF0, 0x3C, 0x19, 0x06, 0x61, 0x98, 0x46, 0x30, 0xCC, 0x33, 0x0D,
0x81, 0xE0, 0x78, 0xC1, 0x81, 0xE0, 0xC1, 0xB0, 0x70, 0xC8, 0x78, 0x66,
0x34, 0x23, 0x13, 0x31, 0x99, 0x98, 0x4C, 0xCC, 0x36, 0x26, 0x1A, 0x1A,
0x0F, 0x0F, 0x07, 0x83, 0x80, 0xC1, 0xE1, 0x98, 0xC6, 0xC3, 0x40, 0xE0,
0x70, 0x68, 0x36, 0x31, 0xB0, 0xD8, 0x30, 0xC0, 0xF0, 0x3C, 0x19, 0x06,
0x61, 0x98, 0x46, 0x30, 0xCC, 0x33, 0x0D, 0x81, 0xE0, 0x78, 0x04, 0x03,
0x00, 0xC0, 0x30, 0x18, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x60, 0x60,
0x60, 0x60, 0x70, 0x30, 0x3F, 0xFF, 0xF0, 0x0C, 0x73, 0x0C, 0x30, 0xC3,
0x0C, 0x31, 0x88, 0x38, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x07, 0x0C, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE1, 0xE0, 0xC0, 0x81, 0x02, 0x04, 0x08,
0x18, 0x38, 0x18, 0xE1, 0x82, 0x04, 0x08, 0x10, 0x20, 0xC7, 0x8E, 0x00,
0x70, 0x3F, 0x38, 0xF8 };

const GFXglyph titillium_web_regular12pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 5, 0, 0 }, // 0x20 ' '
{ 1, 2, 17, 6, 2, -16 }, // 0x21 '!'
{ 6, 5, 6, 9, 2, -16 }, // 0x22 '"'
{ 10, 12, 16, 13, 1, -15 }, // 0x23 '#'
{ 34, 10, 22, 13, 2, -18 }, // 0x24 '$'
{ 62, 12, 16, 13, 1, -15 }, // 0x25 '%'
{ 86, 15, 17, 17, 1, -16 }, // 0x26 '&'
{ 118, 1, 6, 5, 2, -16 }, // 0x27 '''
{ 119, 4, 21, 6, 1, -17 }, // 0x28 '('
{ 130, 4, 21, 6, 1, -17 }, // 0x29 ')'
{ 141, 8, 8, 10, 1, -16 }, // 0x2A '*'
{ 149, 11, 12, 13, 1, -11 }, // 0x2B '+'
{ 166, 3, 6, 5, 1, -2 }, // 0x2C ','
{ 169, 7, 1, 11, 2, -6 }, // 0x2D '-'
{ 170, 2, 3, 5, 2, -2 }, // 0x2E '.'
{ 171, 8, 17, 10, 1, -16 }, // 0x2F '/'
{ 188, 11, 16, 13, 1, -15 }, // 0x30 '0'
{ 210, 6, 16, 13, 3, -15 }, // 0x31 '1'
{ 222, 10, 16, 13, 2, -15 }, // 0x32 '2'
{ 242, 11, 16, 13, 1, -15 }, // 0x33 '3'
{ 264, 12, 16, 13, 1, -15 }, // 0x34 '4'
{ 288, 10, 16, 13, 2, -15 }, // 0x35 '5'
{ 308, 11, 16, 13, 1, -15 }, // 0x36 '6'
{ 330, 10, 16, 13, 2, -15 }, // 0x37 '7'
{ 350, 12, 16, 13, 1, -15 }, // 0x38 '8'
{ 374, 11, 16, 13, 1, -15 }, // 0x39 '9'
{ 396, 2, 10, 5, 2, -9 }, // 0x3A ':'
{ 399, 3, 13, 6, 1, -9 }, // 0x3B ';'
{ 404, 10, 12, 13, 1, -11 }, // 0x3C '<'
{ 419, 10, 6, 13, 2, -8 }, // 0x3D '='
{ 427, 10, 12, 13, 2, -11 }, // 0x3E '>'
{ 442, 9, 17, 11, 1, -16 }, // 0x3F '?'
{ 462, 21, 22, 23, 1, -16 }, // 0x40 '@'
{ 520, 13, 17, 14, 1, -16 }, // 0x41 'A'
{ 548, 12, 17, 15, 2, -16 }, // 0x42 'B'
{ 574, 11, 17, 13, 1, -16 }, // 0x43 'C'
{ 598, 12, 17, 15, 2, -16 }, // 0x44 'D'
{ 624, 10, 17, 13, 2, -16 }, // 0x45 'E'
{ 646, 10, 17, 13, 2, -16 }, // 0x46 'F'
{ 668, 12, 17, 15, 1, -16 }, // 0x47 'G'
{ 694, 12, 17, 16, 2, -16 }, // 0x48 'H'
{ 720, 2, 17, 6, 2, -16 }, // 0x49 'I'
{ 725, 5, 19, 7, 0, -16 }, // 0x4A 'J'
{ 737, 11, 17, 14, 2, -16 }, // 0x4B 'K'
{ 761, 9, 17, 12, 2, -16 }, // 0x4C 'L'
{ 781, 16, 17, 20, 2, -16 }, // 0x4D 'M'
{ 815, 12, 17, 16, 2, -16 }, // 0x4E 'N'
{ 841, 14, 17, 16, 1, -16 }, // 0x4F 'O'
{ 871, 11, 17, 14, 2, -16 }, // 0x50 'P'
{ 895, 14, 20, 16, 1, -16 }, // 0x51 'Q'
{ 930, 12, 17, 15, 2, -16 }, // 0x52 'R'
{ 956, 11, 17, 13, 1, -16 }, // 0x53 'S'
{ 980, 12, 17, 13, 0, -16 }, // 0x54 'T'
{ 1006, 12, 17, 15, 2, -16 }, // 0x55 'U'
{ 1032, 12, 17, 14, 1, -16 }, // 0x56 'V'
{ 1058, 20, 17, 21, 1, -16 }, // 0x57 'W'
{ 1101, 13, 17, 13, 0, -16 }, // 0x58 'X'
{ 1129, 13, 17, 13, 0, -16 }, // 0x59 'Y'
{ 1157, 11, 17, 13, 1, -16 }, // 0x5A 'Z'
{ 1181, 5, 21, 8, 2, -17 }, // 0x5B '['
{ 1195, 9, 17, 10, 1, -16 }, // 0x5C '\'
{ 1215, 5, 21, 8, 1, -17 }, // 0x5D ']'
{ 1229, 11, 8, 13, 1, -15 }, // 0x5E '^'
{ 1240, 11, 2, 15, 2, 3 }, // 0x5F '_'
{ 1243, 6, 4, 6, 0, -17 }, // 0x60 '`'
{ 1246, 11, 12, 12, 1, -11 }, // 0x61 'a'
{ 1263, 9, 17, 13, 2, -16 }, // 0x62 'b'
{ 1283, 9, 12, 10, 1, -11 }, // 0x63 'c'
{ 1297, 10, 17, 13, 1, -16 }, // 0x64 'd'
{ 1319, 10, 12, 12, 1, -11 }, // 0x65 'e'
{ 1334, 7, 17, 8, 1, -16 }, // 0x66 'f'
{ 1349, 11, 18, 12, 1, -11 }, // 0x67 'g'
{ 1374, 9, 17, 13, 2, -16 }, // 0x68 'h'
{ 1394, 2, 17, 5, 2, -16 }, // 0x69 'i'
{ 1399, 5, 22, 5, -1, -16 }, // 0x6A 'j'
{ 1413, 9, 17, 12, 2, -16 }, // 0x6B 'k'
{ 1433, 2, 17, 6, 2, -16 }, // 0x6C 'l'
{ 1438, 16, 12, 20, 2, -11 }, // 0x6D 'm'
{ 1462, 9, 12, 13, 2, -11 }, // 0x6E 'n'
{ 1476, 10, 12, 13, 1, -11 }, // 0x6F 'o'
{ 1491, 9, 17, 13, 2, -11 }, // 0x70 'p'
{ 1511, 10, 17, 13, 1, -11 }, // 0x71 'q'
{ 1533, 6, 12, 8, 2, -11 }, // 0x72 'r'
{ 1542, 9, 12, 11, 1, -11 }, // 0x73 's'
{ 1556, 7, 16, 8, 1, -15 }, // 0x74 't'
{ 1570, 9, 12, 13, 2, -11 }, // 0x75 'u'
{ 1584, 10, 12, 12, 1, -11 }, // 0x76 'v'
{ 1599, 17, 12, 18, 1, -11 }, // 0x77 'w'
{ 1625, 9, 12, 11, 1, -11 }, // 0x78 'x'
{ 1639, 10, 17, 12, 1, -11 }, // 0x79 'y'
{ 1661, 9, 12, 11, 1, -11 }, // 0x7A 'z'
{ 1675, 6, 21, 8, 1, -17 }, // 0x7B '{'
{ 1691, 2, 22, 6, 2, -16 }, // 0x7C '|'
{ 1697, 7, 21, 8, 1, -17 }, // 0x7D '}'
{ 1716, 10, 3, 13, 2, -7 } }; // 0x7E '~'

const GFXfont titillium_web_regular12pt7b PROGMEM = {
(uint8_t *)titillium_web_regular12pt7bBitmaps,
(GFXglyph *)titillium_web_regular12pt7bGlyphs,
0x20, 0x7E, 36 };

// Approx. 2392 bytes
#pragma once

+ 343
- 0
fonts/titillium_web_regular16pt7b.h Vedi File

@@ -0,0 +1,343 @@
const uint8_t titillium_web_regular16pt7bBitmaps[] PROGMEM = {
0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xC0, 0xC7, 0xC6, 0xC6, 0xC6, 0xC6,
0xC6, 0x18, 0x30, 0x18, 0x30, 0x18, 0x30, 0x18, 0x30, 0x18, 0x30, 0x18,
0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x30, 0x18, 0x30, 0x18, 0x30, 0x18,
0x30, 0x18, 0x30, 0x18, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x30, 0x18,
0x30, 0x18, 0x30, 0x18, 0x30, 0x18, 0x30, 0x00, 0xC0, 0x04, 0x00, 0x20,
0x01, 0x00, 0xFC, 0x1F, 0xFD, 0xE6, 0xFC, 0x30, 0xE1, 0x06, 0x08, 0x38,
0x41, 0xC6, 0x07, 0x30, 0x3F, 0x80, 0x7F, 0x80, 0x7E, 0x02, 0x38, 0x10,
0xC0, 0x86, 0x0C, 0x30, 0x61, 0x83, 0x1C, 0x18, 0xFF, 0xFE, 0xFF, 0xC0,
0x20, 0x01, 0x00, 0x18, 0x00, 0xC0, 0x00, 0x38, 0x30, 0xF8, 0x43, 0x31,
0x86, 0x33, 0x0C, 0x64, 0x18, 0xD8, 0x33, 0x30, 0x3E, 0x60, 0x38, 0x80,
0x03, 0x00, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x67, 0x80, 0x99, 0x83,
0x33, 0x06, 0x62, 0x0C, 0xC4, 0x11, 0x98, 0x63, 0x30, 0xC3, 0xC0, 0x80,
0x00, 0x01, 0xE0, 0x00, 0x7F, 0x80, 0x0E, 0x3C, 0x00, 0xC1, 0xC0, 0x1C,
0x0C, 0x01, 0xC0, 0xC0, 0x1C, 0x0C, 0x00, 0xC1, 0xC0, 0x0E, 0x38, 0x00,
0x7F, 0x00, 0x1F, 0xC1, 0x83, 0x9C, 0x18, 0x70, 0xE1, 0x86, 0x07, 0x18,
0xE0, 0x3B, 0x0E, 0x01, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0x70, 0x60, 0x0F,
0x87, 0x81, 0xDC, 0x3F, 0xF8, 0xF1, 0xFF, 0x06, 0xFF, 0xF0, 0x39, 0x8C,
0xE7, 0x31, 0x9C, 0xE6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x39, 0xCE, 0x31,
0xCE, 0x31, 0xC6, 0xE1, 0x86, 0x1C, 0x30, 0xC3, 0x8E, 0x18, 0x61, 0x86,
0x1C, 0x71, 0xC7, 0x18, 0x61, 0x8E, 0x38, 0xC3, 0x1C, 0x61, 0x8E, 0x00,
0x04, 0x01, 0x8C, 0xC3, 0xB0, 0x3C, 0x07, 0xF7, 0xC3, 0xB0, 0x84, 0x01,
0x80, 0x40, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C,
0x0F, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03,
0x00, 0x0C, 0x00, 0x77, 0x66, 0xEC, 0xC0, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF,
0xF0, 0x00, 0x40, 0x1C, 0x03, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x18,
0x07, 0x00, 0xC0, 0x38, 0x07, 0x00, 0xC0, 0x38, 0x06, 0x01, 0xC0, 0x30,
0x06, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x00, 0x07, 0xC0, 0x3F, 0xE0,
0xF1, 0xE3, 0x80, 0xE7, 0x00, 0xCC, 0x01, 0xD8, 0x03, 0xF0, 0x07, 0xE0,
0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03,
0xB0, 0x07, 0x60, 0x0C, 0xE0, 0x38, 0xE0, 0xF1, 0xFF, 0xC0, 0xFF, 0x00,
0x07, 0x87, 0xCF, 0x7F, 0x36, 0x1A, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0,
0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x1F,
0x87, 0xFF, 0x3C, 0x7C, 0x00, 0xE0, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06,
0x00, 0x30, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03,
0x80, 0x38, 0x01, 0x80, 0x18, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x1F, 0x87,
0xFF, 0x3C, 0x3C, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00,
0x71, 0xFF, 0x0F, 0xF8, 0x01, 0xE0, 0x03, 0x80, 0x1C, 0x00, 0x60, 0x03,
0x00, 0x18, 0x01, 0xC0, 0x1F, 0xFF, 0xEF, 0xFE, 0x00, 0x03, 0x80, 0x0E,
0x00, 0x18, 0x00, 0x70, 0x00, 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0C, 0x1C,
0x38, 0x38, 0x70, 0x70, 0xC0, 0xE3, 0x81, 0xC6, 0x03, 0x9C, 0x07, 0x3F,
0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x7F,
0xF9, 0xFF, 0xE6, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x0C, 0x00, 0x33,
0xF0, 0xFF, 0xF3, 0xE1, 0xE0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x70,
0x01, 0xC0, 0x06, 0x00, 0x3A, 0x01, 0xEF, 0xFF, 0x3F, 0xF0, 0x07, 0xF0,
0x7F, 0xE3, 0xC1, 0x9C, 0x00, 0x60, 0x03, 0x80, 0x0C, 0x00, 0x30, 0x00,
0xC7, 0xC3, 0xFF, 0xCF, 0xCF, 0xB0, 0x0E, 0xC0, 0x1F, 0x00, 0x7C, 0x00,
0xF8, 0x07, 0xE0, 0x1D, 0x80, 0x77, 0x03, 0x8F, 0xFC, 0x1F, 0xE0, 0xFF,
0xFF, 0xFF, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x00, 0x38, 0x01, 0x80, 0x1C,
0x00, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x38, 0x01, 0x80, 0x1C, 0x00,
0xC0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0x07, 0xE0, 0x7F, 0xF1,
0xF1, 0xF3, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xB0, 0x07, 0x70,
0x1C, 0x7F, 0xF0, 0x7F, 0xC1, 0xE3, 0xE7, 0x01, 0xFC, 0x01, 0xF8, 0x01,
0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1D, 0xC0, 0x7B, 0xFF, 0xE1, 0xFF, 0x00,
0x07, 0xC0, 0x3F, 0xE0, 0xF1, 0xE3, 0x81, 0xC6, 0x01, 0xDC, 0x01, 0xB8,
0x03, 0x70, 0x07, 0xE0, 0x0E, 0xC0, 0x1D, 0xC0, 0x79, 0xFF, 0xF1, 0xFE,
0xE0, 0x01, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE3,
0xFF, 0x87, 0xFE, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xC0, 0x33, 0x33,
0x00, 0x00, 0x00, 0x03, 0x37, 0x66, 0x6E, 0x00, 0x08, 0x01, 0xC0, 0x7C,
0x0F, 0x81, 0xF0, 0x3E, 0x03, 0xC0, 0x1C, 0x00, 0xF8, 0x01, 0xF0, 0x03,
0xE0, 0x07, 0xC0, 0x07, 0x80, 0x0C, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0x80, 0x0E, 0x00,
0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0x70, 0x07, 0x01, 0xF0, 0x7C,
0x1F, 0x07, 0xC0, 0xF0, 0x0C, 0x00, 0x80, 0x00, 0x1F, 0x0F, 0xFC, 0xE1,
0xE0, 0x06, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x1C, 0x03,
0x80, 0x70, 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x0C,
0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x01, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x80,
0x3C, 0x00, 0x78, 0x0E, 0x00, 0x03, 0x83, 0x80, 0x00, 0x38, 0xE0, 0x00,
0x03, 0x98, 0x07, 0x80, 0x77, 0x03, 0xFF, 0x06, 0xE0, 0xF9, 0xE0, 0xF8,
0x1C, 0x0C, 0x1F, 0x07, 0x01, 0x83, 0xE0, 0xE0, 0x30, 0x3C, 0x18, 0x06,
0x07, 0x83, 0x00, 0xC0, 0xF0, 0x60, 0x18, 0x1E, 0x0C, 0x03, 0x07, 0xC1,
0x80, 0x60, 0xF8, 0x38, 0x0C, 0x1F, 0x07, 0x01, 0x83, 0x70, 0x70, 0xF8,
0xEE, 0x0F, 0xFF, 0xF8, 0xC0, 0x7C, 0x3F, 0x1C, 0x00, 0x00, 0x01, 0xC0,
0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0xFF, 0x00,
0x00, 0xFF, 0xE0, 0x00, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0x9C, 0x00, 0xC6,
0x00, 0xE3, 0x00, 0x61, 0x80, 0x30, 0xE0, 0x38, 0x30, 0x1C, 0x18, 0x0C,
0x0E, 0x06, 0x03, 0x07, 0x01, 0x83, 0x00, 0xC1, 0xFF, 0xF0, 0xFF, 0xF8,
0xE0, 0x0C, 0x60, 0x07, 0x30, 0x03, 0xB8, 0x00, 0xDC, 0x00, 0x6C, 0x00,
0x38, 0xFF, 0xF3, 0xFF, 0xEC, 0x03, 0xB0, 0x07, 0xC0, 0x1F, 0x00, 0x7C,
0x01, 0xF0, 0x06, 0xC0, 0x3B, 0xFF, 0xCF, 0xFF, 0x30, 0x0E, 0xC0, 0x1F,
0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7C, 0x03, 0xFF, 0xFE,
0xFF, 0xE0, 0x07, 0xE0, 0x7F, 0xF3, 0xE3, 0xDC, 0x00, 0x60, 0x03, 0x80,
0x0E, 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0,
0x03, 0x00, 0x0C, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1E,
0x00, 0x3F, 0xFC, 0x7F, 0xF0, 0xFF, 0xF1, 0xFF, 0xF3, 0x00, 0xF6, 0x00,
0xEC, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F,
0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0,
0x1D, 0x80, 0x3B, 0x01, 0xE7, 0xFF, 0x8F, 0xFC, 0x00, 0xFF, 0xFF, 0xFF,
0xF0, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x07,
0xFF, 0x3F, 0xF9, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0,
0x06, 0x00, 0x30, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0,
0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF,
0xEF, 0xFE, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0,
0x0C, 0x00, 0xC0, 0x00, 0x07, 0xF0, 0x3F, 0xFC, 0xF8, 0x7B, 0x80, 0x06,
0x00, 0x1C, 0x00, 0x38, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00,
0x06, 0x03, 0xFC, 0x07, 0xF8, 0x00, 0xF0, 0x01, 0xF0, 0x03, 0xE0, 0x06,
0xC0, 0x0D, 0xC0, 0x1B, 0xC0, 0x33, 0xFF, 0xE1, 0xFF, 0xC0, 0xC0, 0x07,
0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0,
0x03, 0xC0, 0x07, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x3C, 0x00, 0x78, 0x00,
0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C,
0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x18, 0xC6, 0x31, 0x8C,
0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x33, 0xFF, 0xC0, 0xC0,
0x1F, 0x00, 0xEC, 0x07, 0x30, 0x1C, 0xC0, 0xE3, 0x03, 0x0C, 0x1C, 0x30,
0x60, 0xC3, 0x83, 0x7C, 0x0F, 0xF0, 0x3F, 0xC0, 0xC3, 0x83, 0x07, 0x0C,
0x1C, 0x30, 0x38, 0xC0, 0x63, 0x01, 0xCC, 0x03, 0xB0, 0x0E, 0xC0, 0x1C,
0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0,
0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18,
0x03, 0x00, 0x7F, 0xFF, 0xFE, 0xF0, 0x00, 0xFF, 0x80, 0x1F, 0xD8, 0x01,
0xBD, 0x80, 0x1B, 0xDC, 0x03, 0xBC, 0xC0, 0x33, 0xCC, 0x03, 0x3C, 0xE0,
0x73, 0xC6, 0x06, 0x3C, 0x60, 0x63, 0xC7, 0x0E, 0x3C, 0x30, 0xC3, 0xC3,
0x0C, 0x3C, 0x39, 0xC3, 0xC1, 0x98, 0x3C, 0x19, 0x83, 0xC1, 0xF8, 0x3C,
0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0x00, 0x30, 0xF8, 0x07,
0xF0, 0x0F, 0x60, 0x1E, 0xE0, 0x3C, 0xC0, 0x79, 0xC0, 0xF1, 0x81, 0xE3,
0x03, 0xC3, 0x07, 0x86, 0x0F, 0x0E, 0x1E, 0x0C, 0x3C, 0x1C, 0x78, 0x18,
0xF0, 0x31, 0xE0, 0x33, 0xC0, 0x67, 0x80, 0xEF, 0x00, 0xDE, 0x01, 0xFC,
0x01, 0xE0, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x0F, 0x8E, 0x01, 0xC6, 0x00,
0x77, 0x00, 0x3B, 0x80, 0x0D, 0x80, 0x06, 0xC0, 0x03, 0xE0, 0x01, 0xF0,
0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x06,
0xE0, 0x03, 0x30, 0x03, 0x9C, 0x01, 0xCF, 0x01, 0xC3, 0xFF, 0xC0, 0x7F,
0xC0, 0xFF, 0xF3, 0xFF, 0xEC, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x00, 0x3C,
0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7C, 0x01, 0xF0, 0x1E, 0xFF, 0xF3,
0xFF, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00,
0xC0, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x0F, 0x8E, 0x01, 0xC6, 0x00,
0x77, 0x00, 0x3B, 0x80, 0x0D, 0x80, 0x06, 0xC0, 0x03, 0xE0, 0x01, 0xF0,
0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x06,
0xE0, 0x03, 0x30, 0x03, 0x9C, 0x01, 0xCF, 0x01, 0xC3, 0xFF, 0xC0, 0x7F,
0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x01, 0x00,
0xFF, 0xF1, 0xFF, 0xF3, 0x00, 0xF6, 0x00, 0xEC, 0x00, 0xD8, 0x01, 0xB0,
0x03, 0x60, 0x06, 0xC0, 0x0D, 0x80, 0x3B, 0x01, 0xE7, 0xFF, 0x8F, 0xFE,
0x18, 0x1C, 0x30, 0x1C, 0x60, 0x38, 0xC0, 0x31, 0x80, 0x73, 0x00, 0x66,
0x00, 0xEC, 0x00, 0xE0, 0x07, 0xF0, 0xFF, 0xF7, 0xC3, 0xDC, 0x00, 0x60,
0x03, 0x80, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x01, 0xF0, 0x01, 0xFC, 0x01,
0xFC, 0x00, 0x7C, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30,
0x01, 0xC0, 0x0E, 0x7F, 0xF9, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00,
0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E,
0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0x60, 0x06, 0xE0, 0x1D, 0xE0,
0x79, 0xFF, 0xE0, 0xFF, 0x00, 0xC0, 0x03, 0xE0, 0x07, 0x60, 0x07, 0x60,
0x06, 0x60, 0x06, 0x70, 0x0E, 0x30, 0x0C, 0x30, 0x0C, 0x38, 0x0C, 0x38,
0x1C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0C,
0x30, 0x0E, 0x70, 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, 0x07, 0xE0, 0xE0,
0x1C, 0x01, 0xF8, 0x07, 0x80, 0x66, 0x01, 0xE0, 0x39, 0x80, 0xF8, 0x0E,
0x60, 0x36, 0x03, 0x9C, 0x0D, 0x80, 0xC7, 0x03, 0x30, 0x30, 0xC0, 0xCC,
0x0C, 0x30, 0x63, 0x07, 0x0C, 0x18, 0xC1, 0xC3, 0x06, 0x38, 0x60, 0xE1,
0x86, 0x18, 0x18, 0xE1, 0x86, 0x06, 0x30, 0x63, 0x81, 0x8C, 0x1C, 0xC0,
0x63, 0x03, 0x30, 0x1D, 0xC0, 0xCC, 0x03, 0x60, 0x33, 0x00, 0xD8, 0x0D,
0xC0, 0x3E, 0x03, 0xE0, 0x0F, 0x80, 0x78, 0x00, 0xE0, 0x07, 0x60, 0x0E,
0x70, 0x1C, 0x38, 0x18, 0x18, 0x38, 0x1C, 0x30, 0x0C, 0x70, 0x0E, 0xE0,
0x07, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x03, 0xC0, 0x06, 0xC0, 0x0E, 0xE0,
0x0C, 0x70, 0x1C, 0x30, 0x38, 0x38, 0x30, 0x1C, 0x70, 0x0C, 0x60, 0x0E,
0xC0, 0x07, 0xF0, 0x07, 0x70, 0x06, 0x38, 0x0E, 0x38, 0x0C, 0x1C, 0x1C,
0x0C, 0x38, 0x0E, 0x38, 0x06, 0x70, 0x07, 0x60, 0x03, 0xE0, 0x03, 0xC0,
0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0,
0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xF0,
0x01, 0xC0, 0x06, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x38, 0x01, 0xC0,
0x0E, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00,
0x30, 0x01, 0xC0, 0x0E, 0x00, 0x3F, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0x87,
0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1,
0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xFF, 0xF8, 0x40, 0x0E, 0x00,
0x60, 0x07, 0x00, 0x70, 0x03, 0x00, 0x38, 0x01, 0x80, 0x1C, 0x00, 0xC0,
0x0E, 0x00, 0x60, 0x07, 0x00, 0x30, 0x03, 0x00, 0x38, 0x01, 0x80, 0x1C,
0x00, 0xC0, 0x0E, 0x00, 0x60, 0x07, 0xFF, 0xFC, 0x38, 0x70, 0xE1, 0xC3,
0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70,
0xE1, 0xC3, 0x87, 0x0F, 0xFF, 0xF8, 0x07, 0x00, 0x3E, 0x00, 0xD8, 0x07,
0x30, 0x18, 0xC0, 0xE1, 0x83, 0x07, 0x1C, 0x0C, 0x60, 0x3B, 0x80, 0x70,
0xFF, 0xFF, 0xFF, 0xC0, 0x41, 0xE1, 0xF0, 0x70, 0x20, 0x1F, 0x81, 0xFF,
0x84, 0x07, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x07, 0xFC, 0x7F,
0x31, 0x80, 0xCE, 0x03, 0x38, 0x0C, 0xE0, 0x33, 0x80, 0xC7, 0xFF, 0xCF,
0xE7, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x9E,
0x1F, 0xFC, 0xF8, 0xF7, 0x01, 0xB8, 0x0D, 0xC0, 0x7E, 0x03, 0xF0, 0x1F,
0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xB8, 0x0D, 0xC0, 0xEF, 0xFE, 0x7F,
0xE0, 0x1F, 0x8F, 0xF7, 0x87, 0x80, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0,
0x30, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x07, 0xFC, 0xFF, 0x00, 0x30, 0x03,
0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x0F, 0xB3, 0xFF, 0x70, 0x7E, 0x03,
0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03,
0xE0, 0x3E, 0x07, 0x7F, 0xF3, 0xFB, 0x0F, 0x03, 0xFC, 0x70, 0xEE, 0x07,
0xC0, 0x3C, 0x03, 0xC0, 0x3F, 0xFF, 0xFF, 0xFC, 0x00, 0xC0, 0x0C, 0x00,
0xE0, 0x0E, 0x00, 0x7F, 0xF3, 0xFF, 0x06, 0x0F, 0xCF, 0xE7, 0x03, 0x01,
0x80, 0xC1, 0xFF, 0xFF, 0xFF, 0xCC, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60,
0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x1F, 0x0B, 0xFF, 0xF8,
0x39, 0x80, 0xCC, 0x06, 0x60, 0x33, 0x01, 0x98, 0x0C, 0xF0, 0xE3, 0xFE,
0x0F, 0xC0, 0xE0, 0x06, 0x00, 0x38, 0x00, 0xFF, 0x8F, 0xFE, 0xE0, 0x3E,
0x00, 0xF0, 0x07, 0x80, 0x3E, 0x03, 0xFF, 0xF9, 0xFF, 0x80, 0xE0, 0x07,
0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x9F, 0x1F, 0xFC, 0xF8,
0xF7, 0x01, 0xB8, 0x0D, 0xC0, 0x6E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07,
0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1C, 0xFF, 0x80,
0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, 0x1C, 0x38, 0x00, 0x00,
0x03, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38,
0x70, 0xE1, 0xC3, 0x86, 0x0C, 0x39, 0xE7, 0x84, 0x00, 0xE0, 0x0E, 0x00,
0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x7E, 0x06, 0xE0, 0xEE, 0x1C,
0xE1, 0x8E, 0x38, 0xE7, 0x0F, 0xE0, 0xFF, 0x0E, 0x70, 0xE3, 0x8E, 0x18,
0xE1, 0xCE, 0x0E, 0xE0, 0x6E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xC0, 0xE7, 0x83, 0xE3, 0xFF, 0xBF, 0xEF, 0x8F, 0xC3, 0xB8,
0x1C, 0x06, 0xE0, 0x30, 0x1F, 0x80, 0xC0, 0x7E, 0x03, 0x01, 0xF8, 0x0C,
0x07, 0xE0, 0x30, 0x0F, 0x80, 0xC0, 0x3E, 0x03, 0x00, 0xF8, 0x0C, 0x03,
0xE0, 0x30, 0x0F, 0x80, 0xC0, 0x3E, 0x03, 0x00, 0xF8, 0x0C, 0x03, 0xE7,
0xC7, 0xFF, 0x3E, 0x3D, 0xC0, 0x6E, 0x03, 0x70, 0x1B, 0x80, 0xFC, 0x07,
0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC,
0x07, 0x0F, 0x81, 0xFF, 0x1C, 0x3D, 0xC0, 0x6C, 0x03, 0x60, 0x1F, 0x00,
0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7E, 0x03, 0x70, 0x39,
0xFF, 0x87, 0xF8, 0xE7, 0x87, 0xFF, 0x3E, 0x3D, 0xC0, 0xEE, 0x03, 0x70,
0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x6E, 0x03,
0x70, 0x3B, 0xFF, 0x9F, 0xF8, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E,
0x00, 0x70, 0x03, 0x80, 0x00, 0x0F, 0xF3, 0xFF, 0x78, 0x3E, 0x03, 0xC0,
0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xE0,
0x3E, 0x07, 0x7F, 0xF3, 0xFB, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00,
0x30, 0x03, 0x00, 0x30, 0xE1, 0xEF, 0xFF, 0xF8, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x0F, 0xC3, 0xFF, 0x70,
0x7E, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0x00,
0x70, 0x03, 0x00, 0x30, 0x07, 0x7F, 0xE7, 0xFC, 0x30, 0x18, 0x0C, 0x06,
0x0F, 0xFF, 0xFF, 0xFE, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80,
0xC0, 0x60, 0x30, 0x1C, 0x07, 0xE3, 0xF0, 0xC0, 0x3C, 0x03, 0xC0, 0x3C,
0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E,
0x03, 0xE0, 0x36, 0x07, 0x7F, 0xF3, 0xFB, 0xC0, 0x1F, 0x01, 0xF8, 0x0E,
0xC0, 0x66, 0x03, 0x38, 0x39, 0xC1, 0x86, 0x0C, 0x30, 0x61, 0xC7, 0x06,
0x30, 0x31, 0x81, 0x9C, 0x0E, 0xE0, 0x3E, 0x01, 0xF0, 0xC0, 0x00, 0x1F,
0x81, 0xC0, 0x6E, 0x07, 0x01, 0x98, 0x1E, 0x06, 0x60, 0x78, 0x39, 0x83,
0x60, 0xC7, 0x0C, 0xC3, 0x0C, 0x33, 0x0C, 0x31, 0xCC, 0x70, 0xC6, 0x31,
0xC3, 0x98, 0x66, 0x06, 0x61, 0x98, 0x1B, 0x06, 0x60, 0x6C, 0x1F, 0x81,
0xF0, 0x3C, 0x03, 0xC0, 0xF0, 0xC0, 0x3E, 0x07, 0x60, 0x63, 0x0C, 0x39,
0xC1, 0x98, 0x1F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x1F, 0x83, 0x98, 0x30,
0xC7, 0x0E, 0x60, 0x6E, 0x07, 0xC0, 0x1E, 0x00, 0xF8, 0x0E, 0xC0, 0x66,
0x03, 0x38, 0x39, 0xC1, 0xC6, 0x0C, 0x30, 0x61, 0xC7, 0x06, 0x30, 0x31,
0x81, 0xDC, 0x0E, 0xE0, 0x3E, 0x01, 0xF0, 0x03, 0x80, 0x18, 0x00, 0xC0,
0x0E, 0x00, 0x60, 0x03, 0x00, 0x38, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0,
0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0xE0, 0x1C, 0x03,
0x80, 0x70, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x87, 0xC7, 0x03, 0x01,
0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x07, 0x0F, 0x07, 0x03, 0xC0,
0x70, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x38, 0x1E, 0x07,
0xC0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFE, 0xF0, 0x7C, 0x07, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06,
0x03, 0x01, 0xC0, 0x78, 0x1C, 0x1C, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x80,
0xC0, 0x60, 0x30, 0x38, 0x38, 0x7C, 0x38, 0x00, 0x3C, 0x0F, 0xFC, 0xF1,
0xFE, 0x01, 0xE0 };

const GFXglyph titillium_web_regular16pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 7, 0, 0 }, // 0x20 ' '
{ 1, 2, 21, 8, 3, -20 }, // 0x21 '!'
{ 7, 8, 6, 12, 2, -20 }, // 0x22 '"'
{ 13, 16, 21, 17, 1, -20 }, // 0x23 '#'
{ 55, 13, 29, 17, 2, -24 }, // 0x24 '$'
{ 103, 15, 22, 17, 1, -20 }, // 0x25 '%'
{ 145, 20, 22, 21, 1, -21 }, // 0x26 '&'
{ 200, 2, 6, 6, 2, -20 }, // 0x27 '''
{ 202, 5, 27, 8, 2, -22 }, // 0x28 '('
{ 219, 6, 27, 8, 1, -22 }, // 0x29 ')'
{ 240, 10, 11, 13, 2, -21 }, // 0x2A '*'
{ 254, 14, 14, 17, 2, -14 }, // 0x2B '+'
{ 279, 4, 7, 7, 1, -2 }, // 0x2C ','
{ 283, 10, 3, 14, 2, -9 }, // 0x2D '-'
{ 287, 3, 4, 7, 2, -3 }, // 0x2E '.'
{ 289, 11, 22, 13, 1, -21 }, // 0x2F '/'
{ 320, 15, 21, 17, 1, -20 }, // 0x30 '0'
{ 360, 9, 20, 17, 3, -19 }, // 0x31 '1'
{ 383, 13, 21, 17, 2, -20 }, // 0x32 '2'
{ 418, 13, 21, 17, 2, -20 }, // 0x33 '3'
{ 453, 15, 20, 17, 1, -19 }, // 0x34 '4'
{ 491, 14, 20, 17, 2, -19 }, // 0x35 '5'
{ 526, 14, 21, 17, 2, -20 }, // 0x36 '6'
{ 563, 13, 20, 17, 2, -19 }, // 0x37 '7'
{ 596, 15, 21, 17, 1, -20 }, // 0x38 '8'
{ 636, 15, 21, 17, 1, -20 }, // 0x39 '9'
{ 676, 3, 14, 7, 2, -13 }, // 0x3A ':'
{ 682, 4, 18, 8, 1, -13 }, // 0x3B ';'
{ 691, 13, 15, 17, 2, -14 }, // 0x3C '<'
{ 716, 13, 8, 17, 2, -11 }, // 0x3D '='
{ 729, 12, 15, 17, 3, -14 }, // 0x3E '>'
{ 752, 12, 22, 14, 1, -21 }, // 0x3F '?'
{ 785, 27, 28, 30, 2, -21 }, // 0x40 '@'
{ 880, 17, 21, 18, 1, -20 }, // 0x41 'A'
{ 925, 14, 21, 19, 3, -20 }, // 0x42 'B'
{ 962, 14, 22, 17, 2, -21 }, // 0x43 'C'
{ 1001, 15, 21, 20, 3, -20 }, // 0x44 'D'
{ 1041, 13, 21, 17, 3, -20 }, // 0x45 'E'
{ 1076, 12, 21, 16, 3, -20 }, // 0x46 'F'
{ 1108, 15, 22, 19, 2, -21 }, // 0x47 'G'
{ 1150, 15, 21, 21, 3, -20 }, // 0x48 'H'
{ 1190, 2, 21, 8, 3, -20 }, // 0x49 'I'
{ 1196, 5, 23, 9, 1, -20 }, // 0x4A 'J'
{ 1211, 14, 21, 18, 3, -20 }, // 0x4B 'K'
{ 1248, 11, 21, 15, 3, -20 }, // 0x4C 'L'
{ 1277, 20, 21, 26, 3, -20 }, // 0x4D 'M'
{ 1330, 15, 21, 21, 3, -20 }, // 0x4E 'N'
{ 1370, 17, 22, 20, 2, -21 }, // 0x4F 'O'
{ 1417, 14, 21, 18, 3, -20 }, // 0x50 'P'
{ 1454, 17, 27, 20, 2, -21 }, // 0x51 'Q'
{ 1512, 15, 21, 19, 3, -20 }, // 0x52 'R'
{ 1552, 14, 22, 17, 1, -21 }, // 0x53 'S'
{ 1591, 16, 21, 16, 0, -20 }, // 0x54 'T'
{ 1633, 15, 21, 20, 2, -20 }, // 0x55 'U'
{ 1673, 16, 21, 18, 1, -20 }, // 0x56 'V'
{ 1715, 26, 21, 27, 1, -20 }, // 0x57 'W'
{ 1784, 16, 21, 17, 1, -20 }, // 0x58 'X'
{ 1826, 16, 21, 17, 0, -20 }, // 0x59 'Y'
{ 1868, 14, 21, 17, 1, -20 }, // 0x5A 'Z'
{ 1905, 7, 27, 10, 2, -22 }, // 0x5B '['
{ 1929, 12, 22, 14, 1, -21 }, // 0x5C '\'
{ 1962, 7, 27, 10, 1, -22 }, // 0x5D ']'
{ 1986, 14, 10, 17, 2, -19 }, // 0x5E '^'
{ 2004, 13, 2, 20, 3, 4 }, // 0x5F '_'
{ 2008, 7, 5, 7, 0, -22 }, // 0x60 '`'
{ 2013, 14, 16, 16, 1, -15 }, // 0x61 'a'
{ 2041, 13, 22, 16, 2, -21 }, // 0x62 'b'
{ 2077, 10, 16, 14, 2, -15 }, // 0x63 'c'
{ 2097, 12, 22, 16, 2, -21 }, // 0x64 'd'
{ 2130, 12, 16, 16, 2, -15 }, // 0x65 'e'
{ 2154, 9, 23, 10, 1, -22 }, // 0x66 'f'
{ 2180, 13, 23, 16, 2, -15 }, // 0x67 'g'
{ 2218, 13, 22, 17, 2, -21 }, // 0x68 'h'
{ 2254, 3, 22, 7, 2, -21 }, // 0x69 'i'
{ 2263, 7, 29, 7, -2, -21 }, // 0x6A 'j'
{ 2289, 12, 22, 15, 2, -21 }, // 0x6B 'k'
{ 2322, 3, 22, 7, 2, -21 }, // 0x6C 'l'
{ 2331, 22, 16, 26, 2, -15 }, // 0x6D 'm'
{ 2375, 13, 16, 17, 2, -15 }, // 0x6E 'n'
{ 2401, 13, 16, 16, 2, -15 }, // 0x6F 'o'
{ 2427, 13, 23, 16, 2, -15 }, // 0x70 'p'
{ 2465, 12, 23, 16, 2, -15 }, // 0x71 'q'
{ 2500, 8, 16, 11, 2, -15 }, // 0x72 'r'
{ 2516, 12, 16, 14, 1, -15 }, // 0x73 's'
{ 2540, 9, 20, 11, 1, -19 }, // 0x74 't'
{ 2563, 12, 16, 16, 2, -15 }, // 0x75 'u'
{ 2587, 13, 16, 15, 1, -15 }, // 0x76 'v'
{ 2613, 22, 16, 24, 1, -15 }, // 0x77 'w'
{ 2657, 12, 16, 14, 1, -15 }, // 0x78 'x'
{ 2681, 13, 23, 15, 1, -15 }, // 0x79 'y'
{ 2719, 12, 16, 14, 1, -15 }, // 0x7A 'z'
{ 2743, 9, 27, 11, 1, -22 }, // 0x7B '{'
{ 2774, 3, 29, 7, 2, -21 }, // 0x7C '|'
{ 2785, 9, 27, 11, 1, -22 }, // 0x7D '}'
{ 2816, 13, 4, 17, 2, -9 } }; // 0x7E '~'

const GFXfont titillium_web_regular16pt7b PROGMEM = {
(uint8_t *)titillium_web_regular16pt7bBitmaps,
(GFXglyph *)titillium_web_regular16pt7bGlyphs,
0x20, 0x7E, 48 };

// Approx. 3495 bytes

#pragma once

+ 0
- 137
fonts/titillium_web_regular5pt7b.h Vedi File

@@ -1,137 +0,0 @@
const uint8_t titillium_web_regular5pt7bBitmaps[] PROGMEM = {
0x00, 0xFA, 0xF0, 0x52, 0xBE, 0xAF, 0xA9, 0x40, 0x27, 0xAA, 0xE5, 0x5E,
0x40, 0x55, 0xB4, 0x42, 0x9D, 0x60, 0x38, 0x90, 0xE3, 0x29, 0x51, 0x9E,
0x80, 0xC0, 0xFF, 0x80, 0x95, 0x55, 0xC0, 0xDF, 0x00, 0x44, 0xF4, 0x40,
0x60, 0xE0, 0x80, 0x12, 0x22, 0x44, 0x80, 0x32, 0x63, 0x18, 0xC5, 0xC0,
0x3C, 0x92, 0x48, 0xE1, 0x12, 0x48, 0xF0, 0xE1, 0x1E, 0x11, 0xF0, 0x21,
0x10, 0xA5, 0x7C, 0x40, 0xF8, 0x8F, 0x11, 0xE0, 0x3A, 0x20, 0xF8, 0xA5,
0xE0, 0xF1, 0x22, 0x24, 0x40, 0x74, 0x62, 0xE8, 0xC5, 0xE0, 0x32, 0x62,
0x93, 0x85, 0xC0, 0x90, 0x41, 0x80, 0x16, 0x86, 0x10, 0xF0, 0xF0, 0x86,
0x16, 0x80, 0xF1, 0x12, 0x40, 0x40, 0x7E, 0x81, 0xBD, 0xA5, 0xA5, 0xA5,
0xBF, 0x80, 0x7C, 0x30, 0xC4, 0x92, 0x79, 0x28, 0x40, 0xF4, 0xA5, 0xE8,
0xC7, 0xC0, 0xF8, 0x88, 0x88, 0xF0, 0xF4, 0x63, 0x18, 0xC7, 0xC0, 0xF8,
0x8E, 0x88, 0xF0, 0xF8, 0x8E, 0x88, 0x80, 0xFC, 0x21, 0x38, 0xC7, 0xE0,
0x8C, 0x63, 0xF8, 0xC6, 0x20, 0xFE, 0x55, 0x57, 0x94, 0xA9, 0x8A, 0x4A,
0x60, 0x88, 0x88, 0x88, 0xF0, 0x87, 0x8F, 0x2D, 0x5A, 0xB6, 0x64, 0x80,
0x8E, 0x73, 0x5A, 0xCE, 0x60, 0xF4, 0x63, 0x18, 0xC7, 0xC0, 0xF4, 0x63,
0x2E, 0x42, 0x00, 0xF4, 0x63, 0x18, 0xC7, 0xC3, 0xF4, 0x63, 0x2F, 0x4A,
0x20, 0x7C, 0x10, 0x60, 0x85, 0xC0, 0xF9, 0x08, 0x42, 0x10, 0x80, 0x8C,
0x63, 0x18, 0xC7, 0xC0, 0x86, 0x24, 0x92, 0x48, 0xC3, 0x00, 0x88, 0xC4,
0x95, 0x4A, 0xA5, 0x52, 0xA8, 0x88, 0x8A, 0x4C, 0x43, 0x26, 0x20, 0x8A,
0x54, 0x42, 0x10, 0x80, 0xF8, 0x44, 0x42, 0x23, 0xE0, 0xEA, 0xAB, 0x84,
0x42, 0x21, 0x10, 0xE4, 0x92, 0x4F, 0x46, 0xA9, 0xF0, 0xC0, 0x70, 0x9D,
0x27, 0x80, 0x88, 0xE9, 0x99, 0xE0, 0xF2, 0x4E, 0x08, 0x5F, 0x18, 0xC5,
0xE0, 0x74, 0x7F, 0x07, 0x00, 0x6B, 0xA4, 0x90, 0x7C, 0x94, 0xC7, 0x45,
0xE0, 0x88, 0xE9, 0x99, 0x90, 0xBE, 0xBF, 0x80, 0x88, 0xBA, 0xCA, 0xB0,
0xFE, 0xFD, 0x26, 0x4C, 0x99, 0x20, 0xE9, 0x99, 0x90, 0x74, 0x63, 0x17,
0x00, 0xE9, 0x99, 0xE8, 0x80, 0x7C, 0x63, 0x17, 0x84, 0x20, 0xEA, 0x80,
0x78, 0x71, 0x70, 0x4B, 0xA4, 0x98, 0x99, 0x99, 0xF0, 0x8A, 0x94, 0xA2,
0x00, 0x92, 0xB5, 0x6B, 0x56, 0x40, 0x96, 0x26, 0x90, 0x8A, 0x94, 0xA2,
0x10, 0x80, 0xF1, 0x24, 0xF0, 0x29, 0x2C, 0x92, 0x60, 0xFF, 0x80, 0x89,
0x22, 0x52, 0xC0, 0xF0 };

const GFXglyph titillium_web_regular5pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 2, 0, 0 }, // 0x20 ' '
{ 1, 1, 7, 2, 1, -6 }, // 0x21 '!'
{ 2, 2, 2, 4, 1, -6 }, // 0x22 '"'
{ 3, 5, 7, 6, 0, -6 }, // 0x23 '#'
{ 8, 4, 9, 6, 1, -7 }, // 0x24 '$'
{ 13, 5, 7, 6, 0, -6 }, // 0x25 '%'
{ 18, 7, 7, 7, 0, -6 }, // 0x26 '&'
{ 25, 1, 2, 2, 1, -6 }, // 0x27 '''
{ 26, 1, 9, 3, 1, -7 }, // 0x28 '('
{ 28, 2, 9, 3, 0, -7 }, // 0x29 ')'
{ 31, 3, 3, 4, 1, -6 }, // 0x2A '*'
{ 33, 4, 5, 6, 1, -4 }, // 0x2B '+'
{ 36, 2, 2, 2, 0, 0 }, // 0x2C ','
{ 37, 3, 1, 4, 1, -2 }, // 0x2D '-'
{ 38, 1, 1, 2, 1, 0 }, // 0x2E '.'
{ 39, 4, 7, 4, 0, -6 }, // 0x2F '/'
{ 43, 5, 7, 6, 0, -6 }, // 0x30 '0'
{ 48, 3, 7, 6, 1, -6 }, // 0x31 '1'
{ 51, 4, 7, 6, 1, -6 }, // 0x32 '2'
{ 55, 4, 7, 6, 1, -6 }, // 0x33 '3'
{ 59, 5, 7, 6, 0, -6 }, // 0x34 '4'
{ 64, 4, 7, 6, 1, -6 }, // 0x35 '5'
{ 68, 5, 7, 6, 0, -6 }, // 0x36 '6'
{ 73, 4, 7, 6, 1, -6 }, // 0x37 '7'
{ 77, 5, 7, 6, 0, -6 }, // 0x38 '8'
{ 82, 5, 7, 6, 0, -6 }, // 0x39 '9'
{ 87, 1, 4, 2, 1, -3 }, // 0x3A ':'
{ 88, 2, 5, 2, 0, -3 }, // 0x3B ';'
{ 90, 4, 5, 6, 1, -4 }, // 0x3C '<'
{ 93, 4, 3, 6, 1, -3 }, // 0x3D '='
{ 95, 4, 5, 6, 1, -4 }, // 0x3E '>'
{ 98, 4, 7, 4, 0, -6 }, // 0x3F '?'
{ 102, 8, 9, 10, 1, -6 }, // 0x40 '@'
{ 111, 6, 7, 6, 0, -6 }, // 0x41 'A'
{ 117, 5, 7, 6, 1, -6 }, // 0x42 'B'
{ 122, 4, 7, 5, 1, -6 }, // 0x43 'C'
{ 126, 5, 7, 6, 1, -6 }, // 0x44 'D'
{ 131, 4, 7, 6, 1, -6 }, // 0x45 'E'
{ 135, 4, 7, 5, 1, -6 }, // 0x46 'F'
{ 139, 5, 7, 6, 1, -6 }, // 0x47 'G'
{ 144, 5, 7, 7, 1, -6 }, // 0x48 'H'
{ 149, 1, 7, 2, 1, -6 }, // 0x49 'I'
{ 150, 2, 8, 3, 0, -6 }, // 0x4A 'J'
{ 152, 5, 7, 6, 1, -6 }, // 0x4B 'K'
{ 157, 4, 7, 5, 1, -6 }, // 0x4C 'L'
{ 161, 7, 7, 8, 1, -6 }, // 0x4D 'M'
{ 168, 5, 7, 7, 1, -6 }, // 0x4E 'N'
{ 173, 5, 7, 7, 1, -6 }, // 0x4F 'O'
{ 178, 5, 7, 6, 1, -6 }, // 0x50 'P'
{ 183, 5, 8, 7, 1, -6 }, // 0x51 'Q'
{ 188, 5, 7, 6, 1, -6 }, // 0x52 'R'
{ 193, 5, 7, 5, 0, -6 }, // 0x53 'S'
{ 198, 5, 7, 5, 0, -6 }, // 0x54 'T'
{ 203, 5, 7, 6, 1, -6 }, // 0x55 'U'
{ 208, 6, 7, 6, 0, -6 }, // 0x56 'V'
{ 214, 9, 7, 9, 0, -6 }, // 0x57 'W'
{ 222, 5, 7, 6, 0, -6 }, // 0x58 'X'
{ 227, 5, 7, 5, 0, -6 }, // 0x59 'Y'
{ 232, 5, 7, 5, 0, -6 }, // 0x5A 'Z'
{ 237, 2, 8, 3, 1, -6 }, // 0x5B '['
{ 239, 4, 7, 4, 0, -6 }, // 0x5C '\'
{ 243, 3, 8, 3, 0, -6 }, // 0x5D ']'
{ 246, 4, 4, 6, 1, -6 }, // 0x5E '^'
{ 248, 4, 1, 6, 1, 2 }, // 0x5F '_'
{ 249, 2, 1, 2, 0, -6 }, // 0x60 '`'
{ 250, 5, 5, 5, 0, -4 }, // 0x61 'a'
{ 254, 4, 7, 5, 1, -6 }, // 0x62 'b'
{ 258, 3, 5, 4, 1, -4 }, // 0x63 'c'
{ 260, 5, 7, 5, 0, -6 }, // 0x64 'd'
{ 265, 5, 5, 5, 0, -4 }, // 0x65 'e'
{ 269, 3, 7, 3, 0, -6 }, // 0x66 'f'
{ 272, 5, 7, 5, 0, -4 }, // 0x67 'g'
{ 277, 4, 7, 5, 1, -6 }, // 0x68 'h'
{ 281, 1, 7, 2, 1, -6 }, // 0x69 'i'
{ 282, 1, 9, 2, 0, -6 }, // 0x6A 'j'
{ 284, 4, 7, 5, 1, -6 }, // 0x6B 'k'
{ 288, 1, 7, 2, 1, -6 }, // 0x6C 'l'
{ 289, 7, 5, 8, 1, -4 }, // 0x6D 'm'
{ 294, 4, 5, 5, 1, -4 }, // 0x6E 'n'
{ 297, 5, 5, 5, 0, -4 }, // 0x6F 'o'
{ 301, 4, 7, 5, 1, -4 }, // 0x70 'p'
{ 305, 5, 7, 5, 0, -4 }, // 0x71 'q'
{ 310, 2, 5, 3, 1, -4 }, // 0x72 'r'
{ 312, 4, 5, 5, 0, -4 }, // 0x73 's'
{ 315, 3, 7, 4, 0, -6 }, // 0x74 't'
{ 318, 4, 5, 5, 1, -4 }, // 0x75 'u'
{ 321, 5, 5, 5, 0, -4 }, // 0x76 'v'
{ 325, 7, 5, 8, 0, -4 }, // 0x77 'w'
{ 330, 4, 5, 5, 0, -4 }, // 0x78 'x'
{ 333, 5, 7, 5, 0, -4 }, // 0x79 'y'
{ 338, 4, 5, 5, 0, -4 }, // 0x7A 'z'
{ 341, 3, 9, 4, 0, -7 }, // 0x7B '{'
{ 345, 1, 9, 2, 1, -6 }, // 0x7C '|'
{ 347, 3, 9, 4, 0, -7 }, // 0x7D '}'
{ 351, 4, 1, 6, 1, -2 } }; // 0x7E '~'

const GFXfont titillium_web_regular5pt7b PROGMEM = {
(uint8_t *)titillium_web_regular5pt7bBitmaps,
(GFXglyph *)titillium_web_regular5pt7bGlyphs,
0x20, 0x7E, 15 };

// Approx. 1024 bytes

#pragma once

+ 173
- 0
fonts/titillium_web_regular8pt7b.h Vedi File

@@ -0,0 +1,173 @@
const uint8_t titillium_web_regular8pt7bBitmaps[] PROGMEM = {
0x00, 0xFF, 0xFC, 0x3C, 0x99, 0x90, 0x22, 0x11, 0x08, 0x9F, 0xF2, 0x21,
0x10, 0x89, 0xFF, 0x22, 0x11, 0x08, 0x80, 0x08, 0x10, 0xF2, 0x59, 0x12,
0x34, 0x3C, 0x16, 0x24, 0x48, 0xBF, 0xC4, 0x08, 0x00, 0x62, 0x2A, 0x25,
0x0A, 0x86, 0x80, 0x40, 0x20, 0x2E, 0x14, 0x8A, 0x8D, 0xC0, 0x3C, 0x19,
0x84, 0x21, 0x98, 0x3C, 0x36, 0x48, 0xD2, 0x1C, 0x83, 0x30, 0xE7, 0xCC,
0xE0, 0x69, 0x69, 0x24, 0x93, 0x24, 0xC0, 0xAD, 0x55, 0x57, 0xA0, 0xB7,
0x1F, 0x43, 0x00, 0x10, 0x20, 0x47, 0xFF, 0xE2, 0x04, 0x08, 0xEA, 0xF8,
0xC0, 0x08, 0xC4, 0x62, 0x11, 0x08, 0xC4, 0x20, 0x38, 0xDA, 0x0C, 0x18,
0x30, 0x60, 0xC1, 0x83, 0x8D, 0xF0, 0x17, 0xD9, 0x11, 0x11, 0x11, 0x10,
0x79, 0x98, 0x18, 0x30, 0x41, 0x86, 0x18, 0x60, 0x83, 0xF8, 0x79, 0x18,
0x18, 0x30, 0x4F, 0x01, 0x81, 0x02, 0x0F, 0xF0, 0x10, 0x60, 0x83, 0x04,
0x08, 0xA1, 0x42, 0xFE, 0x08, 0x10, 0xFF, 0xFE, 0x04, 0x0B, 0x9D, 0xC0,
0x81, 0x02, 0x0F, 0xF0, 0x3E, 0xC7, 0x04, 0x09, 0x9F, 0xE0, 0xC1, 0x82,
0x8D, 0xF0, 0xFF, 0xFC, 0x18, 0x20, 0xC1, 0x02, 0x08, 0x10, 0x40, 0x80,
0x39, 0x8E, 0x0C, 0x1C, 0x6F, 0xB1, 0xC1, 0x83, 0x05, 0xF0, 0x39, 0x9A,
0x1C, 0x18, 0x38, 0xDF, 0x81, 0x02, 0x0B, 0xE0, 0xC6, 0xF0, 0x3A, 0x80,
0x02, 0x1C, 0xC6, 0x0C, 0x06, 0x03, 0x81, 0xFE, 0x00, 0x07, 0xF0, 0x81,
0xC0, 0x60, 0x30, 0x67, 0x38, 0x40, 0xF8, 0x20, 0xC2, 0x18, 0xC6, 0x18,
0x01, 0x86, 0x00, 0x03, 0x00, 0x73, 0xC6, 0x01, 0x90, 0x02, 0xC7, 0xCE,
0x21, 0x18, 0x84, 0x62, 0x11, 0x88, 0x46, 0x21, 0x18, 0x8C, 0xF1, 0xFE,
0x40, 0x01, 0x80, 0x01, 0xF8, 0x00, 0x1C, 0x0B, 0x04, 0x86, 0x42, 0x21,
0x18, 0x84, 0xFE, 0x41, 0x20, 0x70, 0x20, 0xFE, 0xC2, 0xC3, 0xC3, 0xC2,
0xFE, 0xC3, 0xC1, 0xC1, 0xC3, 0xFE, 0x7E, 0x83, 0x04, 0x08, 0x10, 0x20,
0x40, 0xC0, 0x81, 0xF8, 0xFE, 0xC3, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1,
0xC1, 0xC2, 0xFC, 0xFF, 0x83, 0x06, 0x0C, 0x1F, 0xB0, 0x60, 0xC1, 0x83,
0xF8, 0xFF, 0x83, 0x06, 0x0C, 0x1F, 0xB0, 0x60, 0xC1, 0x83, 0x00, 0x7F,
0x40, 0xC0, 0x80, 0x80, 0x87, 0x81, 0x81, 0xC1, 0x41, 0x3F, 0xC1, 0xC1,
0xC1, 0xC1, 0xC1, 0xFF, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xFF, 0xFF, 0xFC,
0x24, 0x92, 0x49, 0x24, 0xF0, 0xC3, 0xC6, 0xC4, 0xCC, 0xC8, 0xF0, 0xC8,
0xCC, 0xC4, 0xC6, 0xC3, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F,
0xC0, 0xE0, 0x7C, 0x1F, 0x82, 0xE8, 0x5D, 0x1B, 0xA2, 0x72, 0x4E, 0x51,
0xCA, 0x38, 0xC7, 0x10, 0x80, 0xE1, 0xE1, 0xD1, 0xD1, 0xD9, 0xC9, 0xC9,
0xC5, 0xC5, 0xC3, 0xC3, 0x3E, 0x21, 0xB0, 0x50, 0x38, 0x1C, 0x0E, 0x07,
0x03, 0xC1, 0x21, 0x8F, 0x80, 0xFE, 0xC3, 0xC1, 0xC1, 0xC1, 0xC3, 0xFE,
0xC0, 0xC0, 0xC0, 0xC0, 0x3E, 0x21, 0xB0, 0x50, 0x38, 0x1C, 0x0E, 0x07,
0x03, 0xC1, 0x21, 0x8F, 0x80, 0x40, 0x10, 0xFE, 0xC3, 0xC1, 0xC1, 0xC1,
0xC2, 0xFC, 0xC4, 0xC2, 0xC2, 0xC3, 0x7F, 0x02, 0x04, 0x0E, 0x07, 0x81,
0x81, 0x02, 0x0F, 0xF0, 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
0x08, 0x08, 0x08, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1,
0x43, 0x7E, 0xC1, 0xA0, 0xD0, 0x4C, 0x22, 0x31, 0x10, 0x88, 0x64, 0x16,
0x0A, 0x07, 0x00, 0xC3, 0x0D, 0x0C, 0x24, 0x30, 0x90, 0xA2, 0x64, 0x88,
0x92, 0x62, 0x49, 0x09, 0x34, 0x2C, 0x50, 0xE1, 0x41, 0x87, 0x00, 0xC1,
0xB1, 0x88, 0x86, 0x81, 0x40, 0x40, 0x50, 0x28, 0x22, 0x31, 0xB0, 0x60,
0xC1, 0x43, 0x22, 0x24, 0x14, 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0xFE,
0x0C, 0x10, 0x41, 0x82, 0x08, 0x30, 0xC1, 0x03, 0xF8, 0xF8, 0x88, 0x88,
0x88, 0x88, 0x88, 0x8F, 0xC1, 0x02, 0x08, 0x30, 0x41, 0x82, 0x08, 0x10,
0x40, 0xE4, 0x92, 0x49, 0x24, 0x93, 0xC0, 0x10, 0x70, 0xA2, 0x64, 0x50,
0x40, 0xFF, 0xF0, 0x86, 0x10, 0xF8, 0x18, 0x13, 0xE8, 0x50, 0xA1, 0x7F,
0x81, 0x02, 0x07, 0xE8, 0x50, 0xE1, 0xC3, 0x85, 0x0B, 0xE0, 0x7E, 0x21,
0x08, 0x43, 0x0F, 0x04, 0x10, 0x5F, 0xC6, 0x18, 0x61, 0x87, 0x17, 0xC0,
0x7B, 0x18, 0x61, 0xFE, 0x0C, 0x1F, 0x19, 0x08, 0xCF, 0xB1, 0x8C, 0x63,
0x18, 0xC0, 0x7F, 0x0A, 0x14, 0x2F, 0x88, 0x10, 0x3E, 0x87, 0x07, 0x13,
0xC0, 0x81, 0x02, 0x07, 0xE8, 0x50, 0xA1, 0xC3, 0x87, 0x0E, 0x18, 0x9F,
0xE0, 0x20, 0x12, 0x49, 0x24, 0x93, 0xA0, 0x82, 0x08, 0x21, 0x8A, 0x4F,
0x24, 0x9A, 0x28, 0x40, 0xFF, 0xE0, 0xFF, 0xF0, 0x86, 0x10, 0xC2, 0x18,
0x43, 0x08, 0x61, 0x0C, 0x21, 0xFD, 0x0A, 0x14, 0x38, 0x70, 0xE1, 0xC3,
0x7D, 0x8A, 0x1C, 0x38, 0x70, 0xF1, 0x3E, 0xFD, 0x0A, 0x1C, 0x38, 0x70,
0xE1, 0x7E, 0x81, 0x02, 0x04, 0x00, 0x7F, 0x18, 0x61, 0x86, 0x1C, 0x5F,
0x04, 0x10, 0x41, 0xBE, 0x88, 0x88, 0x88, 0xFE, 0x08, 0x3C, 0x18, 0x10,
0xFE, 0x21, 0x3E, 0x42, 0x10, 0x84, 0x21, 0xC0, 0x86, 0x18, 0x61, 0x86,
0x1C, 0x5F, 0xC2, 0x85, 0x1B, 0x22, 0x44, 0x8A, 0x0C, 0xC6, 0x34, 0x62,
0x46, 0x26, 0x52, 0x29, 0x62, 0x94, 0x29, 0x43, 0x8C, 0xC6, 0xC8, 0xA0,
0xC1, 0x85, 0x19, 0x63, 0xC2, 0x85, 0x1B, 0x22, 0x44, 0x8A, 0x0C, 0x08,
0x30, 0x40, 0x80, 0xFC, 0x21, 0x8C, 0x21, 0x08, 0x3F, 0x19, 0x88, 0x42,
0x11, 0x9C, 0x21, 0x08, 0x43, 0x0C, 0xFF, 0xFE, 0xC4, 0x66, 0x66, 0x33,
0x66, 0x66, 0x4C, 0xF3, 0x18 };

const GFXglyph titillium_web_regular8pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 4, 0, 0 }, // 0x20 ' '
{ 1, 2, 11, 4, 1, -10 }, // 0x21 '!'
{ 4, 4, 3, 6, 1, -10 }, // 0x22 '"'
{ 6, 9, 11, 9, 0, -10 }, // 0x23 '#'
{ 19, 7, 15, 9, 1, -12 }, // 0x24 '$'
{ 33, 9, 11, 9, 0, -10 }, // 0x25 '%'
{ 46, 10, 11, 11, 1, -10 }, // 0x26 '&'
{ 60, 1, 3, 3, 1, -10 }, // 0x27 '''
{ 61, 3, 14, 4, 1, -11 }, // 0x28 '('
{ 67, 2, 14, 4, 1, -11 }, // 0x29 ')'
{ 71, 5, 5, 7, 1, -10 }, // 0x2A '*'
{ 75, 7, 8, 9, 1, -7 }, // 0x2B '+'
{ 82, 2, 4, 4, 1, -1 }, // 0x2C ','
{ 83, 5, 1, 7, 1, -4 }, // 0x2D '-'
{ 84, 1, 2, 3, 1, -1 }, // 0x2E '.'
{ 85, 5, 11, 7, 1, -10 }, // 0x2F '/'
{ 92, 7, 11, 9, 1, -10 }, // 0x30 '0'
{ 102, 4, 11, 9, 2, -10 }, // 0x31 '1'
{ 108, 7, 11, 9, 1, -10 }, // 0x32 '2'
{ 118, 7, 11, 9, 1, -10 }, // 0x33 '3'
{ 128, 7, 11, 9, 1, -10 }, // 0x34 '4'
{ 138, 7, 11, 9, 1, -10 }, // 0x35 '5'
{ 148, 7, 11, 9, 1, -10 }, // 0x36 '6'
{ 158, 7, 11, 9, 1, -10 }, // 0x37 '7'
{ 168, 7, 11, 9, 1, -10 }, // 0x38 '8'
{ 178, 7, 11, 9, 1, -10 }, // 0x39 '9'
{ 188, 1, 7, 3, 1, -6 }, // 0x3A ':'
{ 189, 2, 9, 4, 1, -6 }, // 0x3B ';'
{ 192, 7, 8, 9, 1, -7 }, // 0x3C '<'
{ 199, 7, 4, 9, 1, -5 }, // 0x3D '='
{ 203, 7, 8, 9, 1, -7 }, // 0x3E '>'
{ 210, 6, 11, 7, 1, -10 }, // 0x3F '?'
{ 219, 14, 15, 16, 1, -11 }, // 0x40 '@'
{ 246, 9, 11, 10, 0, -10 }, // 0x41 'A'
{ 259, 8, 11, 10, 1, -10 }, // 0x42 'B'
{ 270, 7, 11, 9, 1, -10 }, // 0x43 'C'
{ 280, 8, 11, 10, 1, -10 }, // 0x44 'D'
{ 291, 7, 11, 9, 1, -10 }, // 0x45 'E'
{ 301, 7, 11, 8, 1, -10 }, // 0x46 'F'
{ 311, 8, 11, 10, 1, -10 }, // 0x47 'G'
{ 322, 8, 11, 11, 1, -10 }, // 0x48 'H'
{ 333, 2, 11, 4, 1, -10 }, // 0x49 'I'
{ 336, 3, 12, 5, 0, -10 }, // 0x4A 'J'
{ 341, 8, 11, 9, 1, -10 }, // 0x4B 'K'
{ 352, 6, 11, 8, 1, -10 }, // 0x4C 'L'
{ 361, 11, 11, 13, 1, -10 }, // 0x4D 'M'
{ 377, 8, 11, 11, 1, -10 }, // 0x4E 'N'
{ 388, 9, 11, 11, 1, -10 }, // 0x4F 'O'
{ 401, 8, 11, 9, 1, -10 }, // 0x50 'P'
{ 412, 9, 13, 11, 1, -10 }, // 0x51 'Q'
{ 427, 8, 11, 10, 1, -10 }, // 0x52 'R'
{ 438, 7, 11, 9, 1, -10 }, // 0x53 'S'
{ 448, 8, 11, 8, 0, -10 }, // 0x54 'T'
{ 459, 8, 11, 10, 1, -10 }, // 0x55 'U'
{ 470, 9, 11, 9, 0, -10 }, // 0x56 'V'
{ 483, 14, 11, 14, 0, -10 }, // 0x57 'W'
{ 503, 9, 11, 9, 0, -10 }, // 0x58 'X'
{ 516, 8, 11, 9, 0, -10 }, // 0x59 'Y'
{ 527, 7, 11, 9, 1, -10 }, // 0x5A 'Z'
{ 537, 4, 14, 5, 1, -11 }, // 0x5B '['
{ 544, 6, 11, 7, 0, -10 }, // 0x5C '\'
{ 553, 3, 14, 5, 1, -11 }, // 0x5D ']'
{ 559, 7, 6, 9, 1, -10 }, // 0x5E '^'
{ 565, 6, 2, 10, 2, 2 }, // 0x5F '_'
{ 567, 4, 3, 4, 0, -11 }, // 0x60 '`'
{ 569, 7, 8, 8, 1, -7 }, // 0x61 'a'
{ 576, 7, 11, 8, 1, -10 }, // 0x62 'b'
{ 586, 5, 8, 7, 1, -7 }, // 0x63 'c'
{ 591, 6, 11, 8, 1, -10 }, // 0x64 'd'
{ 600, 6, 8, 8, 1, -7 }, // 0x65 'e'
{ 606, 5, 12, 5, 0, -11 }, // 0x66 'f'
{ 614, 7, 12, 8, 1, -7 }, // 0x67 'g'
{ 625, 7, 11, 9, 1, -10 }, // 0x68 'h'
{ 635, 1, 11, 4, 1, -10 }, // 0x69 'i'
{ 637, 3, 15, 4, -1, -10 }, // 0x6A 'j'
{ 643, 6, 11, 8, 1, -10 }, // 0x6B 'k'
{ 652, 1, 11, 4, 1, -10 }, // 0x6C 'l'
{ 654, 11, 8, 13, 1, -7 }, // 0x6D 'm'
{ 665, 7, 8, 9, 1, -7 }, // 0x6E 'n'
{ 672, 7, 8, 8, 1, -7 }, // 0x6F 'o'
{ 679, 7, 12, 8, 1, -7 }, // 0x70 'p'
{ 690, 6, 12, 8, 1, -7 }, // 0x71 'q'
{ 699, 4, 8, 6, 1, -7 }, // 0x72 'r'
{ 703, 6, 8, 7, 1, -7 }, // 0x73 's'
{ 709, 5, 10, 6, 0, -9 }, // 0x74 't'
{ 716, 6, 8, 9, 1, -7 }, // 0x75 'u'
{ 722, 7, 8, 8, 0, -7 }, // 0x76 'v'
{ 729, 12, 8, 12, 0, -7 }, // 0x77 'w'
{ 741, 7, 8, 7, 0, -7 }, // 0x78 'x'
{ 748, 7, 12, 8, 0, -7 }, // 0x79 'y'
{ 759, 6, 8, 7, 1, -7 }, // 0x7A 'z'
{ 765, 5, 14, 6, 0, -11 }, // 0x7B '{'
{ 774, 1, 15, 4, 1, -10 }, // 0x7C '|'
{ 776, 4, 14, 6, 1, -11 }, // 0x7D '}'
{ 783, 7, 2, 9, 1, -4 } }; // 0x7E '~'

const GFXfont titillium_web_regular8pt7b PROGMEM = {
(uint8_t *)titillium_web_regular8pt7bBitmaps,
(GFXglyph *)titillium_web_regular8pt7bGlyphs,
0x20, 0x7E, 24 };

// Approx. 1457 bytes

#pragma once

+ 27
- 0
images/air.h Vedi File

@@ -0,0 +1,27 @@
/*
* air.h
*
* Created on: 07.01.2026
* Author: FSmilari
*/

#ifndef IMAGES_AIR_H_
#define IMAGES_AIR_H_

// 'air', 24x24px
const unsigned char epd_bitmap_air [] PROGMEM = {
0x00, 0x0f, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x39, 0xc0, 0x00, 0x30, 0xc0, 0x0e, 0x30, 0xc0, 0x3f,
0x30, 0x00, 0x7b, 0xb8, 0x00, 0x61, 0x9f, 0xfe, 0x61, 0x8f, 0xfe, 0x60, 0x00, 0x00, 0x70, 0x00,
0x00, 0x3f, 0xff, 0xfe, 0x1f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe,
0x3f, 0xff, 0xfe, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x61, 0x80, 0x00, 0x61, 0x80, 0x00, 0x73,
0x80, 0x00, 0x3f, 0x00, 0x00, 0x1e, 0x00, 0x00
};

// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 96)
//const int epd_bitmap_allArray_LEN = 1;
//const unsigned char* epd_bitmap_allArray[1] = {
// epd_bitmap_air
//};


#endif /* IMAGES_AIR_H_ */

+ 0
- 85
images/arduino_22429_16.h Vedi File

@@ -1,85 +0,0 @@
#define ARDUINO_22429_HEIGHT 64
#define ARDUINO_22429_WIDTH 64

#ifndef __ARDUINO_22429_H
#define __ARDUINO_22429_H

#ifdef __AVR__
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif


// created with https://mischianti.org/rgb-image-to-byte-array-converter-for-arduino-tft-displays/
// array size is 8192
static const uint16_t arduino_22429[] PROGMEM = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0x1082, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x1082, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0x0861, 0x10a2, 0x18e3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18e3, 0x10a2, 0x0861, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0x18c3, 0x18e3, 0x10a2, 0x10a2, 0x18c3, 0x10a2, 0x10e3, 0x19e7, 0x1a69, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a8a, 0x1a69, 0x19e7, 0x10e3, 0x10a2, 0x18c3, 0x10a2, 0x10a2, 0x18e3, 0x18c3, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0x1082, 0x10a2, 0x18c3, 0x10a2, 0x236e, 0x2cb3, 0x2d15, 0x2d55, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x3555, 0x2d55, 0x2d15, 0x2cb3, 0x236e, 0x10a2, 0x18c3, 0x10a2, 0x1082, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18c3, 0x18c3, 0x10a2, 0x10a2, 0x23cf, 0x2d14, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d14, 0x23cf, 0x10a2, 0x10a2, 0x18c3, 0x18c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18c3, 0x18c3, 0x18c3, 0x19a7, 0x24d3, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x2d55, 0x24d3, 0x19a7, 0x18c3, 0x18c3, 0x18c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0x18c3, 0x18c3, 0x1a69, 0x2514, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2514, 0x1a69, 0x18c3, 0x18c3, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x1082, 0x18e3, 0x10a2, 0x19e8, 0x24f4, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x24f4, 0x19e8, 0x10a2, 0x18e3, 0x1082, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x10a2, 0x10a2, 0x10c3, 0x1cd3, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x2535, 0x1cd3, 0x10c3, 0x10a2, 0x10a2, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0861, 0x18c3, 0x18c3, 0x1c10, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x14f4, 0x0cd3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cd3, 0x14f4, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1c10, 0x18c3, 0x18c3, 0x0861, 0x0000, 0x0000,
0x0000, 0x0000, 0x18c3, 0x10a2, 0x1965, 0x1cf4, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x0cf4, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cf4, 0x1d14, 0x1d14, 0x1d14, 0x1d14, 0x1cf4, 0x1965, 0x10a2, 0x18c3, 0x0000, 0x0000,
0x0000, 0x0000, 0x1082, 0x18c3, 0x1410, 0x1514, 0x1514, 0x1514, 0x14f4, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04d3, 0x14f4, 0x1514, 0x1514, 0x1514, 0x1410, 0x18c3, 0x1082, 0x0000, 0x0000,
0x0000, 0x1082, 0x18c3, 0x10a2, 0x14b3, 0x14f4, 0x14f4, 0x0cf4, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cf4, 0x14f4, 0x14f4, 0x14b3, 0x10a2, 0x18c3, 0x1082, 0x0000,
0x0000, 0x0861, 0x10a2, 0x1965, 0x0cf4, 0x0cf4, 0x0cf4, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cf4, 0x0cf4, 0x0cf4, 0x1965, 0x10a2, 0x0861, 0x0000,
0x0000, 0x0861, 0x10a2, 0x130c, 0x0cf4, 0x0cf4, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cf4, 0x0cf4, 0x130c, 0x10a2, 0x0861, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x0bae, 0x0cd3, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04d3, 0x0cd3, 0x0baf, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x0bcf, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04d3, 0x0bcf, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x0bcf, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0bcf, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x14f4, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04d3, 0x14f4, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04d3, 0x55d7, 0x9edb, 0xdf9e, 0xffff, 0xffff, 0xffff, 0xefbe, 0xcf5d, 0x7e59, 0x3555, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x3555, 0x7e59, 0xcf5d, 0xefbe, 0xffff, 0xffff, 0xffff, 0xdf9e, 0x9edb, 0x55d7, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x5df8, 0xdf9e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbf1c, 0x3555, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x3555, 0xbf1c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdf9e, 0x5df8, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cf4, 0xaefb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x8659, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x8659, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xaefb, 0x0cf4, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cf4, 0xcf5d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb6fc, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04d3, 0xb6fc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xcf5d, 0x0cf4, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04d3, 0xb71c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x9e79, 0x4514, 0x0c51, 0x0410, 0x0431, 0x1c92, 0x6596, 0xbefc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb6fc, 0x04d3, 0x04b3, 0x04b3, 0x04d3, 0xb6fc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbefc, 0x6596, 0x1c92, 0x0431, 0x0410, 0x0c51, 0x4514, 0x9e79, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb71c, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x6618, 0xffff, 0xffff, 0xffff, 0xffff, 0xcf3d, 0x24b3, 0x0410, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0410, 0x4d35, 0xef9e, 0xffff, 0xffff, 0xffff, 0xffff, 0x969a, 0x04b3, 0x04b3, 0x969a, 0xffff, 0xffff, 0xffff, 0xffff, 0xef9e, 0x4d35, 0x0410, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0410, 0x24b3, 0xcf3d, 0xffff, 0xffff, 0xffff, 0xffff, 0x6618, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cf4, 0xe7be, 0xffff, 0xffff, 0xffff, 0xcf3c, 0x0c51, 0x0431, 0x0451, 0x0451, 0x0451, 0x0452, 0x0452, 0x0451, 0x0451, 0x0451, 0x0431, 0x1c72, 0xd75d, 0xffff, 0xffff, 0xffff, 0xffff, 0x5dd7, 0x5dd7, 0xffff, 0xffff, 0xffff, 0xffff, 0xd75d, 0x1c92, 0x0431, 0x0451, 0x0451, 0x0451, 0x0452, 0x0452, 0x0451, 0x0451, 0x0451, 0x0431, 0x0c51, 0xcf3c, 0xffff, 0xffff, 0xffff, 0xe7be, 0x0cf4, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x5df8, 0xffff, 0xffff, 0xffff, 0xf7df, 0x1c92, 0x0431, 0x0451, 0x0472, 0x0472, 0x0492, 0x0492, 0x0492, 0x0492, 0x0472, 0x0472, 0x0451, 0x0431, 0x1c72, 0xdf7d, 0xffff, 0xffff, 0xffff, 0xefdf, 0xefdf, 0xffff, 0xffff, 0xffff, 0xdf7d, 0x1c72, 0x0431, 0x0451, 0x0472, 0x0472, 0x24f4, 0x5dd7, 0x5596, 0x0492, 0x0472, 0x0472, 0x0451, 0x0431, 0x1c92, 0xf7df, 0xffff, 0xffff, 0xffff, 0x5df8, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0xaefb, 0xffff, 0xffff, 0xffff, 0x8e39, 0x0431, 0x0472, 0x0492, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0472, 0x0452, 0x0431, 0x34d3, 0xf7df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7df, 0x34d3, 0x0431, 0x0452, 0x0472, 0x0492, 0x04b3, 0x65f8, 0xffff, 0xe79e, 0x04b3, 0x04b3, 0x0492, 0x0492, 0x0472, 0x0431, 0x8e39, 0xffff, 0xffff, 0xffff, 0xaefb, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0xe7be, 0xffff, 0xffff, 0xffff, 0x34f4, 0x0472, 0x0492, 0x04b3, 0x2535, 0x3576, 0x3576, 0x357f6, 0x3576, 0x3576, 0x3576, 0x1d14, 0x04b3, 0x0492, 0x0452, 0x0431, 0x6dd7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6dd7, 0x0431, 0x0452, 0x0492, 0x04b3, 0x1d14, 0x2d55, 0x7e59, 0xffff, 0xe7be, 0x2d55, 0x2d55, 0x04d3, 0x04b3, 0x0492, 0x0472, 0x34f4, 0xffff, 0xffff, 0xffff, 0xe7be, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04d3, 0xffff, 0xffff, 0xffff, 0xffff, 0x0452, 0x0492, 0x04b3, 0x04b3, 0x9eba, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x8e7a, 0x04b3, 0x04b3, 0x0492, 0x0452, 0x0431, 0xc71c, 0xffff, 0xffff, 0xffff, 0xffff, 0xc71c, 0x0431, 0x0452, 0x0492, 0x04b3, 0x04b3, 0x8e9a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0cf4, 0x04b3, 0x04b3, 0x0492, 0x0452, 0xffff, 0xffff, 0xffff, 0xffff, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x0cf4, 0xffff, 0xffff, 0xffff, 0xffff, 0x0472, 0x04b3, 0x04b3, 0x04b3, 0x9eba, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x8e7a, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0451, 0xa69a, 0xffff, 0xffff, 0xffff, 0xffff, 0xa69a, 0x0451, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x8e9a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0cf4, 0x04b3, 0x04b3, 0x04b3, 0x0472, 0xffff, 0xffff, 0xffff, 0xffff, 0x0cf4, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0xf7df, 0xffff, 0xffff, 0xffff, 0x14d4, 0x04b3, 0x04b3, 0x04b3, 0x0cb3, 0x1cb3, 0x1cb3, 0x1cb3, 0x1cb3, 0x1cb3, 0x1cb3, 0x0cb3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x4576, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4576, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0c92, 0x6dd7, 0xffff, 0xe79e, 0x0c92, 0x0c92, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x14d4, 0xffff, 0xffff, 0xffff, 0xf7df, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0xd75d, 0xffff, 0xffff, 0xffff, 0x5dd7, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0452, 0x0452, 0x0452, 0x0452, 0x0452, 0x0452, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x0cd4, 0xdf9e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdf9e, 0x0cd4, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0472, 0x65b7, 0xffff, 0xe79e, 0x0472, 0x0472, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x5dd7, 0xffff, 0xffff, 0xffff, 0xd75d, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x8638, 0xffff, 0xffff, 0xffff, 0xc73d, 0x04b3, 0x04b3, 0x04b3, 0x0472, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x9edb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xa6db, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0451, 0x1c92, 0x3d14, 0x3cf4, 0x0451, 0x0451, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0xc73d, 0xffff, 0xffff, 0xffff, 0x8638, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x34f4, 0xffff, 0xffff, 0xffff, 0xffff, 0x6618, 0x04b3, 0x04b3, 0x0492, 0x0492, 0x0492, 0x0492, 0x0492, 0x0492, 0x0492, 0x0493, 0x04b3, 0x04b3, 0x6e38, 0xffff, 0xffff, 0xffff, 0xffff, 0x9659, 0x9659, 0xffff, 0xffff, 0xffff, 0xffff, 0x6e38, 0x04b3, 0x04b3, 0x0493, 0x0492, 0x0452, 0x0431, 0x0431, 0x0492, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x6618, 0xffff, 0xffff, 0xffff, 0xffff, 0x34f4, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0451, 0xb6db, 0xffff, 0xffff, 0xffff, 0xffff, 0x55d7, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x6e18, 0xffff, 0xffff, 0xffff, 0xffff, 0xd75d, 0x0c51, 0x0c51, 0xd75d, 0xffff, 0xffff, 0xffff, 0xffff, 0x6e18, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0451, 0x0451, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x55d7, 0xffff, 0xffff, 0xffff, 0xffff, 0xb6db, 0x0451, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0472, 0x24b3, 0xf7df, 0xffff, 0xffff, 0xffff, 0xffff, 0x96ba, 0x1d14, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x1d14, 0xa6db, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7df, 0x2cb3, 0x0451, 0x0451, 0x2cb3, 0xf7df, 0xffff, 0xffff, 0xffff, 0xffff, 0xa6db, 0x1d14, 0x04b3, 0x04b3, 0x0492, 0x0492, 0x04b3, 0x04b3, 0x1d14, 0x96ba, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7df, 0x24b3, 0x0472, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0431, 0x5555, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbf1c, 0x8679, 0x6e18, 0x6e38, 0x7e59, 0xbf1c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7df, 0x4534, 0x0431, 0x0472, 0x0472, 0x0431, 0x4534, 0xf7df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbf1c, 0x7e59, 0x6e18, 0x6e18, 0x8679, 0xbf1c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5555, 0x0431, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0472, 0x0431, 0x6596, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7df, 0x4d35, 0x0431, 0x0452, 0x0492, 0x0492, 0x0452, 0x0431, 0x4d35, 0xf7df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6596, 0x0431, 0x0472, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0451, 0x0431, 0x3cf4, 0xdf7d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xd75d, 0x2cb3, 0x0431, 0x0451, 0x0492, 0x04b3, 0x04b3, 0x0492, 0x0451, 0x0431, 0x2cb3, 0xd75d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdf7d, 0x3cf4, 0x0431, 0x0451, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0472, 0x0451, 0x0431, 0x0431, 0x6db7, 0xdf7d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdf7d, 0x6596, 0x0431, 0x0431, 0x0451, 0x0472, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0472, 0x0451, 0x0431, 0x0431, 0x6596, 0xdf7d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdf7d, 0x6db7, 0x0431, 0x0431, 0x0451, 0x0472, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0472, 0x0451, 0x0431, 0x0431, 0x0410, 0x24b3, 0x65b6, 0x8618, 0x9679, 0x9659, 0x8638, 0x6db7, 0x24b3, 0x0410, 0x0431, 0x0431, 0x0451, 0x0472, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0472, 0x0451, 0x0431, 0x0431, 0x0410, 0x24b3, 0x6db7, 0x8638, 0x9659, 0x9679, 0x8618, 0x65b6, 0x24b3, 0x0410, 0x0431, 0x0431, 0x0451, 0x0472, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0472, 0x0452, 0x0451, 0x0431, 0x0431, 0x0431, 0x0411, 0x0410, 0x0410, 0x0410, 0x0431, 0x0431, 0x0431, 0x0451, 0x0472, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0472, 0x0451, 0x0431, 0x0431, 0x0431, 0x0410, 0x0410, 0x0410, 0x0411, 0x0431, 0x0431, 0x0431, 0x0451, 0x0452, 0x0472, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x03af, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0472, 0x0472, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0472, 0x0472, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0472, 0x0472, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0451, 0x0472, 0x0472, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x03af, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x0baf, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0492, 0x0472, 0x0472, 0x0472, 0x0472, 0x0472, 0x0472, 0x0492, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0492, 0x0472, 0x0472, 0x0472, 0x0472, 0x0472, 0x0472, 0x0492, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0baf, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x0bae, 0x04d3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0493, 0x0492, 0x0492, 0x0493, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0493, 0x0492, 0x0492, 0x0493, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04d3, 0x0bae, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x18c3, 0x10a2, 0x0b4d, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0b4d, 0x10a2, 0x18c3, 0x0000,
0x0000, 0x0861, 0x10a2, 0x1229, 0x0cb3, 0x0cb3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cb3, 0x0cb3, 0x1229, 0x10a2, 0x0861, 0x0000,
0x0000, 0x0861, 0x18c3, 0x18c3, 0x0c92, 0x0cb3, 0x0cb3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cb3, 0x0cb3, 0x0c92, 0x18c3, 0x18c3, 0x0861, 0x0000,
0x0000, 0x1082, 0x18c3, 0x18c3, 0x0bf0, 0x0cb3, 0x0cb3, 0x0cb3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0bf0, 0x18c3, 0x18c3, 0x1082, 0x0000,
0x0000, 0x0000, 0x10a2, 0x18c3, 0x126a, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x126a, 0x18c3, 0x10a2, 0x0000, 0x0000,
0x0000, 0x0000, 0x0861, 0x10a2, 0x10a2, 0x0c10, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0493, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0493, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c10, 0x10a2, 0x10a2, 0x18c3, 0x0000, 0x0000,
0x0000, 0x0000, 0x1082, 0x1082, 0x10a2, 0x1208, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0492, 0x0492, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x04b3, 0x0492, 0x0492, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x1208, 0x10a2, 0x18e3, 0x1082, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x18c3, 0x18c3, 0x10a2, 0x0b2c, 0x0c52, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c52, 0x0b2c, 0x10a2, 0x18c3, 0x18c3, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0x18c3, 0x18c3, 0x0b6d, 0x0451, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0451, 0x0b6e, 0x18c3, 0x18c3, 0x1082, 0x10a2, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0x10a2, 0x10a2, 0x18c3, 0x0b2c, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0b2c, 0x18c3, 0x10a2, 0x10a2, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0x18c3, 0x10a2, 0x18c3, 0x0a49, 0x03cf, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x03cf, 0x0a49, 0x18c3, 0x10a2, 0x18c3, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x10a2, 0x18c3, 0x10a2, 0x10a2, 0x10c3, 0x0acb, 0x03af, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03af, 0x0acb, 0x10e3, 0x10a2, 0x10a2, 0x18c3, 0x10a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x10a2, 0x10a2, 0x18c3, 0x10a2, 0x10a2, 0x18c3, 0x1186, 0x0aab, 0x032c, 0x034d, 0x036e, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036d, 0x036e, 0x034d, 0x032c, 0x0aab, 0x1186, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x10a2, 0x10a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0x18c3, 0x18c3, 0x18c3, 0x10a2, 0x18c3, 0x10a2, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x10a2, 0x18c3, 0x10a2, 0x18c3, 0x18c3, 0x18c3, 0x18e3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18c3, 0x1082, 0x10a2, 0x18c3, 0x10a2, 0x10a2, 0x10a2, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x10a2, 0x10a2, 0x10a2, 0x18c3, 0x10a2, 0x18e3, 0x18c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0x0861, 0x18c3, 0x10a2, 0x10a2, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x10a2, 0x10a2, 0x18c3, 0x0861, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x10a2, 0x10a2, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x1082, 0x10a2, 0x10a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

#endif

+ 55
- 0
images/arduino_logo.h Vedi File

@@ -0,0 +1,55 @@
/*
* arduino_logo.h
*
* Created on: 10.01.2026
* Author: FSmilari
*/

#ifndef IMAGES_ARDUINO_LOGO_H_
#define IMAGES_ARDUINO_LOGO_H_

// 'arduino_logo_icon', 64x64px
const unsigned char epd_bitmap_arduino_logo_icon [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xf0, 0x00, 0x00, 0x0f, 0xf0, 0x06, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0x05,
0x01, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x86, 0x03, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xc5,
0x07, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xe0, 0x0f, 0xf8, 0x3f, 0xf0, 0x0f, 0xfc, 0x1f, 0xf0,
0x1f, 0xe0, 0x07, 0xf8, 0x1f, 0xe0, 0x07, 0xf8, 0x3f, 0x80, 0x01, 0xfc, 0x3f, 0x80, 0x01, 0xfc,
0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfc, 0x7e, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x7e,
0x7c, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x1f, 0xf8, 0x03, 0x80, 0x3e,
0xfc, 0x00, 0x00, 0x1f, 0xf8, 0x03, 0x80, 0x3f, 0xf8, 0x1f, 0xf8, 0x0f, 0xf0, 0x0f, 0xe0, 0x1f,
0xf8, 0x1f, 0xf8, 0x07, 0xe0, 0x1f, 0xf0, 0x1f, 0xf8, 0x1f, 0xf8, 0x07, 0xe0, 0x1f, 0xf0, 0x1f,
0xf8, 0x00, 0x00, 0x0f, 0xf0, 0x03, 0x80, 0x1f, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x03, 0x80, 0x3f,
0xfc, 0x00, 0x00, 0x1f, 0xf8, 0x03, 0x80, 0x3f, 0x7c, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x3e,
0x7e, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7e, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfc,
0x3f, 0x00, 0x01, 0xfc, 0x3f, 0x80, 0x00, 0xfc, 0x1f, 0xc0, 0x03, 0xf8, 0x1f, 0xc0, 0x03, 0xf8,
0x1f, 0xf0, 0x0f, 0xf8, 0x1f, 0xf0, 0x0f, 0xf8, 0x0f, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xf0,
0x07, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0x80,
0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x0f, 0x06, 0x33, 0xf9, 0x86, 0x38,
0x0e, 0x1f, 0x8f, 0xc6, 0x33, 0xf9, 0xc6, 0x7e, 0x1e, 0x19, 0xcc, 0xe6, 0x30, 0x61, 0xc6, 0xc6,
0x1b, 0x18, 0xcc, 0x66, 0x30, 0x61, 0xe6, 0xc3, 0x1b, 0x19, 0x8c, 0x66, 0x30, 0x61, 0xe6, 0xc3,
0x33, 0x1f, 0x0c, 0x66, 0x30, 0x61, 0xb6, 0xc3, 0x33, 0x9b, 0x0c, 0x66, 0x30, 0x61, 0xbe, 0xc3,
0x3f, 0x99, 0x8c, 0x66, 0x30, 0x61, 0x9e, 0xc3, 0x3f, 0x99, 0x8c, 0xe6, 0x30, 0x61, 0x9e, 0xc6,
0x61, 0x98, 0xcf, 0xc7, 0xe3, 0xf9, 0x8e, 0x7e, 0xe0, 0xd8, 0xcf, 0x81, 0xc3, 0xf9, 0x8e, 0x38,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 528)
//const int epd_bitmap_allArray_LEN = 1;
//const unsigned char* epd_bitmap_allArray[1] = {
// epd_bitmap_arduino_logo_icon
//};



#endif /* IMAGES_ARDUINO_LOGO_H_ */

+ 27
- 0
images/gear.h Vedi File

@@ -0,0 +1,27 @@
/*
* gear.h
*
* Created on: 07.01.2026
* Author: FSmilari
*/

#ifndef IMAGES_GEAR_H_
#define IMAGES_GEAR_H_

// 'gear', 24x24px
const unsigned char epd_bitmap_gear [] PROGMEM = {
0x00, 0x3c, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x0e, 0x42, 0x70, 0x11, 0xc3, 0x88, 0x10,
0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x3c, 0x10, 0x18, 0x42, 0x18, 0xe0, 0x81,
0x07, 0x80, 0x81, 0x01, 0x80, 0x81, 0x01, 0xe0, 0x81, 0x07, 0x18, 0x42, 0x18, 0x08, 0x3c, 0x10,
0x08, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x11, 0xc3, 0x88, 0x0e, 0x42, 0x70, 0x00,
0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x3c, 0x00
};

// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 96)
//const int epd_bitmap_allArray_LEN = 1;
//const unsigned char *epd_bitmap_allArray[1] = {
// epd_bitmap_gear
//};


#endif /* IMAGES_GEAR_H_ */

+ 29
- 0
images/ruler.h Vedi File

@@ -0,0 +1,29 @@
/*
* ruler.h
*
* Created on: 07.01.2026
* Author: FSmilari
*/

#ifndef IMAGES_RULER_H_
#define IMAGES_RULER_H_

// 'Measure_25', 25x25px
const unsigned char epd_bitmap_Measure_25 [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xaa, 0xaa, 0xaa, 0x80, 0xaa, 0xaa, 0xaa, 0x80, 0xaa, 0xaa, 0xaa, 0x80, 0xaa, 0xaa, 0xaa, 0x80,
0x82, 0x08, 0x20, 0x80, 0x82, 0x08, 0x20, 0x80, 0x80, 0x08, 0x00, 0x80, 0x80, 0x08, 0x00, 0x80,
0x80, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
};

// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 128)
//const int epd_bitmap_allArray_LEN = 1;
//const unsigned char *epd_bitmap_allArray[1] = {
// epd_bitmap_Measure_25
//};


#endif /* IMAGES_RULER_H_ */

+ 57
- 0
images/stm32duino_logo.h Vedi File

@@ -0,0 +1,57 @@
/*
* stm32duino_logo.h
*
* Created on: 20.01.2026
* Author: FSmilari
*/

#ifndef IMAGES_STM32DUINO_LOGO_H_
#define IMAGES_STM32DUINO_LOGO_H_


// 'stm32duino_logo_icon', 64x64px
const unsigned char epd_bitmap_stm32duino_logo_icon [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0xf0, 0x00, 0x00, 0x0f, 0xf0, 0x06, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0x05,
0x01, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x86, 0x03, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xc5,
0x07, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xe0, 0x0f, 0xf8, 0x3f, 0xf0, 0x0f, 0xfc, 0x1f, 0xf0,
0x1f, 0xe0, 0x07, 0xf8, 0x1f, 0xe0, 0x07, 0xf8, 0x3f, 0x80, 0x01, 0xfc, 0x3f, 0x80, 0x01, 0xfc,
0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfc, 0x7e, 0x00, 0x00, 0x7e, 0xfe, 0x00, 0x00, 0x7e,
0x7c, 0x00, 0x00, 0x3f, 0xfc, 0x03, 0xc0, 0x3e, 0x7c, 0x00, 0x00, 0x1f, 0xf8, 0x03, 0xc0, 0x3e,
0xfc, 0x00, 0x00, 0x1f, 0xf8, 0x03, 0xc0, 0x3f, 0xf8, 0x1f, 0xf8, 0x0f, 0xf0, 0x1f, 0xf8, 0x1f,
0xf8, 0x1f, 0xf8, 0x07, 0xe0, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x07, 0xe0, 0x1f, 0xf8, 0x1f,
0xf8, 0x1f, 0xf8, 0x0f, 0xf0, 0x1f, 0xf8, 0x1f, 0xfc, 0x00, 0x00, 0x1f, 0xf8, 0x03, 0xc0, 0x3f,
0xfc, 0x00, 0x00, 0x1f, 0xf8, 0x03, 0xc0, 0x3f, 0x7c, 0x00, 0x00, 0x3f, 0xfc, 0x03, 0xc0, 0x3e,
0x7e, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7e, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfc,
0x3f, 0x00, 0x01, 0xfc, 0x3f, 0x80, 0x00, 0xfc, 0x1f, 0xc0, 0x03, 0xf8, 0x1f, 0xc0, 0x03, 0xf8,
0x1f, 0xf0, 0x0f, 0xf8, 0x1f, 0xf0, 0x0f, 0xf8, 0x0f, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xf0,
0x07, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0x80,
0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0xff, 0x78, 0x1e, 0xfe, 0x1f, 0x80,
0x07, 0xfb, 0xff, 0x7c, 0x1e, 0xff, 0x1f, 0xe0, 0x06, 0x00, 0x38, 0x7c, 0x3e, 0x03, 0x80, 0xf0,
0x06, 0x00, 0x38, 0x7c, 0x3e, 0x01, 0x80, 0x70, 0x06, 0x00, 0x38, 0x74, 0x3e, 0x03, 0x80, 0x70,
0x07, 0xc0, 0x38, 0x76, 0x6e, 0x3f, 0x00, 0x70, 0x03, 0xf0, 0x38, 0x76, 0x6e, 0x3e, 0x00, 0xe0,
0x00, 0x38, 0x38, 0x76, 0x6e, 0x3f, 0x81, 0xc0, 0x00, 0x1c, 0x38, 0x73, 0x4e, 0x03, 0x83, 0x80,
0x00, 0x1c, 0x38, 0x73, 0xce, 0x01, 0x87, 0x00, 0x00, 0x18, 0x38, 0x73, 0xce, 0x03, 0x8e, 0x00,
0x07, 0xf8, 0x38, 0x71, 0x8e, 0xff, 0x9f, 0xf0, 0x07, 0xf0, 0x38, 0x71, 0x8e, 0xff, 0x1f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};


// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 528)
//const int epd_bitmap_allArray_LEN = 1;
//const unsigned char *epd_bitmap_allArray[1] = {
// epd_bitmap_stm32duino_logo_icon
//};



#endif /* IMAGES_STM32DUINO_LOGO_H_ */

+ 27
- 0
images/water.h Vedi File

@@ -0,0 +1,27 @@
/*
* water.h
*
* Created on: 07.01.2026
* Author: FSmilari
*/

#ifndef IMAGES_WATER_H_
#define IMAGES_WATER_H_

// 'water', 24x24px
const unsigned char epd_bitmap_water [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x60, 0xe0, 0x00, 0xf1, 0xe0, 0x01,
0xf1, 0xf0, 0x01, 0xfb, 0xf0, 0x03, 0xfb, 0xf0, 0x03, 0xf7, 0xf8, 0x07, 0xf5, 0xf8, 0x07, 0xf5,
0xf8, 0x0f, 0xf6, 0xf8, 0x0f, 0xfb, 0x70, 0x1f, 0xfd, 0xe0, 0x1f, 0xfe, 0x00, 0x17, 0xff, 0x80,
0x13, 0xff, 0x80, 0x1b, 0xff, 0x00, 0x09, 0xff, 0x00, 0x0c, 0xfe, 0x00, 0x06, 0x3e, 0x00, 0x03,
0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 96)
//const int epd_bitmap_allArray_LEN = 1;
//const unsigned char* epd_bitmap_allArray[1] = {
// epd_bitmap_water
//};


#endif /* IMAGES_WATER_H_ */

+ 27
- 0
images/water_s.h Vedi File

@@ -0,0 +1,27 @@
/*
* water_s.h
*
* Created on: 07.01.2026
* Author: FSmilari
*/

#ifndef IMAGES_WATER_S_H_
#define IMAGES_WATER_S_H_

// 'water_s', 24x24px
const unsigned char epd_bitmap_water_s [] PROGMEM = {
0x1f, 0x00, 0x00, 0x20, 0x90, 0x00, 0x4e, 0x50, 0x40, 0x91, 0x38, 0xe0, 0x90, 0x39, 0xe0, 0x8e,
0x3d, 0xf0, 0x81, 0x3b, 0xf0, 0x91, 0x3b, 0xf0, 0x4e, 0x77, 0xf8, 0x20, 0xf5, 0xf8, 0x1f, 0xf5,
0xf8, 0x0f, 0xf6, 0xf8, 0x0f, 0xfb, 0x70, 0x1f, 0xfd, 0xe0, 0x1f, 0xfe, 0x00, 0x17, 0xff, 0x80,
0x13, 0xff, 0x80, 0x1b, 0xff, 0x00, 0x09, 0xff, 0x00, 0x0c, 0xfe, 0x00, 0x06, 0x3e, 0x00, 0x03,
0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 96)
//const int epd_bitmap_allArray_LEN = 1;
//const unsigned char *epd_bitmap_allArray[1] = {
// epd_bitmap_water_s
//};


#endif /* IMAGES_WATER_S_H_ */

+ 27
- 0
images/zzz.h Vedi File

@@ -0,0 +1,27 @@
/*
* zzz.h
*
* Created on: 07.01.2026
* Author: FSmilari
*/

#ifndef IMAGES_ZZZ_H_
#define IMAGES_ZZZ_H_

// 'Zzz_24', 24x24px
const unsigned char epd_bitmap_Zzz_24 [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x70, 0x00, 0x00,
0xe0, 0x00, 0x01, 0xc0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x03, 0xf0, 0x0e, 0x03, 0xf0, 0x0f, 0xf0,
0x60, 0x0f, 0xf0, 0xc0, 0x00, 0x01, 0x80, 0x00, 0x03, 0xf0, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00,
0x00, 0xf8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xc0, 0x00, 0x00,
0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 96)
//const int epd_bitmap_allArray_LEN = 1;
//const unsigned char *epd_bitmap_allArray[1] = {
// epd_bitmap_Zzz_24
//};


#endif /* IMAGES_ZZZ_H_ */

+ 5
- 10
sloeber.ino.cpp Vedi File

@@ -2,22 +2,17 @@
//This is a automatic generated file
//Please do not modify this file
//If you touch this file your change will be overwritten during the next build
//This file has been generated on 2026-01-04 21:01:22
//This file has been generated on 2026-01-20 23:10:32

#include "Arduino.h"
#include "C:/Users/FSmilari/Documents/Arduino/libraries/Adafruit_GFX_Library/Adafruit_GFX.h"
#include "D:/Programme/sloeber/4.4/arduinoPlugin/libraries/Adafruit_ST7735_and_ST7789_Library/1.11.0/Adafruit_ST7735.h"
#include "D:/Programme/sloeber/4.4/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/cores/arduino/Arduino.h"
#include "D:/Programme/sloeber/4.4/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/cores/arduino/HardwareSerial.h"
#include "D:/Programme/sloeber/4.4/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/cores/arduino/WString.h"
#include "D:/Programme/sloeber/4.4/arduinoPlugin/packages/arduino/hardware/avr/1.8.4/variants/standard/pins_arduino.h"
#include "Arduino.h"
#include "ExEzButton.h"
#include "Status.h"
#include "fonts/titillium_web_regular20pt7b.h"
#include "images/SFToolsLogo.h"
#include "images/thermometer_32.h"
#include "RotaryControler.h"
#include "EchoLotSetup.h"
#include "ThreePositionSwitch.h"

void Initialize() ;
void setup() ;
void loop() ;
void SetActualStatus(Status newStatus) ;

Loading…
Annulla
Salva