speedup display (use pagemode & i2c 400khz)
This commit is contained in:
parent
c93b0867a9
commit
8cbac9c79f
@ -44,7 +44,6 @@ static const char TAG[] = __FILE__;
|
|||||||
// settings for qr code generator
|
// settings for qr code generator
|
||||||
#define QR_VERSION 3 // 29 x 29px
|
#define QR_VERSION 3 // 29 x 29px
|
||||||
#define QR_SCALEFACTOR 2 // 29 -> 58x < 64px
|
#define QR_SCALEFACTOR 2 // 29 -> 58x < 64px
|
||||||
#define LOCK_VERSION 1
|
|
||||||
|
|
||||||
// helper arry for converting month values to text
|
// helper arry for converting month values to text
|
||||||
const char *printmonth[] = {"xxx", "Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
const char *printmonth[] = {"xxx", "Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||||
@ -69,6 +68,7 @@ void init_display(void) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// clear display
|
// clear display
|
||||||
|
oledSetContrast(DISPLAYCONTRAST);
|
||||||
oledFill(0, 1);
|
oledFill(0, 1);
|
||||||
|
|
||||||
// show startup screen
|
// show startup screen
|
||||||
@ -89,8 +89,8 @@ void init_display(void) {
|
|||||||
spi_flash_get_chip_size() / (1024 * 1024),
|
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
|
||||||
|
oledDumpBuffer(NULL);
|
||||||
delay(2000);
|
delay(2000);
|
||||||
oledFill(0x00, 1);
|
oledFill(0x00, 1);
|
||||||
#endif // VERBOSE
|
#endif // VERBOSE
|
||||||
@ -98,26 +98,26 @@ void init_display(void) {
|
|||||||
#if (HAS_LORA)
|
#if (HAS_LORA)
|
||||||
// generate DEVEUI as QR code and text
|
// generate DEVEUI as QR code and text
|
||||||
uint8_t buf[8];
|
uint8_t buf[8];
|
||||||
const uint8_t *p;
|
char deveui[17];
|
||||||
os_getDevEui((u1_t *)buf);
|
os_getDevEui((u1_t *)buf);
|
||||||
|
sprintf(deveui, "%016llX", *((uint64_t *)&buf));
|
||||||
|
|
||||||
// display DEVEUI as QR code on the left
|
// display DEVEUI as QR code on the left
|
||||||
char converted[17];
|
oledSetContrast(30);
|
||||||
sprintf(converted, "%016llX", *((uint64_t *)&buf));
|
dp_printqr(3, 3, deveui);
|
||||||
oledSetContrast(20);
|
|
||||||
dp_printqr(3, 3, converted);
|
|
||||||
|
|
||||||
// display DEVEUI as plain text on the right
|
// display DEVEUI as plain text on the right
|
||||||
dp_printf(72, 0, FONT_NORMAL, 0, "LORAWAN");
|
dp_printf(72, 0, FONT_NORMAL, 0, "LORAWAN");
|
||||||
dp_printf(72, 1, FONT_NORMAL, 0, "DEVEUI:");
|
dp_printf(72, 1, FONT_NORMAL, 0, "DEVEUI:");
|
||||||
dp_printf(80, 3, FONT_NORMAL, 0, "%4.4s", converted);
|
dp_printf(80, 3, FONT_NORMAL, 0, "%4.4s", deveui);
|
||||||
dp_printf(80, 4, FONT_NORMAL, 0, "%4.4s", converted + 4);
|
dp_printf(80, 4, FONT_NORMAL, 0, "%4.4s", deveui + 4);
|
||||||
dp_printf(80, 5, FONT_NORMAL, 0, "%4.4s", converted + 8);
|
dp_printf(80, 5, FONT_NORMAL, 0, "%4.4s", deveui + 8);
|
||||||
dp_printf(80, 6, FONT_NORMAL, 0, "%4.4s", converted + 12);
|
dp_printf(80, 6, FONT_NORMAL, 0, "%4.4s", deveui + 12);
|
||||||
|
|
||||||
// give user some time to read or take picture
|
// give user some time to read or take picture
|
||||||
delay(3000);
|
oledDumpBuffer(NULL);
|
||||||
oledSetContrast(255);
|
delay(8000);
|
||||||
|
oledSetContrast(DISPLAYCONTRAST);
|
||||||
oledFill(0x00, 1);
|
oledFill(0x00, 1);
|
||||||
#endif // HAS_LORA
|
#endif // HAS_LORA
|
||||||
|
|
||||||
@ -154,6 +154,7 @@ void refreshTheDisplay(bool nextPage) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
draw_page(t, DisplayPage);
|
draw_page(t, DisplayPage);
|
||||||
|
oledDumpBuffer(NULL);
|
||||||
|
|
||||||
I2C_MUTEX_UNLOCK(); // release i2c bus access
|
I2C_MUTEX_UNLOCK(); // release i2c bus access
|
||||||
|
|
||||||
@ -162,7 +163,7 @@ void refreshTheDisplay(bool nextPage) {
|
|||||||
|
|
||||||
void draw_page(time_t t, uint8_t page) {
|
void draw_page(time_t t, uint8_t page) {
|
||||||
|
|
||||||
char timeState, buff[16];
|
char timeState;
|
||||||
uint8_t msgWaiting;
|
uint8_t msgWaiting;
|
||||||
#if (HAS_GPS)
|
#if (HAS_GPS)
|
||||||
static bool wasnofix = true;
|
static bool wasnofix = true;
|
||||||
@ -330,7 +331,7 @@ void dp_printf(int x, int y, int font, int inv, const char *format, ...) {
|
|||||||
len = vsnprintf(temp, len + 1, format, arg);
|
len = vsnprintf(temp, len + 1, format, arg);
|
||||||
}
|
}
|
||||||
va_end(arg);
|
va_end(arg);
|
||||||
oledWriteString(0, x, y, temp, font, inv, 1);
|
oledWriteString(0, x, y, temp, font, inv, false);
|
||||||
if (temp != loc_buf) {
|
if (temp != loc_buf) {
|
||||||
free(temp);
|
free(temp);
|
||||||
}
|
}
|
||||||
@ -346,17 +347,17 @@ void dp_printqr(int offset_x, int offset_y, const char *Message) {
|
|||||||
if (!qrcode_getModule(&qrcode, x, y)) // "black"
|
if (!qrcode_getModule(&qrcode, x, y)) // "black"
|
||||||
oledfillRect(x * QR_SCALEFACTOR + offset_x,
|
oledfillRect(x * QR_SCALEFACTOR + offset_x,
|
||||||
y * QR_SCALEFACTOR + offset_y, QR_SCALEFACTOR,
|
y * QR_SCALEFACTOR + offset_y, QR_SCALEFACTOR,
|
||||||
QR_SCALEFACTOR, true);
|
QR_SCALEFACTOR, false);
|
||||||
// draw horizontal frame lines
|
// draw horizontal frame lines
|
||||||
oledfillRect(0, 0, qrcode.size * QR_SCALEFACTOR + 2 * offset_x, offset_y,
|
oledfillRect(0, 0, qrcode.size * QR_SCALEFACTOR + 2 * offset_x, offset_y,
|
||||||
true);
|
false);
|
||||||
oledfillRect(0, qrcode.size * QR_SCALEFACTOR + offset_y,
|
oledfillRect(0, qrcode.size * QR_SCALEFACTOR + offset_y,
|
||||||
qrcode.size * QR_SCALEFACTOR + 2 * offset_x, offset_y, true);
|
qrcode.size * QR_SCALEFACTOR + 2 * offset_x, offset_y, false);
|
||||||
// draw vertical frame lines
|
// draw vertical frame lines
|
||||||
oledfillRect(0, 0, offset_x, qrcode.size * QR_SCALEFACTOR + 2 * offset_y,
|
oledfillRect(0, 0, offset_x, qrcode.size * QR_SCALEFACTOR + 2 * offset_y,
|
||||||
true);
|
false);
|
||||||
oledfillRect(qrcode.size * QR_SCALEFACTOR + offset_x, 0, offset_x,
|
oledfillRect(qrcode.size * QR_SCALEFACTOR + offset_x, 0, offset_x,
|
||||||
qrcode.size * QR_SCALEFACTOR + 2 * offset_y, true);
|
qrcode.size * QR_SCALEFACTOR + 2 * offset_y, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void oledfillRect(int x, int y, int width, int height, int bRender) {
|
void oledfillRect(int x, int y, int width, int height, int bRender) {
|
||||||
|
@ -172,9 +172,9 @@ void setup() {
|
|||||||
|
|
||||||
// open i2c bus
|
// open i2c bus
|
||||||
#ifdef HAS_DISPLAY
|
#ifdef HAS_DISPLAY
|
||||||
Wire.begin(MY_OLED_SDA, MY_OLED_SCL, 100000);
|
Wire.begin(MY_OLED_SDA, MY_OLED_SCL, 400000);
|
||||||
#else
|
#else
|
||||||
Wire.begin(SDA, SCL, 100000);
|
Wire.begin(SDA, SCL, 400000);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// setup power on boards with power management logic
|
// setup power on boards with power management logic
|
||||||
|
@ -52,9 +52,9 @@ void start_ota_update() {
|
|||||||
|
|
||||||
// init display
|
// init display
|
||||||
#ifndef DISPLAY_FLIP
|
#ifndef DISPLAY_FLIP
|
||||||
oledInit(OLED_128x64, ANGLE_0, false, -1, -1, 100000L);
|
oledInit(OLED_128x64, ANGLE_0, false, -1, -1, 400000L);
|
||||||
#else
|
#else
|
||||||
oledInit(OLED_128x64, ANGLE_FLIPY, false, -1, -1, 100000L);
|
oledInit(OLED_128x64, ANGLE_FLIPY, false, -1, -1, 400000L);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
oledFill(0, 1);
|
oledFill(0, 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user