diff --git a/README.md b/README.md index f774b568..4b7408b3 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,28 @@ This work is licensed under a This repository offers hardware and software solutions for communicating with Hoymiles inverters via radio. With our system, you can easily obtain real-time values such as power, current, and daily energy. Additionally, you can set parameters like the power limit of your inverter to achieve zero export. You can access these functionalities through our user-friendly web interface, MQTT, or JSON. Whether you're monitoring your solar panel system's performance or fine-tuning its settings, our solutions make it easy to achieve your goals. +This fork aims to improve the display layouts of several low-res displays, starting with the Nokia5110. + +Current status of progress: +- improved layout with additional fixed headline for day of week, date and time, and centered text (already merged in lumapu >=0.7.34) +- improved 5x8 pixel font (some glyphes like dot and zero were deformed) and enhanced by ahoy specific symbols +- added sun and moon symbols with values that show number of producing and sleeping inverters (working) +- added calender and sigma symbols for YieldDay and YieldTotal +- added symbol for WiFi and MQTT that indicates WiFi and MQTT connection status (working) +- added RSSI bar for WiFi (working) +- added symbol für NRF24 that indicates if radio board is connected (working) +- added RSSI bar for NRF24 (basically working but currently only fed by inverter status due to missing RSSI value of NRF24. This should be improved in the future by using transition package heuristics) + +![alt text](https://github.com/You69Man/ahoy/blob/feature/fancy_nokia/pics/PXL_20230824_204200660.jpg?raw=true) + + +There is also already a working implementation for OLED 128x64, with a bit of a higher font and symbol resolution. +The reason why this is not published at the moment is that OLEDs tend to quickly burn-in. Moving the screen content is no option for this layout because the layout is very well optimized and so pixels would quickly move off-screen. The only option would be to limit the on-time of the display by a means to activate it, e.g. a button or a sensor. This however would require a free GPIO pin, which are already rare on EPS8266... Other Ideas welcome! + +![alt text](https://github.com/You69Man/ahoy/blob/feature/fancy_nokia/pics/PXL_20230901_061927908.jpg?raw=true) + + + Table of approaches: | Board | MI | HM | HMS/HMT | comment | HowTo start | diff --git a/pics/PXL_20230824_204200660.jpg b/pics/PXL_20230824_204200660.jpg new file mode 100644 index 00000000..cfcb4668 Binary files /dev/null and b/pics/PXL_20230824_204200660.jpg differ diff --git a/pics/PXL_20230901_061927908.jpg b/pics/PXL_20230901_061927908.jpg new file mode 100644 index 00000000..dd8527f2 Binary files /dev/null and b/pics/PXL_20230901_061927908.jpg differ diff --git a/src/plugins/Display/Display.h b/src/plugins/Display/Display.h index 58c2fa83..93349769 100644 --- a/src/plugins/Display/Display.h +++ b/src/plugins/Display/Display.h @@ -66,7 +66,7 @@ class Display { if (mMono != NULL) mMono->loop(mCfg->contrast); - if (mNewPayload || (((++mLoopCnt) % 30) == 0)) { + if (mNewPayload || (((++mLoopCnt) % 10) == 0)) { mNewPayload = false; mLoopCnt = 0; DataScreen(); @@ -85,7 +85,8 @@ class Display { float totalYieldDay = 0; float totalYieldTotal = 0; - uint8_t isprod = 0; + uint8_t nrprod = 0; + uint8_t nrsleep = 0; Inverter<> *iv; record_t<> *rec; @@ -96,7 +97,9 @@ class Display { continue; if (iv->isProducing()) - isprod++; + nrprod++; + else + nrsleep++; totalPower += iv->getChannelFieldValue(CH0, FLD_PAC, rec); totalYieldDay += iv->getChannelFieldValue(CH0, FLD_YD, rec); @@ -104,13 +107,16 @@ class Display { } // prepare display data - mDisplayData.isProducing = isprod; + mDisplayData.nrProducing = nrprod; + mDisplayData.nrSleeping = nrsleep; mDisplayData.totalPower = totalPower; mDisplayData.totalYieldDay = totalYieldDay; mDisplayData.totalYieldTotal = totalYieldTotal; mDisplayData.RadioSymbol = mHmRadio->isChipConnected(); - mDisplayData.wifiRSSI = (WiFi.status() == WL_CONNECTED) ? WiFi.RSSI() : SCHAR_MIN; - mDisplayData.WiFiSymbol = (WiFi.status() == WL_CONNECTED); + mDisplayData.WifiSymbol = (WiFi.status() == WL_CONNECTED); + mDisplayData.MQTTSymbol = mApp->getMqttIsConnected(); + mDisplayData.RadioRSSI = (0 < mDisplayData.nrProducing) ? 0 : SCHAR_MIN; // Workaround as NRF24 has no RSSI. Could be approximated by transmisson error heuristic in the future + mDisplayData.WifiRSSI = (WiFi.status() == WL_CONNECTED) ? WiFi.RSSI() : SCHAR_MIN; mDisplayData.ipAddress = WiFi.localIP(); time_t utc= mApp->getTimestamp(); if (year(utc) > 2020) @@ -123,7 +129,7 @@ class Display { } #if defined(ESP32) else if (mCfg->type == 10) { - mEpaper.loop(totalPower, totalYieldDay, totalYieldTotal, isprod); + mEpaper.loop(totalPower, totalYieldDay, totalYieldTotal, nrprod); mRefreshCycle++; } diff --git a/src/plugins/Display/Display_Mono.h b/src/plugins/Display/Display_Mono.h index 1dfcc5d2..49fd18ec 100644 --- a/src/plugins/Display/Display_Mono.h +++ b/src/plugins/Display/Display_Mono.h @@ -60,4 +60,70 @@ class DisplayMono { mDispWidth = mDisplay->getDisplayWidth(); mDispHeight = mDisplay->getDisplayHeight(); } -}; \ No newline at end of file +}; + +/* adapted 5x8 Font for low-res displays with symbols +Symbols: + \x80 ... antenna + \x81 ... WiFi + \x82 ... suncurve + \x83 ... sum/sigma + \x84 ... antenna crossed + \x85 ... WiFi crossed + \x86 ... sun + \x87 ... moon + \x88 ... calendar/day + \x89 ... MQTT */ +const uint8_t u8g2_font_5x8_symbols_ahoy[1052] U8G2_FONT_SECTION("u8g2_font_5x8_symbols_ahoy") = + "j\0\3\2\4\4\3\4\5\10\10\0\377\6\377\6\0\1\61\2b\4\3 \5\0\304\11!\7a\306" + "\212!\11\42\7\63\335\212\304\22#\16u\304\232R\222\14JePJI\2$\14u\304\252l\251m" + "I\262E\0%\10S\315\212(\351\24&\13t\304\232(i\252\64%\1'\6\61\336\212\1(\7b" + "\305\32\245))\11b\305\212(\251(\0*\13T\304\212(Q\206D\211\2+\12U\304\252\60\32\244" + "\60\2,\7\63\275\32\245\4-\6\24\324\212!.\6\42\305\212!/\10d\304\272R[\6\60\14d" + "\304\32%R\206DJ\24\0\61\10c\305\232Dj\31\62\13d\304\32%\312\22%\33\2\63\13d\304" + "\212!\212D)Q\0\64\13d\304\252H\251\14Q\226\0\65\12d\304\212A\33\245D\1\66\13d\304" + "\32%[\42)Q\0\67\13d\304\212!\213\262(\213\0\70\14d\304\32%J\224HJ\24\0\71\13" + "d\304\32%\222\222-Q\0:\10R\305\212!\32\2;\10c\275\32\243R\2<\10c\305\252\244\224" + "\25=\10\64\314\212!\34\2>\11c\305\212\254\224\224\0?\11c\305\232\246$M\0@\15\205\274*" + ")\222\226DI\244\252\2A\12d\304\32%\222\206I\12B\14d\304\212%\32\222H\32\22\0C\12" + "d\304\32%\322J\211\2D\12d\304\212%r\32\22\0E\12d\304\212A[\262l\10F\12d\304" + "\212A[\262\32\0G\13d\304\32%\322\222)Q\0H\12d\304\212H\32&S\0I\10c\305\212" + "%j\31J\12d\304\232)\253\224\42\0K\13d\304\212HI\244\244S\0L\10d\304\212\254\333\20" + "M\12d\304\212h\70D\246\0N\12d\304\212h\31\226I\12O\12d\304\32%rJ\24\0P\13" + "d\304\212%\222\206$\313\0Q\12t\274\32%\222\26\307\0R\13d\304\212%\222\206$\222\2S\14" + "d\304\32%J\302$J\24\0T\11e\304\212A\12;\1U\11d\304\212\310S\242\0V\12d\304" + "\212\310)\221\24\0W\12d\304\212\310\64\34\242\0X\13d\304\212HJ$%\222\2Y\12e\304\212" + "LKja\11Z\12d\304\212!\213\332\206\0[\10c\305\212!j\32\134\10d\304\212,l\13]" + "\10c\305\212\251i\10^\6#\345\232\6_\6\24\274\212!`\6\42\345\212(a\11D\304\232!\222" + "\222\1b\13d\304\212,[\42iH\0c\7C\305\232)\23d\12d\304\272\312\20I\311\0e\11" + "D\304\32%\31\262\1f\12d\304\252Ji\312\42\0g\12T\274\32%J\266D\1h\12d\304\212" + ",[\42S\0i\10c\305\232P\252\14j\12s\275\252\64\212\224\12\0k\12d\304\212\254\64$\221" + "\24l\10c\305\12\251\313\0m\12E\304\12\245EI\224\2n\10D\304\212%\62\5o\11D\304\32" + "%\222\22\5p\12T\274\212%\32\222,\3q\11T\274\232!J\266\2r\11D\304\212$\261e\0" + "s\10C\305\232![\0t\13d\304\232,\232\262$J\0u\10D\304\212\310\224\14v\10C\305\212" + "\304R\1w\12E\304\212LI\224.\0x\11D\304\212(\221\224(y\13T\274\212HJ\206(Q" + "\0z\11D\304\212!*\15\1{\12t\304*%L\304(\24|\6a\306\212\3}\13t\304\12\61" + "\12\225\60\221\0~\10$\344\232DI\0\5\0\304\12\200\13u\274\212K\242T\266\260\4\201\14f" + "D\233!\11#-\312!\11\202\15hD<\65\12\243,\214\302$\16\203\15w<\214C\22F\71\220" + "\26\207A\204\16\205\274\212,)%Y\230%QR\13\205\17\206<\213\60\31\22\311\66D\245!\11\3" + "\206\20\210<\254\342\20]\302(L\246C\30E\0\207\15wD\334X\25\267\341\20\15\21\0\210\16w" + "<\214\203RQ\25I\212\324a\20\211\15f\304\213)\213\244,\222\222\245\0\0\0\0"; + + +const uint8_t u8g2_font_ncenB08_symbols8_ahoy[173] U8G2_FONT_SECTION("u8g2_font_ncenB08_symbols8_ahoy") = + "\13\0\3\2\4\4\1\2\5\10\11\0\0\10\0\10\0\0\0\0\0\0\224A\14\207\305\70H\321\222H" + "k\334\6B\20\230\305\32\262\60\211\244\266\60T\243\34\326\0C\20\210\305S\243\60\312\302(\214\302(" + "L\342\0D\16\210\315\70(i\224#\71\20W\207\3E\15\207\305xI\206\323\232nIS\1F\25" + "\230\305H\206\244\230$C\22\15Y\242\204j\224\205I$\5G\17\210\305*\16\321%\214\302d:\204" + "Q\4H\14w\307\215Uq\33\16\321\20\1I\21\227\305\311\222aP\245H\221\244H\212\324a\20J" + "\5\0\275\0K\5\0\315\0\0\0\0"; + +const uint8_t u8g2_font_ncenB10_symbols10_ahoy[207] U8G2_FONT_SECTION("u8g2_font_ncenB10_symbols10_ahoy") = + "\13\0\3\2\4\4\2\2\5\13\13\0\0\13\0\13\0\0\0\0\0\0\266A\15\267\212q\220\42\251\322" + "\266\306\275\1B\20\230\236\65da\22Ima\250F\71\254\1C\23\272\272\251\3Q\32\366Q\212\243" + "\70\212\243\70\311\221\0D\20\271\252\361\242F:\242#: {\36\16\1E\22\267\212\361\222\14I\242" + "\14\332\232\216[RJ\232\12F\25\250\233\221\14I\61I\206$\252%J\250Fa\224%J\71G\30" + "\273\312W\316r`T\262DJ\303\64L#%K\304\35\310\342,\3H\27\272\272\217\344P\16\351\210" + "\16\354\300<\244C\70,\303 \16!\0I\24\271\252\241\34\336\1-\223\64-\323\62-\323\62\35x" + "\10J\5\0\232\1K\5\0\232\1\0\0\0"; + diff --git a/src/plugins/Display/Display_Mono_128X32.h b/src/plugins/Display/Display_Mono_128X32.h index f6577cc6..7012604b 100644 --- a/src/plugins/Display/Display_Mono_128X32.h +++ b/src/plugins/Display/Display_Mono_128X32.h @@ -52,7 +52,7 @@ class DisplayMono128X32 : public DisplayMono { if (3 != mType) mDisplay->setContrast(mLuminance); - if ((mDisplayData->totalPower > 0) && (mDisplayData->isProducing > 0)) { + if ((mDisplayData->totalPower > 0) && (mDisplayData->nrProducing > 0)) { mTimeout = DISP_DEFAULT_TIMEOUT; mDisplay->setPowerSave(false); if (mDisplayData->totalPower > 999) @@ -78,7 +78,7 @@ class DisplayMono128X32 : public DisplayMono { if (!(mExtra % 10) && (ip)) printText(ip.toString().c_str(), 3); else if (!(mExtra % 5)) { - snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%d Inverter on", mDisplayData->isProducing); + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%d Inverter on", mDisplayData->nrProducing); printText(mFmtText, 3); } else if (0 != mDisplayData->utcTs) printText(ah::getTimeStr(gTimezone.toLocal(mDisplayData->utcTs)).c_str(), 3); @@ -106,13 +106,13 @@ class DisplayMono128X32 : public DisplayMono { inline void setFont(uint8_t line) { switch (line) { case 0: - mDisplay->setFont(u8g2_font_9x15_tf); + mDisplay->setFont(u8g2_font_9x15_tr); break; case 3: - mDisplay->setFont(u8g2_font_tom_thumb_4x6_tf); + mDisplay->setFont(u8g2_font_tom_thumb_4x6_tr); break; default: - mDisplay->setFont(u8g2_font_tom_thumb_4x6_tf); + mDisplay->setFont(u8g2_font_tom_thumb_4x6_tr); break; } } diff --git a/src/plugins/Display/Display_Mono_128X64.h b/src/plugins/Display/Display_Mono_128X64.h index 86061f89..4ea85d50 100644 --- a/src/plugins/Display/Display_Mono_128X64.h +++ b/src/plugins/Display/Display_Mono_128X64.h @@ -61,7 +61,7 @@ class DisplayMono128X64 : public DisplayMono { // set Contrast of the Display to raise the lifetime mDisplay->setContrast(mLuminance); - if ((mDisplayData->totalPower > 0) && (mDisplayData->isProducing > 0)) { + if ((mDisplayData->totalPower > 0) && (mDisplayData->nrProducing > 0)) { mTimeout = DISP_DEFAULT_TIMEOUT; mDisplay->setPowerSave(false); @@ -88,7 +88,7 @@ class DisplayMono128X64 : public DisplayMono { if (!(mExtra % 10) && (ip)) printText(ip.toString().c_str(), 3); else if (!(mExtra % 5)) { - snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%d Inverter on", mDisplayData->isProducing); + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%d Inverter on", mDisplayData->nrProducing); printText(mFmtText, 3); } else if (0 != mDisplayData->utcTs) printText(ah::getDateTimeStr(gTimezone.toLocal(mDisplayData->utcTs)).c_str(), 3); @@ -115,7 +115,7 @@ class DisplayMono128X64 : public DisplayMono { mDisplay->setFont(u8g2_font_ncenB14_tr); break; case 3: - mDisplay->setFont(u8g2_font_5x8_tr); + mDisplay->setFont(u8g2_font_5x8_symbols_ahoy); break; default: mDisplay->setFont(u8g2_font_ncenB10_tr); diff --git a/src/plugins/Display/Display_Mono_64X48.h b/src/plugins/Display/Display_Mono_64X48.h index a040c3f8..43c7e365 100644 --- a/src/plugins/Display/Display_Mono_64X48.h +++ b/src/plugins/Display/Display_Mono_64X48.h @@ -52,7 +52,7 @@ class DisplayMono64X48 : public DisplayMono { // set Contrast of the Display to raise the lifetime mDisplay->setContrast(mLuminance); - if ((mDisplayData->totalPower > 0) && (mDisplayData->isProducing > 0)) { + if ((mDisplayData->totalPower > 0) && (mDisplayData->nrProducing > 0)) { mTimeout = DISP_DEFAULT_TIMEOUT; mDisplay->setPowerSave(false); @@ -79,7 +79,7 @@ class DisplayMono64X48 : public DisplayMono { if (!(mExtra % 10) && (ip)) printText(ip.toString().c_str(), 3); else if (!(mExtra % 5)) { - snprintf(mFmtText, DISP_FMT_TEXT_LEN, "active Inv: %d", mDisplayData->isProducing); + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "active Inv: %d", mDisplayData->nrProducing); printText(mFmtText, 3); } else if (0 != mDisplayData->utcTs) printText(ah::getTimeStr(gTimezone.toLocal(mDisplayData->utcTs)).c_str(), 3); @@ -102,11 +102,11 @@ class DisplayMono64X48 : public DisplayMono { inline void setFont(uint8_t line) { switch (line) { case 0: - mDisplay->setFont(u8g2_font_fur11_tf); + mDisplay->setFont(u8g2_font_fur11_tr); break; case 1: case 2: - mDisplay->setFont(u8g2_font_6x10_tf); + mDisplay->setFont(u8g2_font_6x10_tr); break; case 3: mDisplay->setFont(u8g2_font_4x6_tr); diff --git a/src/plugins/Display/Display_Mono_84X48.h b/src/plugins/Display/Display_Mono_84X48.h index 0db18ed5..ed540523 100644 --- a/src/plugins/Display/Display_Mono_84X48.h +++ b/src/plugins/Display/Display_Mono_84X48.h @@ -5,6 +5,7 @@ #pragma once #include "Display_Mono.h" +#include "../../utils/dbg.h" class DisplayMono84X48 : public DisplayMono { public: @@ -27,9 +28,9 @@ class DisplayMono84X48 : public DisplayMono { u8g2_cb_t *rot = (u8g2_cb_t *)((rotation != 0x00) ? U8G2_R2 : U8G2_R0); monoInit(new U8G2_PCD8544_84X48_F_4W_SW_SPI(rot, clock, data, cs, dc, reset), type, displayData); calcLinePositions(); - printText("Ahoy!", l_Ahoy); - printText("ahoydtu.de", l_Website); - printText(mDisplayData->version, l_Version); + printText("Ahoy!", l_Ahoy, 0xff); + printText("ahoydtu.de", l_Website, 0xff); + printText(mDisplayData->version, l_Version, 0xff); mDisplay->sendBuffer(); } @@ -46,43 +47,87 @@ class DisplayMono84X48 : public DisplayMono { } void disp(void) { - mDisplay->clearBuffer(); + // Test + /* + mDisplayData->nrSleeping = 10; + mDisplayData->nrProducing = 10; + mDisplayData->totalPower = 12345.67; + mDisplayData->totalYieldDay = 12345.67; + mDisplayData->totalYieldTotal = 1234; + mDisplayData->utcTs += 1000000; + */ - // set Contrast of the Display to raise the lifetime - mDisplay->setContrast(mLuminance); + mDisplay->clearBuffer(); - if ((mDisplayData->totalPower > 0) && (mDisplayData->isProducing > 0)) { + // print total power + if (mDisplayData->nrProducing > 0) { mTimeout = DISP_DEFAULT_TIMEOUT; mDisplay->setPowerSave(false); - if (mDisplayData->totalPower > 999) + if (mDisplayData->totalPower > 9999) + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%.2fkW", (mDisplayData->totalPower / 1000)); // forgo spacing between value and SI unit in favor of second position after decimal point + else if (mDisplayData->totalPower > 999) snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%.2f kW", (mDisplayData->totalPower / 1000)); else - snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%.0f W", mDisplayData->totalPower); + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%.1f W", mDisplayData->totalPower); - printText(mFmtText, l_TotalPower); + printText(mFmtText, l_TotalPower, 0xff); } else { - printText("offline", l_TotalPower); + printText("offline", l_TotalPower, 0xff); // check if it's time to enter power saving mode if (mTimeout == 0) mDisplay->setPowerSave(mEnPowerSave); } - - snprintf(mFmtText, DISP_FMT_TEXT_LEN, "Today: %.0f Wh", mDisplayData->totalYieldDay); - printText(mFmtText, l_YieldDay); - - snprintf(mFmtText, DISP_FMT_TEXT_LEN, "Total: %.1f kWh", mDisplayData->totalYieldTotal); - printText(mFmtText, l_YieldTotal); - + // print Date and time if (0 != mDisplayData->utcTs) - printText(ah::getDateTimeStrShort(gTimezone.toLocal(mDisplayData->utcTs)).c_str(), l_Time); + printText(ah::getDateTimeStrShort(gTimezone.toLocal(mDisplayData->utcTs)).c_str(), l_Time, 0xff); - if (!(mExtra % 5) && (mDisplayData->ipAddress)) + // alternatively: + // print ip address + if (!(mExtra % 5) && (mDisplayData->ipAddress)) { snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%s", (mDisplayData->ipAddress).toString().c_str()); + printText(mFmtText, l_Status, 0xff); + } + // print status of inverters + else { + if (0 == mDisplayData->nrSleeping) + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "\x86"); + else if (0 == mDisplayData->nrProducing) + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "\x87"); + else + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%d\x86 %d\x87", mDisplayData->nrProducing, mDisplayData->nrSleeping); + setLineFont(l_Status); + printText(mFmtText, l_Status, (mDispWidth - mDisplay->getStrWidth(mFmtText)) / 2); + } + + // print yields + printText("\x88", l_YieldDay, 11); // day symbol + printText("\x83", l_YieldTotal, 11); // total symbol + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%7.0f Wh", mDisplayData->totalYieldDay); + printText(mFmtText, l_YieldDay, 18); + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%7.1f kWh", mDisplayData->totalYieldTotal); + printText(mFmtText, l_YieldTotal, 18); + + // draw dynamic Nokia RSSI bars + int rssi_bar_height = 7; + for (int i=0; i<4;i++) { + int radio_rssi_threshold = -60 - i*10; // radio rssi not yet tested in reality! + int wifi_rssi_threshold = -60 - i*10; + if (mDisplayData->RadioRSSI > radio_rssi_threshold) + mDisplay->drawBox(0, 8+(rssi_bar_height+1)*i, 4-i,rssi_bar_height); + if (mDisplayData->WifiRSSI > wifi_rssi_threshold) + mDisplay->drawBox(mDispWidth-4+i, 8+(rssi_bar_height+1)*i, 4-i,rssi_bar_height); + } + + // draw dynamic antenna and WiFi symbols + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%c", mDisplayData->RadioSymbol?'\x80':'\x84'); // NRF + printText(mFmtText, l_RSSI); + if (mDisplayData->MQTTSymbol) + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "\x89"); // MQTT else - snprintf(mFmtText, DISP_FMT_TEXT_LEN, "Inv.On: %d", mDisplayData->isProducing); - printText(mFmtText, l_Status); + snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%c", mDisplayData->WifiSymbol?'\x81':'\x85'); // Wifi connected + printText(mFmtText, l_RSSI, mDispWidth - 6); mDisplay->sendBuffer(); @@ -90,7 +135,6 @@ class DisplayMono84X48 : public DisplayMono { } private: - uint16_t mDispWidth; enum _dispLine { // start page l_Website = 0, @@ -102,6 +146,8 @@ class DisplayMono84X48 : public DisplayMono { l_TotalPower = 2, l_YieldDay = 3, l_YieldTotal = 4, + // run page - rssi bar symbols + l_RSSI = 4, // End l_MAX_LINES = 5, }; @@ -112,7 +158,7 @@ class DisplayMono84X48 : public DisplayMono { uint8_t asc, dsc; do { - setFont(i); + setLineFont(i); asc = mDisplay->getAscent(); yOff += asc; mLineYOffsets[i] = yOff; @@ -124,19 +170,23 @@ class DisplayMono84X48 : public DisplayMono { } while(l_MAX_LINES>i); } - inline void setFont(uint8_t line) { + inline void setLineFont(uint8_t line) { if ((line == l_TotalPower) || (line == l_Ahoy)) mDisplay->setFont(u8g2_font_logisoso16_tr); else - mDisplay->setFont(u8g2_font_5x8_tr); + mDisplay->setFont(u8g2_font_5x8_symbols_ahoy); } - void printText(const char *text, uint8_t line) { + void printText(const char *text, uint8_t line, uint8_t col=0) { uint8_t dispX; - setFont(line); - dispX = (mDispWidth - mDisplay->getStrWidth(text)) / 2; // center text - dispX += (mEnScreenSaver) ? (mExtra % 7) : 0; + + setLineFont(line); + if (0xff == col) + dispX = (mDispWidth - mDisplay->getStrWidth(text)) / 2; // center text + else + dispX = col; mDisplay->drawStr(dispX, mLineYOffsets[line], text); } }; + diff --git a/src/plugins/Display/Display_data.h b/src/plugins/Display/Display_data.h index 81496579..32525bd4 100644 --- a/src/plugins/Display/Display_data.h +++ b/src/plugins/Display/Display_data.h @@ -5,16 +5,18 @@ struct DisplayData { const char *version=nullptr; - float totalPower=0.0f; - float totalYieldDay=0.0f; - float totalYieldTotal=0.0f; - uint32_t utcTs=0; - uint8_t isProducing=0; - int8_t wifiRSSI=SCHAR_MIN; - bool showRadioSymbol = false; - bool WiFiSymbol = false; - bool RadioSymbol = false; - IPAddress ipAddress; + float totalPower=0.0f; // indicate current power (W) + float totalYieldDay=0.0f; // indicate day yield (W) + float totalYieldTotal=0.0f; // indicate total yield (W) + uint32_t utcTs=0; // indicate absolute timestamp (utc unix time). 0 = time is not synchonized + uint8_t nrProducing=0; // indicate number of producing inverters + uint8_t nrSleeping=0; // indicate number of sleeping inverters + bool WifiSymbol = false; // indicate if WiFi is connected + bool RadioSymbol = false; // indicate if radio module is connecting and working + bool MQTTSymbol = false; // indicate if MQTT is connected + int8_t WifiRSSI=SCHAR_MIN; // indicate RSSI value for WiFi + int8_t RadioRSSI=SCHAR_MIN; // indicate RSSI value for radio + IPAddress ipAddress; // indicate ip adress of ahoy }; #endif /*__DISPLAY_DATA__*/ diff --git a/tools/fonts/Fony/Fony.exe b/tools/fonts/Fony/Fony.exe new file mode 100644 index 00000000..201597a7 Binary files /dev/null and b/tools/fonts/Fony/Fony.exe differ diff --git a/tools/fonts/Fony/bugreport.txt b/tools/fonts/Fony/bugreport.txt new file mode 100644 index 00000000..b2a70535 --- /dev/null +++ b/tools/fonts/Fony/bugreport.txt @@ -0,0 +1,117 @@ +date/time : 2023-08-16, 18:26:15, 482ms +computer name : ADAM +user name : Mandi +registered owner : Mandi +operating system : Windows NT New x64 build 9200 +system language : German +system up time : 5 days 11 hours +program up time : 53 seconds +processors : 4x Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz +physical memory : 2590/8076 MB (free/total) +free disk space : (C:) 8,68 GB +display mode : 1920x1080, 32 bit +process id : $2594 +allocated memory : 89,69 MB +executable : Fony.exe +exec. date/time : 2013-07-26 14:53 +version : 1.4.4.0 +compiled with : Delphi 2010 +madExcept version : 3.0l +Fony.exe.mad : $00027f1c, $5ec042fa, $52ce3375 +callstack crc : $995e12b8, $c17583ff, $c17583ff +count : 3 +exception number : 1 +exception class : EStringListError +exception message : List index out of bounds (22851). + +main thread ($47fc): +0048fd79 +01d Fony.exe segment%32 public%3422 +00699a7c +190 Fony.exe segment%226 public%14304 +004983d3 +00f Fony.exe segment%32 public%3750 +00527ae5 +031 Fony.exe segment%66 public%6729 +00528830 +050 Fony.exe segment%66 public%6787 +00498297 +013 Fony.exe segment%32 public%3739 +0056db61 +085 Fony.exe segment%83 public%8192 +00580ea9 +015 Fony.exe segment%85 public%8649 +0056da66 +0b2 Fony.exe segment%83 public%8190 +00498a80 +014 Fony.exe segment%32 public%3772 +771d5bfb +00b user32.dll DispatchMessageW +0053b85d +11d Fony.exe segment%67 public%7204 +0053b8a2 +00a Fony.exe segment%67 public%7206 +0053bbcd +0c9 Fony.exe segment%67 public%7211 +006a9d16 +136 Fony.exe segment%349 public%14518 +754100c7 +017 KERNEL32.DLL BaseThreadInitThunk + +thread $15f8: +76288e83 +93 KERNELBASE.dll WaitForSingleObjectEx +76288c62 +92 KERNELBASE.dll GetOverlappedResult +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $2fc0: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $3d8: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $49fc: +76292fed +fd KERNELBASE.dll WaitForMultipleObjectsEx +0045f435 +0d Fony.exe segment%23 public%2294 +0045f49f +37 Fony.exe segment%23 public%2295 +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk +>> created by main thread ($47fc) at: +76670ef1 +00 combase.dll + +thread $3628: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $2ad8: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $130c: +0045f435 +0d Fony.exe segment%23 public%2294 +0045f49f +37 Fony.exe segment%23 public%2295 +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk +>> created by main thread ($47fc) at: +76670ef1 +00 combase.dll + +thread $2ef8: +771dc517 +47 user32.dll MsgWaitForMultipleObjectsEx +0045f435 +0d Fony.exe segment%23 public%2294 +0045f49f +37 Fony.exe segment%23 public%2295 +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk +>> created by thread $2fc0 at: +7647c623 +00 shcore.dll + +thread $2888: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $342c: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $313c: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $2cb4: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $940: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $2824: +762b28cd +3d KERNELBASE.dll ConnectNamedPipe +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $1f7c: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $f90: +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk + +thread $588: +76292fed +fd KERNELBASE.dll WaitForMultipleObjectsEx +0045f435 +0d Fony.exe segment%23 public%2294 +0045f49f +37 Fony.exe segment%23 public%2295 +754100c7 +17 KERNEL32.DLL BaseThreadInitThunk +>> created by thread $130c at: +76670ef1 +00 combase.dll + diff --git a/tools/fonts/Fony/changes.txt b/tools/fonts/Fony/changes.txt new file mode 100644 index 00000000..4150e50d --- /dev/null +++ b/tools/fonts/Fony/changes.txt @@ -0,0 +1,187 @@ +Latest changes: +----------------------------------------------------------------------------- +1.4.7 (2013-07-26) + + * Fixed pasting glyph images from clipboard (glyphs were stretched). + * Added setting to change the default contents of the font preview box. + * Added button to the font preview box to revert to the default contents. + * The text contents of the font preview box is now remembered. +----------------------------------------------------------------------------- +1.4.6 (2012-12-02) + + * Fixed Amiga bitmap font import. +----------------------------------------------------------------------------- +1.4.5 (2012-01-31) + + * TTF Import now sports a progress bar, improved baseline detection and + improved import speed. +----------------------------------------------------------------------------- +1.4.4 (2012-01-27) + + * Fixed BDF export, which was broken due to compiler upgrade. + * Updated version resource. +----------------------------------------------------------------------------- +1.4.3 (2011-11-18) + + * Fixed a bug introduced in 1.4.1.0a where font file handling did not work + correctly in some locales, rendering Fony unusable. + * Corrected tabbing order in confirmation dialogs. +----------------------------------------------------------------------------- +1.4.2 (2011-09-27) + + * Font Properties shows the point size of the font. + * Got rid of "undo storage not initialized" errors. + * Updated Russian and Finnish translations. (Thanks aleks) + * GUI maintenance, fixed web URLs to point to the new site at hukka.ncn.fi. +----------------------------------------------------------------------------- +1.4.1.0b (2010-04-13) + + * Fixed the drawing tools broken in previous release. + * Small UI fixes. + * Quick fix for language translations. + + WARNINGS: + * Undo/redo might have some bugs left. + * There may be some unknown bugs introduced due to compiler upgrade. +----------------------------------------------------------------------------- +1.4.1.0a (2010-04-11) + + * Multi-level undo/redo. + * Fixed binary data export. + * Small performance/overall improvements. + * Internal changes. + * Upgraded to Delphi 2010. +----------------------------------------------------------------------------- +test 2009-11-05 + + * Raw binary data export. + * Fixed Bitmap Font Writer import, which had mysteriously ceased working + at some point, plus added ability to import 'invalid' BFW fonts. + * Possibly some tweaks and fixes, I'm not sure. +----------------------------------------------------------------------------- +1.4.0.2 (2009-05-29) + + BUG FIXES: + * Pasting a small glyph into a larger one works properly now. + * Fony won't modify glyph sizes when pasting if the font is monospaced now. + * "Reset glyph" didn't reset the value in the glyph width edit box. + * Fixed wrapping in font preview box. +----------------------------------------------------------------------------- +1.4.0.1 (2009-05-17) + + IMPROVEMENTS: + * Back to a more sensible version scheme. + * Preview window settings are now saved. + * Japanese and Russian translations updated. + + BUG FIXES: + * Arrow keys in font preview memo would also browse glyphs. +----------------------------------------------------------------------------- +1.4.0 beta (2009-05-07) + + IMPROVEMENTS: + * User interface revamp - now most things are dockable toolbars. + (Customizable, too - see View->Customize Toolbars.) + * Glyph selector has a context menu now. + + BUG FIXES: + * "Open Installed Font" didn't display FNT files. + * Some Unicode strings were not being displayed properly in status bar. + * Saving to Windows' Fonts folder didn't install the font properly. + * "View->Square Pixels" setting wasn't saved. + * "Left mouse toggles pixel" was broken with previous update. +----------------------------------------------------------------------------- +1.4.0 alpha: + +2009-04-26: + * Finally found and fixed the tiny (and stupid) but fatal bug which caused + Fony to calculate invalid offsets for the FON header, causing havoc with + large font files. + * BDF Export dialog with the option to export glyphs without trimming off + padding from glyph edges, to get around faulty bounding box calculations + of some programs. + * BDF Import asks whether to preserve or crop glyphs with invalid width. + * Exporting a bitmap in Bitmap Font Writer format ignored range settings. + * Importing a TTF font made buttons in confirmation dialogs use said font. + * "Install font" should now install font permanently (on XP and below). + * Glyph ranges can now also be selected with the middle mouse button. + * Made the brush alpha-blended for a nicer look. + * Small improvements, nicer easter egg(?) + +2009-02-13: + * Made it possible to select a range of glyphs by depressing Shift while + clicking on the glyph list bar. Effects such as Invert, Mirror, Boldify + now apply to the range of glyphs selected, if applicable. If no range is + selected, they apply to either the current glyph or the whole font, + depending on whether Shift is pressed. + Works with copy/paste too, but not much error checking yet. + +2009-01-13: + * test/Fony.exe: Opening the Properties dialog for a font with multiple + VarFileInfo (or any other) blocks no longer results in a crash. + +2009-01-05: + * test/Fony.exe: Improvements to BDF importing + +2008-10-22: + * Line tool now too supports larger than 1 pixel brushes. + * Custom mouse cursors for the editor window. Hope they don't suck too much? + * "Boldify font" could set font width wrong on monospaced fonts. + * There was no way to convert a monospaced font to a variable pitch one + without accepting the "Crop Width" dialog. + * Fixed a graphical glitch with the brush after resizing glyph/font. + * Added links to Fony website and forum on the Help menu. + +2008-10-18: + * Finally implemented brushes bigger than 1px! (Not for the Line tool, yet.) + * Brush follows mouse. (Will be made optional later.) + * Custom bitmap importer: you can now import by either text color or + background color (anything in chosen color is text vs. anything in + chosen color is background). + * Fixed behaviour of Escape button in question/confirmation dialogs (it + triggered Yes/OK instead of Cancel). + +2008-10-17: + * "Boldify font" feature (remember to set font properties after using it) + * Further improved custom bitmap importer: pan the image by holding down + the middle mouse button; right-click to pick text color; displays glyph + bounds; made the dialog resizable and non-modal so you can modify the + glyphs while working; selection height was off by one pixel; zooming + centers in on selection; bounds checking. + +2008-10-16: + * Custom bitmap import; grab glyphs from any image with some text written in + a fixed-width font. (Create or load a fixed-width font before importing + and set its size to the size of the font in the image. Should be simple to + understand. Threshold is for use when all pixels of the text are not the + same exact color; good for JPEGs and such. Arrow keys fine tune position.) + +2008-05-27: + * View menu is now functional. + * Fixed tab order in some dialogs. + +2008-05-23: + * Oops, changes to Module name and Description strings were ignored. +----------------------------------------------------------------------------- +Changes since 1.3.6: (2008-05-22) + + ADDITIONS: + * Preliminary support for Version resources in FON. + * Install/uninstall font. + * Proper font cropping (Edit -> Crop Width). + * Drag'n'drop support. + * "Use old method to save Win3.x FNT files" for possibly(?) better + compatibility. (Win2.x format is always saved using this method.) + + IMPROVEMENTS: + * Hugely improved FNT/FON output; Windows 9x and Softy shouldn't choke on + Fony-generated fonts anymore. + * Moved glyph selector from editor window to main window. + * Uses proper dialog font on Windows 9x. + * Other user interface and cosmetics enhancements. + + BUG FIXES: + * Only first font resource was saved in FON. + * After a "Save As" to FNT, subsequent saves still saved as FON. + * Font charset combobox always defaulted to "Other:". +--------------------------------------------------------------------------EOF diff --git a/tools/fonts/bdfconv/bdfconv_2_22.exe b/tools/fonts/bdfconv/bdfconv_2_22.exe new file mode 100644 index 00000000..13b78058 Binary files /dev/null and b/tools/fonts/bdfconv/bdfconv_2_22.exe differ diff --git a/tools/fonts/fontconv.bat b/tools/fonts/fontconv.bat new file mode 100644 index 00000000..e1097adc --- /dev/null +++ b/tools/fonts/fontconv.bat @@ -0,0 +1,6 @@ +.\bdfconv\bdfconv_2_22.exe -v -f 1 -m "32-137" u8g2_font_5x8_symbols_ahoy.bdf -o u8g2_font_5x8_symbols_ahoy.c_ -n u8g2_font_5x8_symbols_ahoy + +.\bdfconv\bdfconv_2_22.exe -v -f 1 -m "65-75" u8g2_font_ncenB10_symbols10_ahoy.bdf -o u8g2_font_ncenB10_symbols10_ahoy.c_ -n u8g2_font_ncenB10_symbols10_ahoy +.\bdfconv\bdfconv_2_22.exe -v -f 1 -m "65-75" u8g2_font_ncenB08_symbols8_ahoy.bdf -o u8g2_font_ncenB08_symbols8_ahoy.c_ -n u8g2_font_ncenB08_symbols8_ahoy + +pause \ No newline at end of file diff --git a/tools/fonts/u8g2 font-sources.txt b/tools/fonts/u8g2 font-sources.txt new file mode 100644 index 00000000..2fb70bd3 --- /dev/null +++ b/tools/fonts/u8g2 font-sources.txt @@ -0,0 +1,11 @@ +Useful sources to edit u8g2 fonts: + +bdf font files for u8g2 font library: +https://github.com/olikraus/u8g2/tree/master/tools/font/bdf + +Tool to edit bdf files: +https://github.com/olikraus/u8g2/tree/master/tools/font/fony + +Tool to convert bdf font files to u8g2 source code: +https://github.com/olikraus/u8g2/tree/master/tools/font/bdfconv + diff --git a/tools/fonts/u8g2_font_5x8_symbols_ahoy.bdf b/tools/fonts/u8g2_font_5x8_symbols_ahoy.bdf new file mode 100644 index 00000000..82338aa1 --- /dev/null +++ b/tools/fonts/u8g2_font_5x8_symbols_ahoy.bdf @@ -0,0 +1,1328 @@ +STARTFONT 2.1 +COMMENT Exported by Fony v1.4.7 +FONT u8g2_font_5x8_symbols_ahoy +SIZE 8 75 75 +FONTBOUNDINGBOX 8 7 0 -1 +STARTPROPERTIES 6 +COPYRIGHT "Public domain font. Share and enjoy." +RESOLUTION_X 75 +RESOLUTION_Y 75 +FONT_ASCENT 7 +FONT_DESCENT 1 +DEFAULT_CHAR 0 +ENDPROPERTIES +CHARS 106 +STARTCHAR 032 +ENCODING 32 +SWIDTH 216 0 +DWIDTH 3 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR 033 +ENCODING 33 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 1 6 2 0 +BITMAP +80 +80 +80 +80 +00 +80 +ENDCHAR +STARTCHAR 034 +ENCODING 34 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 3 1 3 +BITMAP +A0 +A0 +A0 +ENDCHAR +STARTCHAR 035 +ENCODING 35 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +50 +50 +F8 +50 +F8 +50 +50 +ENDCHAR +STARTCHAR 036 +ENCODING 36 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +20 +70 +A0 +70 +28 +70 +20 +ENDCHAR +STARTCHAR 037 +ENCODING 37 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 5 1 1 +BITMAP +80 +A0 +40 +A0 +20 +ENDCHAR +STARTCHAR 038 +ENCODING 38 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +40 +A0 +A0 +40 +A0 +A0 +50 +ENDCHAR +STARTCHAR 039 +ENCODING 39 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 1 3 2 3 +BITMAP +80 +80 +80 +ENDCHAR +STARTCHAR 040 +ENCODING 40 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 2 6 1 0 +BITMAP +40 +80 +80 +80 +80 +40 +ENDCHAR +STARTCHAR 041 +ENCODING 41 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 2 6 1 0 +BITMAP +80 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR 042 +ENCODING 42 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 5 0 0 +BITMAP +90 +60 +F0 +60 +90 +ENDCHAR +STARTCHAR 043 +ENCODING 43 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +20 +20 +F8 +20 +20 +ENDCHAR +STARTCHAR 044 +ENCODING 44 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 3 1 -1 +BITMAP +60 +40 +80 +ENDCHAR +STARTCHAR 045 +ENCODING 45 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 1 0 2 +BITMAP +F0 +ENDCHAR +STARTCHAR 046 +ENCODING 46 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 2 2 1 0 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR 047 +ENCODING 47 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +10 +10 +20 +40 +80 +80 +ENDCHAR +STARTCHAR 048 +ENCODING 48 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +90 +B0 +D0 +90 +60 +ENDCHAR +STARTCHAR 049 +ENCODING 49 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 0 +BITMAP +40 +C0 +40 +40 +40 +E0 +ENDCHAR +STARTCHAR 050 +ENCODING 50 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +90 +10 +60 +80 +F0 +ENDCHAR +STARTCHAR 051 +ENCODING 51 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +20 +60 +10 +90 +60 +ENDCHAR +STARTCHAR 052 +ENCODING 52 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +20 +60 +A0 +F0 +20 +20 +ENDCHAR +STARTCHAR 053 +ENCODING 53 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +80 +E0 +10 +90 +60 +ENDCHAR +STARTCHAR 054 +ENCODING 54 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +80 +E0 +90 +90 +60 +ENDCHAR +STARTCHAR 055 +ENCODING 55 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +10 +20 +20 +40 +40 +ENDCHAR +STARTCHAR 056 +ENCODING 56 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +90 +60 +90 +90 +60 +ENDCHAR +STARTCHAR 057 +ENCODING 57 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +90 +90 +70 +10 +60 +ENDCHAR +STARTCHAR 058 +ENCODING 58 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 2 5 1 0 +BITMAP +C0 +C0 +00 +C0 +C0 +ENDCHAR +STARTCHAR 059 +ENCODING 59 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 -1 +BITMAP +60 +60 +00 +60 +40 +80 +ENDCHAR +STARTCHAR 060 +ENCODING 60 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 0 +BITMAP +20 +40 +80 +80 +40 +20 +ENDCHAR +STARTCHAR 061 +ENCODING 61 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 3 0 1 +BITMAP +F0 +00 +F0 +ENDCHAR +STARTCHAR 062 +ENCODING 62 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 0 +BITMAP +80 +40 +20 +20 +40 +80 +ENDCHAR +STARTCHAR 063 +ENCODING 63 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 0 +BITMAP +40 +A0 +20 +40 +00 +40 +ENDCHAR +STARTCHAR 064 +ENCODING 64 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +30 +48 +98 +A8 +A8 +90 +40 +30 +ENDCHAR +STARTCHAR 065 +ENCODING 65 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +90 +90 +F0 +90 +90 +ENDCHAR +STARTCHAR 066 +ENCODING 66 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +E0 +90 +E0 +90 +90 +E0 +ENDCHAR +STARTCHAR 067 +ENCODING 67 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +90 +80 +80 +90 +60 +ENDCHAR +STARTCHAR 068 +ENCODING 68 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +E0 +90 +90 +90 +90 +E0 +ENDCHAR +STARTCHAR 069 +ENCODING 69 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +80 +E0 +80 +80 +F0 +ENDCHAR +STARTCHAR 070 +ENCODING 70 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +80 +E0 +80 +80 +80 +ENDCHAR +STARTCHAR 071 +ENCODING 71 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +90 +80 +B0 +90 +60 +ENDCHAR +STARTCHAR 072 +ENCODING 72 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +90 +F0 +90 +90 +90 +ENDCHAR +STARTCHAR 073 +ENCODING 73 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 0 +BITMAP +E0 +40 +40 +40 +40 +E0 +ENDCHAR +STARTCHAR 074 +ENCODING 74 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +70 +20 +20 +20 +A0 +40 +ENDCHAR +STARTCHAR 075 +ENCODING 75 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +A0 +C0 +A0 +A0 +90 +ENDCHAR +STARTCHAR 076 +ENCODING 76 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +80 +80 +80 +80 +F0 +ENDCHAR +STARTCHAR 077 +ENCODING 77 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +F0 +F0 +90 +90 +90 +ENDCHAR +STARTCHAR 078 +ENCODING 78 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +D0 +F0 +B0 +90 +90 +ENDCHAR +STARTCHAR 079 +ENCODING 79 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +90 +90 +90 +90 +60 +ENDCHAR +STARTCHAR 080 +ENCODING 80 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +E0 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR 081 +ENCODING 81 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 7 0 -1 +BITMAP +60 +90 +90 +D0 +B0 +60 +10 +ENDCHAR +STARTCHAR 082 +ENCODING 82 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +E0 +90 +90 +E0 +90 +90 +ENDCHAR +STARTCHAR 083 +ENCODING 83 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +60 +90 +40 +20 +90 +60 +ENDCHAR +STARTCHAR 084 +ENCODING 84 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR 085 +ENCODING 85 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +90 +90 +90 +90 +60 +ENDCHAR +STARTCHAR 086 +ENCODING 86 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +90 +90 +90 +60 +60 +ENDCHAR +STARTCHAR 087 +ENCODING 87 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +90 +90 +F0 +F0 +90 +ENDCHAR +STARTCHAR 088 +ENCODING 88 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +90 +60 +60 +90 +90 +ENDCHAR +STARTCHAR 089 +ENCODING 89 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +88 +88 +50 +20 +20 +20 +ENDCHAR +STARTCHAR 090 +ENCODING 90 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +10 +20 +40 +80 +F0 +ENDCHAR +STARTCHAR 091 +ENCODING 91 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 0 +BITMAP +E0 +80 +80 +80 +80 +E0 +ENDCHAR +STARTCHAR 092 +ENCODING 92 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +80 +40 +20 +10 +10 +ENDCHAR +STARTCHAR 093 +ENCODING 93 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 0 +BITMAP +E0 +20 +20 +20 +20 +E0 +ENDCHAR +STARTCHAR 094 +ENCODING 94 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 2 1 4 +BITMAP +40 +A0 +ENDCHAR +STARTCHAR 095 +ENCODING 95 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 1 0 -1 +BITMAP +F0 +ENDCHAR +STARTCHAR 096 +ENCODING 96 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 2 2 1 4 +BITMAP +80 +40 +ENDCHAR +STARTCHAR 097 +ENCODING 97 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +70 +90 +90 +70 +ENDCHAR +STARTCHAR 098 +ENCODING 98 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +80 +E0 +90 +90 +E0 +ENDCHAR +STARTCHAR 099 +ENCODING 99 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 4 1 0 +BITMAP +60 +80 +80 +60 +ENDCHAR +STARTCHAR 100 +ENCODING 100 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +10 +10 +70 +90 +90 +70 +ENDCHAR +STARTCHAR 101 +ENCODING 101 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +60 +B0 +C0 +70 +ENDCHAR +STARTCHAR 102 +ENCODING 102 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +20 +50 +40 +E0 +40 +40 +ENDCHAR +STARTCHAR 103 +ENCODING 103 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 5 0 -1 +BITMAP +60 +90 +70 +10 +60 +ENDCHAR +STARTCHAR 104 +ENCODING 104 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +80 +E0 +90 +90 +90 +ENDCHAR +STARTCHAR 105 +ENCODING 105 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 0 +BITMAP +40 +00 +C0 +40 +40 +E0 +ENDCHAR +STARTCHAR 106 +ENCODING 106 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 7 1 -1 +BITMAP +20 +00 +20 +20 +20 +A0 +40 +ENDCHAR +STARTCHAR 107 +ENCODING 107 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +80 +90 +E0 +90 +90 +ENDCHAR +STARTCHAR 108 +ENCODING 108 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 6 1 0 +BITMAP +C0 +40 +40 +40 +40 +E0 +ENDCHAR +STARTCHAR 109 +ENCODING 109 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +D0 +A8 +A8 +A8 +ENDCHAR +STARTCHAR 110 +ENCODING 110 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +E0 +90 +90 +90 +ENDCHAR +STARTCHAR 111 +ENCODING 111 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +60 +90 +90 +60 +ENDCHAR +STARTCHAR 112 +ENCODING 112 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 5 0 -1 +BITMAP +E0 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR 113 +ENCODING 113 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 5 0 -1 +BITMAP +70 +90 +70 +10 +10 +ENDCHAR +STARTCHAR 114 +ENCODING 114 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +A0 +D0 +80 +80 +ENDCHAR +STARTCHAR 115 +ENCODING 115 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 4 1 0 +BITMAP +60 +C0 +20 +C0 +ENDCHAR +STARTCHAR 116 +ENCODING 116 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +40 +40 +E0 +40 +50 +20 +ENDCHAR +STARTCHAR 117 +ENCODING 117 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +90 +90 +90 +70 +ENDCHAR +STARTCHAR 118 +ENCODING 118 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 3 4 1 0 +BITMAP +A0 +A0 +A0 +40 +ENDCHAR +STARTCHAR 119 +ENCODING 119 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +88 +A8 +A8 +50 +ENDCHAR +STARTCHAR 120 +ENCODING 120 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +90 +60 +60 +90 +ENDCHAR +STARTCHAR 121 +ENCODING 121 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 5 0 -1 +BITMAP +90 +90 +70 +90 +60 +ENDCHAR +STARTCHAR 122 +ENCODING 122 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +F0 +20 +40 +F0 +ENDCHAR +STARTCHAR 123 +ENCODING 123 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +30 +40 +20 +C0 +20 +40 +30 +ENDCHAR +STARTCHAR 124 +ENCODING 124 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 1 6 2 0 +BITMAP +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR 125 +ENCODING 125 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +C0 +20 +40 +30 +40 +20 +C0 +ENDCHAR +STARTCHAR 126 +ENCODING 126 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 4 2 0 4 +BITMAP +50 +A0 +ENDCHAR +STARTCHAR 127 +ENCODING 127 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR 128 +ENCODING 128 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +A8 +A8 +70 +20 +20 +20 +ENDCHAR +STARTCHAR 129 +ENCODING 129 +SWIDTH 432 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +78 +84 +30 +48 +00 +30 +ENDCHAR +STARTCHAR 130 +ENCODING 130 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 8 6 0 0 +BITMAP +18 +24 +24 +42 +42 +81 +ENDCHAR +STARTCHAR 131 +ENCODING 131 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 7 7 0 -1 +BITMAP +FE +42 +20 +10 +20 +42 +FE +ENDCHAR +STARTCHAR 132 +ENCODING 132 +SWIDTH 360 0 +DWIDTH 5 0 +BBX 5 8 0 -1 +BITMAP +88 +50 +50 +20 +20 +50 +50 +88 +ENDCHAR +STARTCHAR 133 +ENCODING 133 +SWIDTH 432 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +84 +78 +CC +30 +78 +48 +78 +84 +ENDCHAR +STARTCHAR 134 +ENCODING 134 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 8 8 0 -1 +BITMAP +24 +3C +E7 +42 +42 +E7 +3C +24 +ENDCHAR +STARTCHAR 135 +ENCODING 135 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 7 7 0 0 +BITMAP +04 +06 +06 +0E +1E +FC +78 +ENDCHAR +STARTCHAR 136 +ENCODING 136 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 7 7 0 -1 +BITMAP +FE +AA +82 +B2 +92 +82 +FE +ENDCHAR +STARTCHAR 137 +ENCODING 137 +SWIDTH 504 0 +DWIDTH 7 0 +BBX 6 6 0 0 +BITMAP +E4 +10 +C8 +24 +94 +D4 +ENDCHAR +ENDFONT diff --git a/tools/fonts/u8g2_font_5x8_symbols_ahoy.c_ b/tools/fonts/u8g2_font_5x8_symbols_ahoy.c_ new file mode 100644 index 00000000..0f378f39 --- /dev/null +++ b/tools/fonts/u8g2_font_5x8_symbols_ahoy.c_ @@ -0,0 +1,40 @@ +/* + Fontname: u8g2_font_5x8_symbols_ahoy + Copyright: Public domain font. Share and enjoy. + Glyphs: 106/106 + BBX Build Mode: 0 +*/ +const uint8_t u8g2_font_5x8_symbols_ahoy[1052] U8G2_FONT_SECTION("u8g2_font_5x8_symbols_ahoy") = + "j\0\3\2\4\4\3\4\5\10\10\0\377\6\377\6\0\1\61\2b\4\3 \5\0\304\11!\7a\306" + "\212!\11\42\7\63\335\212\304\22#\16u\304\232R\222\14JePJI\2$\14u\304\252l\251m" + "I\262E\0%\10S\315\212(\351\24&\13t\304\232(i\252\64%\1'\6\61\336\212\1(\7b" + "\305\32\245))\11b\305\212(\251(\0*\13T\304\212(Q\206D\211\2+\12U\304\252\60\32\244" + "\60\2,\7\63\275\32\245\4-\6\24\324\212!.\6\42\305\212!/\10d\304\272R[\6\60\14d" + "\304\32%R\206DJ\24\0\61\10c\305\232Dj\31\62\13d\304\32%\312\22%\33\2\63\13d\304" + "\212!\212D)Q\0\64\13d\304\252H\251\14Q\226\0\65\12d\304\212A\33\245D\1\66\13d\304" + "\32%[\42)Q\0\67\13d\304\212!\213\262(\213\0\70\14d\304\32%J\224HJ\24\0\71\13" + "d\304\32%\222\222-Q\0:\10R\305\212!\32\2;\10c\275\32\243R\2<\10c\305\252\244\224" + "\25=\10\64\314\212!\34\2>\11c\305\212\254\224\224\0?\11c\305\232\246$M\0@\15\205\274*" + ")\222\226DI\244\252\2A\12d\304\32%\222\206I\12B\14d\304\212%\32\222H\32\22\0C\12" + "d\304\32%\322J\211\2D\12d\304\212%r\32\22\0E\12d\304\212A[\262l\10F\12d\304" + "\212A[\262\32\0G\13d\304\32%\322\222)Q\0H\12d\304\212H\32&S\0I\10c\305\212" + "%j\31J\12d\304\232)\253\224\42\0K\13d\304\212HI\244\244S\0L\10d\304\212\254\333\20" + "M\12d\304\212h\70D\246\0N\12d\304\212h\31\226I\12O\12d\304\32%rJ\24\0P\13" + "d\304\212%\222\206$\313\0Q\12t\274\32%\222\26\307\0R\13d\304\212%\222\206$\222\2S\14" + "d\304\32%J\302$J\24\0T\11e\304\212A\12;\1U\11d\304\212\310S\242\0V\12d\304" + "\212\310)\221\24\0W\12d\304\212\310\64\34\242\0X\13d\304\212HJ$%\222\2Y\12e\304\212" + "LKja\11Z\12d\304\212!\213\332\206\0[\10c\305\212!j\32\134\10d\304\212,l\13]" + "\10c\305\212\251i\10^\6#\345\232\6_\6\24\274\212!`\6\42\345\212(a\11D\304\232!\222" + "\222\1b\13d\304\212,[\42iH\0c\7C\305\232)\23d\12d\304\272\312\20I\311\0e\11" + "D\304\32%\31\262\1f\12d\304\252Ji\312\42\0g\12T\274\32%J\266D\1h\12d\304\212" + ",[\42S\0i\10c\305\232P\252\14j\12s\275\252\64\212\224\12\0k\12d\304\212\254\64$\221" + "\24l\10c\305\12\251\313\0m\12E\304\12\245EI\224\2n\10D\304\212%\62\5o\11D\304\32" + "%\222\22\5p\12T\274\212%\32\222,\3q\11T\274\232!J\266\2r\11D\304\212$\261e\0" + "s\10C\305\232![\0t\13d\304\232,\232\262$J\0u\10D\304\212\310\224\14v\10C\305\212" + "\304R\1w\12E\304\212LI\224.\0x\11D\304\212(\221\224(y\13T\274\212HJ\206(Q" + "\0z\11D\304\212!*\15\1{\12t\304*%L\304(\24|\6a\306\212\3}\13t\304\12\61" + "\12\225\60\221\0~\10$\344\232DI\0\5\0\304\12\200\13u\274\212K\242T\266\260\4\201\14f" + "D\233!\11#-\312!\11\202\15hD<\65\12\243,\214\302$\16\203\15w<\214C\22F\71\220" + "\26\207A\204\16\205\274\212,)%Y\230%QR\13\205\17\206<\213\60\31\22\311\66D\245!\11\3" + "\206\20\210<\254\342\20]\302(L\246C\30E\0\207\15wD\334X\25\267\341\20\15\21\0\210\16w" + "<\214\203RQ\25I\212\324a\20\211\15f\304\213)\213\244,\222\222\245\0\0\0\0"; diff --git a/tools/fonts/u8g2_font_5x8_symbols_ahoy.fon b/tools/fonts/u8g2_font_5x8_symbols_ahoy.fon new file mode 100644 index 00000000..891ea689 Binary files /dev/null and b/tools/fonts/u8g2_font_5x8_symbols_ahoy.fon differ diff --git a/tools/fonts/u8g2_font_ncenB08_symbols8_ahoy.bdf b/tools/fonts/u8g2_font_ncenB08_symbols8_ahoy.bdf new file mode 100644 index 00000000..f5ed551e --- /dev/null +++ b/tools/fonts/u8g2_font_ncenB08_symbols8_ahoy.bdf @@ -0,0 +1,166 @@ +STARTFONT 2.1 +COMMENT Exported by Fony v1.4.7 +FONT u8g2_font_ncenB08_symbols8_ahoy +SIZE 12 100 100 +FONTBOUNDINGBOX 9 11 0 -2 +STARTPROPERTIES 6 +COPYRIGHT "" +RESOLUTION_X 100 +RESOLUTION_Y 100 +FONT_ASCENT 10 +FONT_DESCENT 2 +DEFAULT_CHAR 0 +ENDPROPERTIES +CHARS 11 +STARTCHAR 065 +ENCODING 65 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 7 8 0 0 +BITMAP +FE +92 +D6 +38 +10 +10 +10 +10 +ENDCHAR +STARTCHAR 066 +ENCODING 66 +SWIDTH 648 0 +DWIDTH 9 0 +BBX 8 9 1 0 +BITMAP +3C +42 +99 +24 +42 +18 +24 +00 +18 +ENDCHAR +STARTCHAR 067 +ENCODING 67 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 8 8 0 0 +BITMAP +18 +24 +24 +42 +42 +42 +42 +81 +ENDCHAR +STARTCHAR 068 +ENCODING 68 +SWIDTH 648 0 +DWIDTH 9 0 +BBX 8 8 0 0 +BITMAP +FF +41 +20 +10 +10 +20 +41 +FF +ENDCHAR +STARTCHAR 069 +ENCODING 69 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 7 8 0 0 +BITMAP +FE +D6 +FE +38 +10 +38 +54 +92 +ENDCHAR +STARTCHAR 070 +ENCODING 70 +SWIDTH 648 0 +DWIDTH 9 0 +BBX 8 9 1 0 +BITMAP +BD +42 +BD +3C +5A +18 +24 +42 +99 +ENDCHAR +STARTCHAR 071 +ENCODING 71 +SWIDTH 648 0 +DWIDTH 9 0 +BBX 8 8 0 0 +BITMAP +24 +3C +E7 +42 +42 +E7 +3C +24 +ENDCHAR +STARTCHAR 072 +ENCODING 72 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 7 7 0 1 +BITMAP +04 +06 +06 +0E +1E +FC +78 +ENDCHAR +STARTCHAR 073 +ENCODING 73 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 7 9 0 0 +BITMAP +44 +FE +82 +92 +B2 +92 +92 +82 +FE +ENDCHAR +STARTCHAR 074 +ENCODING 74 +SWIDTH 504 0 +DWIDTH 7 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR 075 +ENCODING 75 +SWIDTH 648 0 +DWIDTH 9 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +ENDFONT diff --git a/tools/fonts/u8g2_font_ncenB08_symbols8_ahoy.c_ b/tools/fonts/u8g2_font_ncenB08_symbols8_ahoy.c_ new file mode 100644 index 00000000..bc237bc2 --- /dev/null +++ b/tools/fonts/u8g2_font_ncenB08_symbols8_ahoy.c_ @@ -0,0 +1,13 @@ +/* + Fontname: u8g2_font_ncenB08_symbols8_ahoy + Copyright: + Glyphs: 11/11 + BBX Build Mode: 0 +*/ +const uint8_t u8g2_font_ncenB08_symbols8_ahoy[173] U8G2_FONT_SECTION("u8g2_font_ncenB08_symbols8_ahoy") = + "\13\0\3\2\4\4\2\2\5\11\11\0\0\10\0\10\0\0\0\0\0\0\224A\14\207\212q\220\242%\221" + "\326\270\15B\20\230\233\65da\22Ima\250F\71\254\1C\20\210\212\247Fa\224\205Q\30\205Q" + "\230\304\1D\16\210\232qP\322(Gr \256\16\7E\15\207\212\361\222\14\247\65\335\222\246\2F\25" + "\230\233\221\14I\61I\206$\32\262D\11\325(\13\223H\12G\17\210\232U\34\242K\30\205\311t\10" + "\243\10H\14w\216\33\253\342\66\34\242!\2I\21\227\212\223%\303\240J\221\42I\221\24\251\303 J" + "\5\0z\1K\5\0\232\1\0\0\0"; diff --git a/tools/fonts/u8g2_font_ncenB08_symbols8_ahoy.fon b/tools/fonts/u8g2_font_ncenB08_symbols8_ahoy.fon new file mode 100644 index 00000000..e28b929f Binary files /dev/null and b/tools/fonts/u8g2_font_ncenB08_symbols8_ahoy.fon differ diff --git a/tools/fonts/u8g2_font_ncenB10_symbols10_ahoy.bdf b/tools/fonts/u8g2_font_ncenB10_symbols10_ahoy.bdf new file mode 100644 index 00000000..8fb61063 --- /dev/null +++ b/tools/fonts/u8g2_font_ncenB10_symbols10_ahoy.bdf @@ -0,0 +1,188 @@ +STARTFONT 2.1 +COMMENT Exported by Fony v1.4.7 +FONT u8g2_font_symbols10_ahoy +SIZE 16 100 100 +FONTBOUNDINGBOX 12 15 0 -3 +STARTPROPERTIES 6 +COPYRIGHT "" +RESOLUTION_X 100 +RESOLUTION_Y 100 +FONT_ASCENT 13 +FONT_DESCENT 3 +DEFAULT_CHAR 0 +ENDPROPERTIES +CHARS 11 +STARTCHAR 065 +ENCODING 65 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 7 11 0 0 +BITMAP +FE +92 +92 +54 +38 +10 +10 +10 +10 +10 +10 +ENDCHAR +STARTCHAR 066 +ENCODING 66 +SWIDTH 648 0 +DWIDTH 9 0 +BBX 8 9 0 1 +BITMAP +3C +42 +99 +24 +42 +18 +24 +00 +18 +ENDCHAR +STARTCHAR 067 +ENCODING 67 +SWIDTH 792 0 +DWIDTH 11 0 +BBX 10 11 0 0 +BITMAP +0C00 +1200 +2100 +2100 +2100 +2180 +4080 +4080 +4080 +4080 +8040 +ENDCHAR +STARTCHAR 068 +ENCODING 68 +SWIDTH 720 0 +DWIDTH 10 0 +BBX 9 11 0 0 +BITMAP +FF80 +6080 +3000 +1800 +0C00 +0C00 +1800 +3000 +6000 +C080 +FF80 +ENDCHAR +STARTCHAR 069 +ENCODING 69 +SWIDTH 576 0 +DWIDTH 8 0 +BBX 7 11 0 0 +BITMAP +FE +D6 +D6 +7C +38 +10 +38 +38 +54 +54 +92 +ENDCHAR +STARTCHAR 070 +ENCODING 70 +SWIDTH 648 0 +DWIDTH 9 0 +BBX 8 10 1 0 +BITMAP +BD +42 +BD +24 +5A +18 +24 +24 +5A +81 +ENDCHAR +STARTCHAR 071 +ENCODING 71 +SWIDTH 864 0 +DWIDTH 12 0 +BBX 11 11 0 0 +BITMAP +1100 +1100 +0E00 +D160 +2080 +2080 +2080 +D160 +0E00 +1100 +1100 +ENDCHAR +STARTCHAR 072 +ENCODING 72 +SWIDTH 792 0 +DWIDTH 11 0 +BBX 10 11 0 0 +BITMAP +0080 +0080 +00C0 +00C0 +01C0 +01C0 +03C0 +0780 +1F80 +FF00 +3C00 +ENDCHAR +STARTCHAR 073 +ENCODING 73 +SWIDTH 720 0 +DWIDTH 10 0 +BBX 9 11 0 0 +BITMAP +DD80 +FF80 +8080 +8880 +9880 +8880 +8880 +8880 +8880 +8080 +FF80 +ENDCHAR +STARTCHAR 074 +ENCODING 74 +SWIDTH 648 0 +DWIDTH 9 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR 075 +ENCODING 75 +SWIDTH 648 0 +DWIDTH 9 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +ENDFONT diff --git a/tools/fonts/u8g2_font_ncenB10_symbols10_ahoy.c_ b/tools/fonts/u8g2_font_ncenB10_symbols10_ahoy.c_ new file mode 100644 index 00000000..45d3979e --- /dev/null +++ b/tools/fonts/u8g2_font_ncenB10_symbols10_ahoy.c_ @@ -0,0 +1,14 @@ +/* + Fontname: u8g2_font_symbols10_ahoy + Copyright: + Glyphs: 11/11 + BBX Build Mode: 0 +*/ +const uint8_t u8g2_font_ncenB10_symbols10_ahoy[207] U8G2_FONT_SECTION("u8g2_font_ncenB10_symbols10_ahoy") = + "\13\0\3\2\4\4\2\2\5\13\13\0\0\13\0\13\0\0\0\0\0\0\266A\15\267\212q\220\42\251\322" + "\266\306\275\1B\20\230\236\65da\22Ima\250F\71\254\1C\23\272\272\251\3Q\32\366Q\212\243" + "\70\212\243\70\311\221\0D\20\271\252\361\242F:\242#: {\36\16\1E\22\267\212\361\222\14I\242" + "\14\332\232\216[RJ\232\12F\25\250\233\221\14I\61I\206$\252%J\250Fa\224%J\71G\30" + "\273\312W\316r`T\262DJ\303\64L#%K\304\35\310\342,\3H\27\272\272\217\344P\16\351\210" + "\16\354\300<\244C\70,\303 \16!\0I\24\271\252\241\34\336\1-\223\64-\323\62-\323\62\35x" + "\10J\5\0\232\1K\5\0\232\1\0\0\0"; diff --git a/tools/fonts/u8g2_font_ncenB10_symbols10_ahoy.fon b/tools/fonts/u8g2_font_ncenB10_symbols10_ahoy.fon new file mode 100644 index 00000000..8163a65b Binary files /dev/null and b/tools/fonts/u8g2_font_ncenB10_symbols10_ahoy.fon differ diff --git a/tools/fonts/used_fonts.txt b/tools/fonts/used_fonts.txt new file mode 100644 index 00000000..05de5bfd --- /dev/null +++ b/tools/fonts/used_fonts.txt @@ -0,0 +1,16 @@ +Display_Mono_64x48: + u8g2_font_fur11_tr + u8g2_font_6x10_tf + u8g2_font_4x6_tr + +Display_Mono_128x32: + u8g2_font_9x15_tr + u8g2_font_tom_thumb_4x6_tr + +Display_Mono_84x48: + u8g2_font_5x8_symbols_ahoy + u8g2_font_logisoso16_tr + +Display_Mono_128x64: + u8g2_font_ncenB08_symbols8_ahoy + u8g2_font_ncenB10_symbols10_ahoy \ No newline at end of file