SkillAgentSearch skills...

GxEPD2

Arduino Display Library for SPI E-Paper Displays

Install / Use

/learn @ZinggJM/GxEPD2
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

GxEPD2

Arduino Display Library for SPI E-Paper Displays

  • With full Graphics and Text support using Adafruit_GFX

  • For SPI e-paper displays from Dalian Good Display

  • and SPI e-paper boards from Waveshare having the same panels

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 boards 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 boards with "clever" reset circuit need 1k pull-up on RST on ESP8266, or different pin
  • note that the new Waveshare Universal e-Paper Raw Panel Driver HAT Rev 2.3 needs PWR connected to VCC or driven HIGH
  • see https://www.waveshare.com/wiki/E-Paper_Driver_HAT
  • some new Waveshare boards also have a PWR control pin, needs be pulled hight

Paged Drawing, Picture Loop

  • This library uses paged drawing to limit RAM use and cope with missing single pixel update support
  • buffer size can be selected in the application by template parameter page_height, see GxEPD2_Example
  • Paged drawing is implemented as picture loop, like in U8G2 (Oliver Kraus)
  • see https://github.com/olikraus/u8glib/wiki/tpictureloop
  • Paged drawing is also available using drawPaged() and drawCallback(), like in GxEPD
  • // GxEPD style paged drawing; drawCallback() is called as many times as needed
  • void drawPaged(void (*drawCallback)(const void*), const void* pv)
  • paged drawing is done using Adafruit_GFX methods inside picture loop or drawCallback

Full Screen Buffer Support

  • full screen buffer is selected by setting template parameter page_height to display height
  • drawing to full screen buffer can either be done using Adafruit_GFX methods without picture loop or drawCallback
  • and then calling method display()
  • or by still using the page loop or drawCallback

Low Level Bitmap Drawing Support

  • bitmap drawing support to the controller memory and screen is available:
  • either through the template class instance methods that forward calls to the base display class
  • or directly using an instance of a base display class and calling its methods directly

Supporting Arduino Forum Topics:

  • Waveshare e-paper displays with SPI: http://forum.arduino.cc/index.php?topic=487007.0
  • Good Display ePaper for Arduino : https://forum.arduino.cc/index.php?topic=436411.0
  • Note that these topics are closed. Use only for reference.
  • The Arduino Forum is no longer watched and answered by the Author.
  • New questions or issues should be posted on https://github.com/ZinggJM/GxEPD2/discussions

Note on documentation

  • GxEPD2 uses Adafruit_GFX for Graphics and Text support, which is well documented there
  • GxEPD2 uses meaningful method names, and has some comments in the header files
  • consult the header files GxEPD2_BW.h, GxEPD2_3C.h and GxEPD2_GFX.h
  • for the concept of paged drawing and picture loop see:
  • https://github.com/olikraus/u8glib/wiki/tpictureloop

Note on issues and pull requests

  • issues should be reported in https://github.com/ZinggJM/GxEPD2/discussions.
  • issues on GitHub are disabled; there were too many false issues.
  • pull requests are not welcome, will not be merged.
  • pull requests can't be disabled, but will be closed.
  • please place information about interesting fork additions in https://github.com/ZinggJM/GxEPD2/discussions.

