| @@ -9,8 +9,10 @@ | |||
| #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/titillium_web_regular10pt7b.h" // Add a custom font | |||
| #include "fonts/titillium_web_semibold10pt7b.h" // Add a custom font | |||
| #include "fonts/titillium_web_regular8pt7b.h" // Add a custom font | |||
| #include "fonts/titillium_web_semibold8pt7b.h" // Add a custom font | |||
| #include <Fonts/FreeSans9pt7b.h> // Add a custom font | |||
| #include "images/stm32duino_logo.h" | |||
| #include "images/thermometer_32.h" | |||
| @@ -21,7 +23,6 @@ | |||
| #include "images/water.h" | |||
| #include "images/water_s.h" | |||
| //#define LED -1 // to +5v | |||
| //#define SCK PA5 | |||
| //#define SDA PA7 | |||
| @@ -33,16 +34,21 @@ | |||
| #define ST7735_ARDUINOGREEN 0x04b3 | |||
| #define ST7735_STM32BLUE 0x03d6 | |||
| #define ST7735_DODGERBLUE 0x249f | |||
| /***************** | |||
| ** Constructors. | |||
| ****************/ | |||
| Display::Display() : tft(Adafruit_ST7735(CS, DC, RST)) { // @suppress("Abstract class cannot be instantiated") | |||
| angle = 0; | |||
| starttime = millis(); | |||
| refreshScreen = true; | |||
| starttime = 0; | |||
| configValue = 0.0; | |||
| configUnit = "m/s"; | |||
| distance = 0; | |||
| environment = 1; | |||
| waterTemp = 20.0; | |||
| airTemp = 20.0; | |||
| refreshScreen = true; | |||
| doMeasureAnimation = false; | |||
| } | |||
| void Display::init(void) { | |||
| @@ -54,13 +60,8 @@ void Display::init(void) { | |||
| refreshScreen = true; | |||
| } | |||
| void Display::display(void) { | |||
| if (!refreshScreen) { | |||
| return; | |||
| } | |||
| // redrawFrame(); | |||
| refreshScreen = false; | |||
| void Display::setRefreshScreen() { | |||
| refreshScreen = true; | |||
| } | |||
| void Display::drawXCenteredText(String txt, const GFXfont *font, uint8_t size, uint16_t col, int16_t y) { | |||
| @@ -82,6 +83,25 @@ void Display::drawXCenteredText(String txt, const GFXfont *font, uint8_t size, u | |||
| tft.print(txt); | |||
| } | |||
| void Display::drawRightAlignedText(String txt, const GFXfont *font, uint8_t size, uint16_t col, int16_t xOffset, 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 position | |||
| int16_t rightAligned_x = (SCREEN_WIDTH - xOffset) - w; | |||
| // Set cursor and print | |||
| tft.setCursor(rightAligned_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) | |||
| @@ -91,6 +111,10 @@ void Display::drawText(String txt, const GFXfont *font, uint8_t size, uint16_t c | |||
| tft.print(txt); | |||
| } | |||
| void Display::drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color) { | |||
| tft.drawCircle(x0, y0, r, color); | |||
| } | |||
| void Display::clearDisplay(void) { | |||
| tft.fillScreen(ST7735_BLACK); | |||
| } | |||
| @@ -104,7 +128,7 @@ void Display::showInitialization(void) { | |||
| drawXCenteredText("EchoLoT", &titillium_web_regular16pt7b, 1, ST7735_CYAN, 36); | |||
| drawXCenteredText("designed by", &FreeSans9pt7b, 1, ST7735_WHITE, 64); | |||
| showBrand(16, 84); | |||
| delay(3000); | |||
| delay(500); | |||
| redrawFrame(); | |||
| drawText("powered by", &FreeSans9pt7b, 1, ST7735_CYAN, 35, 30); | |||
| @@ -124,33 +148,58 @@ void Display::showInitialization(void) { | |||
| // tft.drawBitmap(110, 100, epd_bitmap_water_s, 24, 24, ST7735_BLUE); | |||
| // tft.drawBitmap(1, 160 - 32, thermometer_icon_32, 32, 32, 0xE71C); | |||
| delay(500); | |||
| } | |||
| void Display::display(void) { | |||
| if (!refreshScreen) { | |||
| return; | |||
| } | |||
| delay(3000); | |||
| refreshScreen = false; | |||
| } | |||
| void Display::showFrame(Status status) { | |||
| redrawFrame(); | |||
| switch (status) { | |||
| case Status::INITIALIZATION: | |||
| redrawFrame(); | |||
| break; | |||
| case Status::IDLE: | |||
| if (refreshScreen) { | |||
| redrawIdleStatus(); | |||
| refreshScreen = false; | |||
| } | |||
| break; | |||
| case Status::CONFIGURATION: | |||
| if (refreshScreen) { | |||
| redrawConfigStatus(); | |||
| refreshScreen = false; | |||
| } | |||
| 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; | |||
| } | |||
| } | |||
| void Display::setStatusValues(float airTemp, float waterTemp) { | |||
| this->airTemp = airTemp; | |||
| this->waterTemp = waterTemp; | |||
| } | |||
| void Display::setEnvironment(int environment) { | |||
| if (this->environment != environment) { | |||
| this->environment = environment; | |||
| redrawEnvIcon(); | |||
| } | |||
| } | |||
| void Display::setDistance(uint32_t distance) { | |||
| if (this->distance != distance) { | |||
| this->distance = distance; | |||
| redrawDistance(); | |||
| } | |||
| } | |||
| /* ===== 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); | |||
| @@ -160,9 +209,108 @@ 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); | |||
| } | |||
| void Display::redrawGrid() { | |||
| redrawFrame(); | |||
| tft.drawLine(0, 31, 160, 31, ST7735_CYAN); | |||
| tft.drawLine(0, 32, 160, 32, ST7735_CYAN); | |||
| tft.drawLine(0, 89, 160, 89, ST7735_CYAN); | |||
| tft.drawLine(0, 90, 160, 90, ST7735_CYAN); | |||
| tft.drawLine(80, 90, 80, 128, ST7735_CYAN); | |||
| tft.drawLine(81, 90, 81, 128, ST7735_CYAN); | |||
| } | |||
| void Display::redrawIdleStatus() { | |||
| redrawGrid(); | |||
| tft.drawBitmap(25, 4, epd_bitmap_Zzz_24, 24, 24, ST7735_CYAN); | |||
| drawText("OPERATIV", &titillium_web_semibold8pt7b, 1, ST7735_WHITE, 55, 21); | |||
| float temp = environment == 1 ? airTemp : waterTemp; | |||
| uint16_t col = temp <= 17.0 ? ST7735_WHITE : temp <= 24.0 ? ST7735_GREEN : ST7735_ORANGE; | |||
| uint16_t thH = temp <= 17.0 ? 0 : temp <= 24.0 ? 5 : 9; | |||
| tft.drawBitmap(0, 92, thermometer_icon_32, 32, 32, col); | |||
| tft.drawRect(15, 107 - thH, 2, thH, col); | |||
| drawText(String(temp, 1), &titillium_web_semibold8pt7b, 1, col, 35, 114); | |||
| drawCircle(72, 102, 2, col); | |||
| redrawEnvIcon(); | |||
| redrawDistance(); | |||
| } | |||
| void Display::redrawConfigStatus() { | |||
| redrawGrid(); | |||
| tft.drawBitmap(35, 4, epd_bitmap_gear, 24, 24, ST7735_YELLOW); | |||
| drawText("KONFIG.", &titillium_web_semibold8pt7b, 1, ST7735_WHITE, 65, 21); | |||
| } | |||
| void Display::redrawEnvIcon() { | |||
| const uint8_t *environmentIcon = environment == 1 ? epd_bitmap_air : environment == 2 ? epd_bitmap_water : epd_bitmap_water_s; | |||
| uint16_t col = environment == 1 ? ST7735_WHITE : ST7735_DODGERBLUE; | |||
| tft.fillRect(83, 92, 72, 33, ST7735_BLACK); | |||
| tft.drawBitmap(108, 97, environmentIcon, 24, 24, col); | |||
| } | |||
| void Display::runMeasureAnimation(bool run) { | |||
| if (!this->doMeasureAnimation && run) { | |||
| this->starttime = millis(); | |||
| this->doMeasureAnimation = run; | |||
| } else if (this->doMeasureAnimation && !run) { | |||
| this->starttime = 0; | |||
| this->doMeasureAnimation = run; | |||
| } | |||
| tft.fillRect(24, 3, 28, 28, ST7735_BLACK); | |||
| if (this->doMeasureAnimation && starttime != 0) { | |||
| uint8_t lvl = ((millis() - starttime) / 1000) % 4; | |||
| tft.drawBitmap(25, 4, epd_bitmap_Measure_25, 25, 25, ST7735_RED); | |||
| switch (lvl) { | |||
| case 0: | |||
| tft.fillTriangle(25, 4, 30, 9, 25, 13, ST7735_RED); | |||
| tft.fillTriangle(32, 4, 37, 9, 32, 13, ST7735_BLACK); | |||
| tft.fillTriangle(39, 4, 44, 9, 39, 13, ST7735_BLACK); | |||
| tft.fillTriangle(46, 4, 51, 9, 46, 13, ST7735_BLACK); | |||
| break; | |||
| case 1: | |||
| tft.fillTriangle(25, 4, 30, 9, 25, 13, ST7735_BLACK); | |||
| tft.fillTriangle(32, 4, 37, 9, 32, 13, ST7735_RED); | |||
| tft.fillTriangle(39, 4, 44, 9, 39, 13, ST7735_BLACK); | |||
| tft.fillTriangle(46, 4, 51, 9, 46, 13, ST7735_BLACK); | |||
| break; | |||
| case 2: | |||
| tft.fillTriangle(25, 4, 30, 9, 25, 13, ST7735_BLACK); | |||
| tft.fillTriangle(32, 4, 37, 9, 32, 13, ST7735_BLACK); | |||
| tft.fillTriangle(39, 4, 44, 9, 39, 13, ST7735_RED); | |||
| tft.fillTriangle(46, 4, 51, 9, 46, 13, ST7735_BLACK); | |||
| break; | |||
| case 3: | |||
| tft.fillTriangle(25, 4, 30, 9, 25, 13, ST7735_BLACK); | |||
| tft.fillTriangle(32, 4, 37, 9, 32, 13, ST7735_BLACK); | |||
| tft.fillTriangle(39, 4, 44, 9, 39, 13, ST7735_BLACK); | |||
| tft.fillTriangle(46, 4, 51, 9, 46, 13, ST7735_RED); | |||
| break; | |||
| default: | |||
| break; | |||
| } | |||
| } else { | |||
| tft.drawBitmap(25, 4, epd_bitmap_Zzz_24, 24, 24, ST7735_CYAN); | |||
| } | |||
| } | |||
| void Display::redrawDistance() { | |||
| tft.fillRect(4, 34, 152, 56, ST7735_BLACK); | |||
| if (distance == 0) { | |||
| drawXCenteredText("- - -", &titillium_web_regular16pt7b, 1, ST7735_CYAN, 69); | |||
| } else { | |||
| if (environment == 1) { | |||
| uint16_t dist_CM = distance / 10; | |||
| drawXCenteredText(String(dist_CM) + " cm", &titillium_web_regular16pt7b, 1, ST7735_CYAN, 69); | |||
| } else { | |||
| float dist_M = float(distance) / 1000; | |||
| drawXCenteredText(String(dist_M, 1) + " m", &titillium_web_regular16pt7b, 1, ST7735_CYAN, 69); | |||
| } | |||
| } | |||
| } | |||
| @@ -26,23 +26,40 @@ class Display { | |||
| float configValue; | |||
| String configUnit; | |||
| bool refreshScreen; | |||
| int angle; | |||
| bool doMeasureAnimation; | |||
| unsigned long starttime; | |||
| float airTemp; | |||
| float waterTemp; | |||
| int environment; | |||
| uint16_t distance; | |||
| 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(); | |||
| void redrawGrid(); | |||
| void redrawIdleStatus(); | |||
| void redrawConfigStatus(); | |||
| void redrawEnvIcon(); | |||
| void redrawIdleIcon(); | |||
| void redrawDistance(); | |||
| public: | |||
| Display(); | |||
| void init(void); | |||
| void display(void); | |||
| void clearDisplay(void); | |||
| void setRefreshScreen(); | |||
| 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 drawRightAlignedText(String txt, const GFXfont *font, uint8_t s, uint16_t c, int16_t xOffset, int16_t y); | |||
| void drawText(String txt, const GFXfont *font, uint8_t s, uint16_t c, int16_t x, int16_t y); | |||
| void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); | |||
| void setStatusValues(float airTemp, float waterTemp); | |||
| void setEnvironment(int environment); | |||
| void setDistance(uint32_t distance); | |||
| void runMeasureAnimation(bool run); | |||
| }; | |||
| @@ -22,22 +22,20 @@ Status actualStatus; | |||
| Status originStatus; | |||
| String oldStatus = ""; | |||
| String lastDistance = ""; | |||
| int environmentPostion = 0; | |||
| 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); | |||
| 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); | |||
| display.showInitialization(); | |||
| echoLotSetup.initialize(); | |||
| } | |||
| void setup() { | |||
| @@ -51,11 +49,11 @@ void setup() { | |||
| pinMode(echoPin, INPUT); | |||
| pinMode(Measure_Pin, INPUT); | |||
| MeasureBtn.setDebounceTime(50); | |||
| RotaryControler.setDebounceTime(50); | |||
| ThreePositionSwitch.setDebounceTime(50); | |||
| measureBtn.setDebounceTime(50); | |||
| rotaryControler.setDebounceTime(50); | |||
| threePositionSwitch.setDebounceTime(50); | |||
| Display.init(); | |||
| display.init(); | |||
| SetActualStatus(INITIALIZATION); | |||
| Serial.println("Setup end"); | |||
| @@ -63,72 +61,83 @@ void setup() { | |||
| } | |||
| void loop() { | |||
| MeasureBtn.loop(); | |||
| RotaryControler.loop(); | |||
| switch (actualStatus) { | |||
| case INITIALIZATION: | |||
| Initialize(); | |||
| SetActualStatus(IDLE); | |||
| originStatus = INITIALIZATION; | |||
| break; | |||
| case CONFIGURATION: | |||
| rotaryControler.loop(); | |||
| if (originStatus != CONFIGURATION) { | |||
| display.setRefreshScreen(); | |||
| } | |||
| display.showFrame(actualStatus); | |||
| echoLotSetup.onRotaryControlerTurn(rotaryControler.getEncoderMove()); | |||
| if (rotaryControler.isSwitchLongPressed()) { | |||
| Serial.println("RotaryEnc Long SwitchPressed"); | |||
| delay(50); | |||
| // TODO: Save the edited config values | |||
| SetActualStatus(IDLE); | |||
| } | |||
| originStatus = CONFIGURATION; | |||
| break; | |||
| case IDLE: { | |||
| if (RotaryControler.isSwitchLongPressed()) { | |||
| measureBtn.loop(); | |||
| rotaryControler.loop(); | |||
| threePositionSwitch.loop(); | |||
| if (originStatus == CONFIGURATION || originStatus == INITIALIZATION) { | |||
| display.setRefreshScreen(); | |||
| display.showFrame(actualStatus); | |||
| } | |||
| if (rotaryControler.isSwitchLongPressed()) { | |||
| Serial.println("RotaryEnc Long SwitchPressed"); | |||
| RotaryControler.resetPosition(); | |||
| delay(50); | |||
| SetActualStatus(CONFIGURATION); | |||
| } | |||
| if (RotaryControler.isSwitchPressed()) { | |||
| Serial.println("RotaryEnc SwitchPressed"); | |||
| } else if (MeasureBtn.isPressing()) { | |||
| if (measureBtn.isPressing()) { | |||
| SetActualStatus(MEASURING); | |||
| } | |||
| ThreePositionSwitch.loop(); | |||
| int pin = ThreePositionSwitch.getPosition(); | |||
| // Serial.print("3-Pos-Schalter Position: "); | |||
| // Serial.println(pin); | |||
| environmentPostion = threePositionSwitch.getPosition(); | |||
| display.setEnvironment(environmentPostion); | |||
| delay(200); | |||
| originStatus = IDLE; | |||
| delay(50); | |||
| break; | |||
| } | |||
| case MEASURING: | |||
| if (MeasureBtn.isPressing()) { | |||
| measureBtn.loop(); | |||
| if (measureBtn.isPressing()) { | |||
| display.runMeasureAnimation(true); | |||
| 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); | |||
| //TODO: calculate real distanz according settings | |||
| uint32_t duration = pulseIn(echoPin, HIGH); | |||
| uint32_t distance = calculateDistance(duration); | |||
| display.setDistance(distance); | |||
| delay(100); | |||
| } else { | |||
| // tft.fillScreen(ST7735_BLACK); | |||
| display.setDistance(0); | |||
| display.runMeasureAnimation(false); | |||
| SetActualStatus(IDLE); | |||
| } | |||
| originStatus = MEASURING; | |||
| break; | |||
| default: | |||
| break; | |||
| @@ -138,6 +147,27 @@ void loop() { | |||
| void SetActualStatus(Status newStatus) { | |||
| if (actualStatus != newStatus) { | |||
| actualStatus = newStatus; | |||
| // Display.setRefreshScreen(); | |||
| } | |||
| } | |||
| uint32_t calculateDistance(uint32_t duration) { | |||
| if (environmentPostion == 1) { | |||
| float airTemp = echoLotSetup.getAirTemp(); | |||
| float speedAir = echoLotSetup.getSonicSpeedAir(); | |||
| return ((speedAir + 0.6 * airTemp) / 1000 * duration) / 2; | |||
| } else { | |||
| //cS = (1449 + 4,6T - 0,05T^2 + 1,4(S-35)) T=Tempeature, S= Salt in PerMille | |||
| float waterTemp = echoLotSetup.getWaterTemp(); | |||
| int saltLvl = environmentPostion == 2 ? 0 : echoLotSetup.getSaltPromilleWater(); | |||
| int speedWater = 1449 + 4.6 * waterTemp - 0.05 * pow(waterTemp, 2) + 1.4 * (saltLvl - 35); | |||
| Serial.println("duration: " + String(duration)); | |||
| Serial.println("saltLvl: " + String(saltLvl)); | |||
| Serial.println("speedWater: " + String(speedWater)); | |||
| Serial.println("distance: " + String((float(speedWater) / 1000 * duration) / 2)); | |||
| return (float(speedWater) / 1000 * duration) / 2; | |||
| } | |||
| } | |||
| @@ -6,6 +6,8 @@ | |||
| */ | |||
| #include "EchoLotSetup.h" | |||
| #include "fonts/FreeSans7pt7b.h" | |||
| //#include <Fonts/FreeSans9pt7b.h> | |||
| #define ADDR_AIR_TEMP 0 // WORD | |||
| #define ADDR_WATER_TEMP 2 // +2 WORDs | |||
| @@ -31,6 +33,14 @@ EchoLotSetup::EchoLotSetup(Display &display) : display(display) { | |||
| void EchoLotSetup::initialize() { | |||
| EEPROM.init(); | |||
| readFromEEPROM(); | |||
| display.setStatusValues(airTemp, waterTemp); | |||
| display.clearDisplay(); | |||
| display.showFrame(INITIALIZATION); | |||
| printValues(); | |||
| delay(2000); | |||
| configStepIndex = 0; | |||
| doInitialization = false; | |||
| } | |||
| @@ -106,8 +116,6 @@ void EchoLotSetup::readFromEEPROM() { | |||
| setWaterTemp(readFloatFromEEPROM(ADDR_WATER_TEMP)); | |||
| setSonicSpeedAir(readFloatFromEEPROM(ADDR_SONIC_AIR)); | |||
| setSaltPromilleWater(readIntegerFromEEPROM(ADDR_SALTPERMIL)); | |||
| printValues(); | |||
| } | |||
| // -------------------------------------------------- | |||
| @@ -129,6 +137,23 @@ void EchoLotSetup::printValues() { | |||
| Serial.print(String(WATERTEMP) + ": " + String(getWaterTemp(), 1) + ", "); | |||
| Serial.print(String(SONICSPEEDAIR) + ": " + String(getSonicSpeedAir(), 1) + ", "); | |||
| Serial.println(String(SALTPROMILLEWATER) + ": " + String(getSaltPromilleWater())); | |||
| display.drawText(ConfigStep[0], &FreeSans7pt7b, 1, ST7735_WHITE, 7, 30); | |||
| display.drawRightAlignedText(String(getAirTemp(), 1) + " C", &FreeSans7pt7b, 1, ST7735_WHITE, 8, 30); | |||
| display.drawCircle(140, 23, 2, ST7735_WHITE); | |||
| display.drawText(ConfigStep[1], &FreeSans7pt7b, 1, ST7735_WHITE, 7, 55); | |||
| display.drawRightAlignedText(String(getWaterTemp(), 1) + " C", &FreeSans7pt7b, 1, ST7735_WHITE, 8, 55); | |||
| display.drawCircle(140, 48, 2, ST7735_WHITE); | |||
| display.drawText(ConfigStep[2], &FreeSans7pt7b, 1, ST7735_WHITE, 7, 80); | |||
| display.drawRightAlignedText(String(getSonicSpeedAir(), 1) + " m/s", &FreeSans7pt7b, 1, ST7735_WHITE, 8, 80); | |||
| display.drawText(ConfigStep[3], &FreeSans7pt7b, 1, ST7735_WHITE, 7, 105); | |||
| display.drawRightAlignedText(String(getSaltPromilleWater()) + " / ", &FreeSans7pt7b, 1, ST7735_WHITE, 8, 105); | |||
| display.drawCircle(140, 98, 2, ST7735_WHITE); | |||
| display.drawCircle(148, 104, 2, ST7735_WHITE); | |||
| display.drawCircle(153, 104, 2, ST7735_WHITE); | |||
| } | |||
| // -------------------------------------------------- | |||
| @@ -201,7 +226,6 @@ float EchoLotSetup::readFloatFromEEPROM(uint16_t addr) { | |||
| return value; | |||
| } | |||
| void EchoLotSetup::writeIntegerToEEPROM(uint16_t addr, int value) { | |||
| EEPROM.update(addr, (uint16_t) value); | |||
| } | |||
| @@ -20,7 +20,7 @@ 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" }; | |||
| const static String ConfigStep[4] = { "Temp. Luft", "Temp. Wasser", "Vsnc Luft", "Salzgeh. Wasser" }; | |||
| #define eeprom_start_adress 0 | |||
| @@ -10,7 +10,7 @@ | |||
| class Loopable { | |||
| public: | |||
| virtual void loop(void); | |||
| virtual void loop(void) = 0; | |||
| virtual ~Loopable() { | |||
| } | |||
| }; | |||
| @@ -0,0 +1,162 @@ | |||
| const uint8_t FreeSans7pt7bBitmaps[] PROGMEM = { | |||
| 0x00, 0xFF, 0x40, 0xB6, 0xD0, 0x12, 0x28, 0xD3, 0xF2, 0x44, 0xBF, 0x94, | |||
| 0x48, 0x90, 0x10, 0x71, 0x52, 0x95, 0x0E, 0x07, 0x09, 0xD2, 0xA5, 0xF0, | |||
| 0x81, 0x00, 0x00, 0x87, 0x88, 0x89, 0x08, 0x90, 0x72, 0x00, 0x00, 0x04, | |||
| 0xE0, 0x91, 0x09, 0x11, 0x0E, 0x30, 0x48, 0x48, 0x48, 0x30, 0x52, 0x9A, | |||
| 0x8C, 0x8E, 0xFA, 0xF0, 0x29, 0x49, 0x24, 0x99, 0x22, 0x91, 0x24, 0x9A, | |||
| 0x49, 0x48, 0x4F, 0x4A, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xD8, 0xE0, | |||
| 0xC0, 0x10, 0x22, 0x04, 0x44, 0x88, 0x33, 0x68, 0xE1, 0x86, 0x18, 0x61, | |||
| 0x89, 0xE0, 0x13, 0xF1, 0x11, 0x11, 0x11, 0x18, 0xCD, 0x0A, 0x10, 0x61, | |||
| 0x8C, 0x30, 0x40, 0xFC, 0x38, 0xC9, 0x18, 0x31, 0xC3, 0x80, 0xE1, 0x46, | |||
| 0xF8, 0x04, 0x18, 0x71, 0xE2, 0xC9, 0xB3, 0x7F, 0x0C, 0x18, 0x7E, 0x81, | |||
| 0x02, 0x07, 0xC8, 0xC0, 0x81, 0x46, 0xF8, 0x31, 0x28, 0x60, 0xFB, 0x38, | |||
| 0x61, 0x8D, 0xE0, 0xFC, 0x10, 0x82, 0x10, 0xC2, 0x08, 0x41, 0x00, 0x18, | |||
| 0xC9, 0x1A, 0x33, 0xCD, 0x90, 0xA1, 0x46, 0xF8, 0x73, 0x68, 0xE1, 0x8F, | |||
| 0x72, 0x43, 0x8B, 0xE0, 0xC0, 0x0C, 0x40, 0x0D, 0xC0, 0x00, 0x33, 0x30, | |||
| 0xE0, 0xE0, 0x40, 0xFC, 0x00, 0x00, 0x03, 0x03, 0x03, 0x1D, 0xC8, 0x00, | |||
| 0x7B, 0x38, 0x43, 0x18, 0x43, 0x00, 0x00, 0xC0, 0x0F, 0xC0, 0xC3, 0x08, | |||
| 0x04, 0x8E, 0xB4, 0xCC, 0xA4, 0x47, 0x22, 0x29, 0x12, 0x4E, 0xE3, 0x00, | |||
| 0x0E, 0x00, 0x1F, 0x00, 0x0C, 0x0E, 0x05, 0x02, 0xC2, 0x21, 0x11, 0xFC, | |||
| 0x82, 0x41, 0x60, 0xC0, 0xFC, 0x86, 0x82, 0x82, 0xFC, 0x86, 0x82, 0x83, | |||
| 0x82, 0xFC, 0x3E, 0x43, 0xC1, 0x80, 0x80, 0x80, 0x81, 0x81, 0x43, 0x7E, | |||
| 0xFC, 0xC6, 0xC3, 0xC1, 0xC1, 0xC1, 0xC1, 0xC3, 0xC6, 0xFC, 0xFF, 0x83, | |||
| 0x06, 0x0F, 0xF8, 0x30, 0x60, 0xC1, 0xFC, 0xFF, 0x83, 0x06, 0x0F, 0xD8, | |||
| 0x30, 0x60, 0xC1, 0x80, 0x3E, 0x21, 0xB0, 0x50, 0x08, 0x04, 0x3E, 0x03, | |||
| 0x03, 0x41, 0x9F, 0x40, 0x81, 0x81, 0x81, 0x81, 0xFF, 0x81, 0x81, 0x81, | |||
| 0x81, 0x81, 0xFF, 0xFF, 0xF0, 0x04, 0x10, 0x41, 0x04, 0x10, 0x71, 0xCD, | |||
| 0xE0, 0x82, 0x84, 0x88, 0x90, 0xB0, 0xD8, 0x8C, 0x84, 0x86, 0x83, 0x82, | |||
| 0x08, 0x20, 0x82, 0x08, 0x20, 0x83, 0xF0, 0xC1, 0xE0, 0xE8, 0x74, 0x7A, | |||
| 0x2C, 0x96, 0x5B, 0x29, 0x8C, 0xC6, 0x40, 0xC1, 0xC1, 0xA1, 0xB1, 0x91, | |||
| 0x89, 0x8D, 0x85, 0x87, 0x83, 0x3E, 0x21, 0xA0, 0x70, 0x18, 0x0C, 0x06, | |||
| 0x03, 0x03, 0x43, 0x1F, 0x00, 0xFD, 0x8F, 0x0E, 0x1C, 0x7F, 0xB0, 0x60, | |||
| 0xC1, 0x80, 0x3E, 0x21, 0xA0, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x0B, 0x43, | |||
| 0x1F, 0x80, 0x20, 0xFE, 0xC3, 0xC1, 0xC1, 0xC6, 0xFE, 0xC3, 0xC3, 0xC3, | |||
| 0xC1, 0x7C, 0xC6, 0x82, 0xC0, 0x70, 0x1E, 0x02, 0x83, 0xC2, 0x7C, 0xFF, | |||
| 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x81, 0x81, 0x81, | |||
| 0x81, 0x81, 0x81, 0x81, 0x81, 0xC3, 0x7E, 0x41, 0xA0, 0x98, 0x44, 0x62, | |||
| 0x21, 0x90, 0x58, 0x28, 0x1C, 0x06, 0x00, 0xC2, 0x1A, 0x38, 0x91, 0x44, | |||
| 0xCA, 0x26, 0x53, 0x14, 0x50, 0xA2, 0x85, 0x14, 0x38, 0xE0, 0x82, 0x00, | |||
| 0x41, 0x11, 0x8C, 0x82, 0x80, 0xC0, 0xE0, 0x50, 0x44, 0x63, 0x20, 0xC0, | |||
| 0xC1, 0xB0, 0x88, 0xC6, 0xC1, 0x40, 0x60, 0x20, 0x10, 0x08, 0x04, 0x00, | |||
| 0x7F, 0x03, 0x06, 0x04, 0x08, 0x18, 0x30, 0x60, 0x40, 0xFF, 0xEA, 0xAA, | |||
| 0xAA, 0xC0, 0x88, 0x04, 0x40, 0x22, 0x01, 0xE4, 0x92, 0x49, 0x24, 0x9E, | |||
| 0x23, 0x15, 0x29, 0x00, 0x00, 0x44, 0xFA, 0x20, 0xBE, 0x8A, 0x2F, 0xC0, | |||
| 0x82, 0x08, 0x3E, 0x8E, 0x18, 0x61, 0x8F, 0xE0, 0x7C, 0x89, 0x06, 0x0C, | |||
| 0x08, 0x9F, 0x00, 0x02, 0x04, 0x0B, 0xD4, 0x78, 0x70, 0xE1, 0x46, 0xF4, | |||
| 0x7A, 0x38, 0x7F, 0x82, 0x37, 0x80, 0x34, 0x4F, 0x44, 0x44, 0x44, 0x7A, | |||
| 0x8F, 0x1E, 0x1C, 0x68, 0xDE, 0x83, 0x44, 0x70, 0x82, 0x08, 0x3E, 0x8E, | |||
| 0x18, 0x61, 0x86, 0x10, 0x9F, 0xC0, 0x41, 0x55, 0x55, 0xC0, 0x82, 0x08, | |||
| 0x26, 0xB3, 0x8F, 0x24, 0x8A, 0x30, 0xFF, 0xC0, 0xFF, 0xC6, 0x62, 0x31, | |||
| 0x18, 0x8C, 0x46, 0x22, 0xFA, 0x38, 0x61, 0x86, 0x18, 0x40, 0x7C, 0x8D, | |||
| 0x0E, 0x14, 0x28, 0xCF, 0x00, 0xFA, 0x38, 0x61, 0x86, 0x3F, 0xA0, 0x82, | |||
| 0x00, 0x7E, 0x8F, 0x0E, 0x1C, 0x28, 0xDE, 0x81, 0x02, 0x04, 0xFA, 0x49, | |||
| 0x20, 0x7D, 0x14, 0x0E, 0x05, 0x17, 0xC0, 0x4B, 0xA4, 0x92, 0x60, 0x8E, | |||
| 0x38, 0xE3, 0x8E, 0x3F, 0x40, 0xC4, 0x89, 0x33, 0x42, 0x86, 0x0C, 0x00, | |||
| 0xCC, 0xD3, 0x24, 0xC9, 0x5E, 0x73, 0x0C, 0xC3, 0x30, 0x44, 0xA3, 0x84, | |||
| 0x29, 0xA4, 0x40, 0x44, 0x89, 0x31, 0x42, 0x86, 0x04, 0x08, 0x20, 0xC0, | |||
| 0x7C, 0x31, 0x8C, 0x21, 0x0F, 0xC0, 0x69, 0x25, 0xA6, 0x49, 0x26, 0xFF, | |||
| 0xF8, 0xC6, 0x66, 0x22, 0x12, 0x26, 0x66, 0xC0, 0xE6, 0x70 }; | |||
| const GFXglyph FreeSans7pt7bGlyphs[] PROGMEM = { | |||
| { 0, 1, 1, 4, 0, 0 }, // 0x20 ' ' | |||
| { 1, 1, 10, 4, 2, -9 }, // 0x21 '!' | |||
| { 3, 3, 4, 5, 1, -9 }, // 0x22 '"' | |||
| { 5, 7, 10, 8, 0, -9 }, // 0x23 '#' | |||
| { 14, 7, 13, 8, 0, -10 }, // 0x24 '$' | |||
| { 26, 12, 10, 12, 0, -9 }, // 0x25 '%' | |||
| { 41, 8, 10, 9, 1, -9 }, // 0x26 '&' | |||
| { 51, 1, 4, 3, 1, -9 }, // 0x27 ''' | |||
| { 52, 3, 13, 5, 1, -9 }, // 0x28 '(' | |||
| { 57, 3, 13, 5, 1, -9 }, // 0x29 ')' | |||
| { 62, 4, 4, 5, 1, -9 }, // 0x2A '*' | |||
| { 64, 6, 7, 8, 1, -6 }, // 0x2B '+' | |||
| { 70, 2, 3, 4, 1, 0 }, // 0x2C ',' | |||
| { 71, 3, 1, 5, 1, -3 }, // 0x2D '-' | |||
| { 72, 2, 1, 4, 1, 0 }, // 0x2E '.' | |||
| { 73, 4, 10, 4, 0, -9 }, // 0x2F '/' | |||
| { 78, 6, 10, 8, 1, -9 }, // 0x30 '0' | |||
| { 86, 4, 10, 8, 1, -9 }, // 0x31 '1' | |||
| { 91, 7, 10, 8, 0, -9 }, // 0x32 '2' | |||
| { 100, 7, 10, 8, 0, -9 }, // 0x33 '3' | |||
| { 109, 7, 10, 8, 0, -9 }, // 0x34 '4' | |||
| { 118, 7, 10, 8, 0, -9 }, // 0x35 '5' | |||
| { 127, 6, 10, 8, 1, -9 }, // 0x36 '6' | |||
| { 135, 6, 10, 8, 1, -9 }, // 0x37 '7' | |||
| { 143, 7, 10, 8, 0, -9 }, // 0x38 '8' | |||
| { 152, 6, 10, 8, 1, -9 }, // 0x39 '9' | |||
| { 160, 2, 7, 4, 1, -6 }, // 0x3A ':' | |||
| { 162, 2, 9, 4, 1, -6 }, // 0x3B ';' | |||
| { 165, 6, 7, 8, 1, -6 }, // 0x3C '<' | |||
| { 171, 6, 3, 8, 1, -4 }, // 0x3D '=' | |||
| { 174, 6, 7, 8, 1, -6 }, // 0x3E '>' | |||
| { 180, 6, 10, 8, 1, -9 }, // 0x3F '?' | |||
| { 188, 13, 12, 14, 0, -9 }, // 0x40 '@' | |||
| { 208, 9, 10, 9, 0, -9 }, // 0x41 'A' | |||
| { 220, 8, 10, 9, 1, -9 }, // 0x42 'B' | |||
| { 230, 8, 10, 10, 1, -9 }, // 0x43 'C' | |||
| { 240, 8, 10, 10, 1, -9 }, // 0x44 'D' | |||
| { 250, 7, 10, 9, 1, -9 }, // 0x45 'E' | |||
| { 259, 7, 10, 8, 1, -9 }, // 0x46 'F' | |||
| { 268, 9, 10, 11, 1, -9 }, // 0x47 'G' | |||
| { 280, 8, 10, 10, 1, -9 }, // 0x48 'H' | |||
| { 290, 2, 10, 4, 1, -9 }, // 0x49 'I' | |||
| { 293, 6, 10, 7, 0, -9 }, // 0x4A 'J' | |||
| { 301, 8, 10, 9, 1, -9 }, // 0x4B 'K' | |||
| { 311, 6, 10, 8, 1, -9 }, // 0x4C 'L' | |||
| { 319, 9, 10, 11, 1, -9 }, // 0x4D 'M' | |||
| { 331, 8, 10, 10, 1, -9 }, // 0x4E 'N' | |||
| { 341, 9, 10, 11, 1, -9 }, // 0x4F 'O' | |||
| { 353, 7, 10, 9, 1, -9 }, // 0x50 'P' | |||
| { 362, 9, 11, 11, 1, -9 }, // 0x51 'Q' | |||
| { 375, 8, 10, 10, 1, -9 }, // 0x52 'R' | |||
| { 385, 8, 10, 9, 1, -9 }, // 0x53 'S' | |||
| { 395, 8, 10, 8, 0, -9 }, // 0x54 'T' | |||
| { 405, 8, 10, 10, 1, -9 }, // 0x55 'U' | |||
| { 415, 9, 10, 9, 0, -9 }, // 0x56 'V' | |||
| { 427, 13, 10, 13, 0, -9 }, // 0x57 'W' | |||
| { 444, 9, 10, 9, 0, -9 }, // 0x58 'X' | |||
| { 456, 9, 10, 9, 0, -9 }, // 0x59 'Y' | |||
| { 468, 8, 10, 8, 0, -9 }, // 0x5A 'Z' | |||
| { 478, 2, 13, 4, 1, -9 }, // 0x5B '[' | |||
| { 482, 4, 10, 4, 0, -9 }, // 0x5C '\' | |||
| { 487, 3, 13, 4, 0, -9 }, // 0x5D ']' | |||
| { 492, 5, 5, 6, 1, -9 }, // 0x5E '^' | |||
| { 496, 8, 1, 8, 0, 3 }, // 0x5F '_' | |||
| { 497, 3, 2, 5, 0, -9 }, // 0x60 '`' | |||
| { 498, 6, 7, 8, 1, -6 }, // 0x61 'a' | |||
| { 504, 6, 10, 8, 1, -9 }, // 0x62 'b' | |||
| { 512, 7, 7, 7, 0, -6 }, // 0x63 'c' | |||
| { 519, 7, 10, 8, 0, -9 }, // 0x64 'd' | |||
| { 528, 6, 7, 8, 1, -6 }, // 0x65 'e' | |||
| { 534, 4, 10, 4, 0, -9 }, // 0x66 'f' | |||
| { 539, 7, 10, 8, 0, -6 }, // 0x67 'g' | |||
| { 548, 6, 10, 8, 1, -9 }, // 0x68 'h' | |||
| { 556, 1, 10, 3, 1, -9 }, // 0x69 'i' | |||
| { 558, 2, 13, 3, 0, -9 }, // 0x6A 'j' | |||
| { 562, 6, 10, 7, 1, -9 }, // 0x6B 'k' | |||
| { 570, 1, 10, 3, 1, -9 }, // 0x6C 'l' | |||
| { 572, 9, 7, 11, 1, -6 }, // 0x6D 'm' | |||
| { 580, 6, 7, 8, 1, -6 }, // 0x6E 'n' | |||
| { 586, 7, 7, 8, 0, -6 }, // 0x6F 'o' | |||
| { 593, 6, 10, 8, 1, -6 }, // 0x70 'p' | |||
| { 601, 7, 10, 8, 0, -6 }, // 0x71 'q' | |||
| { 610, 3, 7, 5, 1, -6 }, // 0x72 'r' | |||
| { 613, 6, 7, 7, 0, -6 }, // 0x73 's' | |||
| { 619, 3, 9, 4, 0, -8 }, // 0x74 't' | |||
| { 623, 6, 7, 8, 1, -6 }, // 0x75 'u' | |||
| { 629, 7, 7, 7, 0, -6 }, // 0x76 'v' | |||
| { 636, 10, 7, 10, 0, -6 }, // 0x77 'w' | |||
| { 645, 6, 7, 7, 0, -6 }, // 0x78 'x' | |||
| { 651, 7, 10, 7, 0, -6 }, // 0x79 'y' | |||
| { 660, 6, 7, 7, 0, -6 }, // 0x7A 'z' | |||
| { 666, 3, 13, 5, 1, -9 }, // 0x7B '{' | |||
| { 671, 1, 13, 4, 1, -9 }, // 0x7C '|' | |||
| { 673, 4, 13, 5, 0, -9 }, // 0x7D '}' | |||
| { 680, 6, 2, 8, 1, -5 } }; // 0x7E '~' | |||
| const GFXfont FreeSans7pt7b PROGMEM = { | |||
| (uint8_t *)FreeSans7pt7bBitmaps, | |||
| (GFXglyph *)FreeSans7pt7bGlyphs, | |||
| 0x20, 0x7E, 23 }; | |||
| // Approx. 1354 bytes | |||
| @@ -0,0 +1,176 @@ | |||
| const uint8_t FreeSans8pt7bBitmaps[] PROGMEM = { | |||
| 0x00, 0xFF, 0x60, 0xBB, 0x98, 0x13, 0x09, 0x04, 0x8F, 0xF3, 0x21, 0x30, | |||
| 0x91, 0xFE, 0x24, 0x12, 0x19, 0x00, 0x08, 0x3E, 0x4A, 0x49, 0x48, 0x68, | |||
| 0x3E, 0x0B, 0x09, 0x49, 0x4B, 0x7E, 0x08, 0x08, 0x30, 0x42, 0x42, 0x31, | |||
| 0x20, 0x89, 0x07, 0x90, 0x18, 0x80, 0x09, 0xC0, 0x99, 0x04, 0x88, 0x44, | |||
| 0x42, 0x1E, 0x3C, 0x32, 0x11, 0x0D, 0x83, 0x83, 0xC3, 0x25, 0x1E, 0x86, | |||
| 0x63, 0x9F, 0x60, 0xF0, 0x22, 0x44, 0xC8, 0x88, 0x8C, 0x44, 0x22, 0x89, | |||
| 0x22, 0x49, 0x2D, 0x25, 0x00, 0x0F, 0x69, 0x10, 0x20, 0x47, 0xF1, 0x02, | |||
| 0x04, 0x00, 0xF5, 0xE0, 0xF0, 0x11, 0x12, 0x22, 0x44, 0x48, 0x80, 0x79, | |||
| 0x9B, 0x1C, 0x38, 0x70, 0x60, 0xC3, 0x87, 0x89, 0xF0, 0x27, 0x92, 0x49, | |||
| 0x24, 0x80, 0x7D, 0x8E, 0x1C, 0x10, 0x61, 0x8E, 0x30, 0xC1, 0x03, 0xF8, | |||
| 0x3C, 0x62, 0x43, 0x03, 0x06, 0x1E, 0x03, 0x03, 0x43, 0x43, 0x3E, 0x06, | |||
| 0x0E, 0x0E, 0x16, 0x36, 0x66, 0x46, 0xFF, 0x06, 0x06, 0x06, 0x7D, 0x83, | |||
| 0x06, 0x0F, 0xD8, 0xC1, 0x81, 0x83, 0x8D, 0xF0, 0x3C, 0x8B, 0x1C, 0x0B, | |||
| 0x99, 0xA1, 0xC1, 0x83, 0x8D, 0xF0, 0xFE, 0x04, 0x10, 0x40, 0x82, 0x04, | |||
| 0x18, 0x20, 0x41, 0x80, 0x79, 0x8A, 0x1C, 0x36, 0xCF, 0xA1, 0xC1, 0x83, | |||
| 0x8D, 0xF0, 0x79, 0x9A, 0x1C, 0x38, 0x78, 0xDE, 0x83, 0x87, 0x89, 0xE0, | |||
| 0x83, 0x83, 0x40, 0x06, 0x3B, 0x86, 0x07, 0x01, 0x80, 0x80, 0xFF, 0xFC, | |||
| 0x07, 0xF0, 0xC0, 0xE0, 0x38, 0x11, 0xCE, 0x20, 0x00, 0x18, 0xFB, 0x1E, | |||
| 0x10, 0x61, 0x86, 0x08, 0x10, 0x00, 0x40, 0x80, 0x03, 0x80, 0x7F, 0x83, | |||
| 0x03, 0x18, 0x06, 0xC7, 0xEE, 0x33, 0x39, 0x84, 0x66, 0x33, 0x98, 0x8A, | |||
| 0x66, 0x6C, 0xEF, 0x18, 0x00, 0x30, 0x00, 0x7F, 0x00, 0x0E, 0x03, 0x81, | |||
| 0xA0, 0x4C, 0x13, 0x0C, 0x43, 0xF8, 0xFE, 0x60, 0x90, 0x3C, 0x0C, 0xFE, | |||
| 0x61, 0xB0, 0x58, 0x2F, 0xE7, 0xFB, 0x07, 0x83, 0xC1, 0xE1, 0xBF, 0x80, | |||
| 0x0C, 0x0F, 0xC6, 0x1B, 0x02, 0x80, 0x20, 0x08, 0x02, 0x00, 0xC0, 0xF0, | |||
| 0x26, 0x18, 0xFC, 0xFF, 0x60, 0xF0, 0x78, 0x1C, 0x0E, 0x07, 0x03, 0x81, | |||
| 0xC1, 0xE1, 0xBF, 0x80, 0xFF, 0x60, 0x30, 0x18, 0x0C, 0x07, 0xFB, 0x01, | |||
| 0x80, 0xC0, 0x60, 0x3F, 0xE0, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, | |||
| 0xC0, 0xC0, 0xC0, 0xC0, 0x0C, 0x0F, 0xE6, 0x0B, 0x03, 0x80, 0x20, 0x08, | |||
| 0x7E, 0x01, 0xC0, 0x70, 0x36, 0x1C, 0xFD, 0xC0, 0xE0, 0x70, 0x38, 0x1C, | |||
| 0x0F, 0xFF, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x20, 0xFF, 0xE0, 0x06, 0x0C, | |||
| 0x18, 0x30, 0x60, 0xC1, 0xE3, 0xC7, 0x89, 0xF0, 0xC3, 0x63, 0x31, 0x19, | |||
| 0x0D, 0x87, 0x43, 0x31, 0x8C, 0xC3, 0x60, 0xB0, 0x60, 0xC1, 0x83, 0x06, | |||
| 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0xF8, 0xE0, 0x7C, 0x1F, 0x82, 0xF8, | |||
| 0x5D, 0x1B, 0xA2, 0x76, 0x4E, 0x59, 0xCA, 0x39, 0xC7, 0x10, 0x80, 0xC0, | |||
| 0xF0, 0x7C, 0x3A, 0x1D, 0x8E, 0x67, 0x13, 0x8D, 0xC2, 0xE0, 0xF0, 0x60, | |||
| 0x0C, 0x07, 0xF1, 0x82, 0x60, 0x68, 0x05, 0x00, 0xE0, 0x1C, 0x03, 0x80, | |||
| 0x58, 0x19, 0x86, 0x1F, 0x80, 0xFF, 0x60, 0xB0, 0x78, 0x3C, 0x37, 0xF3, | |||
| 0x01, 0x80, 0xC0, 0x60, 0x30, 0x00, 0x0C, 0x07, 0xF1, 0x82, 0x60, 0x68, | |||
| 0x05, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x58, 0x59, 0x86, 0x1F, 0xE0, 0x04, | |||
| 0xFF, 0x30, 0x6C, 0x0B, 0x02, 0xC1, 0xBF, 0xCC, 0x1B, 0x02, 0xC0, 0xB0, | |||
| 0x2C, 0x08, 0x18, 0x3F, 0x30, 0x58, 0x2C, 0x03, 0x80, 0x78, 0x06, 0x81, | |||
| 0xC0, 0xF0, 0x4F, 0xC0, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, | |||
| 0x18, 0x0C, 0x06, 0x03, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, | |||
| 0x03, 0x81, 0xC0, 0xB0, 0xCF, 0xC0, 0x40, 0xD8, 0x22, 0x08, 0x86, 0x31, | |||
| 0x04, 0x41, 0x30, 0x68, 0x0A, 0x03, 0x80, 0xC0, 0x43, 0x04, 0x87, 0x19, | |||
| 0x8A, 0x33, 0x14, 0x62, 0x6C, 0x84, 0x89, 0x0D, 0x16, 0x1E, 0x2C, 0x1C, | |||
| 0x70, 0x30, 0x60, 0x60, 0xC0, 0x60, 0x8C, 0x61, 0x30, 0x68, 0x0E, 0x03, | |||
| 0x01, 0xE0, 0x4C, 0x31, 0x18, 0x64, 0x0C, 0x60, 0xD8, 0x63, 0x18, 0x4C, | |||
| 0x1A, 0x03, 0x80, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x7F, 0x80, 0xC0, | |||
| 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x20, 0x3F, 0xE0, 0xF2, 0x49, | |||
| 0x24, 0x92, 0x49, 0xC0, 0x88, 0x44, 0x42, 0x22, 0x11, 0x10, 0xE4, 0x92, | |||
| 0x49, 0x24, 0x93, 0xC0, 0x21, 0xC5, 0x12, 0x8A, 0x30, 0xFF, 0x80, 0xC6, | |||
| 0x20, 0x7D, 0x88, 0x11, 0xEC, 0x50, 0xA1, 0x7F, 0x81, 0x02, 0x07, 0xEC, | |||
| 0x70, 0x60, 0xC1, 0x83, 0x8F, 0xF0, 0x3E, 0xC5, 0x0A, 0x0C, 0x08, 0x58, | |||
| 0x9F, 0x03, 0x03, 0x03, 0x3F, 0x63, 0x43, 0xC3, 0xC3, 0x43, 0x63, 0x3D, | |||
| 0x7D, 0x8E, 0x0F, 0xF8, 0x10, 0x31, 0xBE, 0x36, 0x6F, 0x66, 0x66, 0x66, | |||
| 0x60, 0x3F, 0x63, 0x43, 0xC3, 0xC3, 0x43, 0x63, 0x3F, 0x03, 0x42, 0x7E, | |||
| 0x81, 0x02, 0x05, 0xEC, 0x78, 0xE1, 0xC3, 0x87, 0x0E, 0x18, 0x9F, 0xE0, | |||
| 0x41, 0x55, 0x55, 0x70, 0x81, 0x02, 0x04, 0x69, 0x96, 0x3C, 0x6C, 0x89, | |||
| 0x1A, 0x18, 0xFF, 0xE0, 0xBF, 0xF8, 0xCE, 0x10, 0xC2, 0x18, 0x43, 0x08, | |||
| 0x61, 0x0C, 0x21, 0xBD, 0x8F, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x7D, 0x8A, | |||
| 0x1C, 0x18, 0x30, 0xF1, 0x3E, 0xFD, 0x8E, 0x0C, 0x18, 0x30, 0x71, 0xFE, | |||
| 0x81, 0x02, 0x00, 0x3D, 0x63, 0x43, 0xC3, 0xC3, 0x43, 0x63, 0x3F, 0x03, | |||
| 0x03, 0x03, 0xBC, 0xC8, 0x88, 0x88, 0xFA, 0x38, 0x3C, 0x1C, 0x18, 0x7E, | |||
| 0x66, 0xF6, 0x66, 0x66, 0x67, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xF1, 0xFF, | |||
| 0xC2, 0x42, 0x66, 0x64, 0x24, 0x38, 0x18, 0x18, 0xC6, 0x69, 0xCD, 0x29, | |||
| 0x35, 0x26, 0xBC, 0x73, 0x0C, 0x61, 0x8C, 0x46, 0x48, 0xE0, 0xC1, 0x85, | |||
| 0x99, 0x21, 0x42, 0x8D, 0x91, 0x22, 0xC7, 0x06, 0x0C, 0x10, 0x21, 0x80, | |||
| 0x7E, 0x08, 0x30, 0xC3, 0x04, 0x10, 0x7F, 0x69, 0x24, 0xB6, 0x49, 0x24, | |||
| 0xC0, 0xFF, 0xFC, 0xE2, 0x22, 0x22, 0x33, 0x22, 0x22, 0x2E, 0x61, 0x34, | |||
| 0x30 }; | |||
| const GFXglyph FreeSans8pt7bGlyphs[] PROGMEM = { | |||
| { 0, 1, 1, 4, 0, 0 }, // 0x20 ' ' | |||
| { 1, 1, 11, 4, 2, -10 }, // 0x21 '!' | |||
| { 3, 4, 4, 6, 1, -10 }, // 0x22 '"' | |||
| { 5, 9, 11, 9, 0, -10 }, // 0x23 '#' | |||
| { 18, 8, 14, 9, 0, -11 }, // 0x24 '$' | |||
| { 32, 13, 11, 14, 0, -10 }, // 0x25 '%' | |||
| { 50, 9, 11, 10, 1, -10 }, // 0x26 '&' | |||
| { 63, 1, 4, 3, 1, -10 }, // 0x27 ''' | |||
| { 64, 4, 14, 5, 1, -10 }, // 0x28 '(' | |||
| { 71, 3, 14, 5, 1, -10 }, // 0x29 ')' | |||
| { 77, 4, 4, 6, 1, -10 }, // 0x2A '*' | |||
| { 79, 7, 7, 9, 1, -6 }, // 0x2B '+' | |||
| { 86, 2, 4, 4, 1, -1 }, // 0x2C ',' | |||
| { 87, 3, 1, 5, 1, -4 }, // 0x2D '-' | |||
| { 88, 2, 2, 4, 1, -1 }, // 0x2E '.' | |||
| { 89, 4, 11, 4, 0, -10 }, // 0x2F '/' | |||
| { 95, 7, 11, 9, 1, -10 }, // 0x30 '0' | |||
| { 105, 3, 11, 9, 2, -10 }, // 0x31 '1' | |||
| { 110, 7, 11, 9, 1, -10 }, // 0x32 '2' | |||
| { 120, 8, 11, 9, 0, -10 }, // 0x33 '3' | |||
| { 131, 8, 11, 9, 0, -10 }, // 0x34 '4' | |||
| { 142, 7, 11, 9, 1, -10 }, // 0x35 '5' | |||
| { 152, 7, 11, 9, 1, -10 }, // 0x36 '6' | |||
| { 162, 7, 11, 9, 1, -10 }, // 0x37 '7' | |||
| { 172, 7, 11, 9, 1, -10 }, // 0x38 '8' | |||
| { 182, 7, 11, 9, 1, -10 }, // 0x39 '9' | |||
| { 192, 1, 8, 4, 2, -7 }, // 0x3A ':' | |||
| { 193, 1, 10, 4, 2, -7 }, // 0x3B ';' | |||
| { 195, 7, 7, 9, 1, -6 }, // 0x3C '<' | |||
| { 202, 7, 4, 9, 1, -5 }, // 0x3D '=' | |||
| { 206, 7, 7, 9, 1, -6 }, // 0x3E '>' | |||
| { 213, 7, 12, 9, 1, -11 }, // 0x3F '?' | |||
| { 224, 14, 14, 16, 1, -11 }, // 0x40 '@' | |||
| { 249, 10, 11, 10, 0, -10 }, // 0x41 'A' | |||
| { 263, 9, 11, 10, 1, -10 }, // 0x42 'B' | |||
| { 276, 10, 12, 11, 1, -11 }, // 0x43 'C' | |||
| { 291, 9, 11, 11, 1, -10 }, // 0x44 'D' | |||
| { 304, 9, 11, 10, 1, -10 }, // 0x45 'E' | |||
| { 317, 8, 11, 10, 1, -10 }, // 0x46 'F' | |||
| { 328, 10, 12, 12, 1, -11 }, // 0x47 'G' | |||
| { 343, 9, 11, 11, 1, -10 }, // 0x48 'H' | |||
| { 356, 1, 11, 4, 2, -10 }, // 0x49 'I' | |||
| { 358, 7, 11, 8, 0, -10 }, // 0x4A 'J' | |||
| { 368, 9, 11, 10, 1, -10 }, // 0x4B 'K' | |||
| { 381, 7, 11, 9, 1, -10 }, // 0x4C 'L' | |||
| { 391, 11, 11, 13, 1, -10 }, // 0x4D 'M' | |||
| { 407, 9, 11, 11, 1, -10 }, // 0x4E 'N' | |||
| { 420, 11, 12, 12, 1, -11 }, // 0x4F 'O' | |||
| { 437, 9, 11, 10, 1, -10 }, // 0x50 'P' | |||
| { 450, 11, 13, 12, 1, -11 }, // 0x51 'Q' | |||
| { 468, 10, 11, 11, 1, -10 }, // 0x52 'R' | |||
| { 482, 9, 12, 10, 1, -11 }, // 0x53 'S' | |||
| { 496, 9, 11, 10, 0, -10 }, // 0x54 'T' | |||
| { 509, 9, 11, 11, 1, -10 }, // 0x55 'U' | |||
| { 522, 10, 11, 10, 0, -10 }, // 0x56 'V' | |||
| { 536, 15, 11, 15, 0, -10 }, // 0x57 'W' | |||
| { 557, 10, 11, 10, 0, -10 }, // 0x58 'X' | |||
| { 571, 10, 11, 10, 0, -10 }, // 0x59 'Y' | |||
| { 585, 9, 11, 10, 0, -10 }, // 0x5A 'Z' | |||
| { 598, 3, 14, 4, 1, -10 }, // 0x5B '[' | |||
| { 604, 4, 11, 4, 0, -10 }, // 0x5C '\' | |||
| { 610, 3, 14, 4, 0, -10 }, // 0x5D ']' | |||
| { 616, 6, 6, 7, 1, -10 }, // 0x5E '^' | |||
| { 621, 9, 1, 9, 0, 3 }, // 0x5F '_' | |||
| { 623, 4, 3, 5, 0, -11 }, // 0x60 '`' | |||
| { 625, 7, 8, 9, 1, -7 }, // 0x61 'a' | |||
| { 632, 7, 11, 9, 1, -10 }, // 0x62 'b' | |||
| { 642, 7, 8, 8, 0, -7 }, // 0x63 'c' | |||
| { 649, 8, 11, 9, 0, -10 }, // 0x64 'd' | |||
| { 660, 7, 8, 9, 1, -7 }, // 0x65 'e' | |||
| { 667, 4, 11, 4, 0, -10 }, // 0x66 'f' | |||
| { 673, 8, 11, 9, 0, -7 }, // 0x67 'g' | |||
| { 684, 7, 11, 9, 1, -10 }, // 0x68 'h' | |||
| { 694, 1, 11, 3, 1, -10 }, // 0x69 'i' | |||
| { 696, 2, 14, 3, 0, -10 }, // 0x6A 'j' | |||
| { 700, 7, 11, 8, 1, -10 }, // 0x6B 'k' | |||
| { 710, 1, 11, 3, 1, -10 }, // 0x6C 'l' | |||
| { 712, 11, 8, 13, 1, -7 }, // 0x6D 'm' | |||
| { 723, 7, 8, 9, 1, -7 }, // 0x6E 'n' | |||
| { 730, 7, 8, 9, 1, -7 }, // 0x6F 'o' | |||
| { 737, 7, 11, 9, 1, -7 }, // 0x70 'p' | |||
| { 747, 8, 11, 9, 0, -7 }, // 0x71 'q' | |||
| { 758, 4, 8, 5, 1, -7 }, // 0x72 'r' | |||
| { 762, 6, 8, 8, 1, -7 }, // 0x73 's' | |||
| { 768, 4, 10, 4, 0, -9 }, // 0x74 't' | |||
| { 773, 7, 8, 9, 1, -7 }, // 0x75 'u' | |||
| { 780, 8, 8, 8, 0, -7 }, // 0x76 'v' | |||
| { 788, 11, 8, 11, 0, -7 }, // 0x77 'w' | |||
| { 799, 7, 8, 8, 0, -7 }, // 0x78 'x' | |||
| { 806, 7, 11, 8, 0, -7 }, // 0x79 'y' | |||
| { 816, 7, 8, 8, 0, -7 }, // 0x7A 'z' | |||
| { 823, 3, 14, 5, 1, -10 }, // 0x7B '{' | |||
| { 829, 1, 14, 4, 2, -10 }, // 0x7C '|' | |||
| { 831, 4, 14, 5, 0, -10 }, // 0x7D '}' | |||
| { 838, 7, 3, 9, 1, -6 } }; // 0x7E '~' | |||
| const GFXfont FreeSans8pt7b PROGMEM = { | |||
| (uint8_t *)FreeSans8pt7bBitmaps, | |||
| (GFXglyph *)FreeSans8pt7bGlyphs, | |||
| 0x20, 0x7E, 26 }; | |||
| // Approx. 1513 bytes | |||
| @@ -0,0 +1,206 @@ | |||
| const uint8_t titillium_web_regular10pt7bBitmaps[] PROGMEM = { | |||
| 0x00, 0xFF, 0x8C, 0xCE, 0x73, 0x9C, 0x80, 0x11, 0x82, 0x30, 0x46, 0x7F, | |||
| 0xFF, 0xFE, 0x23, 0x04, 0x60, 0x8C, 0xFF, 0xFF, 0xFC, 0x46, 0x08, 0xC1, | |||
| 0x18, 0x04, 0x02, 0x01, 0x0F, 0xF6, 0x46, 0x23, 0x10, 0x90, 0x78, 0x0F, | |||
| 0x82, 0xE1, 0x30, 0x98, 0x4C, 0x2D, 0xFC, 0x10, 0x08, 0x00, 0x02, 0x3C, | |||
| 0x89, 0x22, 0x50, 0x94, 0x39, 0x00, 0x80, 0x20, 0x08, 0x06, 0xE1, 0x6C, | |||
| 0x53, 0x16, 0xC8, 0xE0, 0x1E, 0x03, 0x30, 0x21, 0x82, 0x18, 0x31, 0x01, | |||
| 0x30, 0x3C, 0x0C, 0xC6, 0xC6, 0x48, 0x34, 0x81, 0xCC, 0x0E, 0xE3, 0xB7, | |||
| 0xF1, 0xFF, 0xC0, 0x36, 0x64, 0x4C, 0xCC, 0xCC, 0xCC, 0xC4, 0x66, 0x23, | |||
| 0x99, 0x26, 0xD9, 0x24, 0xB6, 0xD6, 0xD0, 0x1B, 0x47, 0x0F, 0x52, 0x41, | |||
| 0x80, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xFF, 0xFC, 0x20, 0x10, 0x08, 0x04, | |||
| 0x00, 0xFA, 0xFC, 0xF0, 0x06, 0x08, 0x30, 0x41, 0x83, 0x04, 0x18, 0x20, | |||
| 0xC1, 0x82, 0x0C, 0x10, 0x00, 0x3F, 0x31, 0xB0, 0x78, 0x18, 0x0C, 0x06, | |||
| 0x03, 0x01, 0x80, 0xE0, 0x70, 0x6C, 0x63, 0xE0, 0x1C, 0xFE, 0xE3, 0x0C, | |||
| 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0xFF, 0x01, 0x80, 0x40, 0x20, 0x10, | |||
| 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x08, 0x0F, 0xF8, 0xFF, 0x01, 0x80, | |||
| 0x60, 0x30, 0x31, 0xF0, 0xFC, 0x03, 0x01, 0x80, 0xC0, 0x70, 0x6F, 0xE0, | |||
| 0x18, 0x0C, 0x0C, 0x06, 0x02, 0x03, 0x19, 0x0D, 0x86, 0xC3, 0x7F, 0xC0, | |||
| 0xC0, 0x60, 0x30, 0x7F, 0xA0, 0x10, 0x08, 0x04, 0x03, 0xFB, 0x06, 0x03, | |||
| 0x01, 0x80, 0xC0, 0x70, 0x6F, 0xE0, 0x3F, 0xB0, 0x10, 0x18, 0x0C, 0x07, | |||
| 0xFB, 0x87, 0x83, 0xC0, 0xE0, 0x50, 0x6C, 0x73, 0xF0, 0xFF, 0x03, 0x02, | |||
| 0x06, 0x06, 0x0C, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0x60, 0x7F, 0x30, | |||
| 0x6C, 0x0B, 0x02, 0xC1, 0x9F, 0xC7, 0xF3, 0x06, 0x80, 0xA0, 0x3C, 0x0B, | |||
| 0x8E, 0x7F, 0x00, 0x7E, 0x71, 0xB0, 0x70, 0x38, 0x0E, 0x07, 0x8E, 0x7D, | |||
| 0x01, 0x80, 0xC0, 0x60, 0x6F, 0xE0, 0xFC, 0x03, 0xC0, 0x49, 0x00, 0x0A, | |||
| 0x5A, 0x00, 0x00, 0x81, 0xC3, 0x87, 0x0E, 0x07, 0x00, 0xE0, 0x1C, 0x03, | |||
| 0x80, 0x40, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x80, 0xC0, 0x70, | |||
| 0x1C, 0x07, 0x07, 0x1C, 0x70, 0xC0, 0x80, 0xFD, 0x1C, 0x18, 0x10, 0x61, | |||
| 0xC7, 0x18, 0x30, 0x40, 0x00, 0x03, 0x06, 0x00, 0x0F, 0xFC, 0x06, 0x01, | |||
| 0xC3, 0x00, 0x31, 0x80, 0x06, 0x43, 0xF8, 0xB0, 0xC6, 0x2C, 0x61, 0x8F, | |||
| 0x10, 0x63, 0xC4, 0x18, 0xF1, 0x06, 0x3C, 0x41, 0x8F, 0x18, 0x62, 0xC6, | |||
| 0x39, 0x90, 0xFB, 0xC6, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xFC, | |||
| 0x00, 0x0F, 0x01, 0x60, 0x24, 0x0C, 0xC1, 0x98, 0x21, 0x04, 0x21, 0x86, | |||
| 0x20, 0xC7, 0xF9, 0x81, 0x30, 0x34, 0x03, 0x80, 0x40, 0xFE, 0x7F, 0xA0, | |||
| 0x70, 0x38, 0x1C, 0x0F, 0xFD, 0xFE, 0x81, 0xC0, 0x60, 0x30, 0x38, 0x3F, | |||
| 0xF8, 0x3F, 0xB8, 0x58, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, | |||
| 0x30, 0x08, 0x07, 0x09, 0xFC, 0xFE, 0x3F, 0xC8, 0x1A, 0x02, 0x80, 0xE0, | |||
| 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0A, 0x06, 0x83, 0x3F, 0x80, 0xFF, | |||
| 0xFF, 0x80, 0x80, 0x80, 0x80, 0xFE, 0xFE, 0x80, 0x80, 0x80, 0x80, 0x80, | |||
| 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFE, 0x80, 0x80, 0x80, | |||
| 0x80, 0x80, 0x80, 0x1F, 0xDC, 0x36, 0x01, 0x00, 0xC0, 0x30, 0x0C, 0x03, | |||
| 0x0F, 0xC0, 0xF0, 0x3C, 0x0D, 0x83, 0x70, 0xCF, 0xF0, 0x80, 0xE0, 0x38, | |||
| 0x0E, 0x03, 0x80, 0xE0, 0x3F, 0xFF, 0xFF, 0x80, 0xE0, 0x38, 0x0E, 0x03, | |||
| 0x80, 0xE0, 0x30, 0xFF, 0xFC, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x13, | |||
| 0xF0, 0x81, 0xC1, 0xA0, 0x90, 0xC8, 0x44, 0x62, 0x21, 0xF0, 0x8C, 0x42, | |||
| 0x21, 0x90, 0x68, 0x34, 0x0C, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, | |||
| 0x81, 0x02, 0x04, 0x08, 0x1F, 0xC0, 0xE0, 0x3F, 0x01, 0xE8, 0x0B, 0x60, | |||
| 0xDB, 0x04, 0xC8, 0x26, 0x63, 0x33, 0x11, 0x88, 0x8C, 0x6C, 0x61, 0x43, | |||
| 0x0A, 0x18, 0x70, 0xC1, 0x04, 0xE0, 0xF8, 0x3B, 0x0E, 0xC3, 0x90, 0xE6, | |||
| 0x38, 0x8E, 0x33, 0x84, 0xE1, 0xB8, 0x6E, 0x0B, 0x83, 0xE0, 0x70, 0x1F, | |||
| 0x06, 0x39, 0x81, 0x20, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, | |||
| 0x0F, 0x01, 0xB0, 0x27, 0x0C, 0x7F, 0x00, 0xFE, 0x7F, 0xA0, 0x70, 0x38, | |||
| 0x0C, 0x06, 0x07, 0x07, 0xFF, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x1F, | |||
| 0x06, 0x39, 0x81, 0x20, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, | |||
| 0x0F, 0x01, 0xB0, 0x27, 0x0C, 0x7F, 0x00, 0x20, 0x06, 0x00, 0x40, 0xFE, | |||
| 0x7F, 0xA0, 0x70, 0x18, 0x0C, 0x06, 0x07, 0xFE, 0xFE, 0x41, 0x20, 0xD0, | |||
| 0x68, 0x1C, 0x0C, 0x3F, 0xB0, 0xB0, 0x18, 0x0C, 0x07, 0x01, 0xF0, 0x1E, | |||
| 0x01, 0x80, 0xC0, 0x60, 0x38, 0x37, 0xF0, 0xFF, 0xFF, 0xF0, 0x40, 0x10, | |||
| 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, | |||
| 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, | |||
| 0x60, 0x30, 0x3E, 0x3B, 0xF8, 0xC0, 0x68, 0x0D, 0x81, 0xB0, 0x22, 0x0C, | |||
| 0x41, 0x8C, 0x31, 0x84, 0x11, 0x82, 0x30, 0x64, 0x0C, 0x80, 0xB0, 0x1E, | |||
| 0x00, 0x81, 0x83, 0x81, 0x83, 0xC3, 0x83, 0xC3, 0x82, 0xC2, 0xC2, 0x42, | |||
| 0x42, 0x42, 0x46, 0x66, 0x46, 0x64, 0x64, 0x24, 0x64, 0x24, 0x24, 0x2C, | |||
| 0x2C, 0x3C, 0x3C, 0x38, 0x38, 0xC0, 0x6C, 0x18, 0xC2, 0x18, 0xC1, 0x90, | |||
| 0x16, 0x03, 0x80, 0x70, 0x0A, 0x03, 0x60, 0x46, 0x18, 0x46, 0x0D, 0x80, | |||
| 0xC0, 0xC0, 0x6C, 0x19, 0x82, 0x18, 0xC1, 0x10, 0x36, 0x03, 0x80, 0x70, | |||
| 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x00, 0xFF, 0xFF, 0xC0, | |||
| 0x40, 0x60, 0x60, 0x20, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0C, 0x07, | |||
| 0xFC, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xF0, 0x81, 0x81, | |||
| 0x03, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0x60, 0xC0, 0xF3, | |||
| 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xF0, 0x1C, 0x0A, 0x0D, 0x84, | |||
| 0x46, 0x32, 0x0B, 0x06, 0xFF, 0x80, 0x87, 0x06, 0xFE, 0x03, 0x00, 0x80, | |||
| 0x67, 0xF6, 0x1A, 0x0D, 0x06, 0xC3, 0x3F, 0xC0, 0xC0, 0x60, 0x30, 0x18, | |||
| 0x0F, 0xE7, 0x1B, 0x05, 0x82, 0xC1, 0xE0, 0xB0, 0x58, 0x2C, 0x37, 0xF0, | |||
| 0x7E, 0xC3, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x60, 0xFC, 0x01, 0x01, 0x01, | |||
| 0x01, 0x3F, 0x61, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x63, 0x7D, 0x3E, | |||
| 0x63, 0xC3, 0xC1, 0xFF, 0xFF, 0xC0, 0xC0, 0x60, 0x7F, 0x11, 0xF6, 0x10, | |||
| 0x43, 0xE4, 0x10, 0x41, 0x04, 0x10, 0x41, 0x04, 0x00, 0x7F, 0xE1, 0x30, | |||
| 0xD8, 0x6C, 0x33, 0xF0, 0xE0, 0x80, 0x60, 0x3F, 0xB0, 0x70, 0x3C, 0x1F, | |||
| 0xF8, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xE3, 0xC1, 0xC1, 0xC1, 0xC1, | |||
| 0xC1, 0xC1, 0xC1, 0xC1, 0xF0, 0xFF, 0xFF, 0xF0, 0x33, 0x00, 0x33, 0x33, | |||
| 0x33, 0x33, 0x33, 0x33, 0x6C, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0xC6, 0xC4, | |||
| 0xCC, 0xF8, 0xC8, 0xCC, 0xC6, 0xC2, 0xC3, 0xFF, 0xFC, 0xFE, 0xFB, 0x8E, | |||
| 0x3C, 0x10, 0x70, 0x41, 0xC1, 0x07, 0x04, 0x1C, 0x10, 0x70, 0x41, 0xC1, | |||
| 0x07, 0x04, 0x10, 0xFE, 0xE3, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, | |||
| 0xC1, 0x3E, 0x31, 0xB0, 0x58, 0x2C, 0x1E, 0x0F, 0x05, 0x82, 0x63, 0x3F, | |||
| 0x00, 0xFE, 0x71, 0xB0, 0x58, 0x2C, 0x1E, 0x0F, 0x05, 0x82, 0xC3, 0x7F, | |||
| 0x30, 0x18, 0x0C, 0x06, 0x00, 0x3F, 0x61, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, | |||
| 0xC1, 0x63, 0x7F, 0x01, 0x01, 0x01, 0x01, 0xDF, 0xEC, 0x30, 0xC3, 0x0C, | |||
| 0x30, 0xC3, 0x00, 0x7F, 0x82, 0x06, 0x0F, 0x83, 0xC0, 0x81, 0x07, 0xF8, | |||
| 0x41, 0x04, 0x3F, 0x41, 0x04, 0x10, 0x41, 0x06, 0x18, 0x3C, 0xC1, 0xC1, | |||
| 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x63, 0x7D, 0xC1, 0xA0, 0xD8, 0x4C, | |||
| 0x22, 0x31, 0x98, 0xC8, 0x24, 0x16, 0x0E, 0x00, 0x82, 0x0E, 0x1C, 0x2C, | |||
| 0x70, 0xB1, 0x46, 0x45, 0x99, 0x32, 0x46, 0x89, 0x1A, 0x2C, 0x28, 0xF0, | |||
| 0xE1, 0x80, 0xC1, 0xB1, 0x8D, 0x82, 0x81, 0xC0, 0xE0, 0x50, 0x6C, 0x63, | |||
| 0x60, 0xC0, 0xC0, 0xA0, 0xD8, 0x4C, 0x22, 0x31, 0x98, 0xC8, 0x24, 0x16, | |||
| 0x0E, 0x01, 0x01, 0x80, 0xC0, 0x40, 0xFE, 0x0C, 0x10, 0x61, 0x86, 0x18, | |||
| 0x30, 0xC1, 0xFC, 0x0C, 0x61, 0x0C, 0x10, 0x41, 0x0C, 0xE1, 0x83, 0x04, | |||
| 0x10, 0x43, 0x04, 0x1C, 0x10, 0xFF, 0xFF, 0xC0, 0xC1, 0x83, 0x0C, 0x30, | |||
| 0x82, 0x0C, 0x1C, 0x63, 0x08, 0x20, 0xC3, 0x08, 0xE2, 0x00, 0x20, 0x7E, | |||
| 0x61, 0xC0 }; | |||
| const GFXglyph titillium_web_regular10pt7bGlyphs[] PROGMEM = { | |||
| { 0, 1, 1, 4, 0, 0 }, // 0x20 ' ' | |||
| { 1, 1, 14, 5, 2, -13 }, // 0x21 '!' | |||
| { 3, 5, 5, 7, 1, -13 }, // 0x22 '"' | |||
| { 7, 11, 13, 11, 0, -12 }, // 0x23 '#' | |||
| { 25, 9, 18, 11, 1, -15 }, // 0x24 '$' | |||
| { 46, 10, 14, 11, 1, -13 }, // 0x25 '%' | |||
| { 64, 12, 14, 14, 1, -13 }, // 0x26 '&' | |||
| { 85, 2, 5, 4, 1, -13 }, // 0x27 ''' | |||
| { 87, 4, 18, 5, 1, -14 }, // 0x28 '(' | |||
| { 96, 3, 18, 5, 1, -14 }, // 0x29 ')' | |||
| { 103, 6, 7, 8, 1, -13 }, // 0x2A '*' | |||
| { 109, 9, 10, 11, 1, -9 }, // 0x2B '+' | |||
| { 121, 2, 4, 4, 1, -1 }, // 0x2C ',' | |||
| { 122, 6, 1, 9, 1, -5 }, // 0x2D '-' | |||
| { 123, 2, 2, 4, 1, -1 }, // 0x2E '.' | |||
| { 124, 7, 14, 8, 1, -13 }, // 0x2F '/' | |||
| { 137, 9, 13, 11, 1, -12 }, // 0x30 '0' | |||
| { 152, 6, 13, 11, 2, -12 }, // 0x31 '1' | |||
| { 162, 9, 13, 11, 1, -12 }, // 0x32 '2' | |||
| { 177, 9, 13, 11, 1, -12 }, // 0x33 '3' | |||
| { 192, 9, 13, 11, 1, -12 }, // 0x34 '4' | |||
| { 207, 9, 13, 11, 1, -12 }, // 0x35 '5' | |||
| { 222, 9, 13, 11, 1, -12 }, // 0x36 '6' | |||
| { 237, 8, 13, 11, 2, -12 }, // 0x37 '7' | |||
| { 250, 10, 13, 11, 1, -12 }, // 0x38 '8' | |||
| { 267, 9, 13, 11, 1, -12 }, // 0x39 '9' | |||
| { 282, 2, 9, 4, 1, -8 }, // 0x3A ':' | |||
| { 285, 3, 11, 5, 1, -8 }, // 0x3B ';' | |||
| { 290, 9, 10, 11, 1, -9 }, // 0x3C '<' | |||
| { 302, 9, 6, 11, 1, -7 }, // 0x3D '=' | |||
| { 309, 8, 10, 11, 2, -9 }, // 0x3E '>' | |||
| { 319, 7, 14, 9, 1, -13 }, // 0x3F '?' | |||
| { 332, 18, 18, 20, 1, -13 }, // 0x40 '@' | |||
| { 373, 11, 14, 12, 0, -13 }, // 0x41 'A' | |||
| { 393, 9, 14, 12, 2, -13 }, // 0x42 'B' | |||
| { 409, 9, 14, 11, 1, -13 }, // 0x43 'C' | |||
| { 425, 10, 14, 13, 2, -13 }, // 0x44 'D' | |||
| { 443, 8, 14, 11, 2, -13 }, // 0x45 'E' | |||
| { 457, 8, 14, 11, 2, -13 }, // 0x46 'F' | |||
| { 471, 10, 14, 12, 1, -13 }, // 0x47 'G' | |||
| { 489, 10, 14, 14, 2, -13 }, // 0x48 'H' | |||
| { 507, 1, 14, 5, 2, -13 }, // 0x49 'I' | |||
| { 509, 4, 15, 6, 0, -13 }, // 0x4A 'J' | |||
| { 517, 9, 14, 11, 2, -13 }, // 0x4B 'K' | |||
| { 533, 7, 14, 10, 2, -13 }, // 0x4C 'L' | |||
| { 546, 13, 14, 17, 2, -13 }, // 0x4D 'M' | |||
| { 569, 10, 14, 14, 2, -13 }, // 0x4E 'N' | |||
| { 587, 11, 14, 13, 1, -13 }, // 0x4F 'O' | |||
| { 607, 9, 14, 12, 2, -13 }, // 0x50 'P' | |||
| { 623, 11, 17, 13, 1, -13 }, // 0x51 'Q' | |||
| { 647, 9, 14, 12, 2, -13 }, // 0x52 'R' | |||
| { 663, 9, 14, 11, 1, -13 }, // 0x53 'S' | |||
| { 679, 10, 14, 11, 0, -13 }, // 0x54 'T' | |||
| { 697, 9, 14, 13, 2, -13 }, // 0x55 'U' | |||
| { 713, 11, 14, 12, 0, -13 }, // 0x56 'V' | |||
| { 733, 16, 14, 18, 1, -13 }, // 0x57 'W' | |||
| { 761, 11, 14, 11, 0, -13 }, // 0x58 'X' | |||
| { 781, 11, 14, 11, 0, -13 }, // 0x59 'Y' | |||
| { 801, 9, 14, 11, 1, -13 }, // 0x5A 'Z' | |||
| { 817, 4, 17, 7, 2, -14 }, // 0x5B '[' | |||
| { 826, 7, 14, 9, 1, -13 }, // 0x5C '\' | |||
| { 839, 4, 17, 7, 1, -14 }, // 0x5D ']' | |||
| { 848, 9, 7, 11, 1, -12 }, // 0x5E '^' | |||
| { 856, 9, 1, 13, 2, 3 }, // 0x5F '_' | |||
| { 858, 5, 3, 5, 0, -14 }, // 0x60 '`' | |||
| { 860, 9, 10, 10, 1, -9 }, // 0x61 'a' | |||
| { 872, 9, 14, 11, 1, -13 }, // 0x62 'b' | |||
| { 888, 7, 10, 9, 1, -9 }, // 0x63 'c' | |||
| { 897, 8, 14, 11, 1, -13 }, // 0x64 'd' | |||
| { 911, 8, 10, 10, 1, -9 }, // 0x65 'e' | |||
| { 921, 6, 15, 7, 1, -14 }, // 0x66 'f' | |||
| { 933, 9, 15, 10, 1, -9 }, // 0x67 'g' | |||
| { 950, 8, 14, 11, 1, -13 }, // 0x68 'h' | |||
| { 964, 2, 14, 4, 1, -13 }, // 0x69 'i' | |||
| { 968, 4, 18, 4, -1, -13 }, // 0x6A 'j' | |||
| { 977, 8, 14, 10, 1, -13 }, // 0x6B 'k' | |||
| { 991, 1, 14, 5, 2, -13 }, // 0x6C 'l' | |||
| { 993, 14, 10, 17, 1, -9 }, // 0x6D 'm' | |||
| { 1011, 8, 10, 11, 1, -9 }, // 0x6E 'n' | |||
| { 1021, 9, 10, 11, 1, -9 }, // 0x6F 'o' | |||
| { 1033, 9, 14, 11, 1, -9 }, // 0x70 'p' | |||
| { 1049, 8, 14, 11, 1, -9 }, // 0x71 'q' | |||
| { 1063, 6, 10, 7, 1, -9 }, // 0x72 'r' | |||
| { 1071, 7, 10, 9, 1, -9 }, // 0x73 's' | |||
| { 1080, 6, 13, 7, 1, -12 }, // 0x74 't' | |||
| { 1090, 8, 10, 11, 1, -9 }, // 0x75 'u' | |||
| { 1100, 9, 10, 10, 0, -9 }, // 0x76 'v' | |||
| { 1112, 14, 10, 15, 1, -9 }, // 0x77 'w' | |||
| { 1130, 9, 10, 9, 0, -9 }, // 0x78 'x' | |||
| { 1142, 9, 14, 10, 0, -9 }, // 0x79 'y' | |||
| { 1158, 7, 10, 9, 1, -9 }, // 0x7A 'z' | |||
| { 1167, 6, 18, 7, 0, -14 }, // 0x7B '{' | |||
| { 1181, 1, 18, 5, 2, -13 }, // 0x7C '|' | |||
| { 1184, 6, 18, 7, 1, -14 }, // 0x7D '}' | |||
| { 1198, 9, 3, 11, 1, -6 } }; // 0x7E '~' | |||
| const GFXfont titillium_web_regular10pt7b PROGMEM = { | |||
| (uint8_t *)titillium_web_regular10pt7bBitmaps, | |||
| (GFXglyph *)titillium_web_regular10pt7bGlyphs, | |||
| 0x20, 0x7E, 30 }; | |||
| // Approx. 1874 bytes | |||
| @@ -0,0 +1,211 @@ | |||
| const uint8_t titillium_web_semibold10pt7bBitmaps[] PROGMEM = { | |||
| 0x00, 0xED, 0xB6, 0xDB, 0x60, 0x7F, 0xC0, 0xCF, 0x3C, 0xF3, 0xCC, 0x31, | |||
| 0x86, 0x30, 0xC6, 0x7F, 0xFF, 0xFE, 0x63, 0x0C, 0x61, 0x8C, 0xFF, 0xFF, | |||
| 0xFC, 0xC6, 0x18, 0xC3, 0x18, 0x06, 0x02, 0x01, 0x0F, 0xF7, 0x7E, 0x23, | |||
| 0x31, 0xD8, 0x7C, 0x1F, 0x83, 0xE1, 0x30, 0x98, 0x4F, 0xFD, 0xFC, 0x10, | |||
| 0x08, 0x04, 0x00, 0x01, 0x0F, 0x23, 0x6C, 0x6D, 0x85, 0xA0, 0xE4, 0x01, | |||
| 0x80, 0x20, 0x04, 0x81, 0xB8, 0x2D, 0x85, 0xB1, 0xB6, 0x23, 0x84, 0x00, | |||
| 0x1F, 0x01, 0xFC, 0x1C, 0x60, 0xE3, 0x03, 0x18, 0x1F, 0x80, 0xF9, 0x1D, | |||
| 0xCC, 0xC7, 0x66, 0x1F, 0x30, 0x71, 0x83, 0xCF, 0xFF, 0xBF, 0x88, 0xFF, | |||
| 0xC0, 0x37, 0x66, 0xEE, 0xCC, 0xCC, 0xCC, 0xE6, 0x66, 0x33, 0xCC, 0xE6, | |||
| 0x67, 0x77, 0x33, 0x77, 0x76, 0x6E, 0xCC, 0x19, 0xA1, 0xC1, 0xFF, 0x13, | |||
| 0x04, 0x00, 0x0C, 0x06, 0x03, 0x01, 0x8F, 0xFF, 0xFC, 0x30, 0x18, 0x0C, | |||
| 0x06, 0x00, 0xFB, 0x60, 0xFF, 0xF0, 0xFF, 0x80, 0x06, 0x0C, 0x30, 0x61, | |||
| 0xC3, 0x06, 0x18, 0x30, 0xE1, 0x83, 0x0C, 0x18, 0x10, 0x00, 0x3F, 0x1F, | |||
| 0xEE, 0x1B, 0x06, 0xC1, 0xB0, 0x7C, 0x1F, 0x07, 0xC1, 0xB0, 0x6E, 0x39, | |||
| 0xFC, 0x3E, 0x00, 0x1C, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, | |||
| 0x0C, 0xFF, 0x3F, 0x80, 0xE0, 0x70, 0x30, 0x18, 0x18, 0x1C, 0x1C, 0x18, | |||
| 0x18, 0x1F, 0xFF, 0xF8, 0xFF, 0x7F, 0x80, 0xE0, 0x70, 0x31, 0xF8, 0xFC, | |||
| 0x07, 0x01, 0x80, 0xC0, 0xFF, 0xEF, 0xE0, 0x1C, 0x0C, 0x0E, 0x06, 0x07, | |||
| 0x03, 0x19, 0x8D, 0xC6, 0xC3, 0x7F, 0xFF, 0xE0, 0x60, 0x30, 0x7F, 0xBF, | |||
| 0xD0, 0x08, 0x04, 0x07, 0xFB, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xFF, 0xEF, | |||
| 0xE0, 0x3F, 0xBF, 0xF8, 0x18, 0x0C, 0x07, 0xFB, 0xFF, 0x83, 0xC1, 0xE0, | |||
| 0xD8, 0x6F, 0xF3, 0xF0, 0xFF, 0xFF, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x18, | |||
| 0x18, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x00, 0x7F, 0x3F, 0xEC, 0x1B, 0x06, | |||
| 0xE1, 0x9F, 0xE7, 0xF3, 0x8E, 0xC1, 0xB0, 0x7C, 0x1B, 0xFE, 0x7F, 0x00, | |||
| 0x7E, 0x7F, 0xB0, 0xF8, 0x3C, 0x1E, 0x0F, 0xFE, 0xFF, 0x01, 0x80, 0xC0, | |||
| 0xFF, 0xEF, 0xE0, 0xFF, 0x80, 0x3F, 0xE0, 0x6D, 0x80, 0x07, 0xDB, 0x00, | |||
| 0x01, 0x03, 0x0F, 0x3C, 0xF0, 0xF0, 0x3C, 0x0F, 0x03, 0x01, 0xFF, 0xFF, | |||
| 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x80, 0xC0, 0xF8, 0x3E, 0x07, 0x0F, 0x3E, | |||
| 0xF8, 0xC0, 0x80, 0xFD, 0xFC, 0x38, 0x30, 0x61, 0xC7, 0x1C, 0x30, 0x60, | |||
| 0x01, 0x83, 0x06, 0x00, 0x00, 0xC0, 0x03, 0xFF, 0x01, 0xE1, 0xF0, 0xE0, | |||
| 0x0C, 0x70, 0x01, 0x98, 0xFE, 0x6E, 0x7F, 0x9F, 0x18, 0x63, 0xC6, 0x18, | |||
| 0xF1, 0x86, 0x3C, 0x61, 0x8F, 0x18, 0x67, 0xC6, 0x19, 0xB9, 0xFF, 0xE6, | |||
| 0x3C, 0xF1, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0x00, 0x0F, | |||
| 0x01, 0xF8, 0x19, 0x81, 0x98, 0x19, 0x83, 0x98, 0x30, 0xC3, 0x0C, 0x30, | |||
| 0xC3, 0xFC, 0x7F, 0xE6, 0x06, 0x60, 0x6E, 0x07, 0xFE, 0x7F, 0xB0, 0xF8, | |||
| 0x3C, 0x1E, 0x1F, 0xFD, 0xFE, 0xC3, 0xE0, 0xF0, 0x78, 0x3F, 0xFF, 0xF8, | |||
| 0x1F, 0xBF, 0xDC, 0x1C, 0x0E, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x38, | |||
| 0x0C, 0x07, 0xF9, 0xFC, 0xFC, 0x3F, 0xCC, 0x3B, 0x06, 0xC1, 0xF0, 0x7C, | |||
| 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1B, 0x0E, 0xFF, 0x3F, 0x80, 0xFF, 0xFF, | |||
| 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, | |||
| 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, | |||
| 0xC0, 0xC0, 0x1F, 0x9F, 0xF7, 0x03, 0x80, 0xE0, 0x30, 0x0C, 0x03, 0x0F, | |||
| 0xC3, 0xF0, 0x3E, 0x0D, 0x83, 0x7F, 0xCF, 0xF0, 0xC0, 0xF0, 0x3C, 0x0F, | |||
| 0x03, 0xC0, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, | |||
| 0xF0, 0x30, 0xFF, 0xFF, 0xFF, 0xF0, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, | |||
| 0x3F, 0xF0, 0xC1, 0xE1, 0xF0, 0xD8, 0xEC, 0x66, 0x73, 0xF1, 0xF8, 0xCC, | |||
| 0x67, 0x31, 0xD8, 0xEC, 0x3E, 0x1C, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, | |||
| 0x60, 0xC1, 0x83, 0x06, 0x0F, 0xFF, 0xC0, 0xE0, 0x3F, 0x83, 0xFC, 0x1F, | |||
| 0xE0, 0xFD, 0x8D, 0xEC, 0x6F, 0x63, 0x79, 0x13, 0xCD, 0x9E, 0x6C, 0xF3, | |||
| 0x67, 0x8E, 0x3C, 0x71, 0xE0, 0x0C, 0xF0, 0xFC, 0x3F, 0x0F, 0x63, 0xD8, | |||
| 0xF6, 0x3C, 0xCF, 0x33, 0xCC, 0xF1, 0xBC, 0x6F, 0x1B, 0xC3, 0xF0, 0xF0, | |||
| 0x1F, 0x07, 0xF9, 0xC7, 0x70, 0x7E, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, | |||
| 0x78, 0x0F, 0x83, 0xB0, 0x67, 0xFC, 0x7F, 0x00, 0xFC, 0x7F, 0xB0, 0xF8, | |||
| 0x3C, 0x1E, 0x0F, 0x07, 0x87, 0xFF, 0x7E, 0x30, 0x18, 0x0C, 0x06, 0x00, | |||
| 0x1F, 0x07, 0xF9, 0xC7, 0x70, 0x7E, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, | |||
| 0x78, 0x0F, 0x83, 0xB0, 0x67, 0xFC, 0x7F, 0x00, 0x70, 0x07, 0x00, 0xC0, | |||
| 0xFE, 0x7F, 0xB0, 0xF8, 0x3C, 0x1E, 0x0F, 0x07, 0xFF, 0xFE, 0x63, 0xB0, | |||
| 0xD8, 0x6C, 0x3E, 0x0C, 0x3F, 0x3F, 0xF8, 0x18, 0x0C, 0x07, 0x81, 0xF8, | |||
| 0x7E, 0x03, 0x80, 0xC0, 0x60, 0x7F, 0xF7, 0xF0, 0xFF, 0xFF, 0xF0, 0xC0, | |||
| 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, | |||
| 0x03, 0x00, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, | |||
| 0x07, 0xE0, 0xFC, 0x1D, 0x83, 0x30, 0x67, 0xFC, 0x7F, 0x00, 0xE0, 0x6C, | |||
| 0x0D, 0x81, 0xB0, 0x77, 0x0C, 0x61, 0x8C, 0x31, 0x8E, 0x39, 0x83, 0x30, | |||
| 0x66, 0x0C, 0xC1, 0xF0, 0x1E, 0x00, 0xE0, 0xC1, 0xD8, 0x38, 0x66, 0x1E, | |||
| 0x19, 0x87, 0x86, 0x71, 0xE1, 0x9C, 0x6C, 0x63, 0x33, 0x38, 0xCC, 0xCC, | |||
| 0x33, 0x33, 0x0C, 0xCC, 0xC3, 0xB1, 0xB0, 0x78, 0x6C, 0x1E, 0x1E, 0x07, | |||
| 0x87, 0x80, 0xE0, 0x6C, 0x18, 0xC7, 0x1C, 0xC1, 0xB8, 0x3E, 0x03, 0x80, | |||
| 0x70, 0x0F, 0x03, 0x60, 0xE6, 0x18, 0xE6, 0x0D, 0xC1, 0xC0, 0xE0, 0xEC, | |||
| 0x19, 0xC7, 0x18, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, 0x01, 0xC0, | |||
| 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x00, 0xFF, 0xFF, 0xC0, 0xE0, 0x60, 0x60, | |||
| 0x70, 0x30, 0x30, 0x38, 0x38, 0x18, 0x1C, 0x0F, 0xFF, 0xFC, 0xFF, 0xF9, | |||
| 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xF8, 0xC0, 0xC0, 0xE0, | |||
| 0x60, 0x70, 0x30, 0x38, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x07, 0x04, | |||
| 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xF0, 0x1C, 0x0E, 0x0D, | |||
| 0x8E, 0xC6, 0x37, 0x1F, 0x06, 0xFF, 0x80, 0xC7, 0x8E, 0xFE, 0x7F, 0x00, | |||
| 0xC0, 0x67, 0xF7, 0x9B, 0x0D, 0x86, 0xFF, 0x3F, 0xC0, 0xC0, 0x60, 0x30, | |||
| 0x18, 0x0F, 0xF7, 0xFB, 0x0F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x7F, 0xF7, | |||
| 0xF0, 0x7E, 0xFF, 0x86, 0x0C, 0x18, 0x30, 0x70, 0xFE, 0xFC, 0x03, 0x03, | |||
| 0x03, 0x03, 0x7F, 0x7F, 0xE3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0x7F, | |||
| 0x3E, 0x7F, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0xC0, 0xFF, 0x7F, 0x7D, 0xF6, | |||
| 0x18, 0xFF, 0xF6, 0x18, 0x61, 0x86, 0x18, 0x61, 0x80, 0x7F, 0xFF, 0xF0, | |||
| 0xD8, 0x6C, 0x33, 0xF1, 0xF0, 0xC0, 0x7E, 0x3F, 0xF0, 0xF8, 0x3C, 0x3F, | |||
| 0xF8, 0xF0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0xF7, 0xFB, 0x8F, 0xC7, 0xE1, | |||
| 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0C, 0xFC, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, | |||
| 0x39, 0xC0, 0x03, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xC6, 0x77, 0x10, | |||
| 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x3F, 0x3B, 0x99, 0xD8, 0xFC, 0x7E, 0x3B, | |||
| 0x9C, 0xCE, 0x77, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xDE, 0xF9, | |||
| 0xFF, 0xFB, 0x8C, 0x37, 0x1C, 0x6E, 0x38, 0xFC, 0x71, 0xF8, 0xE3, 0xF1, | |||
| 0xC7, 0xE3, 0x8F, 0xC7, 0x1C, 0xDF, 0x7F, 0xB8, 0xFC, 0x7E, 0x1F, 0x0F, | |||
| 0x87, 0xC3, 0xE1, 0xF0, 0xC0, 0x7E, 0x3F, 0xB0, 0xD8, 0x7C, 0x1E, 0x0F, | |||
| 0x0F, 0x86, 0x7F, 0x3F, 0x00, 0xDE, 0x7F, 0xB8, 0xFC, 0x3E, 0x1F, 0x0F, | |||
| 0x87, 0xC7, 0xFF, 0x7F, 0x38, 0x1C, 0x0E, 0x07, 0x00, 0x7F, 0x7F, 0xE3, | |||
| 0xC3, 0xC3, 0xC3, 0xC3, 0xE3, 0xFF, 0x7F, 0x03, 0x03, 0x03, 0x03, 0xCF, | |||
| 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x80, 0x7E, 0xFE, 0xC0, 0xC0, 0xFC, | |||
| 0x3E, 0x07, 0x07, 0xFE, 0xFE, 0x30, 0x60, 0xC7, 0xFF, 0xE6, 0x0C, 0x18, | |||
| 0x30, 0x60, 0xC1, 0xF3, 0xE0, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, | |||
| 0x0F, 0xC7, 0x7F, 0xBF, 0xC0, 0xE1, 0xB0, 0xD8, 0x6C, 0x73, 0x31, 0x98, | |||
| 0xCC, 0x6C, 0x1E, 0x0F, 0x00, 0xC7, 0x0F, 0x1C, 0x6C, 0x71, 0xB1, 0xE6, | |||
| 0xE5, 0x99, 0xB6, 0x66, 0xDB, 0x1B, 0x3C, 0x78, 0xF0, 0xE3, 0xC0, 0xE3, | |||
| 0xB9, 0x8D, 0x87, 0xC1, 0xC0, 0xE0, 0xF8, 0x6C, 0x73, 0x71, 0xC0, 0xE1, | |||
| 0xB0, 0xD8, 0x6C, 0x73, 0x31, 0x98, 0xCC, 0x6C, 0x1E, 0x0F, 0x01, 0x81, | |||
| 0x80, 0xC0, 0x60, 0xFF, 0xFC, 0x38, 0xE1, 0x86, 0x1C, 0x70, 0xFF, 0xFC, | |||
| 0x0C, 0x73, 0x8E, 0x18, 0x63, 0x8C, 0xE3, 0xC3, 0x86, 0x18, 0xE3, 0x86, | |||
| 0x1C, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE3, 0x87, 0x0C, | |||
| 0x31, 0xC7, 0x0E, 0x1C, 0xF3, 0x1C, 0x70, 0xC3, 0x1C, 0xE2, 0x00, 0x20, | |||
| 0x7F, 0xF7, 0xE0 }; | |||
| const GFXglyph titillium_web_semibold10pt7bGlyphs[] PROGMEM = { | |||
| { 0, 1, 1, 4, 0, 0 }, // 0x20 ' ' | |||
| { 1, 3, 14, 5, 1, -13 }, // 0x21 '!' | |||
| { 7, 6, 5, 8, 1, -13 }, // 0x22 '"' | |||
| { 11, 11, 13, 11, 0, -12 }, // 0x23 '#' | |||
| { 29, 9, 19, 11, 1, -15 }, // 0x24 '$' | |||
| { 51, 11, 15, 11, 0, -13 }, // 0x25 '%' | |||
| { 72, 13, 14, 14, 1, -13 }, // 0x26 '&' | |||
| { 95, 2, 5, 5, 1, -13 }, // 0x27 ''' | |||
| { 97, 4, 18, 6, 1, -14 }, // 0x28 '(' | |||
| { 106, 4, 18, 6, 1, -14 }, // 0x29 ')' | |||
| { 115, 7, 7, 8, 1, -13 }, // 0x2A '*' | |||
| { 122, 9, 10, 11, 1, -9 }, // 0x2B '+' | |||
| { 134, 3, 4, 5, 1, -1 }, // 0x2C ',' | |||
| { 136, 6, 2, 8, 1, -5 }, // 0x2D '-' | |||
| { 138, 3, 3, 5, 1, -2 }, // 0x2E '.' | |||
| { 140, 7, 15, 9, 1, -13 }, // 0x2F '/' | |||
| { 154, 10, 13, 11, 1, -12 }, // 0x30 '0' | |||
| { 171, 6, 13, 11, 2, -12 }, // 0x31 '1' | |||
| { 181, 9, 13, 11, 1, -12 }, // 0x32 '2' | |||
| { 196, 9, 13, 11, 1, -12 }, // 0x33 '3' | |||
| { 211, 9, 13, 11, 1, -12 }, // 0x34 '4' | |||
| { 226, 9, 13, 11, 1, -12 }, // 0x35 '5' | |||
| { 241, 9, 13, 11, 1, -12 }, // 0x36 '6' | |||
| { 256, 9, 13, 11, 1, -12 }, // 0x37 '7' | |||
| { 271, 10, 13, 11, 1, -12 }, // 0x38 '8' | |||
| { 288, 9, 13, 11, 1, -12 }, // 0x39 '9' | |||
| { 303, 3, 9, 5, 1, -8 }, // 0x3A ':' | |||
| { 307, 3, 11, 5, 1, -8 }, // 0x3B ';' | |||
| { 312, 8, 10, 11, 1, -9 }, // 0x3C '<' | |||
| { 322, 9, 6, 11, 1, -7 }, // 0x3D '=' | |||
| { 329, 8, 10, 11, 2, -9 }, // 0x3E '>' | |||
| { 339, 7, 14, 9, 1, -13 }, // 0x3F '?' | |||
| { 352, 18, 19, 20, 1, -14 }, // 0x40 '@' | |||
| { 395, 12, 14, 12, 0, -13 }, // 0x41 'A' | |||
| { 416, 9, 14, 12, 2, -13 }, // 0x42 'B' | |||
| { 432, 9, 14, 11, 1, -13 }, // 0x43 'C' | |||
| { 448, 10, 14, 13, 2, -13 }, // 0x44 'D' | |||
| { 466, 8, 14, 11, 2, -13 }, // 0x45 'E' | |||
| { 480, 8, 14, 11, 2, -13 }, // 0x46 'F' | |||
| { 494, 10, 14, 12, 1, -13 }, // 0x47 'G' | |||
| { 512, 10, 14, 14, 2, -13 }, // 0x48 'H' | |||
| { 530, 2, 14, 5, 2, -13 }, // 0x49 'I' | |||
| { 534, 4, 15, 6, 0, -13 }, // 0x4A 'J' | |||
| { 542, 9, 14, 12, 2, -13 }, // 0x4B 'K' | |||
| { 558, 7, 14, 10, 2, -13 }, // 0x4C 'L' | |||
| { 571, 13, 14, 17, 2, -13 }, // 0x4D 'M' | |||
| { 594, 10, 14, 14, 2, -13 }, // 0x4E 'N' | |||
| { 612, 11, 14, 13, 1, -13 }, // 0x4F 'O' | |||
| { 632, 9, 14, 12, 2, -13 }, // 0x50 'P' | |||
| { 648, 11, 17, 13, 1, -13 }, // 0x51 'Q' | |||
| { 672, 9, 14, 12, 2, -13 }, // 0x52 'R' | |||
| { 688, 9, 14, 11, 1, -13 }, // 0x53 'S' | |||
| { 704, 10, 14, 11, 0, -13 }, // 0x54 'T' | |||
| { 722, 11, 14, 13, 1, -13 }, // 0x55 'U' | |||
| { 742, 11, 14, 12, 0, -13 }, // 0x56 'V' | |||
| { 762, 18, 14, 18, 0, -13 }, // 0x57 'W' | |||
| { 794, 11, 14, 11, 0, -13 }, // 0x58 'X' | |||
| { 814, 11, 14, 11, 0, -13 }, // 0x59 'Y' | |||
| { 834, 9, 14, 11, 1, -13 }, // 0x5A 'Z' | |||
| { 850, 5, 17, 7, 1, -14 }, // 0x5B '[' | |||
| { 861, 8, 15, 9, 1, -13 }, // 0x5C '\' | |||
| { 876, 4, 17, 7, 1, -14 }, // 0x5D ']' | |||
| { 885, 9, 7, 11, 1, -12 }, // 0x5E '^' | |||
| { 893, 9, 1, 13, 2, 3 }, // 0x5F '_' | |||
| { 895, 5, 3, 5, 0, -14 }, // 0x60 '`' | |||
| { 897, 9, 10, 10, 1, -9 }, // 0x61 'a' | |||
| { 909, 9, 14, 11, 1, -13 }, // 0x62 'b' | |||
| { 925, 7, 10, 9, 1, -9 }, // 0x63 'c' | |||
| { 934, 8, 14, 11, 1, -13 }, // 0x64 'd' | |||
| { 948, 8, 10, 10, 1, -9 }, // 0x65 'e' | |||
| { 958, 6, 14, 7, 1, -13 }, // 0x66 'f' | |||
| { 969, 9, 15, 11, 1, -9 }, // 0x67 'g' | |||
| { 986, 9, 14, 11, 1, -13 }, // 0x68 'h' | |||
| { 1002, 3, 14, 5, 1, -13 }, // 0x69 'i' | |||
| { 1008, 5, 19, 5, -1, -13 }, // 0x6A 'j' | |||
| { 1020, 9, 14, 10, 1, -13 }, // 0x6B 'k' | |||
| { 1036, 3, 14, 5, 1, -13 }, // 0x6C 'l' | |||
| { 1042, 15, 10, 17, 1, -9 }, // 0x6D 'm' | |||
| { 1061, 9, 10, 11, 1, -9 }, // 0x6E 'n' | |||
| { 1073, 9, 10, 11, 1, -9 }, // 0x6F 'o' | |||
| { 1085, 9, 14, 11, 1, -9 }, // 0x70 'p' | |||
| { 1101, 8, 14, 11, 1, -9 }, // 0x71 'q' | |||
| { 1115, 6, 10, 7, 1, -9 }, // 0x72 'r' | |||
| { 1123, 8, 10, 9, 1, -9 }, // 0x73 's' | |||
| { 1133, 7, 13, 7, 0, -12 }, // 0x74 't' | |||
| { 1145, 9, 10, 11, 1, -9 }, // 0x75 'u' | |||
| { 1157, 9, 10, 10, 0, -9 }, // 0x76 'v' | |||
| { 1169, 14, 10, 15, 1, -9 }, // 0x77 'w' | |||
| { 1187, 9, 10, 9, 0, -9 }, // 0x78 'x' | |||
| { 1199, 9, 14, 10, 0, -9 }, // 0x79 'y' | |||
| { 1215, 7, 10, 9, 1, -9 }, // 0x7A 'z' | |||
| { 1224, 6, 18, 7, 0, -14 }, // 0x7B '{' | |||
| { 1238, 3, 18, 5, 1, -13 }, // 0x7C '|' | |||
| { 1245, 6, 18, 7, 1, -14 }, // 0x7D '}' | |||
| { 1259, 9, 3, 11, 1, -6 } }; // 0x7E '~' | |||
| const GFXfont titillium_web_semibold10pt7b PROGMEM = { | |||
| (uint8_t *)titillium_web_semibold10pt7bBitmaps, | |||
| (GFXglyph *)titillium_web_semibold10pt7bGlyphs, | |||
| 0x20, 0x7E, 30 }; | |||
| // Approx. 1935 bytes | |||
| @@ -0,0 +1,173 @@ | |||
| const uint8_t titillium_web_semibold8pt7bBitmaps[] PROGMEM = { | |||
| 0x00, 0xFF, 0xFC, 0x3C, 0xDD, 0xDD, 0x26, 0x13, 0x09, 0x9F, 0xFF, 0xF9, | |||
| 0x30, 0x99, 0xFF, 0x26, 0x13, 0x09, 0x80, 0x08, 0x10, 0xF7, 0xFD, 0x1A, | |||
| 0x3C, 0x3E, 0x1E, 0x2C, 0x5C, 0xFF, 0xC4, 0x08, 0x00, 0x62, 0x6A, 0x35, | |||
| 0x1A, 0x86, 0x80, 0x40, 0x20, 0x2E, 0x15, 0x8A, 0xC9, 0xC0, 0x3C, 0x19, | |||
| 0x86, 0x61, 0x98, 0x3C, 0x3E, 0x6C, 0xDA, 0x1C, 0xC3, 0x39, 0xE7, 0xCC, | |||
| 0xFF, 0x6F, 0x6D, 0xB6, 0xDB, 0x66, 0xC0, 0xC6, 0x62, 0x33, 0x33, 0x33, | |||
| 0x26, 0x6C, 0xB7, 0x1F, 0xC3, 0x00, 0x10, 0x20, 0x47, 0xFF, 0xE2, 0x04, | |||
| 0x08, 0x6D, 0x60, 0xF8, 0xF0, 0x0C, 0x61, 0x8C, 0x30, 0x86, 0x18, 0xC3, | |||
| 0x08, 0x00, 0x1C, 0x3E, 0x63, 0x63, 0x41, 0xC1, 0xC1, 0x41, 0x63, 0x77, | |||
| 0x3E, 0x09, 0xFE, 0x90, 0x84, 0x21, 0x08, 0x42, 0x79, 0xF8, 0x18, 0x30, | |||
| 0x41, 0x86, 0x18, 0x61, 0xFF, 0xF8, 0x79, 0xF8, 0x18, 0x30, 0xCF, 0x03, | |||
| 0x83, 0x07, 0x1F, 0xF0, 0x30, 0x60, 0xC3, 0x06, 0xD9, 0xB3, 0x46, 0xFE, | |||
| 0x18, 0x30, 0xFF, 0xFF, 0x06, 0x0F, 0x9F, 0xC1, 0x83, 0x07, 0x9F, 0xF0, | |||
| 0x3C, 0xFF, 0x06, 0x0F, 0x9F, 0xE1, 0xE1, 0xC7, 0xDD, 0xF0, 0xFF, 0xFC, | |||
| 0x18, 0x20, 0xC1, 0x06, 0x0C, 0x30, 0x61, 0x80, 0x1C, 0x7F, 0x63, 0x63, | |||
| 0x63, 0x3E, 0x63, 0x41, 0xC3, 0x77, 0x3E, 0x39, 0xFB, 0x1C, 0x38, 0x7D, | |||
| 0xDF, 0x83, 0x07, 0x1B, 0xF0, 0xF0, 0x3C, 0xF0, 0x3E, 0x80, 0x02, 0x1C, | |||
| 0xE7, 0x0E, 0x07, 0x03, 0x81, 0xFE, 0x00, 0x07, 0xF0, 0x81, 0xC0, 0xE0, | |||
| 0x70, 0xE7, 0x38, 0x40, 0xFA, 0x60, 0xC6, 0x39, 0xC6, 0x18, 0x01, 0x86, | |||
| 0x00, 0x07, 0x80, 0x7F, 0xC7, 0x03, 0x98, 0x06, 0xC7, 0xCF, 0x3F, 0x3C, | |||
| 0xCC, 0xE2, 0x33, 0x88, 0xCF, 0x33, 0x3C, 0xDE, 0xF1, 0xDE, 0x60, 0x01, | |||
| 0xE0, 0x01, 0xF8, 0x00, 0x1E, 0x0F, 0x0D, 0x86, 0x43, 0x31, 0x19, 0x8C, | |||
| 0xFE, 0x7F, 0xA0, 0xF0, 0x60, 0xFE, 0xFF, 0xC3, 0xC3, 0xC6, 0xFE, 0xC3, | |||
| 0xC3, 0xC3, 0xFF, 0xFE, 0x7F, 0xEF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, | |||
| 0xC5, 0xF8, 0xFC, 0xFF, 0xC3, 0xC3, 0xC1, 0xC1, 0xC1, 0xC3, 0xC3, 0xFF, | |||
| 0xFE, 0xFF, 0xFF, 0x06, 0x0C, 0x1F, 0xB0, 0x60, 0xC1, 0xFF, 0xF8, 0xFF, | |||
| 0xFF, 0x06, 0x0C, 0x1F, 0xBF, 0x60, 0xC1, 0x83, 0x00, 0x3F, 0x73, 0xC0, | |||
| 0xC0, 0xC0, 0xC7, 0xC7, 0xC3, 0xC3, 0x63, 0x7F, 0xC1, 0xE0, 0xF0, 0x78, | |||
| 0x3C, 0x1F, 0xFF, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x60, 0xFF, 0xFF, 0xFC, | |||
| 0x33, 0x33, 0x33, 0x33, 0x33, 0x6E, 0xC3, 0xC6, 0xC6, 0xCC, 0xCC, 0xF8, | |||
| 0xEC, 0xCC, 0xC6, 0xC6, 0xC3, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, | |||
| 0xFF, 0xC0, 0xE0, 0xFE, 0x1F, 0xC2, 0xE8, 0xDD, 0x9B, 0xB2, 0x72, 0xCE, | |||
| 0x59, 0xCE, 0x38, 0xC7, 0x18, 0x80, 0xF1, 0xF8, 0xF4, 0x7B, 0x3D, 0x9E, | |||
| 0x4F, 0x37, 0x9B, 0xC5, 0xE3, 0xF1, 0xE0, 0x3E, 0x33, 0xB0, 0xD8, 0x3C, | |||
| 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0x33, 0x9F, 0x80, 0xFC, 0xFF, 0xC3, 0xC3, | |||
| 0xC3, 0xC3, 0xFE, 0xF8, 0xC0, 0xC0, 0xC0, 0x3E, 0x33, 0xB0, 0xD8, 0x3C, | |||
| 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0x33, 0x9F, 0x80, 0xE0, 0x30, 0xFE, 0xFF, | |||
| 0xC3, 0xC3, 0xC3, 0xC7, 0xFE, 0xC6, 0xC6, 0xC3, 0xC3, 0x7F, 0xCE, 0x06, | |||
| 0x0F, 0x0F, 0x83, 0x83, 0x07, 0x1F, 0xF0, 0xFF, 0xFF, 0x18, 0x18, 0x18, | |||
| 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, | |||
| 0xC3, 0xC3, 0xC3, 0x67, 0x7E, 0xC1, 0xB0, 0xD8, 0x6C, 0x26, 0x31, 0x18, | |||
| 0xCC, 0x64, 0x36, 0x0F, 0x07, 0x80, 0xC3, 0x0D, 0x0E, 0x36, 0x38, 0xD9, | |||
| 0xA3, 0x66, 0x89, 0x9B, 0x62, 0x4D, 0x89, 0x36, 0x3C, 0x58, 0xF1, 0xC3, | |||
| 0xC7, 0x00, 0xC1, 0xB1, 0x8C, 0x86, 0xC1, 0xC0, 0xE0, 0x70, 0x6C, 0x36, | |||
| 0x31, 0xB0, 0x60, 0xC3, 0xB1, 0x98, 0x86, 0xC3, 0x40, 0xE0, 0x60, 0x30, | |||
| 0x18, 0x0C, 0x06, 0x00, 0xFF, 0xFC, 0x30, 0x61, 0x86, 0x0C, 0x30, 0xC1, | |||
| 0xFF, 0xF8, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFF, 0xC0, 0xC1, 0x81, | |||
| 0x83, 0x03, 0x06, 0x06, 0x0C, 0x08, 0x18, 0xFC, 0x92, 0x49, 0x24, 0x9F, | |||
| 0xC0, 0x10, 0x71, 0xA3, 0x6C, 0x58, 0xC0, 0xFF, 0xF0, 0x8F, 0x10, 0xF8, | |||
| 0x18, 0x33, 0xEC, 0xD1, 0xB3, 0x7F, 0xC1, 0x83, 0x07, 0xEC, 0xF8, 0xF1, | |||
| 0xE3, 0xC7, 0x9F, 0xF0, 0x7F, 0x71, 0x08, 0x63, 0xAF, 0x06, 0x0C, 0x1B, | |||
| 0xFC, 0x78, 0xE1, 0xC3, 0xC7, 0x9D, 0xF8, 0x79, 0x9B, 0x17, 0xFF, 0xD8, | |||
| 0x30, 0x3E, 0x11, 0xD8, 0xCF, 0xB1, 0x8C, 0x63, 0x18, 0xC0, 0x7F, 0x9B, | |||
| 0x36, 0x6F, 0xC8, 0x30, 0x3F, 0xC7, 0x0F, 0xFB, 0xC0, 0xC1, 0x83, 0x07, | |||
| 0xEE, 0xF8, 0xF1, 0xE3, 0xC7, 0x8F, 0x18, 0xF3, 0xFF, 0xFC, 0x33, 0x03, | |||
| 0x33, 0x33, 0x33, 0x33, 0x7E, 0x40, 0xC1, 0x83, 0x06, 0x7C, 0xDB, 0x3C, | |||
| 0x7C, 0xD9, 0x9B, 0x18, 0xFF, 0xFF, 0xFC, 0xFF, 0xFD, 0xCF, 0x18, 0xE3, | |||
| 0x1C, 0x63, 0x8C, 0x71, 0x8E, 0x31, 0xFD, 0xDF, 0x1E, 0x3C, 0x78, 0xF1, | |||
| 0xE3, 0x7D, 0x9B, 0x1C, 0x38, 0x78, 0xF3, 0x3E, 0xFD, 0xDF, 0x1E, 0x3C, | |||
| 0x78, 0xF3, 0xFE, 0xC1, 0x83, 0x00, 0x7F, 0x8F, 0x1C, 0x38, 0x78, 0xF3, | |||
| 0xBF, 0x06, 0x0C, 0x18, 0xDF, 0xF1, 0x8C, 0x63, 0x18, 0xFF, 0x38, 0x3C, | |||
| 0x7C, 0x38, 0xFE, 0x63, 0x3E, 0xC6, 0x31, 0x8C, 0x21, 0xC0, 0xC7, 0x8F, | |||
| 0x1E, 0x3C, 0x78, 0xF3, 0xBF, 0xC3, 0x46, 0x66, 0x66, 0x64, 0x2C, 0x3C, | |||
| 0x3C, 0xC6, 0x34, 0x63, 0x67, 0x26, 0xF6, 0x6D, 0x62, 0x96, 0x29, 0xC3, | |||
| 0x9C, 0xC6, 0xD8, 0xF1, 0xC3, 0x87, 0x9B, 0x63, 0xC3, 0x46, 0x66, 0x66, | |||
| 0x64, 0x2C, 0x3C, 0x3C, 0x08, 0x18, 0x18, 0xFF, 0xF1, 0x8C, 0x63, 0x0F, | |||
| 0xFF, 0x19, 0x8C, 0x63, 0x1B, 0x9C, 0x31, 0x8C, 0x63, 0x0C, 0xFF, 0xFF, | |||
| 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0xFF, 0x3C }; | |||
| const GFXglyph titillium_web_semibold8pt7bGlyphs[] PROGMEM = { | |||
| { 0, 1, 1, 4, 0, 0 }, // 0x20 ' ' | |||
| { 1, 2, 11, 4, 1, -10 }, // 0x21 '!' | |||
| { 4, 4, 4, 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, 2, 4, 4, 1, -10 }, // 0x27 ''' | |||
| { 61, 3, 14, 5, 1, -11 }, // 0x28 '(' | |||
| { 67, 4, 14, 5, 0, -11 }, // 0x29 ')' | |||
| { 74, 5, 5, 7, 1, -10 }, // 0x2A '*' | |||
| { 78, 7, 8, 9, 1, -7 }, // 0x2B '+' | |||
| { 85, 3, 4, 4, 0, -1 }, // 0x2C ',' | |||
| { 87, 5, 1, 7, 1, -4 }, // 0x2D '-' | |||
| { 88, 2, 2, 4, 1, -1 }, // 0x2E '.' | |||
| { 89, 6, 11, 7, 1, -10 }, // 0x2F '/' | |||
| { 98, 8, 11, 9, 0, -10 }, // 0x30 '0' | |||
| { 109, 5, 11, 9, 1, -10 }, // 0x31 '1' | |||
| { 116, 7, 11, 9, 1, -10 }, // 0x32 '2' | |||
| { 126, 7, 11, 9, 1, -10 }, // 0x33 '3' | |||
| { 136, 7, 11, 9, 1, -10 }, // 0x34 '4' | |||
| { 146, 7, 11, 9, 1, -10 }, // 0x35 '5' | |||
| { 156, 7, 11, 9, 1, -10 }, // 0x36 '6' | |||
| { 166, 7, 11, 9, 1, -10 }, // 0x37 '7' | |||
| { 176, 8, 11, 9, 0, -10 }, // 0x38 '8' | |||
| { 187, 7, 11, 9, 1, -10 }, // 0x39 '9' | |||
| { 197, 2, 7, 4, 1, -6 }, // 0x3A ':' | |||
| { 199, 2, 9, 4, 1, -6 }, // 0x3B ';' | |||
| { 202, 7, 8, 9, 1, -7 }, // 0x3C '<' | |||
| { 209, 7, 4, 9, 1, -5 }, // 0x3D '=' | |||
| { 213, 7, 8, 9, 1, -7 }, // 0x3E '>' | |||
| { 220, 6, 11, 7, 1, -10 }, // 0x3F '?' | |||
| { 229, 14, 15, 16, 1, -11 }, // 0x40 '@' | |||
| { 256, 9, 11, 10, 0, -10 }, // 0x41 'A' | |||
| { 269, 8, 11, 10, 1, -10 }, // 0x42 'B' | |||
| { 280, 7, 11, 9, 1, -10 }, // 0x43 'C' | |||
| { 290, 8, 11, 10, 1, -10 }, // 0x44 'D' | |||
| { 301, 7, 11, 9, 1, -10 }, // 0x45 'E' | |||
| { 311, 7, 11, 8, 1, -10 }, // 0x46 'F' | |||
| { 321, 8, 11, 10, 1, -10 }, // 0x47 'G' | |||
| { 332, 9, 11, 11, 1, -10 }, // 0x48 'H' | |||
| { 345, 2, 11, 4, 1, -10 }, // 0x49 'I' | |||
| { 348, 4, 12, 5, 0, -10 }, // 0x4A 'J' | |||
| { 354, 8, 11, 9, 1, -10 }, // 0x4B 'K' | |||
| { 365, 6, 11, 8, 1, -10 }, // 0x4C 'L' | |||
| { 374, 11, 11, 14, 1, -10 }, // 0x4D 'M' | |||
| { 390, 9, 11, 11, 1, -10 }, // 0x4E 'N' | |||
| { 403, 9, 11, 11, 1, -10 }, // 0x4F 'O' | |||
| { 416, 8, 11, 9, 1, -10 }, // 0x50 'P' | |||
| { 427, 9, 13, 11, 1, -10 }, // 0x51 'Q' | |||
| { 442, 8, 11, 10, 1, -10 }, // 0x52 'R' | |||
| { 453, 7, 11, 9, 1, -10 }, // 0x53 'S' | |||
| { 463, 8, 11, 8, 0, -10 }, // 0x54 'T' | |||
| { 474, 8, 11, 10, 1, -10 }, // 0x55 'U' | |||
| { 485, 9, 11, 10, 0, -10 }, // 0x56 'V' | |||
| { 498, 14, 11, 15, 0, -10 }, // 0x57 'W' | |||
| { 518, 9, 11, 9, 0, -10 }, // 0x58 'X' | |||
| { 531, 9, 11, 9, 0, -10 }, // 0x59 'Y' | |||
| { 544, 7, 11, 9, 1, -10 }, // 0x5A 'Z' | |||
| { 554, 4, 14, 6, 1, -11 }, // 0x5B '[' | |||
| { 561, 7, 11, 8, 0, -10 }, // 0x5C '\' | |||
| { 571, 3, 14, 6, 1, -11 }, // 0x5D ']' | |||
| { 577, 7, 6, 9, 1, -10 }, // 0x5E '^' | |||
| { 583, 6, 2, 10, 2, 2 }, // 0x5F '_' | |||
| { 585, 4, 3, 4, 0, -11 }, // 0x60 '`' | |||
| { 587, 7, 8, 8, 1, -7 }, // 0x61 'a' | |||
| { 594, 7, 11, 9, 1, -10 }, // 0x62 'b' | |||
| { 604, 5, 8, 7, 1, -7 }, // 0x63 'c' | |||
| { 609, 7, 11, 9, 1, -10 }, // 0x64 'd' | |||
| { 619, 7, 8, 8, 1, -7 }, // 0x65 'e' | |||
| { 626, 5, 12, 6, 0, -11 }, // 0x66 'f' | |||
| { 634, 7, 12, 8, 1, -7 }, // 0x67 'g' | |||
| { 645, 7, 11, 9, 1, -10 }, // 0x68 'h' | |||
| { 655, 2, 11, 4, 1, -10 }, // 0x69 'i' | |||
| { 658, 4, 15, 4, -1, -10 }, // 0x6A 'j' | |||
| { 666, 7, 11, 8, 1, -10 }, // 0x6B 'k' | |||
| { 676, 2, 11, 4, 1, -10 }, // 0x6C 'l' | |||
| { 679, 11, 8, 13, 1, -7 }, // 0x6D 'm' | |||
| { 690, 7, 8, 9, 1, -7 }, // 0x6E 'n' | |||
| { 697, 7, 8, 8, 1, -7 }, // 0x6F 'o' | |||
| { 704, 7, 11, 9, 1, -7 }, // 0x70 'p' | |||
| { 714, 7, 11, 9, 1, -7 }, // 0x71 'q' | |||
| { 724, 5, 8, 6, 1, -7 }, // 0x72 'r' | |||
| { 729, 6, 8, 8, 1, -7 }, // 0x73 's' | |||
| { 735, 5, 10, 6, 0, -9 }, // 0x74 't' | |||
| { 742, 7, 8, 9, 1, -7 }, // 0x75 'u' | |||
| { 749, 8, 8, 8, 0, -7 }, // 0x76 'v' | |||
| { 757, 12, 8, 12, 0, -7 }, // 0x77 'w' | |||
| { 769, 7, 8, 7, 0, -7 }, // 0x78 'x' | |||
| { 776, 8, 11, 8, 0, -7 }, // 0x79 'y' | |||
| { 787, 6, 8, 7, 1, -7 }, // 0x7A 'z' | |||
| { 793, 5, 14, 6, 0, -11 }, // 0x7B '{' | |||
| { 802, 2, 14, 4, 1, -10 }, // 0x7C '|' | |||
| { 806, 4, 14, 6, 1, -11 }, // 0x7D '}' | |||
| { 813, 7, 2, 9, 1, -4 } }; // 0x7E '~' | |||
| const GFXfont titillium_web_semibold8pt7b PROGMEM = { | |||
| (uint8_t *)titillium_web_semibold8pt7bBitmaps, | |||
| (GFXglyph *)titillium_web_semibold8pt7bGlyphs, | |||
| 0x20, 0x7E, 24 }; | |||
| // Approx. 1487 bytes | |||
| @@ -2,7 +2,7 @@ | |||
| //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-20 23:27:40 | |||
| //This file has been generated on 2026-01-25 22:04:39 | |||
| #include "Arduino.h" | |||
| #include "Arduino.h" | |||
| @@ -16,6 +16,7 @@ void Initialize() ; | |||
| void setup() ; | |||
| void loop() ; | |||
| void SetActualStatus(Status newStatus) ; | |||
| uint32_t calculateDistance(uint32_t duration) ; | |||
| #include "EchoLot.ino" | |||