mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 16:37:52 +01:00
[ili9xxx] Make invert_colors
required (#7292)
Co-authored-by: Gilles van den Hoven <gilles0181@gmail.com> Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
This commit is contained in:
parent
7e18a5c44f
commit
34cce0e920
@ -1,31 +1,31 @@
|
|||||||
import esphome.codegen as cg
|
|
||||||
import esphome.config_validation as cv
|
|
||||||
from esphome import core, pins
|
from esphome import core, pins
|
||||||
from esphome.components import display, spi, font
|
import esphome.codegen as cg
|
||||||
|
from esphome.components import display, font, spi
|
||||||
from esphome.components.display import validate_rotation
|
from esphome.components.display import validate_rotation
|
||||||
from esphome.core import CORE, HexInt
|
import esphome.config_validation as cv
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
|
CONF_COLOR_ORDER,
|
||||||
CONF_COLOR_PALETTE,
|
CONF_COLOR_PALETTE,
|
||||||
CONF_DC_PIN,
|
CONF_DC_PIN,
|
||||||
CONF_ID,
|
|
||||||
CONF_LAMBDA,
|
|
||||||
CONF_MODEL,
|
|
||||||
CONF_RAW_DATA_ID,
|
|
||||||
CONF_PAGES,
|
|
||||||
CONF_RESET_PIN,
|
|
||||||
CONF_DIMENSIONS,
|
CONF_DIMENSIONS,
|
||||||
CONF_WIDTH,
|
|
||||||
CONF_HEIGHT,
|
CONF_HEIGHT,
|
||||||
CONF_ROTATION,
|
CONF_ID,
|
||||||
|
CONF_INVERT_COLORS,
|
||||||
|
CONF_LAMBDA,
|
||||||
CONF_MIRROR_X,
|
CONF_MIRROR_X,
|
||||||
CONF_MIRROR_Y,
|
CONF_MIRROR_Y,
|
||||||
CONF_SWAP_XY,
|
CONF_MODEL,
|
||||||
CONF_COLOR_ORDER,
|
|
||||||
CONF_OFFSET_HEIGHT,
|
CONF_OFFSET_HEIGHT,
|
||||||
CONF_OFFSET_WIDTH,
|
CONF_OFFSET_WIDTH,
|
||||||
|
CONF_PAGES,
|
||||||
|
CONF_RAW_DATA_ID,
|
||||||
|
CONF_RESET_PIN,
|
||||||
|
CONF_ROTATION,
|
||||||
|
CONF_SWAP_XY,
|
||||||
CONF_TRANSFORM,
|
CONF_TRANSFORM,
|
||||||
CONF_INVERT_COLORS,
|
CONF_WIDTH,
|
||||||
)
|
)
|
||||||
|
from esphome.core import CORE, HexInt
|
||||||
|
|
||||||
DEPENDENCIES = ["spi"]
|
DEPENDENCIES = ["spi"]
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ CONFIG_SCHEMA = cv.All(
|
|||||||
cv.Optional(CONF_INVERT_DISPLAY): cv.invalid(
|
cv.Optional(CONF_INVERT_DISPLAY): cv.invalid(
|
||||||
"'invert_display' has been replaced by 'invert_colors'"
|
"'invert_display' has been replaced by 'invert_colors'"
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_INVERT_COLORS): cv.boolean,
|
cv.Required(CONF_INVERT_COLORS): cv.boolean,
|
||||||
cv.Optional(CONF_COLOR_ORDER): cv.one_of(*COLOR_ORDERS.keys(), upper=True),
|
cv.Optional(CONF_COLOR_ORDER): cv.one_of(*COLOR_ORDERS.keys(), upper=True),
|
||||||
cv.Exclusive(CONF_ROTATION, CONF_ROTATION): validate_rotation,
|
cv.Exclusive(CONF_ROTATION, CONF_ROTATION): validate_rotation,
|
||||||
cv.Exclusive(CONF_TRANSFORM, CONF_ROTATION): cv.Schema(
|
cv.Exclusive(CONF_TRANSFORM, CONF_ROTATION): cv.Schema(
|
||||||
@ -287,5 +287,4 @@ async def to_code(config):
|
|||||||
prog_arr = cg.progmem_array(config[CONF_RAW_DATA_ID], rhs)
|
prog_arr = cg.progmem_array(config[CONF_RAW_DATA_ID], rhs)
|
||||||
cg.add(var.set_palette(prog_arr))
|
cg.add(var.set_palette(prog_arr))
|
||||||
|
|
||||||
if CONF_INVERT_COLORS in config:
|
cg.add(var.invert_colors(config[CONF_INVERT_COLORS]))
|
||||||
cg.add(var.invert_colors(config[CONF_INVERT_COLORS]))
|
|
||||||
|
@ -118,6 +118,7 @@ void ILI9XXXDisplay::dump_config() {
|
|||||||
ESP_LOGCONFIG(TAG, " Swap_xy: %s", YESNO(this->swap_xy_));
|
ESP_LOGCONFIG(TAG, " Swap_xy: %s", YESNO(this->swap_xy_));
|
||||||
ESP_LOGCONFIG(TAG, " Mirror_x: %s", YESNO(this->mirror_x_));
|
ESP_LOGCONFIG(TAG, " Mirror_x: %s", YESNO(this->mirror_x_));
|
||||||
ESP_LOGCONFIG(TAG, " Mirror_y: %s", YESNO(this->mirror_y_));
|
ESP_LOGCONFIG(TAG, " Mirror_y: %s", YESNO(this->mirror_y_));
|
||||||
|
ESP_LOGCONFIG(TAG, " Invert colors: %s", YESNO(this->pre_invertcolors_));
|
||||||
|
|
||||||
if (this->is_failed()) {
|
if (this->is_failed()) {
|
||||||
ESP_LOGCONFIG(TAG, " => Failed to init Memory: YES!");
|
ESP_LOGCONFIG(TAG, " => Failed to init Memory: YES!");
|
||||||
@ -154,7 +155,6 @@ void ILI9XXXDisplay::fill(Color color) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
new_color = display::ColorUtil::color_to_332(color, display::ColorOrder::COLOR_ORDER_RGB);
|
new_color = display::ColorUtil::color_to_332(color, display::ColorOrder::COLOR_ORDER_RGB);
|
||||||
break;
|
break;
|
||||||
|
@ -28,8 +28,8 @@ class ILI9XXXDisplay : public display::DisplayBuffer,
|
|||||||
spi::CLOCK_PHASE_LEADING, spi::DATA_RATE_40MHZ> {
|
spi::CLOCK_PHASE_LEADING, spi::DATA_RATE_40MHZ> {
|
||||||
public:
|
public:
|
||||||
ILI9XXXDisplay() = default;
|
ILI9XXXDisplay() = default;
|
||||||
ILI9XXXDisplay(uint8_t const *init_sequence, int16_t width, int16_t height, bool invert_colors)
|
ILI9XXXDisplay(uint8_t const *init_sequence, int16_t width, int16_t height)
|
||||||
: init_sequence_{init_sequence}, width_{width}, height_{height}, pre_invertcolors_{invert_colors} {
|
: init_sequence_{init_sequence}, width_{width}, height_{height} {
|
||||||
uint8_t cmd, num_args, bits;
|
uint8_t cmd, num_args, bits;
|
||||||
const uint8_t *addr = init_sequence;
|
const uint8_t *addr = init_sequence;
|
||||||
while ((cmd = *addr++) != 0) {
|
while ((cmd = *addr++) != 0) {
|
||||||
@ -144,7 +144,7 @@ class ILI9XXXDisplay : public display::DisplayBuffer,
|
|||||||
bool need_update_ = false;
|
bool need_update_ = false;
|
||||||
bool is_18bitdisplay_ = false;
|
bool is_18bitdisplay_ = false;
|
||||||
PixelMode pixel_mode_{};
|
PixelMode pixel_mode_{};
|
||||||
bool pre_invertcolors_ = false;
|
bool pre_invertcolors_{};
|
||||||
display::ColorOrder color_order_{display::COLOR_ORDER_BGR};
|
display::ColorOrder color_order_{display::COLOR_ORDER_BGR};
|
||||||
bool swap_xy_{};
|
bool swap_xy_{};
|
||||||
bool mirror_x_{};
|
bool mirror_x_{};
|
||||||
@ -154,54 +154,54 @@ class ILI9XXXDisplay : public display::DisplayBuffer,
|
|||||||
//----------- M5Stack display --------------
|
//----------- M5Stack display --------------
|
||||||
class ILI9XXXM5Stack : public ILI9XXXDisplay {
|
class ILI9XXXM5Stack : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXM5Stack() : ILI9XXXDisplay(INITCMD_M5STACK, 320, 240, true) {}
|
ILI9XXXM5Stack() : ILI9XXXDisplay(INITCMD_M5STACK, 320, 240) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------- M5Stack display --------------
|
//----------- M5Stack display --------------
|
||||||
class ILI9XXXM5CORE : public ILI9XXXDisplay {
|
class ILI9XXXM5CORE : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXM5CORE() : ILI9XXXDisplay(INITCMD_M5CORE, 320, 240, true) {}
|
ILI9XXXM5CORE() : ILI9XXXDisplay(INITCMD_M5CORE, 320, 240) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------- ST7789V display --------------
|
//----------- ST7789V display --------------
|
||||||
class ILI9XXXST7789V : public ILI9XXXDisplay {
|
class ILI9XXXST7789V : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXST7789V() : ILI9XXXDisplay(INITCMD_ST7789V, 240, 320, false) {}
|
ILI9XXXST7789V() : ILI9XXXDisplay(INITCMD_ST7789V, 240, 320) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------- ILI9XXX_24_TFT display --------------
|
//----------- ILI9XXX_24_TFT display --------------
|
||||||
class ILI9XXXILI9341 : public ILI9XXXDisplay {
|
class ILI9XXXILI9341 : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXILI9341() : ILI9XXXDisplay(INITCMD_ILI9341, 240, 320, false) {}
|
ILI9XXXILI9341() : ILI9XXXDisplay(INITCMD_ILI9341, 240, 320) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------- ILI9XXX_24_TFT rotated display --------------
|
//----------- ILI9XXX_24_TFT rotated display --------------
|
||||||
class ILI9XXXILI9342 : public ILI9XXXDisplay {
|
class ILI9XXXILI9342 : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXILI9342() : ILI9XXXDisplay(INITCMD_ILI9341, 320, 240, false) {}
|
ILI9XXXILI9342() : ILI9XXXDisplay(INITCMD_ILI9341, 320, 240) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------- ILI9XXX_??_TFT rotated display --------------
|
//----------- ILI9XXX_??_TFT rotated display --------------
|
||||||
class ILI9XXXILI9481 : public ILI9XXXDisplay {
|
class ILI9XXXILI9481 : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXILI9481() : ILI9XXXDisplay(INITCMD_ILI9481, 480, 320, false) {}
|
ILI9XXXILI9481() : ILI9XXXDisplay(INITCMD_ILI9481, 480, 320) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------- ILI9481 in 18 bit mode --------------
|
//----------- ILI9481 in 18 bit mode --------------
|
||||||
class ILI9XXXILI948118 : public ILI9XXXDisplay {
|
class ILI9XXXILI948118 : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXILI948118() : ILI9XXXDisplay(INITCMD_ILI9481_18, 320, 480, true) {}
|
ILI9XXXILI948118() : ILI9XXXDisplay(INITCMD_ILI9481_18, 320, 480) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------- ILI9XXX_35_TFT rotated display --------------
|
//----------- ILI9XXX_35_TFT rotated display --------------
|
||||||
class ILI9XXXILI9486 : public ILI9XXXDisplay {
|
class ILI9XXXILI9486 : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXILI9486() : ILI9XXXDisplay(INITCMD_ILI9486, 480, 320, false) {}
|
ILI9XXXILI9486() : ILI9XXXDisplay(INITCMD_ILI9486, 480, 320) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ILI9XXXILI9488 : public ILI9XXXDisplay {
|
class ILI9XXXILI9488 : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXILI9488(const uint8_t *seq = INITCMD_ILI9488) : ILI9XXXDisplay(seq, 480, 320, true) {}
|
ILI9XXXILI9488(const uint8_t *seq = INITCMD_ILI9488) : ILI9XXXDisplay(seq, 480, 320) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void set_madctl() override {
|
void set_madctl() override {
|
||||||
@ -246,34 +246,34 @@ class WAVESHARERES35 : public ILI9XXXILI9488 {
|
|||||||
//----------- ILI9XXX_35_TFT origin colors rotated display --------------
|
//----------- ILI9XXX_35_TFT origin colors rotated display --------------
|
||||||
class ILI9XXXILI9488A : public ILI9XXXDisplay {
|
class ILI9XXXILI9488A : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXILI9488A() : ILI9XXXDisplay(INITCMD_ILI9488_A, 480, 320, true) {}
|
ILI9XXXILI9488A() : ILI9XXXDisplay(INITCMD_ILI9488_A, 480, 320) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------- ILI9XXX_35_TFT rotated display --------------
|
//----------- ILI9XXX_35_TFT rotated display --------------
|
||||||
class ILI9XXXST7796 : public ILI9XXXDisplay {
|
class ILI9XXXST7796 : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXST7796() : ILI9XXXDisplay(INITCMD_ST7796, 320, 480, false) {}
|
ILI9XXXST7796() : ILI9XXXDisplay(INITCMD_ST7796, 320, 480) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ILI9XXXS3Box : public ILI9XXXDisplay {
|
class ILI9XXXS3Box : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXS3Box() : ILI9XXXDisplay(INITCMD_S3BOX, 320, 240, false) {}
|
ILI9XXXS3Box() : ILI9XXXDisplay(INITCMD_S3BOX, 320, 240) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ILI9XXXS3BoxLite : public ILI9XXXDisplay {
|
class ILI9XXXS3BoxLite : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXS3BoxLite() : ILI9XXXDisplay(INITCMD_S3BOXLITE, 320, 240, true) {}
|
ILI9XXXS3BoxLite() : ILI9XXXDisplay(INITCMD_S3BOXLITE, 320, 240) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ILI9XXXGC9A01A : public ILI9XXXDisplay {
|
class ILI9XXXGC9A01A : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXGC9A01A() : ILI9XXXDisplay(INITCMD_GC9A01A, 240, 240, true) {}
|
ILI9XXXGC9A01A() : ILI9XXXDisplay(INITCMD_GC9A01A, 240, 240) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------- ILI9XXX_24_TFT display --------------
|
//----------- ILI9XXX_24_TFT display --------------
|
||||||
class ILI9XXXST7735 : public ILI9XXXDisplay {
|
class ILI9XXXST7735 : public ILI9XXXDisplay {
|
||||||
public:
|
public:
|
||||||
ILI9XXXST7735() : ILI9XXXDisplay(INITCMD_ST7735, 128, 160, false) {}
|
ILI9XXXST7735() : ILI9XXXDisplay(INITCMD_ST7735, 128, 160) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ili9xxx
|
} // namespace ili9xxx
|
||||||
|
@ -101,7 +101,6 @@ static const uint8_t PROGMEM INITCMD_ILI9481[] = {
|
|||||||
ILI9XXX_MADCTL , 1, MADCTL_MV | MADCTL_BGR, // Memory Access Control
|
ILI9XXX_MADCTL , 1, MADCTL_MV | MADCTL_BGR, // Memory Access Control
|
||||||
ILI9XXX_CSCON , 1, 0x01,
|
ILI9XXX_CSCON , 1, 0x01,
|
||||||
ILI9XXX_PIXFMT, 1, 0x55, // 16 bit mode
|
ILI9XXX_PIXFMT, 1, 0x55, // 16 bit mode
|
||||||
ILI9XXX_INVON, 0,
|
|
||||||
ILI9XXX_DISPON, 0x80, // Set display on
|
ILI9XXX_DISPON, 0x80, // Set display on
|
||||||
0x00 // end
|
0x00 // end
|
||||||
};
|
};
|
||||||
@ -121,7 +120,6 @@ static const uint8_t PROGMEM INITCMD_ILI9481_18[] = {
|
|||||||
ILI9XXX_MADCTL , 1, MADCTL_MX| MADCTL_BGR, // Memory Access Control
|
ILI9XXX_MADCTL , 1, MADCTL_MX| MADCTL_BGR, // Memory Access Control
|
||||||
ILI9XXX_CSCON , 1, 0x01,
|
ILI9XXX_CSCON , 1, 0x01,
|
||||||
ILI9XXX_PIXFMT, 1, 0x66, // 18 bit mode
|
ILI9XXX_PIXFMT, 1, 0x66, // 18 bit mode
|
||||||
ILI9XXX_INVON, 0,
|
|
||||||
ILI9XXX_DISPON, 0x80, // Set display on
|
ILI9XXX_DISPON, 0x80, // Set display on
|
||||||
0x00 // end
|
0x00 // end
|
||||||
};
|
};
|
||||||
@ -204,7 +202,6 @@ static const uint8_t PROGMEM INITCMD_ILI9488_A[] = {
|
|||||||
|
|
||||||
|
|
||||||
ILI9XXX_SLPOUT, 0x80, // Exit sleep mode
|
ILI9XXX_SLPOUT, 0x80, // Exit sleep mode
|
||||||
//ILI9XXX_INVON , 0,
|
|
||||||
ILI9XXX_DISPON, 0x80, // Set display on
|
ILI9XXX_DISPON, 0x80, // Set display on
|
||||||
0x00 // end
|
0x00 // end
|
||||||
};
|
};
|
||||||
|
@ -19,6 +19,7 @@ display:
|
|||||||
lambda: |-
|
lambda: |-
|
||||||
it.rectangle(0, 0, it.get_width(), it.get_height());
|
it.rectangle(0, 0, it.get_width(), it.get_height());
|
||||||
- platform: ili9xxx
|
- platform: ili9xxx
|
||||||
|
invert_colors: false
|
||||||
dimensions:
|
dimensions:
|
||||||
width: 320
|
width: 320
|
||||||
height: 240
|
height: 240
|
||||||
|
@ -20,6 +20,7 @@ display:
|
|||||||
lambda: |-
|
lambda: |-
|
||||||
it.rectangle(0, 0, it.get_width(), it.get_height());
|
it.rectangle(0, 0, it.get_width(), it.get_height());
|
||||||
- platform: ili9xxx
|
- platform: ili9xxx
|
||||||
|
invert_colors: false
|
||||||
dimensions:
|
dimensions:
|
||||||
width: 320
|
width: 320
|
||||||
height: 240
|
height: 240
|
||||||
|
@ -20,6 +20,7 @@ display:
|
|||||||
lambda: |-
|
lambda: |-
|
||||||
it.rectangle(0, 0, it.get_width(), it.get_height());
|
it.rectangle(0, 0, it.get_width(), it.get_height());
|
||||||
- platform: ili9xxx
|
- platform: ili9xxx
|
||||||
|
invert_colors: false
|
||||||
dimensions:
|
dimensions:
|
||||||
width: 320
|
width: 320
|
||||||
height: 240
|
height: 240
|
||||||
|
@ -20,6 +20,7 @@ display:
|
|||||||
lambda: |-
|
lambda: |-
|
||||||
it.rectangle(0, 0, it.get_width(), it.get_height());
|
it.rectangle(0, 0, it.get_width(), it.get_height());
|
||||||
- platform: ili9xxx
|
- platform: ili9xxx
|
||||||
|
invert_colors: false
|
||||||
dimensions:
|
dimensions:
|
||||||
width: 320
|
width: 320
|
||||||
height: 240
|
height: 240
|
||||||
|
@ -20,6 +20,7 @@ display:
|
|||||||
lambda: |-
|
lambda: |-
|
||||||
it.rectangle(0, 0, it.get_width(), it.get_height());
|
it.rectangle(0, 0, it.get_width(), it.get_height());
|
||||||
- platform: ili9xxx
|
- platform: ili9xxx
|
||||||
|
invert_colors: false
|
||||||
dimensions:
|
dimensions:
|
||||||
width: 320
|
width: 320
|
||||||
height: 240
|
height: 240
|
||||||
|
Loading…
Reference in New Issue
Block a user