epd-datafuri 0.1.0

Driver for Adafruit e-Paper display (EPD) controllers (SSD1680, IL0373), for use with embedded-hal
Documentation

epd-datafuri

Rust driver for Adafruit e-Paper displays (EPD), for use with embedded-hal.

Supported Displays

Display Controller Colors Grayscale
Adafruit ThinkInk 2.9" EAAMFGN (2025 MagTag) SSD1680 BW Gray2 (2-bit, 4-level)
Adafruit ThinkInk 2.9" T5 (original MagTag) IL0373 BW Gray2 (2-bit, 4-level)

crates.io Documentation

Supported controllers:

Documentation

Description

Built using embedded-hal and optionally embedded-graphics.

Grayscale

2-bit, 4-level grayscale (Gray2) is supported for both displays. Each display module exports its own Display2in9Gray2 with the correct plane mapping for that controller:

  • adafruit_thinkink_290_mfgn::Display2in9Gray2 for the ThinkInk 2.9" (SSD1680)
  • adafruit_thinkink_290_t5::Display2in9Gray2 for the MagTag 2.9" (IL0373)

Partial Updates

Partial updates are not supported.

Usage

ThinkInk 2.9" — Monochrome (SSD1680)

use epd_datafuri::displays::adafruit_thinkink_290_mfgn::{ThinkInk2in9Mono, Display2in9Mono};
use epd_datafuri::prelude::*;

let mut driver = ThinkInk2in9Mono::new(spi, busy, dc, rst)?;
let mut display = Display2in9Mono::new();

// Draw using embedded-graphics
Text::new("Hello!", Point::new(10, 20), text_style).draw(&mut display)?;

driver.begin(&mut delay)?;
driver.update_and_display(display.buffer(), &mut delay)?;

ThinkInk 2.9" — Grayscale (SSD1680)

use epd_datafuri::displays::adafruit_thinkink_290_mfgn::{ThinkInk2in9Gray2, Display2in9Gray2};
use epd_datafuri::prelude::*;
use embedded_graphics::pixelcolor::Gray2;

let mut driver = ThinkInk2in9Gray2::new(spi, busy, dc, rst)?;
let mut display = Display2in9Gray2::new();

// Draw using embedded-graphics with 4-level gray
Text::new("Hello!", Point::new(10, 20), text_style).draw(&mut display)?;
Rectangle::new(Point::new(50, 50), Size::new(40, 40))
    .into_styled(PrimitiveStyle::with_fill(Gray2::new(1)))
    .draw(&mut display)?;

driver.begin(&mut delay)?;
driver.update_gray2_and_display(display.high_buffer(), display.low_buffer(), &mut delay)?;

MagTag 2.9" — Grayscale (IL0373)

use epd_datafuri::displays::adafruit_thinkink_290_t5::{ThinkInk2in9Gray2, Display2in9Gray2};
use epd_datafuri::prelude::*;
use embedded_graphics::pixelcolor::Gray2;

let mut driver = ThinkInk2in9Gray2::new(spi, busy, dc, rst)?;
let mut display = Display2in9Gray2::new();

// Draw using embedded-graphics with 4-level gray
Text::new("Hello!", Point::new(10, 20), text_style).draw(&mut display)?;
Rectangle::new(Point::new(50, 50), Size::new(40, 40))
    .into_styled(PrimitiveStyle::with_fill(Gray2::new(1)))
    .draw(&mut display)?;

driver.begin(&mut delay)?;
driver.update_gray2_and_display(display.high_buffer(), display.low_buffer(), &mut delay)?;

Examples

Credits

This crate was originally a fork of ssd1680 by Konstantin Terekhov. It has been heavily modified to support the Adafruit MagTag EPD displays.

License

epd-datafuri is dual licenced under: