My son has a project that needs a display that must conserve power. E-Paper displays use NO power at all when not updating, and when the power is off they maintain their display! Incredible.
The problem with EPDs is that they need a buffer RAM on the microprocessor to store the entire display, in my case 200x200 pixels = 40,000 bit or ~8KB. The usual Arduino UNO or Nano only have 2KB. But the Adafruit display 1.54" 200x200 pixel Black and White display module has a additional 8KB SRAM built into the module to act as the buffer.
The graphic libraries (load using the Arduino IDE Library Manager):
Adafruit_GFX - graphic functions
Adafruit_EPD - display drivers
handle the use of the module 8KB SRAM automatically for you. Here's an example:
I have written a useful "header" file of functions for displaying text and numbers - it can and will be expanded I am sure to other function such as Date and Time. These are the current functions
Adafruit 200x200 BW E-Paper Display.
Include Adafruit_GFX and Adafruit_EPD libraries
Connections - uses SPI for display and 8kB SRAM.
SCK 13, MISO 12, MOSI 11
ECS 10, DC 9, SRCS 8
RST 5, BUSY 3
Adafruit_SSD1608 epd(200, 200, DC, RST, ECS, SRCS, BUSY);
Colours, use prefdefined colours
dispInit() // call in Setup() to initialise display
dispMsgS(uint8_t x, uint8_t y, uint16_t c, char *m) // display text
dispMsg(uint8_t x, uint8_t y, uint16_t c, char *m) // display text
dispMsgL(uint8_t x, uint8_t y, uint16_t c, char *m) // display text
dispNumS(uint8_t x, uint8_t y, uint16_t c, float n, uint16_t d) // display number
dispNum(uint8_t x, uint8_t y, uint16_t c, float n, uint16_t d) // display number
dispNumL(uint8_t x, uint8_t y, uint16_t c, float n, uint16_t d) // display number
dispClear() // clear display
dispDisplay() // display
x pixels across
y pixels down
d decimal places
As you can see this is the same approach I have used for small OLED (Oled.h) and colour TFT (Tft.h) displays. The file "Epda.h" is here.
There is a demo/test file EPD_TEST for the display here that shows how to use it.