Skip to content

Add 7-color ACeP color scheme (Bwgbryo) + Inkplate 6COLOR palette#43

Closed
brandon-dacrib wants to merge 2 commits into
OpenDisplay:mainfrom
brandon-dacrib:inkplate-6color-palette
Closed

Add 7-color ACeP color scheme (Bwgbryo) + Inkplate 6COLOR palette#43
brandon-dacrib wants to merge 2 commits into
OpenDisplay:mainfrom
brandon-dacrib:inkplate-6color-palette

Conversation

@brandon-dacrib

@brandon-dacrib brandon-dacrib commented Jun 18, 2026

Copy link
Copy Markdown

Summary

Adds a 7-color ACeP color scheme for the Soldered Inkplate 6COLOR (600×448, panel_ic_type 0x0043):

  • ColorScheme::Bwgbryo = 8 (Rust core palettes.rs + Python palettes.py). Color order matches the panel's native nibble codes: black0 white1 green2 blue3 red4 yellow5 orange6 — so dither indices map directly to panel nibbles (no remap, unlike Bwgbry).
  • INKPLATE_6COLOR measured palette in measured_palettes.rs + CATALOG, exported in the Python package.
  • Tests: palette count = 7, value = 8, and a guard pinning the native nibble order (the property that would otherwise silently produce wrong colors).

Testing

  • cargo test — 44 core tests pass (incl. the new ones).
  • Built with maturin; verified the 7 pure colors dither to indices [0..6] matching the panel nibbles.
  • Validated end-to-end on real hardware: image dithered with this scheme, sent over BLE, rendered on an Inkplate 6COLOR. Geometry/encoding correct.

Note: palette is nominal (calibration TODO)

The INKPLATE_6COLOR RGB values are nominal placeholders (marked TODO, like MONO_4_26/BWRY_4_2). On hardware, saturated greens/reds currently match to the nearest nominal ink (green tends toward yellow). Measuring the actual panel inks (as the SPECTRA_7_3_6COLOR entries were) will sharpen hue accuracy — happy to follow up with measured values.

Related

🤖 Generated with Claude Code

- ColorScheme::Bwgbryo = 8: 7-color ACeP, color order = panel native nibbles
  (black0 white1 green2 blue3 red4 yellow5 orange6)
- INKPLATE_6COLOR measured palette (nominal RGB; TODO measure) in CATALOG
- Python ColorScheme.BWGBRYO mirror + INKPLATE_6COLOR export
- Tests: palette count=7, value=8, native-order guard

Verified: pure colors dither to indices [0..6] matching the panel nibbles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Hardware calibration: the panel's raw inks photograph very desaturated (green
contaminated by ghosting), so nearest-color matching sent vivid greens->yellow
and blues->black. Replaced with hue-representative values so all 7 source
colors select the correct ink (verified: pure swatches dither to nibbles 0..6).
The panel still renders its own (muted) ink per nibble; these values only drive
matching. TODO: precise tone-accurate measurement on a ghosting-cleared panel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@brandon-dacrib

Copy link
Copy Markdown
Author

Closing this because we are no longer pursuing the OpenDisplay integration path for Inkplate 6COLOR. The BWGBRYO palette work was useful for the proof of concept, but the chosen Home Assistant path is now Soldered's ESPHome component: https://github.com/SolderedElectronics/Soldered-Inkplate-ESPHome. Keeping this PR open would add an unused OpenDisplay host-rendering path for a board whose supported stack renders locally in ESPHome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant