mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Add waveshare 1 45 in v2 b support (#7052)
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							bdb91112ea
						
					
				
				
					commit
					d6f4f05090
				
			| @@ -27,6 +27,9 @@ WaveshareEPaperBWR = waveshare_epaper_ns.class_( | ||||
| WaveshareEPaperTypeA = waveshare_epaper_ns.class_( | ||||
|     "WaveshareEPaperTypeA", WaveshareEPaper | ||||
| ) | ||||
| WaveshareEpaper1P54INBV2 = waveshare_epaper_ns.class_( | ||||
|     "WaveshareEPaper1P54InBV2", WaveshareEPaperBWR | ||||
| ) | ||||
| WaveshareEPaper2P7In = waveshare_epaper_ns.class_( | ||||
|     "WaveshareEPaper2P7In", WaveshareEPaper | ||||
| ) | ||||
| @@ -105,6 +108,7 @@ WaveshareEPaperTypeBModel = waveshare_epaper_ns.enum("WaveshareEPaperTypeBModel" | ||||
| MODELS = { | ||||
|     "1.54in": ("a", WaveshareEPaperTypeAModel.WAVESHARE_EPAPER_1_54_IN), | ||||
|     "1.54inv2": ("a", WaveshareEPaperTypeAModel.WAVESHARE_EPAPER_1_54_IN_V2), | ||||
|     "1.54inv2-b": ("b", WaveshareEpaper1P54INBV2), | ||||
|     "2.13in": ("a", WaveshareEPaperTypeAModel.WAVESHARE_EPAPER_2_13_IN), | ||||
|     "2.13inv2": ("a", WaveshareEPaperTypeAModel.WAVESHARE_EPAPER_2_13_IN_V2), | ||||
|     "2.13in-ttgo": ("a", WaveshareEPaperTypeAModel.TTGO_EPAPER_2_13_IN), | ||||
|   | ||||
| @@ -808,6 +808,90 @@ void WaveshareEPaper2P7InV2::dump_config() { | ||||
|   LOG_UPDATE_INTERVAL(this); | ||||
| } | ||||
|  | ||||
| // ======================================================== | ||||
| //                          1.54inch_v2_e-paper_b | ||||
| // ======================================================== | ||||
| // Datasheet: | ||||
| //  - https://files.waveshare.com/upload/9/9e/1.54inch-e-paper-b-v2-specification.pdf | ||||
| //  - https://www.waveshare.com/wiki/1.54inch_e-Paper_Module_(B)_Manual | ||||
|  | ||||
| void WaveshareEPaper1P54InBV2::initialize() { | ||||
|   this->reset_(); | ||||
|  | ||||
|   this->wait_until_idle_(); | ||||
|  | ||||
|   this->command(0x12); | ||||
|   this->wait_until_idle_(); | ||||
|  | ||||
|   this->command(0x01); | ||||
|   this->data(0xC7); | ||||
|   this->data(0x00); | ||||
|   this->data(0x01); | ||||
|  | ||||
|   this->command(0x11);  // data entry mode | ||||
|   this->data(0x01); | ||||
|  | ||||
|   this->command(0x44);  // set Ram-X address start/end position | ||||
|   this->data(0x00); | ||||
|   this->data(0x18);  // 0x18-->(24+1)*8=200 | ||||
|  | ||||
|   this->command(0x45);  // set Ram-Y address start/end position | ||||
|   this->data(0xC7);     // 0xC7-->(199+1)=200 | ||||
|   this->data(0x00); | ||||
|   this->data(0x00); | ||||
|   this->data(0x00); | ||||
|  | ||||
|   this->command(0x3C);  // BorderWavefrom | ||||
|   this->data(0x05); | ||||
|  | ||||
|   this->command(0x18);  // Read built-in temperature sensor | ||||
|   this->data(0x80); | ||||
|  | ||||
|   this->command(0x4E);  // set RAM x address count to 0; | ||||
|   this->data(0x00); | ||||
|   this->command(0x4F);  // set RAM y address count to 0X199; | ||||
|   this->data(0xC7); | ||||
|   this->data(0x00); | ||||
|  | ||||
|   this->wait_until_idle_(); | ||||
| } | ||||
|  | ||||
| void HOT WaveshareEPaper1P54InBV2::display() { | ||||
|   uint32_t buf_len_half = this->get_buffer_length_() >> 1; | ||||
|   this->initialize(); | ||||
|  | ||||
|   // COMMAND DATA START TRANSMISSION 1 (BLACK) | ||||
|   this->command(0x24); | ||||
|   delay(2); | ||||
|   for (uint32_t i = 0; i < buf_len_half; i++) { | ||||
|     this->data(~this->buffer_[i]); | ||||
|   } | ||||
|   delay(2); | ||||
|  | ||||
|   // COMMAND DATA START TRANSMISSION 2  (RED) | ||||
|   this->command(0x26); | ||||
|   delay(2); | ||||
|   for (uint32_t i = buf_len_half; i < buf_len_half * 2u; i++) { | ||||
|     this->data(this->buffer_[i]); | ||||
|   } | ||||
|   this->command(0x22); | ||||
|   this->data(0xf7); | ||||
|   this->command(0x20); | ||||
|   this->wait_until_idle_(); | ||||
|  | ||||
|   this->deep_sleep(); | ||||
| } | ||||
| int WaveshareEPaper1P54InBV2::get_height_internal() { return 200; } | ||||
| int WaveshareEPaper1P54InBV2::get_width_internal() { return 200; } | ||||
| void WaveshareEPaper1P54InBV2::dump_config() { | ||||
|   LOG_DISPLAY("", "Waveshare E-Paper", this); | ||||
|   ESP_LOGCONFIG(TAG, "  Model: 1.54in V2 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); | ||||
| } | ||||
|  | ||||
| // ======================================================== | ||||
| //                          2.7inch_e-paper_b | ||||
| // ======================================================== | ||||
|   | ||||
| @@ -166,6 +166,24 @@ enum WaveshareEPaperTypeBModel { | ||||
|   WAVESHARE_EPAPER_13_3_IN_K, | ||||
| }; | ||||
|  | ||||
| class WaveshareEPaper1P54InBV2 : public WaveshareEPaperBWR { | ||||
|  public: | ||||
|   void initialize() override; | ||||
|  | ||||
|   void display() override; | ||||
|  | ||||
|   void dump_config() override; | ||||
|  | ||||
|   void deep_sleep() override { | ||||
|     this->command(0x10); | ||||
|     this->data(0x01); | ||||
|   } | ||||
|  | ||||
|  protected: | ||||
|   int get_width_internal() override; | ||||
|   int get_height_internal() override; | ||||
| }; | ||||
|  | ||||
| class WaveshareEPaper2P7In : public WaveshareEPaper { | ||||
|  public: | ||||
|   void initialize() override; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user