Testing the EPDiy display driver, related libraries and other rendering primitives. https://github.com/vroland/epdiy
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jdoubleu f58f9114d5 add grid test 1 month ago
docs/images add grid test 1 month ago
main add grid test 1 month ago
thirdparty update epd_driver to fix partial area update bug 2 months ago
.gitignore create ESP-IDF project 2 months ago
.gitmodules install epd_driver 2 months ago
CMakeLists.txt install epd_driver 2 months ago
LICENSE add license 2 months ago
README.md add grid test 1 month ago
sdkconfig.default install epd_driver 2 months ago


EPD display tests

This repository aims to test the EPDiy display driver, related libraries and experimental rendering primitives.

It is based on the ESP-IDF framework (github).


In order to run and verify the tests, you have to:

  1. Install ESP-IDF on your machine
  2. Clone this repository and its submodules:
     git clone --recurse-submodules https://codeberg.org/jdoubleu/epd_display_test.git
  3. Configure your display and board type in the menuconfig under Component config -> E-Paper driver -> Display Type:
    idf.py menuconfig
  4. Build and flash this project:
    idf.py -p <EPDIY_PORT> flash 


This lists all tests conducted.

Partial update at 0,0

Whenever the display is rotated (e.g. EPD_ROT_PORTRAIT) and you try to partially update any area, using epd_hl_update_area where either one of x or y is 0, nothing gets updated at all.

To confirm this, just run the test_rotated_update_0.c (enabled by default) and verify, that the text "Hello from the Border" is not visible. Now change the area's x position to 1 (or anything other than 0) here and re-run the test. You should be able to see the text now!

This issue is being addressed in: https://github.com/vroland/epdiy/pull/107

Partial area update

Update: This issue seems to be mostly fixed in the latest master at b9fc186 (see discussion)

This test reproduces an issue with partial area update (epd_hl_update_area) in rotated mode. The test can be found in test_update_area.c. First, it sets the display rotation to EPD_ROT_PORTRAIT. It then writes a 3 digit number and a rectangle to the display. Each display_draw only prints the given (i.e. changed) area from the front buffer to the display. After that, it immediately clears that area in the front buffer by setting every pixel to white (0xFF).

The next write of the number results in overlapping digits/characters on the display (see below), at least in portrait orientation. The same test in landscape works perfectly fine (try changing the orientation here).

Portrait Landscape
bug in portrait works in landscape
actual expected

Broken stairs

When drawing horizontal lines along an imaginary diagonal line, thus producing stairs, some of those are weirdly off-set (see screenshot below). This might just be an issue with my board and display in particular.

To run this example, comment out the other tests in the app_main and uncomment the test_stairs() function call.

broken stairs


This test renders a grid with adjustable gutter spacing and additional information. By default, the gutter size is 80px and each cell displays its x and y index, as well as its absolute x and y position.



For some, not yet confirmed, reason, the 10th horizontal line is not printed. At a height of 800px the line is simply skipped. It may have something to do with the orientation and internal rotation, although the display width is 825px and not 800px. This behaviour can also be observed in different orientations (e.g. EPD_ROT_LADNSCAPE), where instead of the 10th row the 10th column isn't displayed.



This project is licensed under GPLv3.