diff --git a/TFT_Drivers/ILI9163_Defines.h b/TFT_Drivers/ILI9163_Defines.h index 8c2e5c6..06f5c4f 100644 --- a/TFT_Drivers/ILI9163_Defines.h +++ b/TFT_Drivers/ILI9163_Defines.h @@ -61,6 +61,8 @@ #define TFT_INVOFF 0x20 #define TFT_INVON 0x21 -#define TFT_NORON 0x13 //normal mode -#define TFT_PTLON 0x12 //partial mode -#define TFT_PTLAR 0x30 //partial area +#define TFT_NORON 0x13 //normal mode +#define TFT_PTLON 0x12 //partial mode +#define TFT_PTLAR 0x30 //partial area +#define TFT_IDMOFF 0x38 //idle mode off +#define TFT_IDMON 0x39 //idle mode on diff --git a/TFT_eSPI.cpp b/TFT_eSPI.cpp index 92f7678..81a3a9a 100644 --- a/TFT_eSPI.cpp +++ b/TFT_eSPI.cpp @@ -3273,6 +3273,20 @@ void TFT_eSPI::setPartialArea(int16_t startLine, int16_t endLine) #endif } +/*************************************************************************************** +** Function name: setIdleMode +** Description: enables/disables "idle" mode, where color expression is reduced to 8 colors +** can be used with partial mode, further reducing power consumption +***************************************************************************************/ +void TFT_eSPI::setIdleMode(bool mode) +{ +#ifdef ILI9163_DRIVER + spi_begin(); + writecommand(mode ? TFT_IDMON : TFT_IDMOFF); + spi_end(); +#endif +} + /*************************************************************************************** ** Function name: write ** Description: draw characters piped through serial stream diff --git a/TFT_eSPI.h b/TFT_eSPI.h index 38b3382..4c78ecb 100644 --- a/TFT_eSPI.h +++ b/TFT_eSPI.h @@ -355,9 +355,11 @@ class TFT_eSPI : public Print { setRotation(uint8_t r), invertDisplay(boolean i), - + setPartialMode(bool mode), setPartialArea(int16_t startLine, int16_t endLine), + + setIdleMode(bool mode), drawCircle(int32_t x0, int32_t y0, int32_t r, uint32_t color), drawCircleHelper(int32_t x0, int32_t y0, int32_t r, uint8_t cornername, uint32_t color),