mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 13:34:54 +01:00
Add invert_colors option for st7735 (#2327)
This commit is contained in:
parent
5e345783bd
commit
3052c64dd7
3 changed files with 12 additions and 2 deletions
|
@ -23,6 +23,7 @@ CONF_ROW_START = "row_start"
|
|||
CONF_COL_START = "col_start"
|
||||
CONF_EIGHT_BIT_COLOR = "eight_bit_color"
|
||||
CONF_USE_BGR = "use_bgr"
|
||||
CONF_INVERT_COLORS = "invert_colors"
|
||||
|
||||
SPIST7735 = st7735_ns.class_(
|
||||
"ST7735", cg.PollingComponent, display.DisplayBuffer, spi.SPIDevice
|
||||
|
@ -58,6 +59,7 @@ CONFIG_SCHEMA = cv.All(
|
|||
cv.Required(CONF_ROW_START): cv.int_,
|
||||
cv.Optional(CONF_EIGHT_BIT_COLOR, default=False): cv.boolean,
|
||||
cv.Optional(CONF_USE_BGR, default=False): cv.boolean,
|
||||
cv.Optional(CONF_INVERT_COLORS, default=False): cv.boolean,
|
||||
}
|
||||
)
|
||||
.extend(cv.COMPONENT_SCHEMA)
|
||||
|
@ -90,6 +92,7 @@ async def to_code(config):
|
|||
config[CONF_ROW_START],
|
||||
config[CONF_EIGHT_BIT_COLOR],
|
||||
config[CONF_USE_BGR],
|
||||
config[CONF_INVERT_COLORS],
|
||||
)
|
||||
await setup_st7735(var, config)
|
||||
await spi.register_spi_device(var, config)
|
||||
|
|
|
@ -220,12 +220,14 @@ static const uint8_t PROGMEM
|
|||
// clang-format on
|
||||
static const char *const TAG = "st7735";
|
||||
|
||||
ST7735::ST7735(ST7735Model model, int width, int height, int colstart, int rowstart, bool eightbitcolor, bool usebgr)
|
||||
ST7735::ST7735(ST7735Model model, int width, int height, int colstart, int rowstart, bool eightbitcolor, bool usebgr,
|
||||
bool invert_colors)
|
||||
: model_(model),
|
||||
colstart_(colstart),
|
||||
rowstart_(rowstart),
|
||||
eightbitcolor_(eightbitcolor),
|
||||
usebgr_(usebgr),
|
||||
invert_colors_(invert_colors),
|
||||
width_(width),
|
||||
height_(height) {}
|
||||
|
||||
|
@ -281,6 +283,9 @@ void ST7735::setup() {
|
|||
}
|
||||
sendcommand_(ST77XX_MADCTL, &data, 1);
|
||||
|
||||
if (this->invert_colors_)
|
||||
sendcommand_(ST77XX_INVON, nullptr, 0);
|
||||
|
||||
this->init_internal_(this->get_buffer_length());
|
||||
memset(this->buffer_, 0x00, this->get_buffer_length());
|
||||
}
|
||||
|
|
|
@ -37,7 +37,8 @@ class ST7735 : public PollingComponent,
|
|||
public spi::SPIDevice<spi::BIT_ORDER_MSB_FIRST, spi::CLOCK_POLARITY_LOW, spi::CLOCK_PHASE_LEADING,
|
||||
spi::DATA_RATE_8MHZ> {
|
||||
public:
|
||||
ST7735(ST7735Model model, int width, int height, int colstart, int rowstart, bool eightbitcolor, bool usebgr);
|
||||
ST7735(ST7735Model model, int width, int height, int colstart, int rowstart, bool eightbitcolor, bool usebgr,
|
||||
bool invert_colors);
|
||||
void dump_config() override;
|
||||
void setup() override;
|
||||
|
||||
|
@ -77,6 +78,7 @@ class ST7735 : public PollingComponent,
|
|||
uint8_t colstart_ = 0, rowstart_ = 0;
|
||||
bool eightbitcolor_ = false;
|
||||
bool usebgr_ = false;
|
||||
bool invert_colors_ = false;
|
||||
int16_t width_ = 80, height_ = 80; // Watch heap size
|
||||
|
||||
GPIOPin *reset_pin_{nullptr};
|
||||
|
|
Loading…
Reference in a new issue