E-Ink Displays Explained: How They Work, When to Use Them, and an Arduino Example
E-ink, also called e-paper, is a reflective display designed to show information clearly without continuously powering a backlight or pixels. It is popular in e-readers, shelf labels, and battery-powered instruments because an image can remain visible after the display has been updated.
That makes e-ink a strong choice for mostly static information, but a poor choice for video, animation, or interfaces that must react instantly. The right question is not “Is e-ink low power?” but “How often will this screen change, and how quickly must it respond?”
How E-Ink Works
Most small e-paper panels use electrophoretic ink: tiny capsules contain charged black and white pigment particles. Electrical fields move the particles toward the viewing surface to form dark or light pixels. Color panels use additional pigment layers or color filters, depending on the technology.
The panel reflects ambient light, much like paper. It does not need a backlight to remain readable, and its image is bistable: after an update, the panel can continue showing that image without continuously refreshing it. A front light may be added for reading in the dark, but that light uses power while turned on.
Why E-Ink Is Popular
- Very low static display power: the panel does not need continuous power just to hold an image.
- Readable in bright light: it reflects light instead of competing with sunlight using a backlight.
- Comfortable for text: the paper-like appearance works well for long-form reading and simple labels.
- Battery-friendly for occasional updates: status can be refreshed periodically while the rest of the device sleeps.
The panel is only part of the power budget. A microcontroller, regulator, sensors, and display controller can still consume power, so a battery product needs to sleep between updates.
When to Use It
Use e-ink when information changes occasionally and should remain visible between updates:
- E-readers, electronic shelf labels, and reusable price tags
- Room signs, meeting-room schedules, and equipment labels
- Battery-powered weather stations, sensor readouts, and utility meters
- Shipping labels, asset tags, and status indicators
- Dashboards that update every few minutes rather than continuously
Avoid it for video, games, smooth scrolling, rapidly changing graphs, or controls that need immediate visual feedback. Refreshes take noticeably longer than LCD or OLED updates, and some panels briefly flash during a full refresh.
E-Ink vs. Other Displays
| Display type | How it shows an image | Static-image power | Refresh and motion | Best fit |
|---|---|---|---|---|
| E-ink / e-paper | Reflects ambient light; bistable image | Very low at the panel while holding an image | Slow; full refresh may flash | Text, labels, infrequently updated data |
| LCD / TFT LCD | Modulates a backlight | Backlight and panel stay powered | Fast; good for motion | General-purpose color interfaces |
| OLED | Pixels emit their own light | Pixels use power while lit | Fast; good contrast and motion | Compact, colorful interfaces and wearables |
| Memory LCD | Reflective LCD with pixel memory | Very low for mostly static images | Faster updates than typical e-paper, usually monochrome | Watches and always-on instruments |
Exact power depends on panel size, brightness or lighting, controller, update frequency, and board design. E-ink is not automatically the lowest-power system: frequent refreshes or a development board that never sleeps can erase much of its advantage.
Interface and Module Basics
Many Arduino-compatible e-paper modules use SPI. A typical module exposes:
SCKandDIN/MOSIfor serial dataCSto select the displayDCto distinguish commands from image dataRSTto reset the display controllerBUSYso the microcontroller can wait for an update to finish
SPI sends image data and commands to a controller on the display module; the controller drives the panel’s specialized waveforms. The panel itself is not usually connected directly to Arduino GPIO pins. Some modules use other interfaces, so check the module’s datasheet before wiring it. Many bare modules require 3.3 V supply and logic: do not connect their data pins directly to a 5 V Arduino Uno. Use a level shifter, or verify that the specific breakout board includes one. Some Waveshare driver boards do include level conversion, but do not assume every module does.
Arduino Example: Update a 2.9-Inch Black-and-White Panel
This example uses a Waveshare-compatible 2.9-inch black-and-white panel with the GxEPD2 library. Install GxEPD2 and its Adafruit GFX Library dependency in the Arduino IDE Library Manager. The exact GxEPD2 driver class depends on the panel revision and controller; GxEPD2_290_T94_V2 below is for a compatible 2.9-inch V2 panel. Check your module’s documentation and the library’s supported-display list before compiling.
Typical wiring for an Arduino Uno:
| Display pin | Arduino Uno |
|---|---|
DIN / MOSI | D11 |
CLK / SCK | D13 |
CS | D10 |
DC | D8 |
RST | D9 |
BUSY | D7 |
GND | GND |
VCC | As specified by the module |
#include <GxEPD2_BW.h>
// Replace this driver with the one that matches your panel revision.
GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(
GxEPD2_290_T94_V2(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)
);
void setup() {
display.init();
display.setRotation(0);
display.setFullWindow();
display.firstPage();
do {
display.fillScreen(GxEPD_WHITE);
display.setTextColor(GxEPD_BLACK);
display.setTextSize(2);
display.setCursor(8, 24);
display.println("Workshop");
display.setTextSize(1);
display.setCursor(8, 56);
display.println("Temperature: 22.4 C");
display.setCursor(8, 76);
display.println("Humidity: 48%");
display.setCursor(8, 104);
display.println("Updated from Arduino");
} while (display.nextPage());
display.hibernate();
}
void loop() {
// The image stays visible; a real project can sleep here and wake to update.
}
The library’s page loop renders the full image in sections, which is useful on microcontrollers with limited RAM. For a battery-powered product, also put the microcontroller into a suitable sleep mode and wake it on a timer or sensor event. Measure the complete device’s current; do not assume the display’s standby behavior describes the whole system.
Practical Trade-Offs
- Refresh time: full updates can take seconds. Partial updates may be quicker, but can leave ghost images and are not supported equally by every panel.
- Temperature: refresh behavior and speed can change significantly in cold or hot conditions. Check the operating range and temperature guidance in the datasheet.
- Color and contrast: monochrome panels are common and crisp; color panels tend to cost more and refresh more slowly.
- Power: updates consume energy, and the controller or breakout may draw power between updates. Deep-sleep the rest of the system when appropriate.
- Driver compatibility: panels that look alike may use different controllers or waveforms. Match the software driver to the exact module revision.
E-ink is a useful design choice when the screen behaves more like a printed label than a live monitor. If the content is mostly text or measurements and changes only now and then, the combination of sunlight readability and low static display power is hard to beat. For a broader comparison of panel technologies and embedded display interfaces, see Display Technologies Explained.