E-Ink displays have been unavailable to hobbyists for quite some time, which is rather disappointing since it is an exciting technology! Fortunately rePaper has started producing small e-ink displays complete with Arduino-compatible development boards, which has finally made e-ink displays available to hobbyists!
I ordered a 1.44" display for experimenting with, which was actually pretty easy to get working with an Arduino. I had the display showing an image in no time at all!
The display I got is 128x96 pixels, black and white. The data is arranged 8 pixels per byte.
I love my PIC microcontrollers, so porting their code to PIC was my next task. It took me a bit to get it working correctly, because for some reason it wasn’t generating the ±20V supply. It turns out you need a 1-2us delay between SPI bytes, which wasn’t mentioned in rePaper’s documentation. After that it all worked fine!
[X]
I’m still having some issues with the image fading over time (it doesn’t fade if you unplug the display FPC though), and also some ghosting/burn-in issues.
I could get some reasonably fast update times (500ms) if I didn’t do any display compensation or image inverting, though I suspect that may be causing some burn-in since I can still see earlier test patterns when the image goes dark. Either that or I’ve damaged the display while trying to get it to work.
The faster update time could be useful for simple animations, and also has the possibility of updating a portion of the display without going through the inverse cycle (eg. for a clock readout, or incrementally showing things)
Interestingly, the Chip-On-Glass (COG) is affected by bright light, hence the black tape over that part of the screen! The display either stops responding, or shows garbage pixels if exposed to a bright light source. Also the PWM line isn’t actually used to generate the display voltages, it’s just used to keep a bit of negative voltage on VGL while the display is starting up. That lead me down the wrong path when I was trying to figure out why the display wouldn’t work.
The photo at the top of this post shows some sample fonts from my graphics library. I might touch on this in a separate blog post, but basically I found a whole heap of free pixel fonts online, converted them to bitmap form, and embedded them in c header files.
If you want to connect the e-ink display to a PIC32 or another PIC MCU, check out my code on github