8 namespace waveshare_epaper {
10 static const char *
const TAG =
"waveshare_epaper";
12 static const uint8_t LUT_SIZE_WAVESHARE = 30;
14 static const uint8_t FULL_UPDATE_LUT[LUT_SIZE_WAVESHARE] = {0x02, 0x02, 0x01, 0x11, 0x12, 0x12, 0x22, 0x22, 0x66, 0x69,
15 0x69, 0x59, 0x58, 0x99, 0x99, 0x88, 0x00, 0x00, 0x00, 0x00,
16 0xF8, 0xB4, 0x13, 0x51, 0x35, 0x51, 0x51, 0x19, 0x01, 0x00};
18 static const uint8_t PARTIAL_UPDATE_LUT[LUT_SIZE_WAVESHARE] = {
19 0x10, 0x18, 0x18, 0x08, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
20 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x44, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
22 static const uint8_t LUT_SIZE_TTGO = 70;
24 static const uint8_t FULL_UPDATE_LUT_TTGO[LUT_SIZE_TTGO] = {
25 0x80, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00,
26 0x10, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00,
27 0x80, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00,
28 0x10, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00,
29 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30 0x03, 0x03, 0x00, 0x00, 0x02,
31 0x09, 0x09, 0x00, 0x00, 0x02,
32 0x03, 0x03, 0x00, 0x00, 0x02,
33 0x00, 0x00, 0x00, 0x00, 0x00,
34 0x00, 0x00, 0x00, 0x00, 0x00,
35 0x00, 0x00, 0x00, 0x00, 0x00,
36 0x00, 0x00, 0x00, 0x00, 0x00,
39 static const uint8_t PARTIAL_UPDATE_LUT_TTGO[LUT_SIZE_TTGO] = {
40 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45 0x0A, 0x00, 0x00, 0x00, 0x00,
46 0x00, 0x00, 0x00, 0x00, 0x00,
47 0x00, 0x00, 0x00, 0x00, 0x00,
48 0x00, 0x00, 0x00, 0x00, 0x00,
49 0x00, 0x00, 0x00, 0x00, 0x00,
50 0x00, 0x00, 0x00, 0x00, 0x00,
51 0x00, 0x00, 0x00, 0x00, 0x00,
54 static const uint8_t LUT_SIZE_TTGO_B73 = 100;
56 static const uint8_t FULL_UPDATE_LUT_TTGO_B73[LUT_SIZE_TTGO_B73] = {
57 0xA0, 0x90, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x90, 0xA0, 0x00, 0x00, 0x00, 0x00,
58 0x00, 0x00, 0x00, 0xA0, 0x90, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x90, 0xA0, 0x00,
59 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
61 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
62 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
63 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66 static const uint8_t PARTIAL_UPDATE_LUT_TTGO_B73[LUT_SIZE_TTGO_B73] = {
67 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
68 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
69 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
71 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
73 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76 static const uint8_t LUT_SIZE_TTGO_B1 = 29;
78 static const uint8_t FULL_UPDATE_LUT_TTGO_B1[LUT_SIZE_TTGO_B1] = {
79 0x22, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x01, 0x00, 0x00, 0x00, 0x00};
82 static const uint8_t PARTIAL_UPDATE_LUT_TTGO_B1[LUT_SIZE_TTGO_B1] = {
83 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
84 0x00, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
88 static const uint8_t PARTIAL_UPD_2IN9_LUT_SIZE = 159;
89 static const uint8_t PARTIAL_UPD_2IN9_LUT[PARTIAL_UPD_2IN9_LUT_SIZE] =
91 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
97 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
104 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
106 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
107 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
108 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00,
109 0x22, 0x17, 0x41, 0xB0, 0x32, 0x36,
156 const uint32_t start =
millis();
159 ESP_LOGE(TAG,
"Timeout while displaying image!");
172 const uint8_t
fill = color.
is_on() ? 0x00 : 0xFF;
181 const uint8_t subpos = x & 0x07;
183 if (!color.
is_on()) {
184 this->
buffer_[pos] |= 0x80 >> subpos;
186 this->
buffer_[pos] &= ~(0x80 >> subpos);
207 const uint8_t subpos = x & 0x07;
210 this->
buffer_[pos] |= 0x80 >> subpos;
212 this->
buffer_[pos] &= ~(0x80 >> subpos);
216 if (((color.
red > 0) && (color.
green == 0) && (color.
blue == 0))) {
217 this->
buffer_[pos + buf_half_len] |= 0x80 >> subpos;
219 this->
buffer_[pos + buf_half_len] &= ~(0x80 >> subpos);
241 this->init_display_();
245 switch (this->model_) {
249 this->deep_sleep_between_updates_ =
true;
250 ESP_LOGI(TAG,
"Set the display to deep sleep");
298 switch (this->model_) {
315 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
316 switch (this->model_) {
318 ESP_LOGCONFIG(TAG,
" Model: 1.54in");
321 ESP_LOGCONFIG(TAG,
" Model: 1.54inV2");
324 ESP_LOGCONFIG(TAG,
" Model: 2.13in");
327 ESP_LOGCONFIG(TAG,
" Model: 2.13inV2");
330 ESP_LOGCONFIG(TAG,
" Model: 2.13in (TTGO)");
333 ESP_LOGCONFIG(TAG,
" Model: 2.13in (TTGO B73)");
336 ESP_LOGCONFIG(TAG,
" Model: 2.13in (TTGO B74)");
339 ESP_LOGCONFIG(TAG,
" Model: 2.13in (TTGO B1)");
342 ESP_LOGCONFIG(TAG,
" Model: 2.9in");
345 ESP_LOGCONFIG(TAG,
" Model: 2.9inV2");
348 ESP_LOGCONFIG(TAG,
" Full Update Every: %" PRIu32, this->full_update_every_);
350 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
352 LOG_UPDATE_INTERVAL(
this);
355 bool full_update = this->at_update_ == 0;
356 bool prev_full_update = this->at_update_ == 1;
358 if (this->deep_sleep_between_updates_) {
359 ESP_LOGI(TAG,
"Wake up the display");
362 this->init_display_();
370 if (this->full_update_every_ >= 1) {
371 if (full_update != prev_full_update) {
372 switch (this->model_) {
376 this->write_lut_(full_update ? FULL_UPDATE_LUT_TTGO : PARTIAL_UPDATE_LUT_TTGO, LUT_SIZE_TTGO);
379 this->write_lut_(full_update ? FULL_UPDATE_LUT_TTGO_B73 : PARTIAL_UPDATE_LUT_TTGO_B73, LUT_SIZE_TTGO_B73);
385 this->write_lut_(full_update ? FULL_UPDATE_LUT_TTGO_B1 : PARTIAL_UPDATE_LUT_TTGO_B1, LUT_SIZE_TTGO_B1);
388 this->write_lut_(full_update ? FULL_UPDATE_LUT : PARTIAL_UPDATE_LUT, LUT_SIZE_WAVESHARE);
391 this->at_update_ = (this->at_update_ + 1) % this->full_update_every_;
397 this->
data(full_update ? 0x55 : 0x26);
416 switch (this->model_) {
419 this->
data(full_update ? 0x05 : 0x80);
423 this->
data(full_update ? 0x03 : 0x01);
430 switch (this->model_) {
481 switch (this->model_) {
485 for (
int j = 0; j < wb; j++) {
507 switch (this->model_) {
511 this->
data(full_update ? 0xF7 : 0xFF);
517 this->
data(full_update ? 0xC7 : 0x0C);
531 if (this->deep_sleep_between_updates_) {
532 ESP_LOGI(TAG,
"Set the display back to deep sleep");
537 switch (this->model_) {
556 switch (this->model_) {
569 switch (this->model_) {
589 for (uint8_t i = 0; i < size; i++)
616 static const uint8_t LUT_VCOM_DC_2_7[44] = {
617 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x00, 0x32, 0x32, 0x00, 0x00, 0x02, 0x00,
618 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
619 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
622 static const uint8_t LUT_WHITE_TO_WHITE_2_7[42] = {
623 0x50, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x60, 0x32, 0x32, 0x00, 0x00, 0x02, 0xA0, 0x0F,
624 0x0F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
625 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
628 static const uint8_t LUT_BLACK_TO_WHITE_2_7[42] = {
629 0x50, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x60, 0x32, 0x32, 0x00, 0x00, 0x02, 0xA0, 0x0F,
630 0x0F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
631 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
634 static const uint8_t LUT_WHITE_TO_BLACK_2_7[] = {
635 0xA0, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x60, 0x32, 0x32, 0x00, 0x00, 0x02, 0x50, 0x0F,
636 0x0F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
637 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
640 static const uint8_t LUT_BLACK_TO_BLACK_2_7[42] = {
641 0xA0, 0x0F, 0x0F, 0x00, 0x00, 0x05, 0x60, 0x32, 0x32, 0x00, 0x00, 0x02, 0x50, 0x0F,
642 0x0F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
643 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
706 for (uint8_t i : LUT_VCOM_DC_2_7)
711 for (uint8_t i : LUT_WHITE_TO_WHITE_2_7)
715 for (uint8_t i : LUT_BLACK_TO_WHITE_2_7)
719 for (uint8_t i : LUT_WHITE_TO_BLACK_2_7)
723 for (uint8_t i : LUT_BLACK_TO_BLACK_2_7)
732 for (uint32_t i = 0; i < buf_len; i++) {
740 for (uint32_t i = 0; i < buf_len; i++) {
750 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
751 ESP_LOGCONFIG(TAG,
" Model: 2.7in");
753 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
755 LOG_UPDATE_INTERVAL(
this);
803 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
804 ESP_LOGCONFIG(TAG,
" Model: 2.7in V2");
806 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
808 LOG_UPDATE_INTERVAL(
this);
818 static const uint8_t LUT_VCOM_DC_2_7B[44] = {0x00, 0x00, 0x00, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x0A,
819 0x00, 0x00, 0x08, 0x00, 0x0E, 0x01, 0x0E, 0x01, 0x10, 0x00, 0x0A,
820 0x0A, 0x00, 0x00, 0x08, 0x00, 0x04, 0x10, 0x00, 0x00, 0x05, 0x00,
821 0x03, 0x0E, 0x00, 0x00, 0x0A, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01};
823 static const uint8_t LUT_WHITE_TO_WHITE_2_7B[42] = {0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x40, 0x0A, 0x0A, 0x00, 0x00,
824 0x08, 0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10, 0x80, 0x0A, 0x0A, 0x00,
825 0x00, 0x08, 0x00, 0x04, 0x10, 0x00, 0x00, 0x05, 0x00, 0x03, 0x0E,
826 0x00, 0x00, 0x0A, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01};
828 static const uint8_t LUT_BLACK_TO_WHITE_2_7B[42] = {0xA0, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x0A, 0x00, 0x00,
829 0x08, 0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10, 0x90, 0x0A, 0x0A, 0x00,
830 0x00, 0x08, 0xB0, 0x04, 0x10, 0x00, 0x00, 0x05, 0xB0, 0x03, 0x0E,
831 0x00, 0x00, 0x0A, 0xC0, 0x23, 0x00, 0x00, 0x00, 0x01};
833 static const uint8_t LUT_WHITE_TO_BLACK_2_7B[] = {0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x20, 0x0A, 0x0A, 0x00, 0x00,
834 0x08, 0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10, 0x10, 0x0A, 0x0A, 0x00,
835 0x00, 0x08, 0x00, 0x04, 0x10, 0x00, 0x00, 0x05, 0x00, 0x03, 0x0E,
836 0x00, 0x00, 0x0A, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01};
838 static const uint8_t LUT_BLACK_TO_BLACK_2_7B[42] = {0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01, 0x40, 0x0A, 0x0A, 0x00, 0x00,
839 0x08, 0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10, 0x80, 0x0A, 0x0A, 0x00,
840 0x00, 0x08, 0x00, 0x04, 0x10, 0x00, 0x00, 0x05, 0x00, 0x03, 0x0E,
841 0x00, 0x00, 0x0A, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01};
900 for (uint8_t i : LUT_VCOM_DC_2_7B)
904 for (uint8_t i : LUT_WHITE_TO_WHITE_2_7B)
908 for (uint8_t i : LUT_BLACK_TO_WHITE_2_7B)
912 for (uint8_t i : LUT_WHITE_TO_BLACK_2_7B) {
918 for (uint8_t i : LUT_BLACK_TO_BLACK_2_7B) {
939 for (uint32_t i = 0; i < buf_len_half; i++) {
948 for (uint32_t i = buf_len_half; i < buf_len_half * 2u; i++) {
964 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
965 ESP_LOGCONFIG(TAG,
" Model: 2.7in B");
967 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
969 LOG_UPDATE_INTERVAL(
this);
1001 this->
data((xend >> 3) & 0xff);
1006 this->
data(yend & 0xff);
1007 this->
data((yend >> 8) & 0xff);
1022 for (uint32_t i = 0; i < buf_len; i++) {
1030 for (uint32_t i = 0; i < buf_len; i++) {
1043 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
1044 ESP_LOGCONFIG(TAG,
" Model: 2.7in B V2");
1046 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1047 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1048 LOG_UPDATE_INTERVAL(
this);
1122 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
1123 ESP_LOGCONFIG(TAG,
" Model: 2.9in (B)");
1125 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1126 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1127 LOG_UPDATE_INTERVAL(
this);
1191 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
1192 ESP_LOGCONFIG(TAG,
" Model: 2.9in (B) V3");
1194 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1195 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1196 LOG_UPDATE_INTERVAL(
this);
1247 void WaveshareEPaper2P9InV2R2::reset_() {
1259 ESP_LOGE(TAG,
"fail idle 1");
1298 this->
write_lut_(PARTIAL_UPD_2IN9_LUT, PARTIAL_UPD_2IN9_LUT_SIZE);
1320 ESP_LOGE(TAG,
"fail idle 2");
1359 for (uint8_t i = 0; i < size; i++)
1364 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
1365 ESP_LOGCONFIG(TAG,
" Model: 2.9inV2R2");
1368 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1369 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1370 LOG_UPDATE_INTERVAL(
this);
1428 this->
data(0b10011111);
1461 LOG_DISPLAY(
"",
"Waveshare E-Paper (Good Display)",
this);
1462 ESP_LOGCONFIG(TAG,
" Model: 2.9in Greyscale GDEY029T94");
1464 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1465 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1466 LOG_UPDATE_INTERVAL(
this);
1486 if (this->lastbuff_ !=
nullptr) {
1492 void GDEW0154M09::reset_() {
1502 void GDEW0154M09::init_internal_() {
1513 const uint8_t panel_setting_1 = 0b11011111;
1520 const uint8_t panel_setting_2 = 0b01110;
1522 const uint8_t wf_t0154_cz_b3_list[] = {
1524 CMD_PSR_PANEL_SETTING, 2, panel_setting_1, panel_setting_2,
1525 CMD_UNDOCUMENTED_0x4D, 1, 0x55,
1526 CMD_UNDOCUMENTED_0xAA, 1, 0x0f,
1527 CMD_UNDOCUMENTED_0xE9, 1, 0x02,
1528 CMD_UNDOCUMENTED_0xB6, 1, 0x11,
1529 CMD_UNDOCUMENTED_0xF3, 1, 0x0a,
1530 CMD_TRES_RESOLUTION_SETTING, 3, 0xc8, 0x00, 0xc8,
1531 CMD_TCON_TCONSETTING, 1, 0x00,
1532 CMD_CDI_VCOM_DATA_INTERVAL, 1, 0xd7,
1533 CMD_PWS_POWER_SAVING, 1, 0x00,
1538 this->write_init_list_(wf_t0154_cz_b3_list);
1543 void GDEW0154M09::write_init_list_(
const uint8_t *list) {
1544 uint8_t list_limit = list[0];
1545 uint8_t *start_ptr = ((uint8_t *) list + 1);
1546 for (uint8_t i = 0; i < list_limit; i++) {
1547 this->
command(*(start_ptr + 0));
1548 for (uint8_t dnum = 0; dnum < *(start_ptr + 1); dnum++) {
1549 this->
data(*(start_ptr + 2 + dnum));
1551 start_ptr += (*(start_ptr + 1) + 2);
1555 void GDEW0154M09::clear_() {
1557 for (uint8_t j = 0; j < 2; j++) {
1558 this->
command(CMD_DTM1_DATA_START_TRANS);
1559 for (
int count = 0; count < pixsize; count++) {
1562 this->
command(CMD_DTM2_DATA_START_TRANS2);
1563 for (
int count = 0; count < pixsize; count++) {
1566 this->
command(CMD_DISPLAY_REFRESH);
1575 this->
command(CMD_DTM1_DATA_START_TRANS);
1579 this->
command(CMD_DTM2_DATA_START_TRANS2);
1583 this->
command(CMD_DISPLAY_REFRESH);
1591 this->
command(CMD_POF_POWER_OFF);
1594 this->
command(CMD_DSLP_DEEP_SLEEP);
1595 this->
data(DATA_DSLP_DEEP_SLEEP);
1601 LOG_DISPLAY(
"",
"M5Stack CoreInk E-Paper (Good Display)",
this);
1602 ESP_LOGCONFIG(TAG,
" Model: 1.54in Greyscale GDEW0154M09");
1604 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1605 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1606 LOG_UPDATE_INTERVAL(
this);
1609 static const uint8_t LUT_VCOM_DC_4_2[] = {
1610 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x17, 0x17, 0x00, 0x00, 0x02, 0x00, 0x0A, 0x01,
1611 0x00, 0x00, 0x01, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1612 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1614 static const uint8_t LUT_WHITE_TO_WHITE_4_2[] = {
1615 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, 0x40, 0x0A,
1616 0x01, 0x00, 0x00, 0x01, 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
1617 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1619 static const uint8_t LUT_BLACK_TO_WHITE_4_2[] = {
1620 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, 0x40, 0x0A,
1621 0x01, 0x00, 0x00, 0x01, 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
1622 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1625 static const uint8_t LUT_BLACK_TO_BLACK_4_2[] = {
1626 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, 0x80, 0x0A,
1627 0x01, 0x00, 0x00, 0x01, 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
1628 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1631 static const uint8_t LUT_WHITE_TO_BLACK_4_2[] = {
1632 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, 0x80, 0x0A,
1633 0x01, 0x00, 0x00, 0x01, 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
1634 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1669 for (uint8_t i : LUT_VCOM_DC_4_2)
1673 for (uint8_t i : LUT_WHITE_TO_WHITE_4_2)
1677 for (uint8_t i : LUT_BLACK_TO_WHITE_4_2)
1681 for (uint8_t i : LUT_WHITE_TO_BLACK_4_2)
1685 for (uint8_t i : LUT_BLACK_TO_BLACK_4_2)
1723 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
1724 ESP_LOGCONFIG(TAG,
" Model: 4.2in");
1726 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1727 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1728 LOG_UPDATE_INTERVAL(
this);
1779 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
1780 ESP_LOGCONFIG(TAG,
" Model: 4.2in (B V2)");
1782 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1783 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1784 LOG_UPDATE_INTERVAL(
this);
1845 uint8_t temp1 = this->
buffer_[i];
1846 for (uint8_t j = 0; j < 8; j++) {
1876 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
1877 ESP_LOGCONFIG(TAG,
" Model: 5.83in");
1879 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1880 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1881 LOG_UPDATE_INTERVAL(
this);
1957 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
1958 ESP_LOGCONFIG(TAG,
" Model: 5.83inv2");
1960 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
1961 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
1962 LOG_UPDATE_INTERVAL(
this);
2033 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
2034 ESP_LOGCONFIG(TAG,
" Model: 7.5in-bv2");
2036 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
2037 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
2038 LOG_UPDATE_INTERVAL(
this);
2047 const uint32_t start =
millis();
2051 ESP_LOGI(TAG,
"Timeout while displaying image!");
2116 uint8_t lut_vcom_7_i_n5_v2[] = {
2117 0x0, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0xF, 0x1, 0xF, 0x1, 0x2, 0x0, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0,
2118 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2121 uint8_t lut_ww_7_i_n5_v2[] = {
2122 0x10, 0xF, 0xF, 0x0, 0x0, 0x1, 0x84, 0xF, 0x1, 0xF, 0x1, 0x2, 0x20, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0,
2123 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2126 uint8_t lut_bw_7_i_n5_v2[] = {
2127 0x10, 0xF, 0xF, 0x0, 0x0, 0x1, 0x84, 0xF, 0x1, 0xF, 0x1, 0x2, 0x20, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0,
2128 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2131 uint8_t lut_wb_7_i_n5_v2[] = {
2132 0x80, 0xF, 0xF, 0x0, 0x0, 0x3, 0x84, 0xF, 0x1, 0xF, 0x1, 0x4, 0x40, 0xF, 0xF, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0,
2133 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2136 uint8_t lut_bb_7_i_n5_v2[] = {
2137 0x80, 0xF, 0xF, 0x0, 0x0, 0x1, 0x84, 0xF, 0x1, 0xF, 0x1, 0x2, 0x40, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0,
2138 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2143 for (count = 0; count < 42; count++)
2144 this->
data(lut_vcom_7_i_n5_v2[count]);
2147 for (count = 0; count < 42; count++)
2148 this->
data(lut_ww_7_i_n5_v2[count]);
2151 for (count = 0; count < 42; count++)
2152 this->
data(lut_bw_7_i_n5_v2[count]);
2155 for (count = 0; count < 42; count++)
2156 this->
data(lut_wb_7_i_n5_v2[count]);
2159 for (count = 0; count < 42; count++)
2160 this->
data(lut_bb_7_i_n5_v2[count]);
2167 for (uint32_t i = 0; i < buf_len; i++) {
2173 for (uint32_t i = 0; i < buf_len; i++) {
2185 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
2186 ESP_LOGCONFIG(TAG,
" Model: 7.5in-bv3");
2188 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
2189 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
2190 LOG_UPDATE_INTERVAL(
this);
2240 uint8_t temp1 = this->
buffer_[i];
2241 for (uint8_t j = 0; j < 8; j++) {
2268 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
2269 ESP_LOGCONFIG(TAG,
" Model: 7.5in");
2271 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
2272 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
2273 LOG_UPDATE_INTERVAL(
this);
2280 const uint32_t start =
millis();
2284 ESP_LOGE(TAG,
"Timeout while displaying image!");
2339 ESP_LOGI(TAG,
"Power on the display and hat");
2351 for (uint32_t i = 0; i < buf_len; i++) {
2363 ESP_LOGV(TAG,
"Before command(0x02) (>> power off)");
2366 ESP_LOGV(TAG,
"After command(0x02) (>> power off)");
2373 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
2374 ESP_LOGCONFIG(TAG,
" Model: 7.5inV2rev2");
2376 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
2377 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
2378 LOG_UPDATE_INTERVAL(
this);
2387 const uint32_t start =
millis();
2391 ESP_LOGI(TAG,
"Timeout while displaying image!");
2457 uint8_t lut_vcom_7_i_n5_v2[] = {
2458 0x0, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0xF, 0x1, 0xF, 0x1, 0x2, 0x0, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0,
2459 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2462 uint8_t lut_ww_7_i_n5_v2[] = {
2463 0x10, 0xF, 0xF, 0x0, 0x0, 0x1, 0x84, 0xF, 0x1, 0xF, 0x1, 0x2, 0x20, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0,
2464 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2467 uint8_t lut_bw_7_i_n5_v2[] = {
2468 0x10, 0xF, 0xF, 0x0, 0x0, 0x1, 0x84, 0xF, 0x1, 0xF, 0x1, 0x2, 0x20, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0,
2469 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2472 uint8_t lut_wb_7_i_n5_v2[] = {
2473 0x80, 0xF, 0xF, 0x0, 0x0, 0x3, 0x84, 0xF, 0x1, 0xF, 0x1, 0x4, 0x40, 0xF, 0xF, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0,
2474 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2477 uint8_t lut_bb_7_i_n5_v2[] = {
2478 0x80, 0xF, 0xF, 0x0, 0x0, 0x1, 0x84, 0xF, 0x1, 0xF, 0x1, 0x2, 0x40, 0xF, 0xF, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0,
2479 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2484 for (count = 0; count < 42; count++)
2485 this->
data(lut_vcom_7_i_n5_v2[count]);
2488 for (count = 0; count < 42; count++)
2489 this->
data(lut_ww_7_i_n5_v2[count]);
2492 for (count = 0; count < 42; count++)
2493 this->
data(lut_bw_7_i_n5_v2[count]);
2496 for (count = 0; count < 42; count++)
2497 this->
data(lut_wb_7_i_n5_v2[count]);
2500 for (count = 0; count < 42; count++)
2501 this->
data(lut_bb_7_i_n5_v2[count]);
2505 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
2506 ESP_LOGCONFIG(TAG,
" Model: 7.5inV2");
2508 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
2509 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
2510 LOG_UPDATE_INTERVAL(
this);
2572 uint8_t eight_pixels = this->
buffer_[i];
2574 for (uint8_t j = 0; j < 8; j += 2) {
2578 uint8_t left_nibble = (eight_pixels & 0x80) ? 0x30 : 0x00;
2580 uint8_t right_nibble = (eight_pixels & 0x80) ? 0x03 : 0x00;
2582 this->
write_byte(left_nibble | right_nibble);
2601 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
2602 ESP_LOGCONFIG(TAG,
" Model: 7.5in-bc");
2604 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
2605 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
2606 LOG_UPDATE_INTERVAL(
this);
2702 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
2703 ESP_LOGCONFIG(TAG,
" Model: 7.5in-HD-b");
2705 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
2706 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
2707 LOG_UPDATE_INTERVAL(
this);
2710 static const uint8_t LUT_SIZE_TTGO_DKE_PART = 153;
2712 static const uint8_t PART_UPDATE_LUT_TTGO_DKE[LUT_SIZE_TTGO_DKE_PART] = {
2713 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2714 0x0, 0x0, 0x0, 0x0, 0x40, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0,
2715 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2716 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2717 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2718 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2719 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
2720 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0,
2730 ESP_LOGI(TAG,
"Performing partial e-paper update.");
2732 ESP_LOGI(TAG,
"Performing full e-paper update.");
2769 this->
write_array(PART_UPDATE_LUT_TTGO_DKE,
sizeof(PART_UPDATE_LUT_TTGO_DKE));
2821 ESP_LOGI(TAG,
"Completed e-paper update.");
2828 LOG_DISPLAY(
"",
"Waveshare E-Paper",
this);
2829 ESP_LOGCONFIG(TAG,
" Model: 2.13inDKE");
2830 LOG_PIN(
" CS Pin: ", this->
cs_);
2832 LOG_PIN(
" DC Pin: ", this->
dc_pin_);
2833 LOG_PIN(
" Busy Pin: ", this->
busy_pin_);
2834 LOG_UPDATE_INTERVAL(
this);
void initialize() override
int get_width_internal() override
virtual void digital_write(bool value)=0
void dump_config() override
int get_height_internal() override
void on_safe_shutdown() override
void dump_config() override
int get_width() override
Get the width of the image in pixels with rotation applied.
int get_height_internal() override
float get_setup_priority() const override
void initialize() override
int get_width_internal() override
int get_height_internal() override
void dump_config() override
void status_set_warning(const char *message="unspecified")
void deep_sleep() override
void dump_config() override
void draw_absolute_pixel_internal(int x, int y, Color color) override
void dump_config() override
void dump_config() override
void write_lut_(const uint8_t *lut, uint8_t size)
void spi_setup() override
void dump_config() override
int get_width_internal() override
uint32_t idle_timeout_() override
void deep_sleep() override
void draw_absolute_pixel_internal(int x, int y, Color color) override
void initialize() override
int get_height_internal() override
void initialize() override
An STL allocator that uses SPI RAM.
int get_height_internal() override
void dump_config() override
void set_full_update_every(uint32_t full_update_every)
void filled_rectangle(int x1, int y1, int width, int height, Color color=COLOR_ON)
Fill a rectangle with the top left point at [x1,y1] and the bottom right point at [x1+width...
int get_width_internal() override
int get_width_internal() override
WaveshareEPaperTypeA(WaveshareEPaperTypeAModel model)
void fill(Color color) override
virtual void fill(Color color)
Fill the entire screen with the given color.
int get_width_internal() override
void write_byte(uint8_t data)
int get_width_internal() override
void fill(Color color) override
virtual int get_width_controller()
uint32_t IRAM_ATTR HOT millis()
void initialize() override
int get_width_internal() override
uint32_t idle_timeout_() override
int get_width_internal() override
int get_width_internal() override
uint32_t idle_timeout_() override
void initialize() override
void init_internal_(uint32_t buffer_length)
int get_width_internal() override
void initialize() override
int get_width_internal() override
virtual int get_height_internal()=0
int get_width_controller() override
void dump_config() override
void initialize() override
void initialize() override
void dump_config() override
int get_width_internal() override
void dump_config() override
int get_height_internal() override
WaveshareEPaperTypeAModel model_
void dump_config() override
void initialize() override
int get_height() override
Get the height of the image in pixels with rotation applied.
uint32_t get_buffer_length_() override
void dump_config() override
virtual uint32_t get_buffer_length_()=0
int get_width_internal() override
int get_width_internal() override
void initialize() override
WaveshareEPaperTypeAModel
void status_clear_warning()
virtual int get_width_internal()=0
void dump_config() override
void dump_config() override
void initialize() override
void deep_sleep() override
int get_height_internal() override
const float PROCESSOR
For components that use data from sensors like displays.
int get_height_internal() override
void dump_config() override
Application App
Global storage of Application pointer - only one Application can exist.
int get_height_internal() override
int get_width_internal() override
void dump_config() override
void initialize() override
virtual bool digital_read()=0
void initialize() override
int get_height_internal() override
void write_lut_(const uint8_t *lut, uint8_t size)
void initialize() override
void initialize() override
virtual void deep_sleep()=0
void dump_config() override
int get_height_internal() override
int get_height_internal() override
void initialize() override
virtual uint32_t idle_timeout_()
int get_width_internal() override
WaveshareEPaper2P9InV2R2()
void write_array(const uint8_t *data, size_t length)
int get_width_internal() override
int get_width_internal() override
void initialize() override
int get_height_internal() override
int get_height_internal() override
This is a workaround until we can figure out a way to get the tflite-micro idf component code availab...
int get_width_internal() override
void initialize() override
void command(uint8_t value)
void initialize() override
int get_height_internal() override
void dump_config() override
uint32_t full_update_every_
void initialize() override
bool is_on() ALWAYS_INLINE
void set_full_update_every(uint32_t full_update_every)
int get_height_internal() override
int get_width_controller() override
int get_height_internal() override
int get_height_internal() override
int get_height_internal() override
void initialize() override
void dump_config() override
void dump_config() override
uint32_t get_buffer_length_() override
int get_height_internal() override
void set_full_update_every(uint32_t full_update_every)
int get_width_internal() override
int get_height_internal() override
void cmd_data(const uint8_t *data, size_t length)
void dump_config() override
void IRAM_ATTR HOT delay(uint32_t ms)