Supported SPI e-paper panels from Good Display:

  • GDEW0102T4 1.02" b/w 80x128, UC8175
  • DEPG0150BN 1.50" b/w 200x200, SSD1681, e.g. LILYGO® TTGO T5 V2.4.1 1.50 inch
  • GDEP015OC1 1.54" b/w 200x200, IL3829, no longer available
  • GDEH0154D67 1.54" b/w 200x200, SSD1681, replacement for GDEP015OC1
  • GDEW0154T8 1.54" b/w 152x152, UC8151 (IL0373)
  • GDEW0154M09 1.54" b/w 200x200, JD79653A
  • GDEW0154M10 1.54" b/w 152x152, UC8151D, DES
  • GDEY0154D67 1.54" b/w 200x200, SSD1681
  • GDEW0154Z04 1.54" b/w/r 200x200, IL0376F, no longer available
  • GDEH0154Z90 1.54" b/w/r 200x200, SSD1681, replacement for GDEW0154Z04
  • GDEM0154F51H 1.54" 4-color 200x200, JD79660
  • GDE0213B1 2.13" b/w 122x250, IL3895, phased out
  • GDEH0213B72 2.13" b/w 122x250, SSD1675A (IL3897), replacement for GDE0213B1
  • GDEH0213B73 2.13" b/w 122x250, SSD1675B, new replacement for GDE0213B1, GDEH0213B72
  • GDEM0213B74 2.13" b/w 122x250, SSD1680
  • GDEW0213I5F 2.13" b/w 104x212, UC8151 (IL0373), flexible
  • GDEW0213T5D 2.13" b/w 104x212, UC8151 (IL0373)
  • GDEW0213M21 2.13" b/w 104x212, UC8151 (IL0373), DES
  • GDEW0213Z16 2.13" b/w/r 104x212, UC8151 (IL0373)
  • GDEW0213Z19 2.13" b/w/r 104x212, UC8151D
  • GDEY0213Z98 2.13" b/w/r 122x250, SSD1680
  • GDEY0213F51 2.13" 4-color 122x250, JD79661
  • DEPG0213BN 2.13" b/w 122x250, SSD1680, e.g. LILYGO® TTGO T5 V2.3.1 2.13 inch
  • GDEY0213B74 2.13" b/w 122x250, SSD1680
  • GDEW026T0 2.6" b/w 152x296, UC8151 (IL0373)
  • GDEW026M01 2.6" b/w 152x296, UC8151 (IL0373), DES
  • DEPG0266BN 2.66" b/w 152x296, SSD1680, e.g. LILYGO® TTGO T5 2.66 inch
  • GDEY0266Z90 2.66" b/w/r 152x296, SSD1680
  • GDEY0266F51H 2.66" 4-color 184x460, JD79667
  • GDEW027C44 2.7" b/w/r 176x264, IL91874
  • GDEW027W3 2.7" b/w 176x264, EK79652 (IL91874)
  • GDEY027T91 2.7" b/w 176x264, SSD1680
  • GDEH029A1 2.9" b/w 128x296, SSD1608 (IL3820)
  • GDEW029T5 2.9" b/w 128x296, UC8151 (IL0373)
  • GDEW029T5D 2.9" b/w 128x296, UC8151D
  • GDEW029I6FD 2.9" b/w 128x296, UC8151D, flexible
  • GDEM029T94 2.9" b/w 128x296, SSD1680
  • GDEW029M06 2.9" b/w 128x296, UC8151D, DES
  • GDEW029Z10 2.9" b/w/r 128x296, UC8151 (IL0373)
  • GDEH029Z13 2.9" b/w/r 128x296, UC8151D
  • GDEM029C90 2.9" b/w/y 128x296, SSD1680
  • DEPG0290BS 2.9" b/w 128x296, SSD1680, e.g. LILYGO® TTGO T5 V2.4.1 2.9"
  • GDEY029T94 2.9" b/w 128x296, SSD1680
  • GDEY029T71H 2.9" b/w 168x384, SSD1685
  • GDEY029F51H 2.9" 4-color 168x384, JD79667
  • Waveshare3inch4color 3.0" 4-color 168x400
  • GDEQ031T10 3.1" b/w 240x320, UC8253
  • GDEM035F51 3.5" 4-color 184x384, JD79667
  • GDEY037T03 3.7" b/w 240x416, UC8253
  • ED037TC1 3.7" b/w 280x480, SSD1677, Waveshare 3.7"
  • GDEW0371W7 3.7" b/w 240x416, UC8171 (IL0324)
  • GDEM0397T81 3.97" b/w 480x800, SSD2677
  • GDEM0397F81 3.97" 4-color, 800x480, SSD2677
  • GDEW042T2 4.2" b/w 400x300, UC8176 (IL0398)
  • GDEW042M01 4.2" b/w 400x300, UC8176 (IL0398), DES
  • GDEW042Z15 4.2" b/w/r 400x300, UC8176 (IL0398)
  • GDEQ042Z21 4.2" b/w/r 400x300, UC8276, (Waveshare V2)
  • GDEY042Z98 4.2" b/w/r 400x300, SSD1683
  • GDEY042T81 4.2" b/w 400x300, SSD1683
  • GDEY0420F51 4.2" 4-color 400x300, HX8717
  • GDEQ0426T82 4.26" b/w 800x480, SSD1677
  • Waveshare437inch4color Waveshare 4.37" 4-color e-paper display 512x368
  • ACeP565 5.65" Waveshare 5.65" 7-color e-paper display 600x448
  • GDEP0565D90 5.65" 7-color 600x448
  • GDEY0579T93 5.79" b/w 792x272, SSD1683
  • GDEY0579Z93 5.79" b/w/r 792x272, SSD1683
  • GDEY0579F51 5.79" 4-color 792x272, HX8717
  • GDEW0583T7 5.83" b/w 600x448, UC8159c (IL0371)
  • GDEW0583T8 5.83" b/w 648x480, EK79655 (GD7965)
  • GDEW0583Z83 5.83" b/w/r 648x480, EK79655 (GD7965)
  • GDEQ0583T31 5.83" b/w 648x480, UC8179
  • GDEQ0583Z31 5.83" b/w/r 648x480, UC8179C
  • GDEY073D46 7.3" 800x480 7-color
  • GDEP073E01 7.3" 800x480 7-color
  • ACeP730 7.3" Waveshare 7-color e-paper display 800x480, PhotoPainter
  • GDEW075T8 7.5" b/w 640x384, UC8159c (IL0371)
  • GDEW075T7 7.5" b/w 800x480, EK79655 (GD7965)
  • GDEY075T7 7.5" b/w 800x480, UC8179 (GD7965)
  • GDEW075Z09 7.5" b/w/r 640x384, UC8159c (IL0371)
  • GDEW075Z08 7.5" b/w/r 800x480, EK79655 (GD7965)
  • GDEY075Z08 7.5" b/w/r 800x480, UC8179
  • GDEH075Z90 7.5" b/w/r 880x528, SSD1677
  • GDEM075F52 7.5" 4-color, 800x480, JD79665AA
  • GDEM102T91 10.2" b/w 960x640, SSD1677
  • GDEM1085T51 10.85 b/w 1360x480, JD79686AB
  • GDEH116T91 11.6" b/w 960x640, SSD1677
  • GDEY116Z91 11.6" b/w/r 960x640, SSD1677
  • GDEY116F51 11.6" 4-color 960x640, SSD2677
  • GDEW1248T3 12.48" b/w 1304x984, UC8179
  • GDEY1248Z51 12.48" b/w/r 1304x984, UC8179
  • GDEM133T91 13.3" b/w 960x680, SSD1677
  • GDEM133Z91 13.3" b/w/r 960x680, SSD1677

