gdew027w3T 176x264 (Touch) - martinberlin/cale-idf GitHub Wiki

This epaper has the same characteristics than gdew027w3 with an added Touch screen from FocalTech systems. This touch layer, that is added on the top of the epaper, has I2C communication and an extra INT pin that is turn low on each touch event. That allows to read from the controlling master board, the touch event ID and also the X and Y coordinates, this makes it a great device to make UX in ESP32.

  • Size: 176 * 264, 2.7 inches
  • Controller: IL91874

2.7 Good Display capacitive Touch screen

IMPORT: Touch is being implemented and the process behind it is documented in this Wiki page. Is still not ready for production, please keep track of Issue 17 to know when it's ready for production.

The FPC touch cables are like the following table describes

| PIN Description
| 1 | GND
| 2 | INT
| 3 | RST non-used
| 4 | VDD 3.3v
| 5 | SCL
| 6 | SDA

To ensure you have the flat cable in the right position, check that under the Focal Tech micro, down there is a Ground surface. If you check with the tester that pin 1 is connected to ground, then you have the cable in the right position. Take extreme care with this FPC cables they should not be bended with force, at the end everything is connected on the top of the epaper, and it's sensible. If one of this cracks then touch won't work (It happened to me once and the epaper was only usable to display)

Schematics Touch & SPI Wiring

To try this there is an example in main/demos/demo-touch-epd-implemented.cpp. Make sure to uncomment this in main/CMakeLists.txt and to run: menuconfig

FT6X36 touch configuration

And configure your SDA, SCL and INT pins so the program knows about your hardware configuration.

This demo draws four buttons on screen and it let's you rotate the display, at the same rotating the touch, so you can experience how to implement this in your own Firmware. As a base example, this is what is added, to inject Touch in the epaper C++ class

#include "FT6X36.h"
#include <gdew027w3T.h>

// INTGPIO is touch interrupt, goes low when it detects a touch, which coordinates are read by I2C
EpdSpi io;
Gdew027w3T display(io, ts);

// Note that due to the touch integration this epaper uses a special method to rotate
void app_main(void)
   printf("CalEPD version: %s\n", CALEPD_VERSION);
   //        on true for debug
   // displayRotation includes both epaper + touch rotation

Feel free to explore more taking a look in the gdew027w3T class where the method displayRotation looks like this

 * Helper method to set both epaper and touch rotation
void Gdew027w3T::displayRotation(uint8_t rotation) {
  if (rotation>3) {
    printf("INVALID rotation value (valid: 0 to 3, got %d) rotation*90\n",rotation);

Demo videos

Rotation example

Drawing example

Touch Keyboard demo


CalEPD Classmap including touch

FT6X36 is very similar as EpdSpi since it get's "injected" into the Epd class itself