From 401605df03b62d944295ab7053bac8094292467e Mon Sep 17 00:00:00 2001 From: "marty@dingo.sh" Date: Sat, 3 Sep 2022 17:13:33 +0100 Subject: [PATCH] initial commit --- README.md | 49 ++++- components/axp192/axp192.cpp | 43 ++++- components/axp192/axp192.h | 18 +- components/axp192/sensor.py | 13 +- components/st7735/__init__.py | 3 - components/st7735/display.py | 41 ---- components/st7735/st7735.cpp | 349 ---------------------------------- components/st7735/st7735.h | 163 ---------------- sample-config/M5StickC.jpg | Bin 92015 -> 0 bytes sample-config/m5core2.yaml | 0 sample-config/m5stickc.yaml | 88 ++++----- 11 files changed, 143 insertions(+), 624 deletions(-) delete mode 100644 components/st7735/__init__.py delete mode 100644 components/st7735/display.py delete mode 100644 components/st7735/st7735.cpp delete mode 100644 components/st7735/st7735.h delete mode 100644 sample-config/M5StickC.jpg create mode 100644 sample-config/m5core2.yaml diff --git a/README.md b/README.md index 3877bfe..433a400 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,41 @@ -Additional components to use esphome with a M5StickC. -Mostly a work in progress. -Copy the components to a `custom_components` directory next to your .yaml configuration file. +# ESPHome AXP192 Component -- axp192 : power management - configuration hard coded for the M5StickC - should be made more generic. - Must be present to initialize the screen power. - Can be also used to read some of the power info - most sensors aren't published yet. - Mostly the AXP192 from M5Stack sample code adapted for esphome. -- st7735 : TFT screen - configuration hard coded for the M5StickC - should be made more generic. - Adapted from https://github.com/musk95/esphome-1/tree/dev/esphome/components/st7789v + M5StickC sample code for the init +This custom component it to implement support for the AXP192 for both the M5Stick-C, and the M5Stack Core2, building on top of airy10's code. + +## Installation + +Copy the components to a custom_components directory next to your .yaml configuration file. + +## Configuration + +Sample configurations can be found within `/sample-config`. Please note that I've not yet been able to correctly configure the M5Stick-C screen just yet, however the AXP192 component does initalise it, and the sample configuration currently demostrates a white screen, when it should present some text. I plan to fix this soon. + +This component adds a new model configuration to the AXP192 sensor, `model: M5CORE2` & `model: M5STICKC`, as so the right pins are initalized and voltages go to the right places: + +### M5Stick-C + +```yaml +sensor: + - platform: axp192 + model: M5STICKC + address: 0x34 + i2c_id: bus_a + update_interval: 30s + battery_level: + name: "M5Stick Battery Level" + id: "m5stick_batterylevel" +``` + +### M5Stack Core2 + +```yaml +sensor: + - platform: axp192 + model: M5CORE2 | + address: 0x34 + i2c_id: bus_a + update_interval: 30s + battery_level: + name: "${upper_devicename} Battery Level" + id: "${devicename}_batterylevel" +``` \ No newline at end of file diff --git a/components/axp192/axp192.cpp b/components/axp192/axp192.cpp index 3e712ea..39ad722 100644 --- a/components/axp192/axp192.cpp +++ b/components/axp192/axp192.cpp @@ -6,10 +6,19 @@ namespace esphome { namespace axp192 { static const char *TAG = "axp192.sensor"; - void AXP192Component::setup() { - begin(false, false, false, false, false); + switch (this->model_) { + case AXP192_M5STICKC: + { + begin(false, false, false, false, false); + } + case AXP192_M5CORE2: + { + // disable LDO3 Vibration + begin(false, true, false, false, false); + } + } } void AXP192Component::dump_config() { @@ -41,8 +50,20 @@ void AXP192Component::update() { void AXP192Component::begin(bool disableLDO2, bool disableLDO3, bool disableRTC, bool disableDCDC1, bool disableDCDC3) { - // Set LDO2 & LDO3(TFT_LED & TFT) 3.0V - Write1Byte(0x28, 0xcc); + switch (this->model_) { + case AXP192_M5STICKC: + { + // Set LDO2 & LDO3(TFT_LED & TFT) 3.0V + Write1Byte(0x28, 0xcc); + } + case AXP192_M5CORE2: + { + // Set DCDC3 (TFT_LED & TFT) 3.0V + Write1Byte(0x27, 0xcc); + // Set LDO2 & LDO3(TFT_LED & TFT) 3.0V + Write1Byte(0x28, 0xcc); + } + } // Set ADC sample rate to 200hz Write1Byte(0x84, 0b11110010); @@ -177,8 +198,18 @@ void AXP192Component::UpdateBrightness() { ubri = c_max; } - uint8_t buf = Read8bit( 0x28 ); - Write1Byte( 0x28 , ((buf & 0x0f) | (ubri << 4)) ); + switch (this->model_) { + case AXP192_M5STICKC: + { + uint8_t buf = Read8bit( 0x28 ); + Write1Byte( 0x28 , ((buf & 0x0f) | (ubri << 4)) ); + } + case AXP192_M5CORE2: + { + uint8_t buf = Read8bit( 0x27 ); + Write1Byte( 0x27 , ((buf & 0x0f) | (ubri << 4)) ); + } + } } bool AXP192Component::GetBatState() diff --git a/components/axp192/axp192.h b/components/axp192/axp192.h index 8d983c4..1385f61 100644 --- a/components/axp192/axp192.h +++ b/components/axp192/axp192.h @@ -8,6 +8,11 @@ namespace esphome { namespace axp192 { +enum AXP192Model { + AXP192_M5STICKC = 0, + AXP192_M5CORE2, +}; + #define SLEEP_MSEC(us) (((uint64_t)us) * 1000L) #define SLEEP_SEC(us) (((uint64_t)us) * 1000000L) #define SLEEP_MIN(us) (((uint64_t)us) * 60L * 1000000L) @@ -26,6 +31,7 @@ class AXP192Component : public PollingComponent, public i2c::I2CDevice { public: void set_batterylevel_sensor(sensor::Sensor *batterylevel_sensor) { batterylevel_sensor_ = batterylevel_sensor; } void set_brightness(float brightness) { brightness_ = brightness; } + void set_model(AXP192Model model) { this->model_ = model; } // ========== INTERNAL METHODS ========== // (In most use cases you won't need these) @@ -38,14 +44,20 @@ protected: sensor::Sensor *batterylevel_sensor_; float brightness_{1.0f}; float curr_brightness_{-1.0f}; + AXP192Model model_; - /** + /** M5 Stick Values * LDO2: Display backlight * LDO3: Display Control - * RTC: Don't set GPIO1 as LDO + * RTC: Don't set GPIO1 as LDO * DCDC1: Main rail. When not set the controller shuts down. * DCDC3: Use unknown - */ + *********************** + * M5Stack Core2 Values + * LDO2: ILI9342C PWR (Display) + * LD03: Vibration Motor + */ + void begin(bool disableLDO2 = false, bool disableLDO3 = false, bool disableRTC = false, bool disableDCDC1 = false, bool disableDCDC3 = false); void UpdateBrightness(); bool GetBatState(); diff --git a/components/axp192/sensor.py b/components/axp192/sensor.py index 3ba5402..b4504ef 100644 --- a/components/axp192/sensor.py +++ b/components/axp192/sensor.py @@ -2,16 +2,24 @@ import esphome.codegen as cg import esphome.config_validation as cv from esphome.components import i2c, sensor from esphome.const import CONF_ID,\ - CONF_BATTERY_LEVEL, CONF_BRIGHTNESS, UNIT_PERCENT, ICON_BATTERY + CONF_BATTERY_LEVEL, CONF_BRIGHTNESS, UNIT_PERCENT, ICON_BATTERY, CONF_MODEL DEPENDENCIES = ['i2c'] axp192_ns = cg.esphome_ns.namespace('axp192') - AXP192Component = axp192_ns.class_('AXP192Component', cg.PollingComponent, i2c.I2CDevice) +AXP192Model = axp192_ns.enum("AXP192Model") + +MODELS = { + "M5CORE2": AXP192Model.AXP192_M5CORE2, + "M5STICKC": AXP192Model.AXP192_M5STICKC, +} + +AXP192_MODEL = cv.enum(MODELS, upper=True, space="_") CONFIG_SCHEMA = cv.Schema({ cv.GenerateID(): cv.declare_id(AXP192Component), + cv.Required(CONF_MODEL): AXP192_MODEL, cv.Optional(CONF_BATTERY_LEVEL): sensor.sensor_schema( unit_of_measurement=UNIT_PERCENT, @@ -27,6 +35,7 @@ def to_code(config): yield cg.register_component(var, config) yield i2c.register_i2c_device(var, config) + cg.add(var.set_model(config[CONF_MODEL])) if CONF_BATTERY_LEVEL in config: conf = config[CONF_BATTERY_LEVEL] sens = yield sensor.new_sensor(conf) diff --git a/components/st7735/__init__.py b/components/st7735/__init__.py deleted file mode 100644 index f9e6396..0000000 --- a/components/st7735/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -import esphome.codegen as cg - -st7735_ns = cg.esphome_ns.namespace('st7735') diff --git a/components/st7735/display.py b/components/st7735/display.py deleted file mode 100644 index a62230b..0000000 --- a/components/st7735/display.py +++ /dev/null @@ -1,41 +0,0 @@ -import esphome.codegen as cg -import esphome.config_validation as cv -from esphome import pins -from esphome.components import display, spi -from esphome.const import CONF_ID, CONF_LAMBDA -from esphome.const import CONF_DC_PIN, CONF_CS_PIN, CONF_ID, CONF_LAMBDA, CONF_PAGES -from esphome.const import CONF_EXTERNAL_VCC, CONF_LAMBDA, CONF_MODEL, CONF_RESET_PIN, \ - CONF_BRIGHTNESS -from . import st7735_ns - -DEPENDENCIES = ['spi'] - -ST7735 = st7735_ns.class_('ST7735', cg.PollingComponent, spi.SPIDevice, display.DisplayBuffer) -ST7735Ref = ST7735.operator('ref') - -CONFIG_SCHEMA = display.FULL_DISPLAY_SCHEMA.extend({ - cv.GenerateID(): cv.declare_id(ST7735), - cv.Required(CONF_RESET_PIN): pins.gpio_output_pin_schema, - cv.Required(CONF_DC_PIN): pins.gpio_output_pin_schema, - cv.Required(CONF_CS_PIN): pins.gpio_output_pin_schema, - cv.Optional(CONF_BRIGHTNESS, default=1.0): cv.percentage, -}).extend(cv.polling_component_schema('1s')).extend(spi.spi_device_schema()) - - -def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) - yield cg.register_component(var, config) - yield spi.register_spi_device(var, config) - - dc = yield cg.gpio_pin_expression(config[CONF_DC_PIN]) - cg.add(var.set_dc_pin(dc)) - - reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN]) - cg.add(var.set_reset_pin(reset)) - - if CONF_LAMBDA in config: - lambda_ = yield cg.process_lambda( - config[CONF_LAMBDA], [(display.DisplayBufferRef, 'it')], return_type=cg.void) - cg.add(var.set_writer(lambda_)) - - yield display.register_display(var, config) diff --git a/components/st7735/st7735.cpp b/components/st7735/st7735.cpp deleted file mode 100644 index dcdfdea..0000000 --- a/components/st7735/st7735.cpp +++ /dev/null @@ -1,349 +0,0 @@ -#include "st7735.h" -#include "esphome/core/log.h" -#include "esphome/components/display/display_buffer.h" - -namespace esphome { -namespace st7735 { - -#define ST_CMD_DELAY 0x80 // special signifier for command lists - -#define ST77XX_NOP 0x00 -#define ST77XX_SWRESET 0x01 -#define ST77XX_RDDID 0x04 -#define ST77XX_RDDST 0x09 - -#define ST77XX_SLPIN 0x10 -#define ST77XX_SLPOUT 0x11 -#define ST77XX_PTLON 0x12 -#define ST77XX_NORON 0x13 - -#define ST77XX_INVOFF 0x20 -#define ST77XX_INVON 0x21 -#define ST77XX_DISPOFF 0x28 -#define ST77XX_DISPON 0x29 -#define ST77XX_CASET 0x2A -#define ST77XX_RASET 0x2B -#define ST77XX_RAMWR 0x2C -#define ST77XX_RAMRD 0x2E - -#define ST77XX_PTLAR 0x30 -#define ST77XX_TEOFF 0x34 -#define ST77XX_TEON 0x35 -#define ST77XX_MADCTL 0x36 -#define ST77XX_COLMOD 0x3A - -#define ST77XX_MADCTL_MY 0x80 -#define ST77XX_MADCTL_MX 0x40 -#define ST77XX_MADCTL_MV 0x20 -#define ST77XX_MADCTL_ML 0x10 -#define ST77XX_MADCTL_RGB 0x00 - -#define ST77XX_RDID1 0xDA -#define ST77XX_RDID2 0xDB -#define ST77XX_RDID3 0xDC -#define ST77XX_RDID4 0xDD - - -// some flags for initR() :( -#define INITR_GREENTAB 0x00 -#define INITR_REDTAB 0x01 -#define INITR_BLACKTAB 0x02 -#define INITR_18GREENTAB INITR_GREENTAB -#define INITR_18REDTAB INITR_REDTAB -#define INITR_18BLACKTAB INITR_BLACKTAB -#define INITR_144GREENTAB 0x01 -#define INITR_MINI160x80 0x04 -#define INITR_HALLOWING 0x05 - -// Some register settings -#define ST7735_MADCTL_BGR 0x08 -#define ST7735_MADCTL_MH 0x04 - -#define ST7735_FRMCTR1 0xB1 -#define ST7735_FRMCTR2 0xB2 -#define ST7735_FRMCTR3 0xB3 -#define ST7735_INVCTR 0xB4 -#define ST7735_DISSET5 0xB6 - -#define ST7735_PWCTR1 0xC0 -#define ST7735_PWCTR2 0xC1 -#define ST7735_PWCTR3 0xC2 -#define ST7735_PWCTR4 0xC3 -#define ST7735_PWCTR5 0xC4 -#define ST7735_VMCTR1 0xC5 - -#define ST7735_PWCTR6 0xFC - -#define ST7735_GMCTRP1 0xE0 -#define ST7735_GMCTRN1 0xE1 - -static const uint8_t PROGMEM - Rcmd1[] = { // 7735R init, part 1 (red or green tab) - 15, // 15 commands in list: - ST77XX_SWRESET, ST_CMD_DELAY, // 1: Software reset, 0 args, w/delay - 150, // 150 ms delay - ST77XX_SLPOUT, ST_CMD_DELAY, // 2: Out of sleep mode, 0 args, w/delay - 255, // 500 ms delay - ST7735_FRMCTR1, 3, // 3: Framerate ctrl - normal mode, 3 arg: - 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) - ST7735_FRMCTR2, 3, // 4: Framerate ctrl - idle mode, 3 args: - 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) - ST7735_FRMCTR3, 6, // 5: Framerate - partial mode, 6 args: - 0x01, 0x2C, 0x2D, // Dot inversion mode - 0x01, 0x2C, 0x2D, // Line inversion mode - ST7735_INVCTR, 1, // 6: Display inversion ctrl, 1 arg: - 0x07, // No inversion - ST7735_PWCTR1, 3, // 7: Power control, 3 args, no delay: - 0xA2, - 0x02, // -4.6V - 0x84, // AUTO mode - ST7735_PWCTR2, 1, // 8: Power control, 1 arg, no delay: - 0xC5, // VGH25=2.4C VGSEL=-10 VGH=3 * AVDD - ST7735_PWCTR3, 2, // 9: Power control, 2 args, no delay: - 0x0A, // Opamp current small - 0x00, // Boost frequency - ST7735_PWCTR4, 2, // 10: Power control, 2 args, no delay: - 0x8A, // BCLK/2, - 0x2A, // opamp current small & medium low - ST7735_PWCTR5, 2, // 11: Power control, 2 args, no delay: - 0x8A, 0xEE, - ST7735_VMCTR1, 1, // 12: Power control, 1 arg, no delay: - 0x0E, - ST77XX_INVOFF, 0, // 13: Don't invert display, no args - ST77XX_MADCTL, 1, // 14: Mem access ctl (directions), 1 arg: - 0xC8, // row/col addr, bottom-top refresh - ST77XX_COLMOD, 1, // 15: set color mode, 1 arg, no delay: - 0x05 }, // 16-bit color - - Rcmd2green[] = { // 7735R init, part 2 (green tab only) - 2, // 2 commands in list: - ST77XX_CASET, 4, // 1: Column addr set, 4 args, no delay: - 0x00, 0x02, // XSTART = 0 - 0x00, 0x7F+0x02, // XEND = 127 - ST77XX_RASET, 4, // 2: Row addr set, 4 args, no delay: - 0x00, 0x01, // XSTART = 0 - 0x00, 0x9F+0x01 }, // XEND = 159 - Rcmd2green144[] = { // 7735R init, part 2 (green 1.44 tab) - 2, // 2 commands in list: - ST77XX_CASET, 4, // 1: Column addr set, 4 args, no delay: - 0x00, 0x00, // XSTART = 0 - 0x00, 0x7F, // XEND = 127 - ST77XX_RASET, 4, // 2: Row addr set, 4 args, no delay: - 0x00, 0x00, // XSTART = 0 - 0x00, 0x7F }, // XEND = 127 - Rcmd3[] = { // 7735R init, part 3 (red or green tab) - 4, // 4 commands in list: - ST7735_GMCTRP1, 16 , // 1: Gamma Adjustments (pos. polarity), 16 args + delay: - 0x02, 0x1c, 0x07, 0x12, // (Not entirely necessary, but provides - 0x37, 0x32, 0x29, 0x2d, // accurate colors) - 0x29, 0x25, 0x2B, 0x39, - 0x00, 0x01, 0x03, 0x10, - ST7735_GMCTRN1, 16 , // 2: Gamma Adjustments (neg. polarity), 16 args + delay: - 0x03, 0x1d, 0x07, 0x06, // (Not entirely necessary, but provides - 0x2E, 0x2C, 0x29, 0x2D, // accurate colors) - 0x2E, 0x2E, 0x37, 0x3F, - 0x00, 0x00, 0x02, 0x10, - ST77XX_NORON, ST_CMD_DELAY, // 3: Normal display on, no args, w/delay - 10, // 10 ms delay - ST77XX_DISPON, ST_CMD_DELAY, // 4: Main screen turn on, no args w/delay - 100 }; // 100 ms delay - -static const char *TAG = "st7735"; - -void ST7735::setup() { - ESP_LOGCONFIG(TAG, "Setting up SPI ST7735..."); - this->spi_setup(); - this->dc_pin_->setup(); // OUTPUT - - this->init_reset_(); - - this->displayInit(Rcmd1); - this->displayInit(Rcmd2green); - this->displayInit(Rcmd3); - this->writecommand(ST7735_INVON); - - delay(120); - - this->writecommand(ST7735_DISPON); //Display on - delay(120); - - this->init_internal_(this->get_buffer_length_()); - memset(this->buffer_, 0x00, this->get_buffer_length_()); -} - -void ST7735::write_display_data() { - - uint16_t offsetx = 26; - uint16_t offsety = 1; - - uint16_t x1 = offsetx; - uint16_t x2 = x1 + get_width_internal()-1; - uint16_t y1 = offsety; - uint16_t y2 = y1 + get_height_internal()-1; - - this->enable(); - - // set column(x) address - this->dc_pin_->digital_write(false); - this->write_byte(ST77XX_CASET); - this->dc_pin_->digital_write(true); - this->spi_master_write_addr(x1, x2); - - // set Page(y) address - this->dc_pin_->digital_write(false); - this->write_byte(ST77XX_RASET); - this->dc_pin_->digital_write(true); - this->spi_master_write_addr(y1, y2); - - // Memory Write - this->dc_pin_->digital_write(false); - this->write_byte(ST77XX_RAMWR); - this->dc_pin_->digital_write(true); - - this->write_array(this->buffer_, this->get_buffer_length_()); - - this->disable(); -} - -void ST7735::spi_master_write_addr(uint16_t addr1, uint16_t addr2) -{ - static uint8_t Byte[4]; - Byte[0] = (addr1 >> 8) & 0xFF; - Byte[1] = addr1 & 0xFF; - Byte[2] = (addr2 >> 8) & 0xFF; - Byte[3] = addr2 & 0xFF; - - - this->dc_pin_->digital_write(true); - this->write_array(Byte, 4); - -} - -void ST7735::spi_master_write_color(uint16_t color, uint16_t size) -{ - static uint8_t Byte[1024]; - int index = 0; - for(int i=0;i> 8) & 0xFF; - Byte[index++] = color & 0xFF; - } - - this->dc_pin_->digital_write(true); - return write_array(Byte, size*2); - -} - - -void ST7735::dump_config() { - LOG_DISPLAY("", "SPI ST7735", this); - LOG_PIN(" CS Pin: ", this->cs_); - LOG_PIN(" DC Pin: ", this->dc_pin_); - LOG_PIN(" Reset Pin: ", this->reset_pin_); - LOG_UPDATE_INTERVAL(this); -} - -float ST7735::get_setup_priority() const { - return setup_priority::PROCESSOR; -} - -void ST7735::update() { - this->do_update_(); - this->write_display_data(); -} - -void ST7735::loop() { - -} - -int ST7735::get_width_internal() { - return 80; -} - -int ST7735::get_height_internal() { - return 160; -} - -size_t ST7735::get_buffer_length_() { - return size_t(this->get_width_internal()) * size_t(this->get_height_internal()) * 2; -} - - -void HOT ST7735::draw_absolute_pixel_internal(int x, int y, Color color) { - if (x >= this->get_width_internal() || x < 0 || y >= this->get_height_internal() || y < 0) - return; - - auto color565 = color.to_rgb_565(); - uint16_t pos = (x + y * this->get_width_internal()) * 2; - this->buffer_[pos++] = (color565 >> 8) & 0xff; - this->buffer_[pos] = color565 & 0xff; -} - -void ST7735::displayInit(const uint8_t *addr) { - - uint8_t numCommands, cmd, numArgs; - uint16_t ms; - - numCommands = pgm_read_byte(addr++); // Number of commands to follow - while(numCommands--) { // For each command... - cmd = pgm_read_byte(addr++); // Read command - numArgs = pgm_read_byte(addr++); // Number of args to follow - ms = numArgs & ST_CMD_DELAY; // If hibit set, delay follows args - numArgs &= ~ST_CMD_DELAY; // Mask out delay bit - this->sendcommand(cmd, addr, numArgs); - addr += numArgs; - - if(ms) { - ms = pgm_read_byte(addr++); // Read post-command delay time (ms) - if(ms == 255) ms = 500; // If 255, delay for 500 ms - delay(ms); - } - } -} - -void ST7735::init_reset_() { - if (this->reset_pin_ != nullptr) { - this->reset_pin_->setup(); - this->reset_pin_->digital_write(true); - delay(1); - // Trigger Reset - this->reset_pin_->digital_write(false); - delay(10); - // Wake up - this->reset_pin_->digital_write(true); - } -} - -void ST7735::writecommand(uint8_t value) { - this->enable(); - this->dc_pin_->digital_write(false); - this->write_byte(value); - this->dc_pin_->digital_write(true); - this->disable(); -} - -void ST7735::writedata(uint8_t value) { - this->dc_pin_->digital_write(true); - this->enable(); - this->write_byte(value); - this->disable(); -} - -void ST7735::sendcommand(uint8_t cmd, const uint8_t* dataBytes, uint8_t numDataBytes) { - this->writecommand(cmd); - this->senddata(dataBytes,numDataBytes); -} - -void ST7735::senddata(const uint8_t* dataBytes, uint8_t numDataBytes) { - this->dc_pin_->digital_write(true); //pull DC high to indicate data - this->cs_->digital_write(false); - this->enable(); - for (uint8_t i=0; itransfer_byte(pgm_read_byte(dataBytes++)); //write byte - SPI library - } - this->cs_->digital_write(true); - this->disable(); - -} - -} // namespace st7735 -} // namespace esphome diff --git a/components/st7735/st7735.h b/components/st7735/st7735.h deleted file mode 100644 index d680d51..0000000 --- a/components/st7735/st7735.h +++ /dev/null @@ -1,163 +0,0 @@ -#pragma once - -#include "esphome/core/component.h" -#include "esphome/components/spi/spi.h" -#include "esphome/components/display/display_buffer.h" - -// ST7735 specific commands used in init -#define ST7735_NOP 0x00 -#define ST7735_SWRESET 0x01 -#define ST7735_RDDID 0x04 -#define ST7735_RDDST 0x09 - -#define ST7735_RDDPM 0x0A // Read display power mode -#define ST7735_RDD_MADCTL 0x0B // Read display MADCTL -#define ST7735_RDD_COLMOD 0x0C // Read display pixel format -#define ST7735_RDDIM 0x0D // Read display image mode -#define ST7735_RDDSM 0x0E // Read display signal mode -#define ST7735_RDDSR 0x0F // Read display self-diagnostic result (ST7735) - -#define ST7735_SLPIN 0x10 -#define ST7735_SLPOUT 0x11 -#define ST7735_PTLON 0x12 -#define ST7735_NORON 0x13 - -#define ST7735_INVOFF 0x20 -#define ST7735_INVON 0x21 -#define ST7735_GAMSET 0x26 // Gamma set -#define ST7735_DISPOFF 0x28 -#define ST7735_DISPON 0x29 -#define ST7735_CASET 0x2A -#define ST7735_RASET 0x2B -#define ST7735_RAMWR 0x2C -#define ST7735_RGBSET 0x2D // Color setting for 4096, 64K and 262K colors -#define ST7735_RAMRD 0x2E - -#define ST7735_PTLAR 0x30 -#define ST7735_VSCRDEF 0x33 // Vertical scrolling definition (ST7735) -#define ST7735_TEOFF 0x34 // Tearing effect line off -#define ST7735_TEON 0x35 // Tearing effect line on -#define ST7735_MADCTL 0x36 // Memory data access control -#define ST7735_IDMOFF 0x38 // Idle mode off -#define ST7735_IDMON 0x39 // Idle mode on -#define ST7735_RAMWRC 0x3C // Memory write continue (ST7735) -#define ST7735_RAMRDC 0x3E // Memory read continue (ST7735) -#define ST7735_COLMOD 0x3A - -#define ST7735_RAMCTRL 0xB0 // RAM control -#define ST7735_RGBCTRL 0xB1 // RGB control -#define ST7735_PORCTRL 0xB2 // Porch control -#define ST7735_FRCTRL1 0xB3 // Frame rate control -#define ST7735_PARCTRL 0xB5 // Partial mode control -#define ST7735_GCTRL 0xB7 // Gate control -#define ST7735_GTADJ 0xB8 // Gate on timing adjustment -#define ST7735_DGMEN 0xBA // Digital gamma enable -#define ST7735_VCOMS 0xBB // VCOMS setting -#define ST7735_LCMCTRL 0xC0 // LCM control -#define ST7735_IDSET 0xC1 // ID setting -#define ST7735_VDVVRHEN 0xC2 // VDV and VRH command enable -#define ST7735_VRHS 0xC3 // VRH set -#define ST7735_VDVSET 0xC4 // VDV setting -#define ST7735_VCMOFSET 0xC5 // VCOMS offset set -#define ST7735_FRCTR2 0xC6 // FR Control 2 -#define ST7735_CABCCTRL 0xC7 // CABC control -#define ST7735_REGSEL1 0xC8 // Register value section 1 -#define ST7735_REGSEL2 0xCA // Register value section 2 -#define ST7735_PWMFRSEL 0xCC // PWM frequency selection -#define ST7735_PWCTRL1 0xD0 // Power control 1 -#define ST7735_VAPVANEN 0xD2 // Enable VAP/VAN signal output -#define ST7735_CMD2EN 0xDF // Command 2 enable -#define ST7735_PVGAMCTRL 0xE0 // Positive voltage gamma control -#define ST7735_NVGAMCTRL 0xE1 // Negative voltage gamma control -#define ST7735_DGMLUTR 0xE2 // Digital gamma look-up table for red -#define ST7735_DGMLUTB 0xE3 // Digital gamma look-up table for blue -#define ST7735_GATECTRL 0xE4 // Gate control -#define ST7735_SPI2EN 0xE7 // SPI2 enable -#define ST7735_PWCTRL2 0xE8 // Power control 2 -#define ST7735_EQCTRL 0xE9 // Equalize time control -#define ST7735_PROMCTRL 0xEC // Program control -#define ST7735_PROMEN 0xFA // Program mode enable -#define ST7735_NVMSET 0xFC // NVM setting -#define ST7735_PROMACT 0xFE // Program action - -namespace esphome { -namespace st7735 { - -template -struct Color565 { - operator Color () const - { - return Color((((N)&0xF800) >> 8), (((N)&0x07E0) >> 3), (((N)&0x001F) << 3)); - } -}; - -} // namespace st7735 -} // namespace esphome - -// Some ready-made 16-bit ('565') color settings: -#define ST77XX_BLACK esphome::st7735::Color565<0x0000>{} /* 0, 0, 0 */ -#define ST77XX_WHITE esphome::st7735::Color565<0xFFFF>{} /* 255, 255, 255 */ -#define ST77XX_RED esphome::st7735::Color565<0xF800>{} /* 255, 0, 0 */ -#define ST77XX_GREEN esphome::st7735::Color565<0x07E0>{} /* 0, 255, 0 */ -#define ST77XX_BLUE esphome::st7735::Color565<0x001F>{} /* 0, 0, 255 */ -#define ST77XX_CYAN esphome::st7735::Color565<0x07FF>{} /* 0, 255, 255 */ -#define ST77XX_MAGENTA esphome::st7735::Color565<0xF81F>{} /* 255, 0, 255 */ -#define ST77XX_YELLOW esphome::st7735::Color565<0xFFE0>{} /* 255, 255, 0 */ -#define ST77XX_ORANGE esphome::st7735::Color565<0xFDA0>{} /* 255, 180, 0 */ - -// Some ready-made 16-bit ('565') color settings: -#define ST7735_BLACK ST77XX_BLACK -#define ST7735_WHITE ST77XX_WHITE -#define ST7735_RED ST77XX_RED -#define ST7735_GREEN ST77XX_GREEN -#define ST7735_BLUE ST77XX_BLUE -#define ST7735_CYAN ST77XX_CYAN -#define ST7735_MAGENTA ST77XX_MAGENTA -#define ST7735_YELLOW ST77XX_YELLOW -#define ST7735_ORANGE ST77XX_ORANGE - -namespace esphome { -namespace st7735 { - -class ST7735 : public PollingComponent, public display::DisplayBuffer, - public spi::SPIDevice { - public: - void set_dc_pin(GPIOPin *dc_pin) { this->dc_pin_ = dc_pin; } - void set_reset_pin(GPIOPin *reset_pin) { this->reset_pin_ = reset_pin; } - - // ========== INTERNAL METHODS ========== - // (In most use cases you won't need these) - void setup() override; - void dump_config() override; - float get_setup_priority() const override; - void update() override; - void loop() override; - - void write_display_data(); - - protected: - GPIOPin *dc_pin_; - GPIOPin *reset_pin_{nullptr}; - - void displayInit(const uint8_t *addr); - void sendcommand(uint8_t cmd, const uint8_t* dataBytes, uint8_t numDataBytes); - void senddata(const uint8_t* dataBytes, uint8_t numDataBytes); - - void init_reset_(); - void writecommand(uint8_t value); - void writedata(uint8_t value); - - void spi_master_write_addr(uint16_t addr1, uint16_t addr2); - void spi_master_write_color(uint16_t color, uint16_t size); - - void draw_absolute_pixel_internal(int x, int y, Color color) override; - - int get_height_internal() override; - int get_width_internal() override; - size_t get_buffer_length_(); -}; - - -} // namespace st7735 -} // namespace esphome diff --git a/sample-config/M5StickC.jpg b/sample-config/M5StickC.jpg deleted file mode 100644 index 728c2f9308ce55a7b6b0a11476ebc86565125371..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92015 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