Waveshare e-paper displays with SPI

@ZinggJM

Thanks for the reply, means a lot!
Here's the wiring I am using,

And I have checked the wiring, I am sure about it.

This one worked without any error. Here's the diagnostic report

 Linking everything together...
/Users/harshal/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 -I /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/mkdir.py -p /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/ld_h/
/Users/harshal/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 -I /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/cp.py /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/sdk/ld/eagle.flash.4m2m.ld /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/ld_h/local.eagle.flash.ld.h
/Users/harshal/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-gcc -CC -E -P -DVTABLES_IN_FLASH -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/ld_h/local.eagle.flash.ld.h -o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/local.eagle.flash.ld
/Users/harshal/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-gcc -CC -E -P -DVTABLES_IN_FLASH -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/sdk/ld/eagle.app.v6.common.ld.h -o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/local.eagle.app.v6.common.ld
/Users/harshal/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-gcc -fno-exceptions -Wl,-Map -Wl,/var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.map -g -w -Werror=return-type -Os -nostdlib -Wl,--no-check-sections -u app_entry -u _printf_float -u _scanf_float -Wl,-static -L/Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/sdk/lib -L/Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/sdk/lib/NONOSDK22x_190703 -L/var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674 -L/Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/sdk/libc/xtensa-lx106-elf/lib -Tlocal.eagle.flash.ld -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.elf -Wl,--start-group /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/sketch/EPDTest.ino.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/GxEPD2_EPD.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_102.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_1160_T91.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_1248.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_154.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_154_D67.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_154_M09.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_154_M10.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_154_T8.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_213.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_213_B72.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_213_B73.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_213_B74.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_213_M21.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_213_T5D.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_213_flex.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_260.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_260_M01.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_270.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_290.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_290_I6FD.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_290_M06.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_290_T5.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_290_T5D.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_290_T94.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_290_T94_V2.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_371.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_420.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_420_M01.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_583.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_583_T8.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_750.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd/GxEPD2_750_T7.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_154_Z90c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_154c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_213_Z19c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_213c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_270c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_290_C90c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_290_Z13c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_290c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_420c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_420c_Z21.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_565c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_583c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_750c.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_750c_Z08.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/epd3c/GxEPD2_750c_Z90.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/it8951/GxEPD2_it60.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/it8951/GxEPD2_it60_1448x1072.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/GxEPD2/it8951/GxEPD2_it78_1872x1404.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/Adafruit_GFX_Library/glcdfont.c.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/Adafruit_GFX_Library/Adafruit_GFX.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/Adafruit_GFX_Library/Adafruit_GrayOLED.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/Adafruit_GFX_Library/Adafruit_SPITFT.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/SPI/SPI.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/Adafruit_BusIO/Adafruit_BusIO_Register.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/Adafruit_BusIO/Adafruit_I2CDevice.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/Adafruit_BusIO/Adafruit_SPIDevice.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/libraries/Wire/Wire.cpp.o /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_cache_980287/core/core_ffcca26ac688e054324c25e97a91bd6a.a -lhal -lphy -lpp -lnet80211 -llwip2-536-feat -lwpa -lcrypto -lmain -lwps -lbearssl -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc -Wl,--end-group -L/var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674
/Users/harshal/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 -I /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/elf2bin.py --eboot /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/bootloaders/eboot/eboot.elf --app /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.elf --flash_mode dio --flash_freq 40 --flash_size 4M --path /Users/harshal/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin --out /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.bin
Creating BIN file "/var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.bin" using "/Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/bootloaders/eboot/eboot.elf" and "/var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.elf"
/Users/harshal/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 -I /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/signing.py --mode sign --privatekey "/Users/harshal/Personal/Stuffs/B-plans/Slatecase/Development/0. Slate_A/Final code/5dec/3. Strawberry/Strawberry/EPDTest/private.key" --bin /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.bin --out /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.bin.signed --legacy /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.bin.legacy_sig
/Users/harshal/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 -I /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/sizes.py --elf /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.elf --path /Users/harshal/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin --mmu "-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000"
Executable segment sizes:
ICACHE : 32768           - flash instruction cache 
IROM   : 258080          - code in flash         (default or ICACHE_FLASH_ATTR) 
IRAM   : 27353   / 32768 - code in IRAM          (IRAM_ATTR, ISRs...) 
DATA   : 1496  )         - initialized variables (global, static) in RAM/HEAP 
RODATA : 968   ) / 81920 - constants             (global, static) in RAM/HEAP 
BSS    : 50264 )         - zeroed variables      (global, static) in RAM/HEAP 
Multiple libraries were found for "GxEPD2_BW.h"
 Used: /Users/harshal/Documents/Arduino/libraries/GxEPD2
 Not used: /Users/harshal/Documents/Arduino/libraries/GxEPD2-master
Multiple libraries were found for "Adafruit_GFX.h"
 Used: /Users/harshal/Documents/Arduino/libraries/Adafruit_GFX_Library
 Not used: /Users/harshal/Documents/Arduino/libraries/Adafruit-GFX-Library-master
