LovyanGFX LCD/e-Ink graphics driver

_images/demo1.gif _images/demo2.gif

Microcontrollers and various tinker-friendly devices need display drivers to talk to their LCD display modules. Popular driver libraries include AdafruitGFX made by Adafruit Industries, which brought easy-to-use proportional fonts.

Then Bodmer came along and wrote TFT_eSPI based on that, with support for many more displays. TFT_eSPI is a great library. However, it is structurally complex because it targets multiple architectures, making it very difficult to add required functions such as support for ESP-IDF and 18-bit color.

On the supported architectures, LovyanGFX is the next evolutionary step. It offers added functionality and improved performance while being largely compatibile with its predecessors AdafruitGFX and TFT_eSPI. Major improvements in the API mean not everything could stay the same, but the goal has been for things to “just work” wherever possible.

LovyanGFX works with either an ESP32 with SPI or 8-bit parallel connection to the display or an ATSAMD51 with SPI connection to the LCD.

Among the advantages of LovyanGFX over existing libraries:

  • Arduino ESP32 and ESP-IDF are supported.

  • Both 16bit and 24bit color modes are supported. (Actual number of colors depends on LCD specifications)

  • Uses DMA transfers so other processes can execute during communication with display.

  • Fast rotation / expansion of the off-screen buffer (sprite).

  • Simultaneous use of multiple LCDs.

Supported environments

Platforms

  • ESP-IDF

  • Arduino ESP32

  • Arduino ATSAMD51 (Seeed)

  • PlatformIO

Displays

  • HX8357

  • ILI9163

  • ILI9341 (WioTerminal, ESP-WROVER-KIT, ODROID-GO, LoLin D32 Pro, WiFiBoy Pro)

  • ILI9342 (M5Stack, M5Stack Core2)

  • ILI9486

  • ILI9488 (Makerfabs Touch with Camera)

  • SSD1351

  • ST7735 (M5StickC, TTGO T-Wristband, TTGO TS, LoLin D32 Pro, WiFiBoy mini)

  • ST7789 (M5StickCPlus, TTGO T-Watch, ESP-WROVER-KIT, Makerfabs MakePython, DSTIKE D-duino-32 XS)

  • ST7796

  • IT8951 (M5Paper)

  • GDEW0154M09 (M5Stack CoreInk)

TouchScreens (only on ESP32)

  • I2C FT5x06 / FT6x36

  • I2C GT911

  • SPI XPT2046

  • SPI STMPE610

LCD panels with similar command systems to the above compatible models might very well be supported, but only those that we have obtained and confirmed to work are officially supported.

We will give priority to the models for which we receive a support request. Please file an issue if you have a make or model display that you would like to see supported. We welcome contributions - sponsoring and code - from device manufacturers.

Active Development

LovyanGFX is under active development as we write this.

The presently released version (0.3.x) will be superseded by version 0.4.0 which implements a new API (v1). (The current API is v0.) The goal for v1 remains to be mostly compatible with AdafruitGFX and TFT_eSPI. Version 0.4.0 will use API v0 by default but allow optional selection of v1 API.

In version 1.0.0, the v1 API will be the default and in version 1.1.0 support for the v0 API will be removed.

Meanwhile, we are talking to hardware manufacturers to make LovyanGFX the included display driver for their devices. Stay tuned for exciting news.