DIY Electronics
— Building circuits, programming microcontrollers, and making things blinkADS1115 ADC for high-resolution sensor readings on Arduino
E-Ink Display Refresh Strategies
E-ink displays are polarizing: low power when static, slow to update. Here's how to work within the constraints.
Full refresh (GC16 waveform on Waveshare/Good Display panels) takes 2-4 seconds and flashes black. For a weather display that updates every 15 minutes, this is fine. Partial refresh (DU waveform) takes 0.3-0.8 seconds and doesn't flash, but it accumulates ghosting artifacts over time — you need to do a full refresh every 10-20 partial refreshes to clear ghosting.
The correct pattern for an ESP32 e-ink display: maintain a shadow buffer of the current display contents. On each update, compute which regions changed. If a small region changed, use partial refresh. After 20 partial refreshes, force a full refresh. This gives a snappy user experience while keeping refresh counts manageable. Temperature affects refresh waveforms significantly — panels below 0°C need warm-up heating or extended waveform timing.