Using library GxEPD2 at version 1.3.9 in folder: /Users/harshal/Documents/Arduino/libraries/GxEPD2 
Using library Adafruit_GFX_Library at version 1.10.12 in folder: /Users/harshal/Documents/Arduino/libraries/Adafruit_GFX_Library 
Using library SPI at version 1.0 in folder: /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/libraries/SPI 
Using library Adafruit_BusIO at version 1.9.8 in folder: /Users/harshal/Documents/Arduino/libraries/Adafruit_BusIO 
Using library Wire at version 1.0 in folder: /Users/harshal/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/libraries/Wire 
/Users/harshal/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-size -A /var/folders/b4/x2zrrjmj3nxgrs_fb96l_5hm0000gn/T/arduino_build_929674/EPDTest.ino.elf
Sketch uses 287897 bytes (27%) of program storage space. Maximum is 1044464 bytes.
Global variables use 52728 bytes (64%) of dynamic memory, leaving 29192 bytes for local variables. Maximum is 81920 bytes.
esptool.py v3.0
Serial port /dev/cu.usbserial-0001
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: a8:48:fa:cd:62:dd
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 292048 bytes to 211145...
Writing at 0x00000000... (7 %)
Writing at 0x00004000... (15 %)
Writing at 0x00008000... (23 %)
Writing at 0x0000c000... (30 %)
Writing at 0x00010000... (38 %)
Writing at 0x00014000... (46 %)
Writing at 0x00018000... (53 %)
Writing at 0x0001c000... (61 %)
Writing at 0x00020000... (69 %)
Writing at 0x00024000... (76 %)
Writing at 0x00028000... (84 %)
Writing at 0x0002c000... (92 %)
Writing at 0x00030000... (100 %)
Wrote 292048 bytes (211145 compressed) at 0x00000000 in 18.7 seconds (effective 125.1 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...

But still, there's no movement on the display. any thoughts? Earlier I was able to create a monochrome image on the display using another library, so I'm sure about the display working and the wiring.

Thanks!

Diagnostic output from Serial Monitor!

- the actual Waveshare display boards now have level converters and series regulator, safe for 5V
- use 3k3 pull-down on SS for ESP8266 for boards with level converters
- note that 7.5" e-paper displays don't work reliable if fed from 3.3V Arduino pin
- note that Waveshare bords with "clever" reset circuit may need shortened reset pulse
- use `init(115200, true, 2, false)` for Waveshare boards with "clever" reset circuit
- note that Waveshare bords with "clever" reset circuit need 1k pull-up on RST on ESP8266, or different pin

Ok, sorry I misunderstood. Here's what I'm getting there

Is there anything I'm doing wrong?

@harshalp

The level converter on your CS line causes the boot mode issue.

  • use 3k3 pull-down on SS for ESP8266 for boards with level converters

From GxEPD2/README.md at master · ZinggJM/GxEPD2 · GitHub:

important note :

  • the display panels are for 3.3V supply and 3.3V data lines
  • never connect data lines directly to 5V Arduino data pins, use e.g. 4k7/10k resistor divider
  • series resistor only is not enough for reliable operation (back-feed effect through protection diodes)
  • 4k7/10k resistor divider may not work with flat cable extensions or Waveshare 4.2 board, use level converter then
  • do not forget to connect GND
  • the actual Waveshare display boards now have level converters and series regulator, safe for 5V
  • use 3k3 pull-down on SS for ESP8266 for boards with level converters
  • note that 7.5" e-paper displays don't work reliable if fed from 3.3V Arduino pin
  • note that Waveshare bords with "clever" reset circuit may need shortened reset pulse
  • use init(115200, true, 2, false) for Waveshare boards with "clever" reset circuit
  • note that Waveshare bords with "clever" reset circuit need 1k pull-up on RST on ESP8266, or different pin

Or from GxEPD2/GxEPD2_wiring_examples.h at master · ZinggJM/GxEPD2 · GitHub:

// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin

Yes, you could take a look at the README.md of any library you use.

And install any library known by the Library Manager using the Library Manager.

Delete manually installed libraries, to avoid the multiple library errors.

Jean-Marc

Sure! I will do that.
Thanks for your time!

Hey @ZinggJM, sorry to bother you again.

So, I deleted the manually installed libraries and used 3k3 pull-down on SS as suggested by you.
image

Getting this on the display

image image
I tried a lot but couldn't find a way to fix this issue of creating the complete image on the display. If you got some free time, can you please help?

1 Like

You need paged drawing. See README.md

1 Like

It looks like GCC for AVR is more strict than compiling for other platforms.
I mostly use ESP8266. And I usually have set warning level to default in settings.
I know that I should set warning level to ALL for release tests, but I often forget to check this.

There is a new version with fixes for warnings on GitHub. I don't tag it as a release; it will be part of the next version/release.

Jean-Marc

Thanks for your attention on this. I have found the ESP8266 libraries are far more picky with my libraries but I guess the AVR compiler settings may be catching up with new Arduino IDE releases.

ZinggJM, Post 1775: "This may mean that the electrophoretic fluid of this display is not suitable to produce clean and uniform grey levels."

Dear Jean-Marc,

what do you think of that, would the grey quality be ok for you?

Cheers,
Martin

... and this is a photo with Greyscale + Dithering:

Not too bad for a 200 x 200 pixels b/w display, is it?

Cheers again,
Martin

1 Like

@mama22, Hi Martin, welcome to the forum!

Thank you for your test, and for providing the result. It confirms what I expected.

Panel: GDEH0154D67

No, the grey levels look "dirty", not uniform like on panels that do support grey levels.
I got a similar result on a panel that also doesn't support grey levels.

Images of pictures, and dithered images may look impressively good, though.

Jean-Marc

1 Like

Dear Jean-Marc,
a few days ago I have received a 4.20 inch BW Waveshare module and tried it with your gxEPD2 lib on an ESP32 (Firebeetle). When I use the GxEPD2_DRIVER_CLASS GxEPD2_420 I get ghosting (just a little). The GxEPD2_DRIVER_CLASS GxEPD2_420_M01 gives much better results, i.e. very good contrast. Do you know any way to find out, which version of the display I have? Waveshare glue it to their board, and thus it's impossible to read anything on the (now hidden) flexible contact part.

Good Display mark their DES displays still as "presale". Now I'm unsure, if I might have a DES here or not. If not, I wonder if the better Driver Classe version could do any damage to the display - I guess it uses a waveform with a significantly higher voltage differences to achieve the higher contrast?

Thanks a lot, cheers,
Martin

BTW: I think your libraries are phantastic!

Hi Martin

You should try to ask Waveshare which panel their actual version uses.
They should learn that this information can be essential for users of their displays.
Also for the controller the panel uses.

I don't think this could damage your display. You can compare the values for the driving voltages of the two driver versions, see method _InitDisplay(). They seem to be the same.
I don't think you have the DES version, but maybe a newer panel version.
As your panel works with the driver for the DES version, the controller has a wavetable for full refresh in OTP, which will be matched to the panel.

Jean-Marc

1 Like

Done; now waiting for response. I'll let you know what they'll tell me.

BTW, are you still actively pursuing the development of the 4G lib? I got the 4.2BW module working with it, but only after changing (shortening to 2 ms) the length of the reset low-pulse in the lib source code. It seems there is no function with a reset pulse length as a parameter (as in the gxEPD2)...

Cheers,
Martin

WIP.

1 Like

:grinning: Thanks!

Concerning the identities of the various panels another idea just came to my mind: Why don't we simply compare the OTP data? What if we had a small data base with all OTP data & the panel version?

Here is the beginning of mine:

A5, Check Code, Enable Key
CC, Rev.
00, LUT 0 <=0°C
05, LUT 1 <=5°C
0A, LUT 2 <=10°C
14, LUT 3 <=20°C
1E, LUT 4 <=30°C
28, LUT 5 <=40°C
32, LUT 6 <=50°C
7F, LUT 7 others

FF, FF, FF, FF, FF, FF,

01, 90, HRES
01, 2C, VRES
55, 30, 33, 36, „U036“
00, (...)

--> Fingerprints are the Waveforms themselves (further down in the list), the Rev. Number (0xCC), and the ominous "U036" (e.g. there's an „X09W“ in the OTP of my 4.2" BWR display).

Cheers,
Martin

Updated GxEPD2_4G, Version 1.0.6, is available on GitHub.

For details see README.md.

Jean-Marc

Hey Jean-Marc,

I have a 1872×1404, 10.3inch flexible E-Ink display which I'm willing to donate. I stopped using it because it has a tiny defect, which I don't think will affect you testing it and adding it to your library. There are a couple of small white lines that no longer respond to refresh/write commands. I wrote to Waveshare and they just sent me the non-flexible version, which seems to be identical. And I would love to use it with your library. So I guess it's a win-win.

Let me know if you are interested.

Cheers.

Hi @liviopacifico, welcome to the forum!

Thank you for your offer; yes, I am interested. But I don't know if this would work.

Your display https://www.waveshare.com/product/displays/e-paper/10.3inch-e-paper-hat-d.htm
is part of a combination of a parallel interface e-paper panel and a matched IT8951 controller. The controller is parameterized (or programmed) for the panel it works with.

I do have this combination: https://www.waveshare.com/product/displays/e-paper/7.8inch-e-paper-hat.htm. Its panel has the same pixel number, width and height, but it may need different panel driving parameters. And the connection adapter is different.

Your panel might work with the controller I have, but we don't know. You could ask Waveshare.

From the software side, your combination might just work with the support for the 7.8" 1872x1404 panel, as it has the same dimension in pixel numbers, and all other parameters are in the controller firmware.

If you still want to send me your panel, you could send me a message, and I answer with my address.

Jean-Marc