Supported SPI e-paper panels & boards from Waveshare: compare with Good Display, same panel

other supported panels

  • GYE042A87 4.2" b/w 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
  • SE0420NQ04 4.2" b/w 400x300, UC8276C (OPM042A2_V1.0)
  • ED060SCT 6" grey levels, on Waveshare e-Paper IT8951 Driver HAT
  • ED060KC1 6" grey levels, 1448x1072, on Waveshare e-Paper IT8951 Driver HAT
  • ED078KC2 7.8" grey levels, 1872x1404, on Waveshare e-Paper IT8951 Driver HAT
  • ES103TC1 10.3" grey levels, 1872x1404, on Waveshare e-Paper IT8951 Driver HAT

I can and will only support e-paper panels I have!

  • I accept panel donations to add support to GxEPD2 only on exception.
  • I support only panels from known sources that are well documented.
  • Let me know about interesting panels that fall into this category.
  • I occasionally buy new panels, but adding support will take as much time as needed.

Version 1.6.8

  • added methods writeImageToPrevious and writeImagePartToPrevious to b/w driver classes
  • added partial update support to GDEP073E01
  • added partial window addressing to GDEY073D46, partial refresh not usable

Version 1.6.7

Related Skills

View on GitHub
GitHub Stars1.4k
CategoryDevelopment
Updated1d ago
Forks294

Languages

C

Security Score

100/100

Audited on Mar 26, 2026

No findings