change TFT display lib
This commit is contained in:
parent
67350647c1
commit
0519bdc81d
@ -9,8 +9,10 @@
|
|||||||
|
|
||||||
#if (HAS_DISPLAY) == 1
|
#if (HAS_DISPLAY) == 1
|
||||||
#include <OneBitDisplay.h>
|
#include <OneBitDisplay.h>
|
||||||
|
extern ONE_BIT_DISPLAY *dp;
|
||||||
#elif (HAS_DISPLAY) == 2
|
#elif (HAS_DISPLAY) == 2
|
||||||
#include <TFT_eSPI.h>
|
#include <TFT_eSPI.h>
|
||||||
|
extern TFT_eSPI *dp;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DISPLAY_PAGES (7) // number of paxcounter display pages
|
#define DISPLAY_PAGES (7) // number of paxcounter display pages
|
||||||
@ -22,7 +24,6 @@
|
|||||||
#define MY_FONT_NORMAL FONT_8x8
|
#define MY_FONT_NORMAL FONT_8x8
|
||||||
#define MY_FONT_LARGE FONT_16x32
|
#define MY_FONT_LARGE FONT_16x32
|
||||||
#define MY_FONT_STRETCHED FONT_12x16
|
#define MY_FONT_STRETCHED FONT_12x16
|
||||||
|
|
||||||
#define MY_DISPLAY_FIRSTLINE 30
|
#define MY_DISPLAY_FIRSTLINE 30
|
||||||
|
|
||||||
#ifndef MY_DISPLAY_RST
|
#ifndef MY_DISPLAY_RST
|
||||||
@ -49,18 +50,21 @@
|
|||||||
// settings for TFT display library
|
// settings for TFT display library
|
||||||
#elif (HAS_DISPLAY == 2)
|
#elif (HAS_DISPLAY == 2)
|
||||||
|
|
||||||
#define MY_FONT_SMALL 1
|
#define MY_FONT_SMALL 2
|
||||||
#define MY_FONT_NORMAL 2
|
#define MY_FONT_NORMAL 2
|
||||||
#define MY_FONT_LARGE 4
|
#define MY_FONT_LARGE 2
|
||||||
#define MY_FONT_STRETCHED 6
|
#define MY_FONT_STRETCHED 2
|
||||||
|
|
||||||
#define MY_DISPLAY_FIRSTLINE 30
|
#define MY_DISPLAY_FIRSTLINE 30
|
||||||
|
|
||||||
|
#ifndef TFT_FREQUENCY
|
||||||
|
#define TFT_FREQUENCY 400000L
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MY_DISPLAY_FGCOLOR
|
#ifndef MY_DISPLAY_FGCOLOR
|
||||||
#define MY_DISPLAY_FGCOLOR TFT_WHITE
|
#define MY_DISPLAY_FGCOLOR 0xFFFF // TFT_WHITE
|
||||||
#endif
|
#endif
|
||||||
#ifndef MY_DISPLAY_BGCOLOR
|
#ifndef MY_DISPLAY_BGCOLOR
|
||||||
#define MY_DISPLAY_BGCOLOR TFT_BLACK
|
#define MY_DISPLAY_BGCOLOR 0x0000 // TFT_BLACK
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef TOUCH_CS
|
#ifndef TOUCH_CS
|
||||||
|
@ -46,7 +46,7 @@ description = Paxcounter is a device for metering passenger flows in realtime. I
|
|||||||
|
|
||||||
[common]
|
[common]
|
||||||
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
||||||
release_version = 3.3.0
|
release_version = 3.3.1
|
||||||
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
||||||
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
||||||
debug_level = 3
|
debug_level = 3
|
||||||
@ -54,17 +54,18 @@ extra_scripts = pre:build.py
|
|||||||
otakeyfile = ota.conf
|
otakeyfile = ota.conf
|
||||||
lorakeyfile = loraconf.h
|
lorakeyfile = loraconf.h
|
||||||
lmicconfigfile = lmic_config.h
|
lmicconfigfile = lmic_config.h
|
||||||
platform_espressif32 = espressif32@5.0.0
|
platform_espressif32 = espressif32@5.1.0
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
upload_speed = 115200 ; set by build.py and taken from hal file
|
upload_speed = 115200 ; set by build.py and taken from hal file
|
||||||
display_library = ; set by build.py and taken from hal file
|
display_library = ; set by build.py and taken from hal file
|
||||||
lib_deps_lora =
|
lib_deps_lora =
|
||||||
mcci-catena/MCCI LoRaWAN LMIC library @ ^4.1.1
|
mcci-catena/MCCI LoRaWAN LMIC library @ ^4.1.1
|
||||||
lib_deps_display =
|
lib_deps_display =
|
||||||
https://github.com/bitbank2/OneBitDisplay#8d4ab34
|
https://github.com/bitbank2/OneBitDisplay.git
|
||||||
;bitbank2/OneBitDisplay @ ^2.1.0
|
;bitbank2/OneBitDisplay @ ^2.1.0
|
||||||
|
https://github.com/bitbank2/bb_spi_lcd.git
|
||||||
|
;bitbank2/bb_spi_lcd @ ^2.3.0
|
||||||
ricmoo/QRCode @ ^0.0.1
|
ricmoo/QRCode @ ^0.0.1
|
||||||
bodmer/TFT_eSPI @ ^2.3.84
|
|
||||||
lib_deps_ledmatrix =
|
lib_deps_ledmatrix =
|
||||||
seeed-studio/Ultrathin_LED_Matrix @ ^1.0.0
|
seeed-studio/Ultrathin_LED_Matrix @ ^1.0.0
|
||||||
lib_deps_rgbled =
|
lib_deps_rgbled =
|
||||||
|
168
src/display.cpp
168
src/display.cpp
@ -13,7 +13,7 @@ Display-Mask (128 x 64 pixel):
|
|||||||
2|
|
2|
|
||||||
3|WIFI:abcde BLTH:abcde SMALL
|
3|WIFI:abcde BLTH:abcde SMALL
|
||||||
4|Batt:abc% chan:ab SMALL
|
4|Batt:abc% chan:ab SMALL
|
||||||
5|RLIM:abcd Mem:abcdKB SMALL
|
5|RLIM:abcd Mem:abcdeKB SMALL
|
||||||
6|27.Feb 2019 20:27:00* SMALL
|
6|27.Feb 2019 20:27:00* SMALL
|
||||||
7|yyyyyyyyyyyyy xx SFab SMALL
|
7|yyyyyyyyyyyyy xx SFab SMALL
|
||||||
|
|
||||||
@ -49,60 +49,54 @@ static QRCode qrcode;
|
|||||||
#if (HAS_DISPLAY) == 1
|
#if (HAS_DISPLAY) == 1
|
||||||
static ONE_BIT_DISPLAY oled;
|
static ONE_BIT_DISPLAY oled;
|
||||||
#elif (HAS_DISPLAY) == 2
|
#elif (HAS_DISPLAY) == 2
|
||||||
static TFT_eSPI tft = TFT_eSPI(MY_DISPLAY_WIDTH, MY_DISPLAY_HEIGHT);
|
TFT_eSPI *dp = NULL;
|
||||||
#else
|
#else
|
||||||
#error Unknown display type specified in hal file
|
#error Unknown display type specified in hal file
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void dp_setup(int contrast) {
|
void dp_setup(int contrast) {
|
||||||
|
|
||||||
#if (HAS_DISPLAY) == 1 // I2C OLED
|
#if (HAS_DISPLAY) == 1 // I2C OLED
|
||||||
oled.setI2CPins(MY_DISPLAY_SDA, MY_DISPLAY_SCL, MY_DISPLAY_RST);
|
dp = new ONE_BIT_DISPLAY;
|
||||||
oled.setBitBang(false);
|
dp->setI2CPins(MY_DISPLAY_SDA, MY_DISPLAY_SCL, MY_DISPLAY_RST);
|
||||||
oled.I2Cbegin(OLED_TYPE, OLED_ADDR, OLED_FREQUENCY);
|
dp->setBitBang(false);
|
||||||
oled.allocBuffer(); // render all outputs to lib internal backbuffer
|
dp->I2Cbegin(OLED_TYPE, OLED_ADDR, OLED_FREQUENCY);
|
||||||
oled.setTextWrap(false);
|
dp->allocBuffer(); // render all outputs to lib internal backbuffer
|
||||||
oled.setRotation(
|
dp->setTextWrap(false);
|
||||||
|
dp->setRotation(
|
||||||
MY_DISPLAY_FLIP ? 2 : 0); // 0 = no rotation, 1 = 90°, 2 = 180°, 3 = 280°
|
MY_DISPLAY_FLIP ? 2 : 0); // 0 = no rotation, 1 = 90°, 2 = 180°, 3 = 280°
|
||||||
|
|
||||||
#elif (HAS_DISPLAY) == 2 // SPI TFT
|
#elif (HAS_DISPLAY) == 2 // SPI TFT
|
||||||
|
dp = new TFT_eSPI(MY_DISPLAY_WIDTH, MY_DISPLAY_HEIGHT);
|
||||||
tft.init();
|
dp->init();
|
||||||
tft.setRotation(MY_DISPLAY_FLIP ? 3 : 1);
|
dp->setRotation(MY_DISPLAY_FLIP ? 3 : 1);
|
||||||
tft.invertDisplay(MY_DISPLAY_INVERT ? true : false);
|
dp->invertDisplay(MY_DISPLAY_INVERT ? true : false);
|
||||||
tft.setTextColor(MY_DISPLAY_FGCOLOR, MY_DISPLAY_BGCOLOR);
|
dp->setTextColor(MY_DISPLAY_FGCOLOR, MY_DISPLAY_BGCOLOR);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// clear display
|
|
||||||
dp_clear();
|
dp_clear();
|
||||||
if (contrast)
|
if (contrast)
|
||||||
dp_contrast(contrast);
|
dp_contrast(contrast);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dp_init(bool verbose) {
|
void dp_init(bool verbose) {
|
||||||
|
|
||||||
dp_setup(DISPLAYCONTRAST);
|
dp_setup(DISPLAYCONTRAST);
|
||||||
|
|
||||||
if (verbose) {
|
|
||||||
|
|
||||||
// show startup screen
|
|
||||||
// to come -> display .bmp file with logo
|
|
||||||
|
|
||||||
// show chip information
|
// show chip information
|
||||||
|
if (verbose) {
|
||||||
#if (VERBOSE)
|
#if (VERBOSE)
|
||||||
esp_chip_info_t chip_info;
|
esp_chip_info_t chip_info;
|
||||||
esp_chip_info(&chip_info);
|
esp_chip_info(&chip_info);
|
||||||
|
|
||||||
dp_setFont(MY_FONT_NORMAL);
|
dp_setFont(MY_FONT_NORMAL);
|
||||||
dp_printf("** PAXCOUNTER **\r\n");
|
dp->printf("** PAXCOUNTER **\r\n");
|
||||||
dp_printf("Software v%s\r\n", PROGVERSION);
|
dp->printf("Software v%s\r\n", PROGVERSION);
|
||||||
dp_printf("ESP32 %d cores\r\n", chip_info.cores);
|
dp->printf("ESP32 %d cores\r\n", chip_info.cores);
|
||||||
dp_printf("Chip Rev.%d\r\n", chip_info.revision);
|
dp->printf("Chip Rev.%d\r\n", chip_info.revision);
|
||||||
dp_printf("WiFi%s%s\r\n", (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
|
dp->printf("WiFi%s%s\r\n",
|
||||||
|
(chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
|
||||||
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");
|
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");
|
||||||
dp_printf("%dMB %s Flash", spi_flash_get_chip_size() / (1024 * 1024),
|
dp->printf("%dMB %s Flash", spi_flash_get_chip_size() / (1024 * 1024),
|
||||||
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "int." : "ext.");
|
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "int." : "ext.");
|
||||||
|
|
||||||
// give user some time to read or take picture
|
// give user some time to read or take picture
|
||||||
@ -143,11 +137,15 @@ void dp_init(bool verbose) {
|
|||||||
} // verbose
|
} // verbose
|
||||||
|
|
||||||
dp_power(cfg.screenon); // set display off if disabled
|
dp_power(cfg.screenon); // set display off if disabled
|
||||||
|
|
||||||
} // dp_init
|
} // dp_init
|
||||||
|
|
||||||
void dp_refresh(bool nextPage) {
|
void dp_refresh(bool nextPage) {
|
||||||
|
|
||||||
|
struct count_payload_t count; // libpax count storage
|
||||||
|
static uint8_t DisplayPage = 0;
|
||||||
|
char timeState, strftime_buf[64];
|
||||||
|
time_t now;
|
||||||
|
struct tm timeinfo = {0};
|
||||||
#ifndef HAS_BUTTON
|
#ifndef HAS_BUTTON
|
||||||
static uint32_t framecounter = 0;
|
static uint32_t framecounter = 0;
|
||||||
#endif
|
#endif
|
||||||
@ -216,6 +214,11 @@ void dp_drawPage(bool nextpage) {
|
|||||||
// ---------- page 0: parameters overview ----------
|
// ---------- page 0: parameters overview ----------
|
||||||
case 0:
|
case 0:
|
||||||
|
|
||||||
|
// show pax
|
||||||
|
libpax_counter_count(&count);
|
||||||
|
dp_setFont(MY_FONT_LARGE);
|
||||||
|
dp->printf("%-8d", count.pax);
|
||||||
|
|
||||||
dp_setFont(MY_FONT_SMALL);
|
dp_setFont(MY_FONT_SMALL);
|
||||||
dp_setTextCursor();
|
dp_setTextCursor();
|
||||||
|
|
||||||
@ -224,22 +227,22 @@ void dp_drawPage(bool nextpage) {
|
|||||||
|
|
||||||
#if ((WIFICOUNTER) && (BLECOUNTER))
|
#if ((WIFICOUNTER) && (BLECOUNTER))
|
||||||
if (cfg.wifiscan)
|
if (cfg.wifiscan)
|
||||||
dp_printf("WIFI:%-5d", count.wifi_count);
|
dp->printf("WIFI:%-5d", count.wifi_count);
|
||||||
else
|
else
|
||||||
dp_printf("WIFI:off");
|
dp_printf("WIFI:off");
|
||||||
if (cfg.blescan)
|
if (cfg.blescan)
|
||||||
dp_printf("BLTH:%-5d", count.ble_count);
|
dp->printf("BLTH:%-5d", count.ble_count);
|
||||||
else
|
else
|
||||||
dp_printf(" BLTH:off");
|
dp_printf(" BLTH:off");
|
||||||
#elif ((WIFICOUNTER) && (!BLECOUNTER))
|
#elif ((WIFICOUNTER) && (!BLECOUNTER))
|
||||||
if (cfg.wifiscan)
|
if (cfg.wifiscan)
|
||||||
dp_printf("WIFI:%-5d", count.wifi_count);
|
dp->printf("WIFI:%-5d", count.wifi_count);
|
||||||
else
|
else
|
||||||
dp_printf("WIFI:off");
|
dp_printf("WIFI:off");
|
||||||
#elif ((!WIFICOUNTER) && (BLECOUNTER))
|
#elif ((!WIFICOUNTER) && (BLECOUNTER))
|
||||||
if (cfg.blescan)
|
if (cfg.blescan)
|
||||||
dp_printf("BLTH:%-5d", count.ble_count);
|
dp->printf("BLTH:%-5d", count.ble_count);
|
||||||
dp_printf("BLTH:off");
|
dp->printf("BLTH:off");
|
||||||
#else
|
#else
|
||||||
dp_printf("Sniffer disabled");
|
dp_printf("Sniffer disabled");
|
||||||
#endif
|
#endif
|
||||||
@ -259,8 +262,8 @@ void dp_drawPage(bool nextpage) {
|
|||||||
|
|
||||||
// line 5: RSSI limiter + free memory
|
// line 5: RSSI limiter + free memory
|
||||||
// RLIM:abcd Mem:abcdKB
|
// RLIM:abcd Mem:abcdKB
|
||||||
dp_printf(!cfg.rssilimit ? "RLIM:off " : "RLIM:%-4d", cfg.rssilimit);
|
dp->printf(!cfg.rssilimit ? "RLIM:off " : "RLIM:%-4d", cfg.rssilimit);
|
||||||
dp_printf(" Mem:%4dKB\r\n", getFreeRAM() / 1024);
|
dp->printf(" Mem:%4dKB\r\n", getFreeRAM() / 1024);
|
||||||
|
|
||||||
// line 6: time + date
|
// line 6: time + date
|
||||||
// Wed Jan 12 21:49:08 *
|
// Wed Jan 12 21:49:08 *
|
||||||
@ -308,14 +311,20 @@ void dp_drawPage(bool nextpage) {
|
|||||||
// 6|fUp:000000 fDn:000000
|
// 6|fUp:000000 fDn:000000
|
||||||
// 7|SNR:-0000 RSSI:-0000
|
// 7|SNR:-0000 RSSI:-0000
|
||||||
|
|
||||||
|
// show pax
|
||||||
|
libpax_counter_count(&count);
|
||||||
|
dp_setFont(MY_FONT_LARGE);
|
||||||
|
dp->printf("%-8d", count.pax);
|
||||||
|
|
||||||
dp_setFont(MY_FONT_SMALL);
|
dp_setFont(MY_FONT_SMALL);
|
||||||
dp_setTextCursor();
|
dp->setCursor(0, MY_DISPLAY_FIRSTLINE);
|
||||||
dp_printf("Net:%06X Pwr:%-2d\r\n", LMIC.netid & 0x001FFFFF, LMIC.radio_txpow);
|
dp->printf("Net:%06X Pwr:%-2d\r\n", LMIC.netid & 0x001FFFFF,
|
||||||
dp_printf("Dev:%08X DR:%1d\r\n", LMIC.devaddr, LMIC.datarate);
|
LMIC.radio_txpow);
|
||||||
dp_printf("ChMsk:%04X Nonce:%04X\r\n", LMIC.channelMap, LMIC.devNonce);
|
dp->printf("Dev:%08X DR:%1d\r\n", LMIC.devaddr, LMIC.datarate);
|
||||||
dp_printf("fUp:%-6d fDn:%-6d\r\n", LMIC.seqnoUp ? LMIC.seqnoUp - 1 : 0,
|
dp->printf("ChMsk:%04X Nonce:%04X\r\n", LMIC.channelMap, LMIC.devNonce);
|
||||||
|
dp->printf("fUp:%-6d fDn:%-6d\r\n", LMIC.seqnoUp ? LMIC.seqnoUp - 1 : 0,
|
||||||
LMIC.seqnoDn ? LMIC.seqnoDn - 1 : 0);
|
LMIC.seqnoDn ? LMIC.seqnoDn - 1 : 0);
|
||||||
dp_printf("SNR:%-5d RSSI:%-5d", (LMIC.snr + 2) / 4, LMIC.rssi);
|
dp->printf("SNR:%-5d RSSI:%-5d", (LMIC.snr + 2) / 4, LMIC.rssi);
|
||||||
|
|
||||||
dp_dump();
|
dp_dump();
|
||||||
break;
|
break;
|
||||||
@ -328,6 +337,11 @@ void dp_drawPage(bool nextpage) {
|
|||||||
|
|
||||||
#if (HAS_GPS)
|
#if (HAS_GPS)
|
||||||
|
|
||||||
|
// show pax
|
||||||
|
libpax_counter_count(&count);
|
||||||
|
dp_setFont(MY_FONT_LARGE);
|
||||||
|
dp->printf("%-8d", count.pax);
|
||||||
|
|
||||||
// show satellite status at bottom line
|
// show satellite status at bottom line
|
||||||
dp_setFont(MY_FONT_SMALL);
|
dp_setFont(MY_FONT_SMALL);
|
||||||
dp_setTextCursor(0, 56);
|
dp_setTextCursor(0, 56);
|
||||||
@ -379,7 +393,7 @@ void dp_drawPage(bool nextpage) {
|
|||||||
dp_setFont(MY_FONT_LARGE);
|
dp_setFont(MY_FONT_LARGE);
|
||||||
dp_printf("%.8s\r\n", strftime_buf);
|
dp_printf("%.8s\r\n", strftime_buf);
|
||||||
dp_setFont(MY_FONT_SMALL);
|
dp_setFont(MY_FONT_SMALL);
|
||||||
dp_printf("%21.1f", uptime() / 1000.0);
|
dp->printf("%21.1f", uptime() / 1000.0);
|
||||||
dp_dump();
|
dp_dump();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -416,91 +430,51 @@ void dp_setTextCursor(int x, int y) {
|
|||||||
|
|
||||||
void dp_setFont(int font, int inv) {
|
void dp_setFont(int font, int inv) {
|
||||||
|
|
||||||
#if (HAS_DISPLAY) == 1
|
|
||||||
// handle invers printing
|
// handle invers printing
|
||||||
if (inv)
|
if (inv)
|
||||||
oled.setTextColor(MY_DISPLAY_BGCOLOR, MY_DISPLAY_FGCOLOR);
|
oled.setTextColor(MY_DISPLAY_BGCOLOR, MY_DISPLAY_FGCOLOR);
|
||||||
else
|
else
|
||||||
oled.setTextColor(MY_DISPLAY_FGCOLOR, MY_DISPLAY_BGCOLOR);
|
dp->setTextColor(MY_DISPLAY_FGCOLOR, MY_DISPLAY_BGCOLOR);
|
||||||
|
|
||||||
|
#if (HAS_DISPLAY) == 1
|
||||||
// set desired font
|
// set desired font
|
||||||
oled.setFont(font);
|
dp->setFont(font);
|
||||||
|
|
||||||
#elif (HAS_DISPLAY) == 2
|
#elif (HAS_DISPLAY) == 2
|
||||||
// handle invers printing
|
|
||||||
if (inv)
|
|
||||||
tft.setTextColor(MY_DISPLAY_BGCOLOR, MY_DISPLAY_FGCOLOR);
|
|
||||||
else
|
|
||||||
tft.setTextColor(MY_DISPLAY_FGCOLOR, MY_DISPLAY_BGCOLOR);
|
|
||||||
|
|
||||||
// map desired oled font to tft font
|
// map desired oled font to tft font
|
||||||
switch (font) {
|
switch (font) {
|
||||||
case MY_FONT_STRETCHED: // 16x16 on OLED
|
case MY_FONT_STRETCHED: // 16x16 on OLED
|
||||||
case MY_FONT_LARGE: // 16x32 on OLED
|
case MY_FONT_LARGE: // 16x32 on OLED
|
||||||
tft.setTextFont(4); // 26px
|
dp->setTextFont(4); // 26px
|
||||||
break;
|
break;
|
||||||
case MY_FONT_SMALL: // 6x8 on OLED
|
case MY_FONT_SMALL: // 6x8 on OLED
|
||||||
case MY_FONT_NORMAL: // 8x8 on OLED
|
case MY_FONT_NORMAL: // 8x8 on OLED
|
||||||
default:
|
default:
|
||||||
tft.setTextFont(2); // 16px
|
dp->setTextFont(2); // 16px
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void dp_printf(const char *format, ...) {
|
|
||||||
char loc_buf[64];
|
|
||||||
char *temp = loc_buf;
|
|
||||||
va_list arg;
|
|
||||||
va_list copy;
|
|
||||||
va_start(arg, format);
|
|
||||||
va_copy(copy, arg);
|
|
||||||
int len = vsnprintf(temp, sizeof(loc_buf), format, copy);
|
|
||||||
va_end(copy);
|
|
||||||
if (len < 0) {
|
|
||||||
va_end(arg);
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
if (len >= sizeof(loc_buf)) {
|
|
||||||
temp = (char *)malloc(len + 1);
|
|
||||||
if (temp == NULL) {
|
|
||||||
va_end(arg);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
vsnprintf(temp, len + 1, format, arg);
|
|
||||||
}
|
|
||||||
va_end(arg);
|
|
||||||
#if (HAS_DISPLAY) == 1
|
|
||||||
oled.write(temp);
|
|
||||||
#elif (HAS_DISPLAY) == 2
|
|
||||||
tft.printf(temp);
|
|
||||||
#endif
|
|
||||||
if (temp != loc_buf) {
|
|
||||||
free(temp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void dp_dump(uint8_t *pBuffer) {
|
void dp_dump(uint8_t *pBuffer) {
|
||||||
#if (HAS_DISPLAY) == 1
|
|
||||||
if (pBuffer)
|
if (pBuffer)
|
||||||
memcpy(oled.getBuffer(), pBuffer, PLOTBUFFERSIZE);
|
memcpy(dp->getBuffer(), pBuffer, PLOTBUFFERSIZE);
|
||||||
oled.display();
|
dp->display();
|
||||||
#elif (HAS_DISPLAY) == 2
|
#elif (HAS_DISPLAY) == 2
|
||||||
if (pBuffer)
|
if (pBuffer)
|
||||||
tft.drawBitmap(0, 0, pBuffer, MY_DISPLAY_WIDTH, MY_DISPLAY_HEIGHT,
|
dp->drawBitmap(0, 0, pBuffer, MY_DISPLAY_WIDTH, MY_DISPLAY_HEIGHT,
|
||||||
MY_DISPLAY_FGCOLOR);
|
MY_DISPLAY_FGCOLOR);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void dp_clear(void) {
|
void dp_clear(void) {
|
||||||
#if (HAS_DISPLAY) == 1
|
#if (HAS_DISPLAY) == 1
|
||||||
oled.fillScreen(MY_DISPLAY_BGCOLOR);
|
dp->fillScreen(MY_DISPLAY_BGCOLOR);
|
||||||
oled.display();
|
dp->display();
|
||||||
#elif (HAS_DISPLAY) == 2
|
#elif (HAS_DISPLAY) == 2
|
||||||
tft.fillScreen(MY_DISPLAY_BGCOLOR);
|
dp->fillScreen(MY_DISPLAY_BGCOLOR);
|
||||||
#endif
|
#endif
|
||||||
dp_setTextCursor(0, 0);
|
dp->setCursor(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dp_contrast(uint8_t contrast) {
|
void dp_contrast(uint8_t contrast) {
|
||||||
@ -574,7 +548,6 @@ void dp_fillRect(uint16_t x, uint16_t y, uint16_t width, uint16_t height,
|
|||||||
|
|
||||||
int dp_drawPixel(uint8_t *buf, const uint16_t x, const uint16_t y,
|
int dp_drawPixel(uint8_t *buf, const uint16_t x, const uint16_t y,
|
||||||
const uint8_t dot) {
|
const uint8_t dot) {
|
||||||
|
|
||||||
if (x > MY_DISPLAY_WIDTH || y > MY_DISPLAY_HEIGHT)
|
if (x > MY_DISPLAY_WIDTH || y > MY_DISPLAY_HEIGHT)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -592,7 +565,6 @@ int dp_drawPixel(uint8_t *buf, const uint16_t x, const uint16_t y,
|
|||||||
|
|
||||||
void dp_scrollHorizontal(uint8_t *buf, const uint16_t width,
|
void dp_scrollHorizontal(uint8_t *buf, const uint16_t width,
|
||||||
const uint16_t height, bool left) {
|
const uint16_t height, bool left) {
|
||||||
|
|
||||||
uint16_t col, page, idx = 0;
|
uint16_t col, page, idx = 0;
|
||||||
|
|
||||||
for (page = 0; page < height / 8; page++) {
|
for (page = 0; page < height / 8; page++) {
|
||||||
@ -615,7 +587,6 @@ void dp_scrollHorizontal(uint8_t *buf, const uint16_t width,
|
|||||||
|
|
||||||
void dp_scrollVertical(uint8_t *buf, const uint16_t width,
|
void dp_scrollVertical(uint8_t *buf, const uint16_t width,
|
||||||
const uint16_t height, int offset) {
|
const uint16_t height, int offset) {
|
||||||
|
|
||||||
uint64_t buf_col;
|
uint64_t buf_col;
|
||||||
|
|
||||||
if (!offset)
|
if (!offset)
|
||||||
@ -638,7 +609,6 @@ void dp_scrollVertical(uint8_t *buf, const uint16_t width,
|
|||||||
// ------------- curve plotter -----------------
|
// ------------- curve plotter -----------------
|
||||||
|
|
||||||
void dp_plotCurve(uint16_t count, bool reset) {
|
void dp_plotCurve(uint16_t count, bool reset) {
|
||||||
|
|
||||||
static uint16_t last_count = 0, col = 0, row = 0;
|
static uint16_t last_count = 0, col = 0, row = 0;
|
||||||
uint16_t v_scroll = 0;
|
uint16_t v_scroll = 0;
|
||||||
|
|
||||||
|
@ -28,9 +28,6 @@
|
|||||||
#define CFG_sx1276_radio 1 // select LoRa chip
|
#define CFG_sx1276_radio 1 // select LoRa chip
|
||||||
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||||
|
|
||||||
#define HAS_DISPLAY 2 // TFT-LCD, support work in progess, not ready yet
|
|
||||||
//#define MY_DISPLAY_FLIP 1 // use if display is rotated
|
|
||||||
|
|
||||||
#define HAS_LED NOT_A_PIN // no on board LED (?)
|
#define HAS_LED NOT_A_PIN // no on board LED (?)
|
||||||
#define HAS_BUTTON (39) // on board button A
|
#define HAS_BUTTON (39) // on board button A
|
||||||
|
|
||||||
@ -44,38 +41,22 @@
|
|||||||
// GPS settings
|
// GPS settings
|
||||||
#define HAS_GPS 1 // use on board GPS
|
#define HAS_GPS 1 // use on board GPS
|
||||||
#define GPS_SERIAL 9600, SERIAL_8N1, RXD2, TXD2 // UBlox NEO 6M RX, TX
|
#define GPS_SERIAL 9600, SERIAL_8N1, RXD2, TXD2 // UBlox NEO 6M RX, TX
|
||||||
#define GPS_INT GPIO_NUM_35 // 30ns accurary timepulse, to be external wired on pcb: shorten R12!
|
#define GPS_INT
|
||||||
|
|
||||||
// Display Settings
|
// Display Settings
|
||||||
|
#define HAS_DISPLAY 2 // TFT-LCD
|
||||||
|
//#define MY_DISPLAY_FLIP 1 // use if display is rotated
|
||||||
#define MY_DISPLAY_WIDTH 320
|
#define MY_DISPLAY_WIDTH 320
|
||||||
#define MY_DISPLAY_HEIGHT 240
|
#define MY_DISPLAY_HEIGHT 240
|
||||||
#define MY_DISPLAY_INVERT 1
|
#define MY_DISPLAY_INVERT 1
|
||||||
|
#define TFT_TYPE LCD_ILI9341
|
||||||
// setting for M5 display
|
|
||||||
#define USER_SETUP_LOADED 1
|
|
||||||
#define ILI9341_DRIVER 1
|
|
||||||
#define M5STACK // needed for TFT driver
|
|
||||||
|
|
||||||
#define TFT_MISO MISO // SPI
|
|
||||||
#define TFT_MOSI MOSI // SPI
|
#define TFT_MOSI MOSI // SPI
|
||||||
|
#define TFT_MISO MISO // SPI
|
||||||
#define TFT_SCLK SCK // SPI
|
#define TFT_SCLK SCK // SPI
|
||||||
#define TFT_CS GPIO_NUM_14 // Chip select control
|
#define TFT_CS GPIO_NUM_14 // Chip select control
|
||||||
#define TFT_DC GPIO_NUM_27 // Data Command control
|
#define TFT_DC GPIO_NUM_27 // Data Command control
|
||||||
#define TFT_RST GPIO_NUM_33 // Reset
|
#define TFT_RST GPIO_NUM_33 // Reset
|
||||||
#define TFT_BL GPIO_NUM_32 // LED back-light
|
#define TFT_BL GPIO_NUM_32 // LED back-light
|
||||||
|
#define TFT_FREQUENCY 40000000
|
||||||
#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red
|
|
||||||
|
|
||||||
//#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
|
|
||||||
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
|
|
||||||
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
|
|
||||||
//#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
|
|
||||||
//#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
|
|
||||||
//#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
|
|
||||||
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
|
|
||||||
//#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
|
|
||||||
#define SMOOTH_FONT
|
|
||||||
|
|
||||||
#define SPI_FREQUENCY 40000000
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
#define LORA_IO1 GPIO_NUM_34 // must be wired by you on PCB!
|
#define LORA_IO1 GPIO_NUM_34 // must be wired by you on PCB!
|
||||||
#define LORA_IO2 LMIC_UNUSED_PIN
|
#define LORA_IO2 LMIC_UNUSED_PIN
|
||||||
|
|
||||||
|
|
||||||
// enable only if you want to store a local paxcount table on the device
|
// enable only if you want to store a local paxcount table on the device
|
||||||
#define HAS_SDCARD 1 // this board has an SD-card-reader/writer
|
#define HAS_SDCARD 1 // this board has an SD-card-reader/writer
|
||||||
#define SDCARD_CS GPIO_NUM_4
|
#define SDCARD_CS GPIO_NUM_4
|
||||||
@ -31,9 +30,6 @@
|
|||||||
#define CFG_sx1276_radio 1 // select LoRa chip
|
#define CFG_sx1276_radio 1 // select LoRa chip
|
||||||
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||||
|
|
||||||
#define HAS_DISPLAY 2 // TFT-LCD, support work in progess, not ready yet
|
|
||||||
//#define MY_DISPLAY_FLIP 1 // use if display is rotated
|
|
||||||
|
|
||||||
#define HAS_LED NOT_A_PIN // no on board LED (?)
|
#define HAS_LED NOT_A_PIN // no on board LED (?)
|
||||||
#define RGB_LED_COUNT 10
|
#define RGB_LED_COUNT 10
|
||||||
|
|
||||||
@ -53,35 +49,19 @@
|
|||||||
// #define GPS_INT GPIO_NUM_35 // 30ns accurary timepulse, to be external wired on pcb: shorten R12!
|
// #define GPS_INT GPIO_NUM_35 // 30ns accurary timepulse, to be external wired on pcb: shorten R12!
|
||||||
|
|
||||||
// Display Settings
|
// Display Settings
|
||||||
|
#define HAS_DISPLAY 2 // TFT-LCD
|
||||||
|
//#define MY_DISPLAY_FLIP 1 // use if display is rotated
|
||||||
#define MY_DISPLAY_WIDTH 320
|
#define MY_DISPLAY_WIDTH 320
|
||||||
#define MY_DISPLAY_HEIGHT 240
|
#define MY_DISPLAY_HEIGHT 240
|
||||||
#define MY_DISPLAY_INVERT 1
|
#define MY_DISPLAY_INVERT 1
|
||||||
|
#define TFT_TYPE LCD_ILI9341
|
||||||
// setting for M5 display
|
|
||||||
#define USER_SETUP_LOADED 1
|
|
||||||
#define ILI9341_DRIVER 1
|
|
||||||
#define M5STACK // needed for TFT driver
|
|
||||||
|
|
||||||
#define TFT_MISO MISO // SPI
|
|
||||||
#define TFT_MOSI MOSI // SPI
|
#define TFT_MOSI MOSI // SPI
|
||||||
|
#define TFT_MISO MISO // SPI
|
||||||
#define TFT_SCLK SCK // SPI
|
#define TFT_SCLK SCK // SPI
|
||||||
#define TFT_CS GPIO_NUM_14 // Chip select control
|
#define TFT_CS GPIO_NUM_14 // Chip select control
|
||||||
#define TFT_DC GPIO_NUM_27 // Data Command control
|
#define TFT_DC GPIO_NUM_27 // Data Command control
|
||||||
#define TFT_RST GPIO_NUM_33 // Reset
|
#define TFT_RST GPIO_NUM_33 // Reset
|
||||||
#define TFT_BL GPIO_NUM_32 // LED back-light
|
#define TFT_BL GPIO_NUM_32 // LED back-light
|
||||||
|
#define TFT_FREQUENCY 40000000
|
||||||
#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red
|
|
||||||
|
|
||||||
//#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
|
|
||||||
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
|
|
||||||
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
|
|
||||||
//#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
|
|
||||||
//#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
|
|
||||||
//#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
|
|
||||||
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
|
|
||||||
//#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
|
|
||||||
#define SMOOTH_FONT
|
|
||||||
|
|
||||||
#define SPI_FREQUENCY 40000000
|
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -9,9 +9,6 @@
|
|||||||
|
|
||||||
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||||
|
|
||||||
#define HAS_DISPLAY 2 // TFT-LCD, support work in progess, not ready yet
|
|
||||||
#define MY_DISPLAY_FLIP 1 // use if display is rotated
|
|
||||||
|
|
||||||
#define HAS_LED NOT_A_PIN // no on board LED (?)
|
#define HAS_LED NOT_A_PIN // no on board LED (?)
|
||||||
#define HAS_BUTTON (35) // on board button A
|
#define HAS_BUTTON (35) // on board button A
|
||||||
|
|
||||||
@ -20,36 +17,19 @@
|
|||||||
#define BAT_VOLTAGE_DIVIDER 2.605f // voltage divider
|
#define BAT_VOLTAGE_DIVIDER 2.605f // voltage divider
|
||||||
|
|
||||||
// Display Settings
|
// Display Settings
|
||||||
|
#define HAS_DISPLAY 2 // TFT-LCD
|
||||||
|
#define MY_DISPLAY_FLIP 1 // use if display is rotated
|
||||||
#define MY_DISPLAY_WIDTH 135
|
#define MY_DISPLAY_WIDTH 135
|
||||||
#define MY_DISPLAY_HEIGHT 240
|
#define MY_DISPLAY_HEIGHT 240
|
||||||
#define MY_DISPLAY_INVERT 1
|
#define MY_DISPLAY_INVERT 1
|
||||||
|
#define TFT_TYPE LCD_ST7789_135 // size 135x240 px
|
||||||
// setting for TTGO T-display
|
|
||||||
#define USER_SETUP_LOADED 1
|
|
||||||
#define ST7789_DRIVER 1
|
|
||||||
|
|
||||||
#define CGRAM_OFFSET
|
|
||||||
|
|
||||||
#define TFT_MOSI GPIO_NUM_19 // SPI
|
#define TFT_MOSI GPIO_NUM_19 // SPI
|
||||||
|
#define TFT_MISO NOT_A_PIN // SPI
|
||||||
#define TFT_SCLK GPIO_NUM_18 // SPI
|
#define TFT_SCLK GPIO_NUM_18 // SPI
|
||||||
#define TFT_CS GPIO_NUM_5 // Chip select control
|
#define TFT_CS GPIO_NUM_5 // Chip select control
|
||||||
#define TFT_DC GPIO_NUM_16 // Data Command control
|
#define TFT_DC GPIO_NUM_16 // Data Command control
|
||||||
#define TFT_RST GPIO_NUM_23 // Reset
|
#define TFT_RST GPIO_NUM_23 // Reset
|
||||||
#define TFT_BL GPIO_NUM_4 // LED back-light
|
#define TFT_BL GPIO_NUM_4 // LED back-light
|
||||||
|
#define TFT_FREQUENCY 40000000
|
||||||
#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red
|
|
||||||
|
|
||||||
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
|
|
||||||
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
|
|
||||||
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
|
|
||||||
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
|
|
||||||
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
|
|
||||||
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
|
|
||||||
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
|
|
||||||
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
|
|
||||||
#define SMOOTH_FONT
|
|
||||||
|
|
||||||
#define SPI_FREQUENCY 40000000
|
|
||||||
#define SPI_READ_FREQUENCY 6000000
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -9,9 +9,6 @@
|
|||||||
|
|
||||||
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||||
|
|
||||||
#define HAS_DISPLAY 2 // TFT-LCD, support work in progess, not ready yet
|
|
||||||
#define MY_DISPLAY_FLIP 1 // use if display is rotated
|
|
||||||
|
|
||||||
#define HAS_LED NOT_A_PIN // no on board LED (?)
|
#define HAS_LED NOT_A_PIN // no on board LED (?)
|
||||||
#define HAS_BUTTON (33) // on board button A
|
#define HAS_BUTTON (33) // on board button A
|
||||||
|
|
||||||
@ -20,39 +17,20 @@
|
|||||||
#define BAT_VOLTAGE_DIVIDER 2.605f // voltage divider
|
#define BAT_VOLTAGE_DIVIDER 2.605f // voltage divider
|
||||||
|
|
||||||
// Display Settings
|
// Display Settings
|
||||||
|
#define HAS_DISPLAY 2 // TFT-LCD
|
||||||
|
#define MY_DISPLAY_FLIP 1 // use if display is rotated
|
||||||
#define MY_DISPLAY_WIDTH 80
|
#define MY_DISPLAY_WIDTH 80
|
||||||
#define MY_DISPLAY_HEIGHT 160
|
#define MY_DISPLAY_HEIGHT 160
|
||||||
#define MY_DISPLAY_INVERT 1
|
#define MY_DISPLAY_INVERT 1
|
||||||
|
#define TFT_TYPE LCD_ST7735S
|
||||||
// setting for TTGO T-display
|
|
||||||
#define USER_SETUP_LOADED 1
|
|
||||||
#define ST7735_DRIVER 1
|
|
||||||
|
|
||||||
#define CGRAM_OFFSET
|
|
||||||
|
|
||||||
#define TFT_MISO -1
|
|
||||||
#define TFT_MOSI GPIO_NUM_19 // SPI
|
#define TFT_MOSI GPIO_NUM_19 // SPI
|
||||||
|
#define TFT_MISO NOT_A_PIN // SPI
|
||||||
#define TFT_SCLK GPIO_NUM_18 // SPI
|
#define TFT_SCLK GPIO_NUM_18 // SPI
|
||||||
#define TFT_CS GPIO_NUM_5 // Chip select control
|
#define TFT_CS GPIO_NUM_5 // Chip select control
|
||||||
#define TFT_DC GPIO_NUM_23 // Data Command control
|
#define TFT_DC GPIO_NUM_23 // Data Command control
|
||||||
#define TFT_RST GPIO_NUM_26 // Reset
|
#define TFT_RST GPIO_NUM_26 // Reset
|
||||||
#define TFT_BL GPIO_NUM_27 // LED back-light
|
#define TFT_BL GPIO_NUM_27 // LED back-light
|
||||||
#define TFT_BACKLIGHT_ON 1
|
#define TFT_FREQUENCY 27000000
|
||||||
#define ST7735_GREENTAB160x80
|
|
||||||
|
|
||||||
#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red
|
|
||||||
|
|
||||||
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
|
|
||||||
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
|
|
||||||
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
|
|
||||||
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
|
|
||||||
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
|
|
||||||
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
|
|
||||||
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
|
|
||||||
#define SMOOTH_FONT
|
|
||||||
|
|
||||||
#define SPI_FREQUENCY 27000000
|
|
||||||
#define SPI_READ_FREQUENCY 6000000
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user