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/GxEPD2Supported boards
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());
}