Fixed ST7735Display for PowerSaving

This commit is contained in:
Kevin Le committed 2026-10-18 14:27:44 +07:00
1 parent c44c9c6ac8
commit ab2231be9b
1 file changed
+29 -11
+29 -11
View File
@@ -417,16 +417,16 @@ bool ST7735Display::i2c_probe(TwoWire& wire, uint8_t addr) {
#define PIN_TFT_LEDA_CTL_ACTIVE HIGH
#endif
// Color scheme
ColorVal UIColor::window_bkg = ST77XX_WHITE;
ColorVal UIColor::title_bkg = ST77XX_BLUE;
ColorVal UIColor::title_txt = ST77XX_WHITE;
ColorVal UIColor::primary_txt = ST77XX_BLACK;
ColorVal UIColor::secondary_txt = (18 << 11) | (36 << 5) | 18; // mid-gray
ColorVal UIColor::warning_txt = ST77XX_ORANGE;
ColorVal UIColor::popup_bkg = ST77XX_CYAN;
ColorVal UIColor::popup_txt = ST77XX_BLACK;
ColorVal UIColor::corp_blue = 0x001A;
// Color scheme - Dark theme before v1.17
ColorVal UIColor::window_bkg = ST77XX_BLACK;
ColorVal UIColor::title_bkg = ST77XX_BLACK;
ColorVal UIColor::title_txt = ST77XX_GREEN;
ColorVal UIColor::primary_txt = ST77XX_GREEN;
ColorVal UIColor::secondary_txt = ST77XX_YELLOW;
ColorVal UIColor::warning_txt = ST77XX_RED;
ColorVal UIColor::popup_bkg = ST77XX_BLACK;
ColorVal UIColor::popup_txt = ST77XX_WHITE;
ColorVal UIColor::corp_blue = ST77XX_BLUE;
bool ST7735Display::begin() {
if (!sprite) {
@@ -512,6 +512,15 @@ void ST7735Display::_resetAndInit() {
void ST7735Display::turnOn() {
if (!_isOn) {
if (_peripher_power) _peripher_power->claim();
// Restore GPIOs
pinMode(PIN_TFT_CS, OUTPUT);
pinMode(PIN_TFT_DC, OUTPUT);
pinMode(PIN_TFT_SDA, OUTPUT);
pinMode(PIN_TFT_SCL, OUTPUT);
pinMode(PIN_TFT_RST, OUTPUT);
pinMode(PIN_TFT_LEDA_CTL, OUTPUT);
_resetAndInit();
sendCommand(ST77XX_DISPON);
@@ -525,9 +534,18 @@ void ST7735Display::turnOff() {
if (_isOn) {
sendCommand(ST77XX_DISPOFF);
//digitalWrite(PIN_TFT_RST, LOW);
// digitalWrite(PIN_TFT_RST, LOW);
// Now turn off the backlight
digitalWrite(PIN_TFT_LEDA_CTL, !PIN_TFT_LEDA_CTL_ACTIVE);
// Prevent back-powering to save 3.5mA (from 12.6 down to 9.1mA)
pinMode(PIN_TFT_CS, INPUT);
pinMode(PIN_TFT_DC, INPUT);
pinMode(PIN_TFT_SDA, INPUT);
pinMode(PIN_TFT_SCL, INPUT);
pinMode(PIN_TFT_RST, INPUT);
pinMode(PIN_TFT_LEDA_CTL, INPUT);
_isOn = false;
if (_peripher_power) _peripher_power->release();