Pass RST pin through I2C.
This commit is contained in:
parent
6493988324
commit
8636de8f2f
@ -12,7 +12,7 @@ I2C i2c(PIN_SDA, PIN_SCL, PIN_RST);
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
SSD1306 ssd1306(i2c.i2c_bus_);
|
SSD1306 ssd1306(i2c);
|
||||||
Display d(&ssd1306);
|
Display d(&ssd1306);
|
||||||
|
|
||||||
d.set_text("Test test 12345678910",
|
d.set_text("Test test 12345678910",
|
||||||
|
@ -5,10 +5,9 @@ Panel::Panel(IPanelDevice *device) :
|
|||||||
device_(device),
|
device_(device),
|
||||||
io_handle_(nullptr),
|
io_handle_(nullptr),
|
||||||
esp_panel_(nullptr),
|
esp_panel_(nullptr),
|
||||||
// According to SSD1306 datasheet
|
|
||||||
panel_config_(
|
panel_config_(
|
||||||
(esp_lcd_panel_dev_config_t) {
|
(esp_lcd_panel_dev_config_t) {
|
||||||
.reset_gpio_num = -1, // TODO: PIN_RST,
|
.reset_gpio_num = device_->rst_num_,
|
||||||
.bits_per_pixel = 1,
|
.bits_per_pixel = 1,
|
||||||
// .vendor_config should be set in IPanelDevice::init_panel override
|
// .vendor_config should be set in IPanelDevice::init_panel override
|
||||||
}
|
}
|
||||||
|
@ -15,9 +15,23 @@
|
|||||||
|
|
||||||
class IPanelDevice {
|
class IPanelDevice {
|
||||||
public:
|
public:
|
||||||
explicit IPanelDevice(i2c_master_bus_handle_t i2c,
|
explicit IPanelDevice(I2C &i2c,
|
||||||
esp_lcd_panel_io_i2c_config_t io_config) :
|
esp_lcd_panel_io_i2c_config_t config,
|
||||||
i2c_bus_(i2c),
|
int width,
|
||||||
|
int height) :
|
||||||
|
IPanelDevice(i2c, config, width, height,
|
||||||
|
width * height / 8 + LVGL_PALETTE_SIZE) { }
|
||||||
|
|
||||||
|
explicit IPanelDevice(I2C &i2c,
|
||||||
|
esp_lcd_panel_io_i2c_config_t io_config,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
size_t draw_buf_size) :
|
||||||
|
width_(width),
|
||||||
|
height_(height),
|
||||||
|
rst_num_(i2c.rst_num_),
|
||||||
|
lv_buf_size_(draw_buf_size),
|
||||||
|
i2c_bus_(i2c.i2c_bus_),
|
||||||
io_config_(io_config) { }
|
io_config_(io_config) { }
|
||||||
|
|
||||||
virtual ~IPanelDevice() = default;
|
virtual ~IPanelDevice() = default;
|
||||||
@ -45,6 +59,7 @@ public:
|
|||||||
|
|
||||||
int32_t width_;
|
int32_t width_;
|
||||||
int32_t height_;
|
int32_t height_;
|
||||||
|
int rst_num_;
|
||||||
|
|
||||||
// LVGL reserves 2x4 bytes in the buffer to be used as a palette.
|
// LVGL reserves 2x4 bytes in the buffer to be used as a palette.
|
||||||
size_t lv_buf_size_;
|
size_t lv_buf_size_;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
// To use LV_COLOR_FORMAT_I1 we need an extra buffer to hold the converted data.
|
// To use LV_COLOR_FORMAT_I1 we need an extra buffer to hold the converted data.
|
||||||
uint8_t SSD1306::oled_buffer_[LCD_H_RES * LCD_V_RES / 8];
|
uint8_t SSD1306::oled_buffer_[LCD_H_RES * LCD_V_RES / 8];
|
||||||
|
|
||||||
SSD1306::SSD1306(i2c_master_bus_handle_t i2c,
|
SSD1306::SSD1306(I2C& i2c,
|
||||||
esp_lcd_panel_ssd1306_config_t config,
|
esp_lcd_panel_ssd1306_config_t config,
|
||||||
int width,
|
int width,
|
||||||
int height) :
|
int height) :
|
||||||
@ -16,14 +16,12 @@ SSD1306::SSD1306(i2c_master_bus_handle_t i2c,
|
|||||||
.lcd_cmd_bits = LCD_CMD_BITS,
|
.lcd_cmd_bits = LCD_CMD_BITS,
|
||||||
.lcd_param_bits = LCD_CMD_BITS,
|
.lcd_param_bits = LCD_CMD_BITS,
|
||||||
.scl_speed_hz = LCD_PIXEL_CLOCK_HZ,
|
.scl_speed_hz = LCD_PIXEL_CLOCK_HZ,
|
||||||
}
|
},
|
||||||
|
width,
|
||||||
|
height
|
||||||
),
|
),
|
||||||
ssd1306_config_(config)
|
ssd1306_config_(config)
|
||||||
{
|
{ }
|
||||||
this->width_ = width;
|
|
||||||
this->height_ = height;
|
|
||||||
this->lv_buf_size_ = width_ * height_ / 8 + LVGL_PALETTE_SIZE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SSD1306::init_panel(esp_lcd_panel_dev_config_t &config,
|
void SSD1306::init_panel(esp_lcd_panel_dev_config_t &config,
|
||||||
esp_lcd_panel_io_handle_t io,
|
esp_lcd_panel_io_handle_t io,
|
||||||
|
@ -17,18 +17,17 @@
|
|||||||
#define LCD_CMD_BITS 8
|
#define LCD_CMD_BITS 8
|
||||||
#define LCD_PARAM_BITS 8
|
#define LCD_PARAM_BITS 8
|
||||||
|
|
||||||
#define PIN_RST -1
|
|
||||||
|
|
||||||
class SSD1306 : public IPanelDevice {
|
class SSD1306 : public IPanelDevice {
|
||||||
public:
|
public:
|
||||||
// Constructors allow overriding ssd1306 config.
|
// Constructors allow overriding ssd1306 config.
|
||||||
explicit SSD1306(i2c_master_bus_handle_t i2c) :
|
explicit SSD1306(I2C &i2c) :
|
||||||
SSD1306(i2c, {.height = SCREEN_HEIGHT}) { }
|
SSD1306(i2c, {.height = SCREEN_HEIGHT}) { }
|
||||||
|
|
||||||
explicit SSD1306(i2c_master_bus_handle_t i2c,
|
SSD1306(I2C &i2c,
|
||||||
esp_lcd_panel_ssd1306_config_t config,
|
esp_lcd_panel_ssd1306_config_t config,
|
||||||
int width = SCREEN_WIDTH,
|
int width = SCREEN_WIDTH,
|
||||||
int height = SCREEN_HEIGHT);
|
int height = SCREEN_HEIGHT
|
||||||
|
);
|
||||||
|
|
||||||
virtual ~SSD1306() = default;
|
virtual ~SSD1306() = default;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user