mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	support for waveshare 7.50in-hd-b (#3239)
This commit is contained in:
		| @@ -50,6 +50,9 @@ WaveshareEPaper7P5InBV2 = waveshare_epaper_ns.class_( | |||||||
| WaveshareEPaper7P5InV2 = waveshare_epaper_ns.class_( | WaveshareEPaper7P5InV2 = waveshare_epaper_ns.class_( | ||||||
|     "WaveshareEPaper7P5InV2", WaveshareEPaper |     "WaveshareEPaper7P5InV2", WaveshareEPaper | ||||||
| ) | ) | ||||||
|  | WaveshareEPaper7P5InHDB = waveshare_epaper_ns.class_( | ||||||
|  |     "WaveshareEPaper7P5InHDB", WaveshareEPaper | ||||||
|  | ) | ||||||
| WaveshareEPaper2P13InDKE = waveshare_epaper_ns.class_( | WaveshareEPaper2P13InDKE = waveshare_epaper_ns.class_( | ||||||
|     "WaveshareEPaper2P13InDKE", WaveshareEPaper |     "WaveshareEPaper2P13InDKE", WaveshareEPaper | ||||||
| ) | ) | ||||||
| @@ -76,6 +79,7 @@ MODELS = { | |||||||
|     "7.50in-bv2": ("b", WaveshareEPaper7P5InBV2), |     "7.50in-bv2": ("b", WaveshareEPaper7P5InBV2), | ||||||
|     "7.50in-bc": ("b", WaveshareEPaper7P5InBC), |     "7.50in-bc": ("b", WaveshareEPaper7P5InBC), | ||||||
|     "7.50inv2": ("b", WaveshareEPaper7P5InV2), |     "7.50inv2": ("b", WaveshareEPaper7P5InV2), | ||||||
|  |     "7.50in-hd-b": ("b", WaveshareEPaper7P5InHDB), | ||||||
|     "2.13in-ttgo-dke": ("c", WaveshareEPaper2P13InDKE), |     "2.13in-ttgo-dke": ("c", WaveshareEPaper2P13InDKE), | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1241,6 +1241,107 @@ void WaveshareEPaper7P5InBC::dump_config() { | |||||||
|   LOG_UPDATE_INTERVAL(this); |   LOG_UPDATE_INTERVAL(this); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void WaveshareEPaper7P5InHDB::initialize() { | ||||||
|  |   this->command(0x12);  // SWRESET | ||||||
|  |  | ||||||
|  |   this->wait_until_idle_();  // waiting for the electronic paper IC to release the idle signal | ||||||
|  |  | ||||||
|  |   this->command(0x46);  // Auto Write RAM | ||||||
|  |   this->data(0xF7); | ||||||
|  |  | ||||||
|  |   this->wait_until_idle_();  // waiting for the electronic paper IC to release the idle signal | ||||||
|  |  | ||||||
|  |   this->command(0x47);  // Auto Write RAM | ||||||
|  |   this->data(0xF7); | ||||||
|  |  | ||||||
|  |   this->wait_until_idle_();  // waiting for the electronic paper IC to release the idle signal | ||||||
|  |  | ||||||
|  |   this->command(0x0C);  // Soft start setting | ||||||
|  |   this->data(0xAE); | ||||||
|  |   this->data(0xC7); | ||||||
|  |   this->data(0xC3); | ||||||
|  |   this->data(0xC0); | ||||||
|  |   this->data(0x40); | ||||||
|  |  | ||||||
|  |   this->command(0x01);  // Set MUX as 527 | ||||||
|  |   this->data(0xAF); | ||||||
|  |   this->data(0x02); | ||||||
|  |   this->data(0x01); | ||||||
|  |  | ||||||
|  |   this->command(0x11);  // Data entry mode | ||||||
|  |   this->data(0x01); | ||||||
|  |  | ||||||
|  |   this->command(0x44); | ||||||
|  |   this->data(0x00);  // RAM x address start at 0 | ||||||
|  |   this->data(0x00); | ||||||
|  |   this->data(0x6F);  // RAM x address end at 36Fh -> 879 | ||||||
|  |   this->data(0x03); | ||||||
|  |  | ||||||
|  |   this->command(0x45); | ||||||
|  |   this->data(0xAF);  // RAM y address start at 20Fh; | ||||||
|  |   this->data(0x02); | ||||||
|  |   this->data(0x00);  // RAM y address end at 00h; | ||||||
|  |   this->data(0x00); | ||||||
|  |  | ||||||
|  |   this->command(0x3C);  // VBD | ||||||
|  |   this->data(0x01);     // LUT1, for white | ||||||
|  |  | ||||||
|  |   this->command(0x18); | ||||||
|  |   this->data(0X80); | ||||||
|  |  | ||||||
|  |   this->command(0x22); | ||||||
|  |   this->data(0XB1);  // Load Temperature and waveform setting. | ||||||
|  |  | ||||||
|  |   this->command(0x20); | ||||||
|  |  | ||||||
|  |   this->wait_until_idle_();  // waiting for the electronic paper IC to release the idle signal | ||||||
|  |  | ||||||
|  |   this->command(0x4E); | ||||||
|  |   this->data(0x00); | ||||||
|  |   this->data(0x00); | ||||||
|  |  | ||||||
|  |   this->command(0x4F); | ||||||
|  |   this->data(0xAF); | ||||||
|  |   this->data(0x02); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void HOT WaveshareEPaper7P5InHDB::display() { | ||||||
|  |   this->command(0x4F); | ||||||
|  |   this->data(0xAf); | ||||||
|  |   this->data(0x02); | ||||||
|  |  | ||||||
|  |   // BLACK | ||||||
|  |   this->command(0x24); | ||||||
|  |   this->start_data_(); | ||||||
|  |   this->write_array(this->buffer_, this->get_buffer_length_()); | ||||||
|  |   this->end_data_(); | ||||||
|  |  | ||||||
|  |   // RED | ||||||
|  |   this->command(0x26); | ||||||
|  |   this->start_data_(); | ||||||
|  |   for (size_t i = 0; i < this->get_buffer_length_(); i++) | ||||||
|  |     this->write_byte(0x00); | ||||||
|  |   this->end_data_(); | ||||||
|  |  | ||||||
|  |   this->command(0x22); | ||||||
|  |   this->data(0xC7); | ||||||
|  |   this->command(0x20); | ||||||
|  |   delay(100);  // NOLINT | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int WaveshareEPaper7P5InHDB::get_width_internal() { return 880; } | ||||||
|  |  | ||||||
|  | int WaveshareEPaper7P5InHDB::get_height_internal() { return 528; } | ||||||
|  |  | ||||||
|  | void WaveshareEPaper7P5InHDB::dump_config() { | ||||||
|  |   LOG_DISPLAY("", "Waveshare E-Paper", this); | ||||||
|  |   ESP_LOGCONFIG(TAG, "  Model: 7.5in-HD-b"); | ||||||
|  |   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); | ||||||
|  | } | ||||||
|  |  | ||||||
| static const uint8_t LUT_SIZE_TTGO_DKE_PART = 153; | static const uint8_t LUT_SIZE_TTGO_DKE_PART = 153; | ||||||
|  |  | ||||||
| static const uint8_t PART_UPDATE_LUT_TTGO_DKE[LUT_SIZE_TTGO_DKE_PART] = { | static const uint8_t PART_UPDATE_LUT_TTGO_DKE[LUT_SIZE_TTGO_DKE_PART] = { | ||||||
|   | |||||||
| @@ -350,6 +350,26 @@ class WaveshareEPaper7P5InV2 : public WaveshareEPaper { | |||||||
|   int get_height_internal() override; |   int get_height_internal() override; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | class WaveshareEPaper7P5InHDB : public WaveshareEPaper { | ||||||
|  |  public: | ||||||
|  |   void initialize() override; | ||||||
|  |  | ||||||
|  |   void display() override; | ||||||
|  |  | ||||||
|  |   void dump_config() override; | ||||||
|  |  | ||||||
|  |   void deep_sleep() override { | ||||||
|  |     // deep sleep | ||||||
|  |     this->command(0x10); | ||||||
|  |     this->data(0x01); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  protected: | ||||||
|  |   int get_width_internal() override; | ||||||
|  |  | ||||||
|  |   int get_height_internal() override; | ||||||
|  | }; | ||||||
|  |  | ||||||
| class WaveshareEPaper2P13InDKE : public WaveshareEPaper { | class WaveshareEPaper2P13InDKE : public WaveshareEPaper { | ||||||
|  public: |  public: | ||||||
|   void initialize() override; |   void initialize() override; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user