mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Add support for waveshare 2.9in B V3 version (#5902)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
		| @@ -32,6 +32,9 @@ WaveshareEPaper2P7InV2 = waveshare_epaper_ns.class_( | |||||||
| WaveshareEPaper2P9InB = waveshare_epaper_ns.class_( | WaveshareEPaper2P9InB = waveshare_epaper_ns.class_( | ||||||
|     "WaveshareEPaper2P9InB", WaveshareEPaper |     "WaveshareEPaper2P9InB", WaveshareEPaper | ||||||
| ) | ) | ||||||
|  | WaveshareEPaper2P9InBV3 = waveshare_epaper_ns.class_( | ||||||
|  |     "WaveshareEPaper2P9InBV3", WaveshareEPaper | ||||||
|  | ) | ||||||
| GDEY029T94 = waveshare_epaper_ns.class_("GDEY029T94", WaveshareEPaper) | GDEY029T94 = waveshare_epaper_ns.class_("GDEY029T94", WaveshareEPaper) | ||||||
| WaveshareEPaper4P2In = waveshare_epaper_ns.class_( | WaveshareEPaper4P2In = waveshare_epaper_ns.class_( | ||||||
|     "WaveshareEPaper4P2In", WaveshareEPaper |     "WaveshareEPaper4P2In", WaveshareEPaper | ||||||
| @@ -88,6 +91,7 @@ MODELS = { | |||||||
|     "2.70in": ("b", WaveshareEPaper2P7In), |     "2.70in": ("b", WaveshareEPaper2P7In), | ||||||
|     "2.70inv2": ("b", WaveshareEPaper2P7InV2), |     "2.70inv2": ("b", WaveshareEPaper2P7InV2), | ||||||
|     "2.90in-b": ("b", WaveshareEPaper2P9InB), |     "2.90in-b": ("b", WaveshareEPaper2P9InB), | ||||||
|  |     "2.90in-bv3": ("b", WaveshareEPaper2P9InBV3), | ||||||
|     "4.20in": ("b", WaveshareEPaper4P2In), |     "4.20in": ("b", WaveshareEPaper4P2In), | ||||||
|     "4.20in-bv2": ("b", WaveshareEPaper4P2InBV2), |     "4.20in-bv2": ("b", WaveshareEPaper4P2InBV2), | ||||||
|     "5.83in": ("b", WaveshareEPaper5P8In), |     "5.83in": ("b", WaveshareEPaper5P8In), | ||||||
|   | |||||||
| @@ -766,6 +766,75 @@ void WaveshareEPaper2P9InB::dump_config() { | |||||||
|   LOG_UPDATE_INTERVAL(this); |   LOG_UPDATE_INTERVAL(this); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // ======================================================== | ||||||
|  | //               2.90in Type B (LUT from OTP) | ||||||
|  | // Datasheet: | ||||||
|  | //  - https://files.waveshare.com/upload/a/af/2.9inch-e-paper-b-v3-specification.pdf | ||||||
|  | // ======================================================== | ||||||
|  |  | ||||||
|  | void WaveshareEPaper2P9InBV3::initialize() { | ||||||
|  |   // from https://github.com/waveshareteam/e-Paper/blob/master/Arduino/epd2in9b_V3/epd2in9b_V3.cpp | ||||||
|  |   this->reset_(); | ||||||
|  |  | ||||||
|  |   // COMMAND POWER ON | ||||||
|  |   this->command(0x04); | ||||||
|  |   this->wait_until_idle_(); | ||||||
|  |  | ||||||
|  |   // COMMAND PANEL SETTING | ||||||
|  |   this->command(0x00); | ||||||
|  |   this->data(0x0F); | ||||||
|  |   this->data(0x89); | ||||||
|  |  | ||||||
|  |   // COMMAND RESOLUTION SETTING | ||||||
|  |   this->command(0x61); | ||||||
|  |   this->data(0x80); | ||||||
|  |   this->data(0x01); | ||||||
|  |   this->data(0x28); | ||||||
|  |  | ||||||
|  |   // COMMAND VCOM AND DATA INTERVAL SETTING | ||||||
|  |   this->command(0x50); | ||||||
|  |   this->data(0x77); | ||||||
|  | } | ||||||
|  | void HOT WaveshareEPaper2P9InBV3::display() { | ||||||
|  |   // COMMAND DATA START TRANSMISSION 1 (B/W data) | ||||||
|  |   this->command(0x10); | ||||||
|  |   delay(2); | ||||||
|  |   this->start_data_(); | ||||||
|  |   this->write_array(this->buffer_, this->get_buffer_length_()); | ||||||
|  |   this->end_data_(); | ||||||
|  |   this->command(0x92); | ||||||
|  |   delay(2); | ||||||
|  |  | ||||||
|  |   // COMMAND DATA START TRANSMISSION 2 (RED data) | ||||||
|  |   this->command(0x13); | ||||||
|  |   delay(2); | ||||||
|  |   this->start_data_(); | ||||||
|  |   for (size_t i = 0; i < this->get_buffer_length_(); i++) | ||||||
|  |     this->write_byte(0xFF); | ||||||
|  |   this->end_data_(); | ||||||
|  |   this->command(0x92); | ||||||
|  |   delay(2); | ||||||
|  |  | ||||||
|  |   // COMMAND DISPLAY REFRESH | ||||||
|  |   this->command(0x12); | ||||||
|  |   delay(2); | ||||||
|  |   this->wait_until_idle_(); | ||||||
|  |  | ||||||
|  |   // COMMAND POWER OFF | ||||||
|  |   // NOTE: power off < deep sleep | ||||||
|  |   this->command(0x02); | ||||||
|  | } | ||||||
|  | int WaveshareEPaper2P9InBV3::get_width_internal() { return 128; } | ||||||
|  | int WaveshareEPaper2P9InBV3::get_height_internal() { return 296; } | ||||||
|  | void WaveshareEPaper2P9InBV3::dump_config() { | ||||||
|  |   LOG_DISPLAY("", "Waveshare E-Paper", this); | ||||||
|  |   ESP_LOGCONFIG(TAG, "  Model: 2.9in (B) V3"); | ||||||
|  |   LOG_PIN("  Reset Pin: ", this->reset_pin_); | ||||||
|  |   LOG_PIN("  DC Pin: ", this->dc_pin_); | ||||||
|  |   LOG_PIN("  Busy Pin: ", this->busy_pin_); | ||||||
|  |   LOG_UPDATE_INTERVAL(this); | ||||||
|  | } | ||||||
|  |  | ||||||
| // ======================================================== | // ======================================================== | ||||||
| //     Good Display 2.9in black/white/grey | //     Good Display 2.9in black/white/grey | ||||||
| // Datasheet: | // Datasheet: | ||||||
|   | |||||||
| @@ -256,6 +256,26 @@ class WaveshareEPaper2P9InB : public WaveshareEPaper { | |||||||
|   int get_height_internal() override; |   int get_height_internal() override; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | class WaveshareEPaper2P9InBV3 : public WaveshareEPaper { | ||||||
|  |  public: | ||||||
|  |   void initialize() override; | ||||||
|  |  | ||||||
|  |   void display() override; | ||||||
|  |  | ||||||
|  |   void dump_config() override; | ||||||
|  |  | ||||||
|  |   void deep_sleep() override { | ||||||
|  |     // COMMAND DEEP SLEEP | ||||||
|  |     this->command(0x07); | ||||||
|  |     this->data(0xA5);  // check byte | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  protected: | ||||||
|  |   int get_width_internal() override; | ||||||
|  |  | ||||||
|  |   int get_height_internal() override; | ||||||
|  | }; | ||||||
|  |  | ||||||
| class WaveshareEPaper4P2In : public WaveshareEPaper { | class WaveshareEPaper4P2In : public WaveshareEPaper { | ||||||
|  public: |  public: | ||||||
|   void initialize() override; |   void initialize() override; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user