E-Paper Studio: A Visual Design Tool
- Categories:Innovation
- Author:Zhang Hui
- Origin:Original
- Time of issue:2026-04-15 13:54
- Views:
(Summary description)The what-you-see-is-what-you-get (WYSIWYG) tool launched by the engineers at Good Display, which generates Arduino code with one click, will greatly facilitate users' design and programming processes, and truly make e-ink display development as simple as building blocks.
E-Paper Studio: A Visual Design Tool
(Summary description)The what-you-see-is-what-you-get (WYSIWYG) tool launched by the engineers at Good Display, which generates Arduino code with one click, will greatly facilitate users' design and programming processes, and truly make e-ink display development as simple as building blocks.
- Categories:Innovation
- Author:Zhang Hui
- Origin:Original
- Time of issue:2026-04-15 13:54
- Views:
E-Paper Studio
E-Paper Studio is an online visual design tool for e-paper projects. Quickly build display layouts via drag-and-drop and generate ready-to-run Arduino code.
Whether you're a beginner or a maker, turn your ideas into real e-ink displays in minutes.
Zero-Code Design
Drag & drop components, no coordinate calculations needed.
One-Click Generation
Full driver + sensor + partial refresh code, ready to use.

WYSIWYG
Live canvas with multi-component support and precise property adjustment.
Highly Configurable
Scan mode, bit order, coordinate transforms – compatible with most e-paper displays.
⚡ Quick Start: From Design to Hardware in 3 Steps
Design Interface
Choose canvas size, drag text, values, images, sensors. Double-click to edit text or images. Adjust position, color, font in the properties panel.
Configure Hardware
Set scan mode, bit order, polarity, origin; choose sensor models (BME280/SCD41); define partial refresh zones to avoid global flashing.
Generate & Burn
Click Generate Code, copy or download the complete .ino file. Adjust pins in Arduino IDE and upload.
Advanced Features, Precise Control
Multi-Canvas Management & Boot Sequence
Supports Boot Screen and Main Screen. Generated code automatically includes a full refresh for the boot screen, then enters the main interface, simulating a real device startup process.
Partial Refresh Optimization
After manually drawing partial refresh zones, the system allocates independent buffers for each zone. During partial refresh, only dynamic components (clock, sensor values) update, while static parts are copied from pre-generated bitmaps, greatly reducing refresh cycles and power consumption. Set a full refresh after N partial refreshes to prevent ghosting.
Flexible Font System
Preview Real-time scaling based on selected U8g2 font templates (6x10, logisoso24, etc.).
Code Generation Each text component can specify an independent U8g2 font or use global auto-matching. Three rendering modes supported:
native— Native U8g2 font, no scaling.sharp— Nearest-neighbor scaling, sharp edges.smooth— Bayer dithering scaling, smoother for large text.
Sensor Data Integration
After selecting BME280 or SCD41, the generated code automatically includes: corresponding libraries, global variables, init functions, read functions, and formatting functions. The main loop reads sensors every minute and triggers interface updates.
Bitmap Mapping Full Configuration
Compatible with nearly all common e-paper drivers:
Scan Mode
Row scan / Column scan (8-page mode)
Bit Order
MSB first / LSB first
Coordinate Direction
X/Y independent reverse, origin selectable corners
Coordinate Transform
Rotate 90°/180°/Swap XY
Pixel Polarity
1=White/0=Black or 0=White/1=Black
Generated Code Structure
After clicking "Generate Code", you'll get a well-structured Arduino (.ino) file containing the following main parts:
// 1. Headers and configuration
#include <SPI.h>
#include <U8g2_for_Adafruit_GFX.h>
#include "Display_EPD_W21.h"
// 2. Bitmap arrays (auto-generated)
const unsigned char gImage_boot[] = { 0x00, 0xFF, ... };
const unsigned char gImage_main_base[] = { ... };
// Base arrays for each partial refresh zone
// 3. Runtime variables & 1bpp drawing tools
void setPixel1bpp(...);
void fillRect1bpp(...);
void drawTextMonoPx(...); // U8g2-based text rendering
// 4. Time/sensor handling
void initRuntimeData();
bool updateRuntimeData();
void formatSensorText(...);
// 5. Partial refresh zone composition
void composeDynamicZone1(uint8_t* buf, int w, int h) {
memcpy(buf, gImage_zoneBase1, ...);
drawTextMonoPx(...); // draw dynamic components
}
// 6. setup() boot sequence
void setup() {
EPD_HW_Init();
EPD_WhiteScreen_ALL(gImage_boot); // boot screen
composeDynamicFull(gMainBuf, ...);
EPD_SetRAMValue_BaseMap(gMainBuf); // main screen
EPD_DeepSleep();
}
// 7. loop() updates dynamic data every minute
void loop() {
if (updateRuntimeData()) refreshDisplay();
delay(200);
}
Typical Use Cases
- Desktop Thermometer/Hygrometer (Clock + BME280 + Battery icon)
- Smart Home Control Panel
- ️ Creative Badge / Name Tag (import images)
- ⚙️ Rapid Prototyping
- ⏱️ Timer / Pomodoro Clock
- Reminder Whiteboard
✅ Tested Drivers & Panels
SSD1680 (296x128, 128x296), GDEY029T94, and general row/column scan displays. The bitmap mapping configuration adapts to most monochrome e-paper screens.
Default Pins A14 (BUSY), A15 (RES), A16 (DC), A17 (CS) — modify as needed after code generation.
✨ Bring Your E-Paper Display to Life
Open E-Paper Studio online, drag and drop to design your first screen, and see it on hardware in 3 minutes.
E-Paper Studio is driven by the Good Display maker community, continuously adding components and driver compatibility.
Questions or suggestions? Welcome to submit an Issue.
Scan the QR code to read on your phone
logo
Contact
copyright
©2007-2025 DALIAN GOOD DISPLAY CO., LTD. Privacy Policy All Rights Reserved. ICP08000578-1

