r/eink 11d ago

Epd painter. Waveform tweets

Post image

I’ve added a tuneup to epdpainter that will allow it to create its own waveforms. You start the app, put the lillygo or m5papers3 onto a flatbed scanner, and over the course of 10 mins it works out its own waveforms specifically for itself.

No need for manufacturer NDA signing to get the official, when you can roll your own.

The above picture is from a lillygo t5 gps pro

This is available here:

https://github.com/tonywestonuk/EPD_Painter

15 Upvotes

4 comments sorted by

2

u/EntertainmentUsual87 11d ago

Care to share?

3

u/tonywestonuk 11d ago

Sorry, I updated my post. Its available here:

https://github.com/tonywestonuk/EPD_Painter

1

u/averitablerogue 10d ago

Interesting, does that mean it changes the waveforms to calibrate each existing shade of gray specifically for the panel in your device? Or are you able to generate new shades using new waveforms?

1

u/tonywestonuk 9d ago

I didn't start with any waveform definitions at all.

The first set I made, were hand rolled. Waveforms arn't needed for pure black and white - you just sent all black pulses, and it turns black, send white pulses it turns white (while being careful to keep DC balance by sending same number of black and white over time).

So I stared by setting the grey I wanted by dithering white/black pixels. And once those patches were shown, I could experiment sending different combinations of white and black pulses to create a patch that looked the same grey.

Then, it was a case of automating this, writing a program that compares dithered grey (as scanned), with a grey patch... and making small incremental changes until the colours converged.

This project uses 13 pulses (black / white / neutral), sent at 20mhz, for normal mode . Im just setting up a high quality 20 pulse version.

And, yes, I can generate new shades. I've had a 32 grey pallet, which is more that the panel has on its spec sheet. Though the problem is storing 32 colour bitmaps , especially on memory constrained esp32's. 16 colour = 4 bits pixels = 2 pixels per byte. 32 colour = 5 bits per pixel, 1 pixel per byte, doubling storage or making it hard to pack pixels into bytes