Skip to content
DisplayGPL-3.0v1.5.9

GxEPD2

by Jean-Marc Zingg

GxEPD2 drives a wide range of Good Display and Waveshare e-paper panels (from small 1.5-inch modules to large multi-color displays), built on Adafruit GFX so all the standard drawing primitives are available. E-paper's defining trait is that it holds an image with zero power once drawn, but a full refresh causes a visible black/white flash — GxEPD2 also supports partial refresh on many panels to update small regions without the flash, at the cost of eventual "ghosting" that a periodic full refresh clears up. The catch that trips people up is RAM: e-paper drivers need a full framebuffer in memory (one or two bits per pixel), so larger panels can exceed an Arduino Uno's 2KB of RAM entirely — GxEPD2's paged-drawing mode works around this by rendering and flushing the display in horizontal strips instead of buffering the whole image at once.

Installation

Arduino IDE — Library Manager

Sketch → Include Library → Manage Libraries → search GxEPD2

PlatformIO

lib_deps = zinggjm/GxEPD2

Supported boards

Arduino UnoESP32STM32 Blue Pill

Examples

Draw text on a 1.54-inch e-paper panel

Paged drawing pattern (firstPage/nextPage) keeps RAM use low on memory-constrained boards.

#include <GxEPD2_BW.h>

GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(
  GxEPD2_154(/*CS=*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));

void setup() {
  display.init();
  display.setFullWindow();
  display.firstPage();
  do {
    display.fillScreen(GxEPD_WHITE);
    display.setCursor(10, 30);
    display.print("SolderHub");
  } while (display.nextPage());
}