A MicroPython driver for UC8151/IL0373 e-paper displays featuring computed LUTs, anti-flickering modes, and up to 32-level greyscale support.
UC8151 MicroPython is a driver for e-paper displays based on the UC8151/IL0373 chip, enabling control of displays like the Pimoroni Badger 2040 from MicroPython. It solves the problem of limited documentation and rigid refresh options by offering computed lookup tables, anti-flickering modes, and greyscale support, giving developers fine-grained control over display updates.
MicroPython developers working with e-paper displays, especially those using Badger 2040 or similar UC8151/IL0373-based hardware who need advanced features like greyscale or customizable refresh behavior.
Developers choose this driver for its transparency (computed LUTs vs. magic numbers), advanced features like anti-flickering and greyscale, and compatibility with standard MicroPython, avoiding vendor lock-in.
UC8151 / IL0373 MicroPython e-paper display driver with support for greyscales and fast updates
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Dynamically generates waveform lookup tables, allowing floating-point speed values and reducing MicroPython memory usage compared to fixed LUTs.
Minimizes display flicker during updates by modifying LUTs, making it ideal for clocks or frequently updating content, though with ghosting trade-offs.
Supports up to 32 levels of greyscale on monochrome displays using specialized LUTs and framebuffer techniques, as demonstrated with the Da Vinci painting demo.
Heavily commented to explain e-paper internals, LUT formatting, and waveform generation, empowering users to learn and customize display behavior.
Allows dynamic adjustment of speed, flickering mode, and full-update periods via API calls like set_speed(), enabling on-the-fly optimization.
Only tested with default 128x296 resolution; other resolutions may have compatibility issues, as admitted in the README.
Anti-flickering modes cause ghosting accumulation over time, requiring periodic full flickered updates to reset the display, which can interrupt user experience.
Partial updates are not implemented yet (marked TODO), limiting use cases that require selective screen refreshes without full redraws.
Requires understanding of LUTs, waveforms, and MicroPython framebuffers; not a simple drop-in solution like vendor-provided drivers.