Adafruit E-ink display non functioning


I recently purchased the Adafruit 1.54 TRI-COLOR EINK / EPAPER 200X200 DISPLAY WITH SRAM - SSD1681 DRIVER display for a project I’m trying to put together as I needed a low power consumption display that’s going to update data once per hour, so this display seemed perfect.

Following the Adafruit documentation found here:

Overview | Adafruit 1.54" eInk Display Breakouts | Adafruit Learning System

i have wired the unit according to the guide

and compiled the sample code direct from Adafruit.

All that I got in the end was:

On an Arduino Uno, the code executes the first display call and locks up the device, no further code is executed.

On an ESP32, the code continues to execute, but no display change.

I can upload the code if required, however it is the stock code with only the following line changed:

ThinkInk_154_Tricolor_Z90 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
//ThinkInk_290_Tricolor_Z10 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);

Has anyone come across this before please?



Hi Robmc,

Sorry we didn’t get to this one sooner. No obvious issues jump out at me as to why this shouldn’t have worked for you. I’ll take one of the displays from the warehouse in the morning and replicate your setup here in the support office, then we can go from there to see why it’s not working as expected.


Hi Robmc,

I was just trying to double-check your wiring from the first photo. The 3.3V to Vin, Gnd, SCK, MISO, and MOSI look right to me, but it appears that the ECS pin of the display is connected to digital 10 in your photo. Could you send us another couple of photos of the wiring at the UNO and the wiring into the breadboard?


Thanks heaps Trent.

I’ve rechecked the wiring and retried to upload a code. One less issue, the Uno no longer locks up, so something was amiss, but the display still doesn’t refresh.

Close up photos of the wiring:

Still using the default pin assignments:

#define EPD_DC      10 // can be any pin, but required!
#define EPD_CS      9  // can be any pin, but required!
#define EPD_BUSY    7  // can set to -1 to not use a pin (will wait a fixed delay)
#define SRAM_CS     6  // can set to -1 to not use a pin (uses a lot of RAM!)
#define EPD_RESET   8  // can set to -1 and share with chip Reset (can't deep sleep)



Hi Rob,

Sorry, we didn’t have a solution for you this time and couldn’t pinpoint the problem quickly. We’ll treat this unit as defective and organise a replacement via email to get you back on track.

Thanks heaps Trent, much appreciated. How do I return the faulty unit?



Hi Rob,

We’ve gotten in touch via email, as returns are handled there. Have a read of the email from my colleague, it goes over what we do and don’t need from you going forward. Get back to us there if you have any questions