mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 11:46:31 +00:00
Fix ILI9341 hardware scroll
This commit is contained in:
parent
55f9b23f61
commit
04ec0832fc
@ -34,12 +34,29 @@
|
|||||||
|
|
||||||
Adafruit_ILI9341 *tft;
|
Adafruit_ILI9341 *tft;
|
||||||
|
|
||||||
uint16_t tft_scroll = TFT_TOP;
|
|
||||||
uint16_t tft_top = TFT_TOP;
|
uint16_t tft_top = TFT_TOP;
|
||||||
uint16_t tft_bottom = TFT_BOTTOM;
|
uint16_t tft_bottom = TFT_BOTTOM;
|
||||||
|
uint16_t tft_scroll = TFT_TOP;
|
||||||
|
uint16_t tft_cols = 0;
|
||||||
|
|
||||||
/*********************************************************************************************/
|
/*********************************************************************************************/
|
||||||
|
|
||||||
|
bool Ili9341Header(void) {
|
||||||
|
if (Settings.display_cols[0] != tft_cols) {
|
||||||
|
tft_cols = Settings.display_cols[0];
|
||||||
|
if (tft_cols > 17) {
|
||||||
|
tft_top = TFT_TOP;
|
||||||
|
tft_bottom = TFT_BOTTOM;
|
||||||
|
} else {
|
||||||
|
tft_top = 0;
|
||||||
|
tft_bottom = 0;
|
||||||
|
}
|
||||||
|
tft_scroll = tft_top;
|
||||||
|
tft->setScrollMargins(tft_top, tft_bottom);
|
||||||
|
}
|
||||||
|
return (tft_cols > 17);
|
||||||
|
}
|
||||||
|
|
||||||
void Ili9341InitMode(void)
|
void Ili9341InitMode(void)
|
||||||
{
|
{
|
||||||
tft->setRotation(Settings.display_rotate); // 0
|
tft->setRotation(Settings.display_rotate); // 0
|
||||||
@ -52,15 +69,12 @@ void Ili9341InitMode(void)
|
|||||||
tft->setTextColor(ILI9341_WHITE, ILI9341_BLACK);
|
tft->setTextColor(ILI9341_WHITE, ILI9341_BLACK);
|
||||||
tft->setTextSize(1);
|
tft->setTextSize(1);
|
||||||
} else {
|
} else {
|
||||||
tft_top = TFT_TOP;
|
Ili9341Header();
|
||||||
tft_bottom = TFT_BOTTOM;
|
|
||||||
tft->setScrollMargins(tft_top, tft_bottom);
|
|
||||||
tft->setCursor(0, 0);
|
tft->setCursor(0, 0);
|
||||||
tft->setTextColor(ILI9341_YELLOW, ILI9341_BLACK);
|
tft->setTextColor(ILI9341_YELLOW, ILI9341_BLACK);
|
||||||
tft->setTextSize(2);
|
tft->setTextSize(2);
|
||||||
// tft->println("HEADER");
|
// tft->println("HEADER");
|
||||||
|
|
||||||
tft_scroll = tft_top;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,6 +119,8 @@ void Ili9341InitDriver(void)
|
|||||||
#endif // USE_DISPLAY_MODES1TO5
|
#endif // USE_DISPLAY_MODES1TO5
|
||||||
|
|
||||||
Ili9341InitMode();
|
Ili9341InitMode();
|
||||||
|
|
||||||
|
AddLog_P2(LOG_LEVEL_INFO, PSTR("DSP: ILI9341"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,7 +184,7 @@ void Ili9341PrintLog(void)
|
|||||||
tft->setCursor(0, tft_scroll);
|
tft->setCursor(0, tft_scroll);
|
||||||
tft->fillRect(0, tft_scroll, tft->width(), theight, ILI9341_BLACK); // Erase line
|
tft->fillRect(0, tft_scroll, tft->width(), theight, ILI9341_BLACK); // Erase line
|
||||||
tft->print(txt);
|
tft->print(txt);
|
||||||
if (tft_top) { tft_scroll += theight; }
|
tft_scroll += theight;
|
||||||
if (tft_scroll >= (tft->height() - tft_bottom)) {
|
if (tft_scroll >= (tft->height() - tft_bottom)) {
|
||||||
tft_scroll = tft_top;
|
tft_scroll = tft_top;
|
||||||
}
|
}
|
||||||
@ -201,17 +217,13 @@ void Ili9341Refresh(void) // Every second
|
|||||||
// 24-04-2017 13:45:43 = 19 + 1 ('\0') = 20
|
// 24-04-2017 13:45:43 = 19 + 1 ('\0') = 20
|
||||||
// 24-04-2017 13:45 = 16 + 1 ('\0') = 17
|
// 24-04-2017 13:45 = 16 + 1 ('\0') = 17
|
||||||
|
|
||||||
if (Settings.display_cols[0] > 17) {
|
if (Ili9341Header()) {
|
||||||
char tftdt[Settings.display_cols[0] +1];
|
char tftdt[Settings.display_cols[0] +1];
|
||||||
char date4[11]; // 24-04-2017
|
char date4[11]; // 24-04-2017
|
||||||
uint8_t time_size = (Settings.display_cols[0] >= 20) ? 9 : 6; // 13:45:43 or 13:45
|
uint8_t time_size = (Settings.display_cols[0] >= 20) ? 9 : 6; // 13:45:43 or 13:45
|
||||||
char spaces[Settings.display_cols[0] - (8 + time_size)];
|
char spaces[Settings.display_cols[0] - (8 + time_size)];
|
||||||
char time[time_size]; // 13:45:43
|
char time[time_size]; // 13:45:43
|
||||||
|
|
||||||
tft_top = TFT_TOP;
|
|
||||||
tft_bottom = TFT_BOTTOM;
|
|
||||||
tft_scroll = tft_top;
|
|
||||||
tft->setScrollMargins(tft_top, tft_bottom);
|
|
||||||
tft->setTextSize(Settings.display_size);
|
tft->setTextSize(Settings.display_size);
|
||||||
tft->setTextColor(ILI9341_YELLOW, ILI9341_RED); // Add background color to solve flicker
|
tft->setTextColor(ILI9341_YELLOW, ILI9341_RED); // Add background color to solve flicker
|
||||||
tft->setCursor(0, 0);
|
tft->setCursor(0, 0);
|
||||||
@ -224,10 +236,6 @@ void Ili9341Refresh(void) // Every second
|
|||||||
|
|
||||||
tft->print(tftdt);
|
tft->print(tftdt);
|
||||||
} else {
|
} else {
|
||||||
tft_top = 0;
|
|
||||||
tft_bottom = 0;
|
|
||||||
tft_scroll = tft_top;
|
|
||||||
tft->setScrollMargins(tft_top, tft_bottom);
|
|
||||||
tft->setCursor(0, 0);
|
tft->setCursor(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user