This library is developing aim for support various data bus interfaces and various displays.
As I know, it should be the first Arduino display library that can support ESP32 9-bit hardware SPI. It is very important to support the displays (e.g. HX8357B, ST7701, ...) that only have 9-bit SPI interface.
This library start rewrite from Adafruit_GFX, TFT_eSPI, Ucglib and more...
(not require modify library header files)
#include "Arduino_GFX_Library.h"
Arduino_DataBus *bus = new Arduino_HWSPI(16 /* DC */, 5 /* CS */);
Arduino_GFX *gfx = new Arduino_ILI9341(bus, 17 /* RST */);
gfx->begin();
gfx->fillScreen(BLACK);
gfx->setCursor(10, 10);
gfx->setTextColor(RED);
gfx->println("Hello World!");
This library is not putting speed at the first priority, but still paid much effort to make the display look smooth. Below are some figures compare with other 2 Arduino common display libraries.
- Arduino IDE: 1.8.10
- MCU: ESP32-PICO-D4
- PSRAM: disable
- Display: ILI9341
- Interface: SPI@40MHz
- Test time: 2019 Oct 13
Benchmark | Adafruit_GFX | Arduino_GFX | TFT_eSPI |
---|---|---|---|
Screen fill | 39,055 | 32,229 | 33,355 |
Text | 96,432 | 18,717 | 24,010 |
Pixels | 1,353,319 | 919,219 | 768,022 |
Lines | 1,061,808 | 455,992 | 307,429 |
Horiz/Vert Lines | 17,614 | 14,277 | 14,587 |
Rectangles-filled | 405,880 | 334,974 | 346,317 |
Rectangles | 11,656 | 9,374 | 9,251 |
Circles-filled | 76,619 | 55,173 | 62,182 |
Circles | 118,051 | 52,315 | 46,909 |
Triangles-filled | 150,999 | 120,362 | 117,591 |
Triangles | 58,795 | 26,143 | 18,704 |
Rounded rects-fill | 407,755 | 335,537 | 376,764 |
Rounded rects | 42,668 | 21,100 | 24,201 |
Foot print | Adafruit_GFX | Arduino_GFX | TFT_eSPI |
---|---|---|---|
Flash | 232,572 | 245,544 | 231,136 |
Estimate memory | 15,512 | 15,616 | 15,432 |
- 8-bit and 9-bit hardware SPI (ESP32SPI)
- 8-bit hardware SPI (HWSPI)
- 8-bit and 9-bit software SPI (SWSPI)
- 8-bit parallel interface (ESP32PAR8)
- 16-bit parallel interface
- M5Stack Core Family
- Odroid Go
- TTGO T-Watch
- Wio Terminal
- GC9A01 round display 240x240 [test video]
- HX8347C 240x320 [test video]
- HX8352C 240x400 [test video]
- HX8357B (9-bit SPI) 320x480 [test video]
- ILI9225 176x220 [test video]
- ILI9341 240x320 [test video]
- ILI9341 M5Stack 320x240 [test video]
- ILI9481 320x480 (18 bit color) [test video]
- ILI9486 320x480 (18 bit color) [test video]
- R61529 (8-bit Parallel) 320x480 [test video]
- SEPS525 160x128 [test video]
- SSD1283A 130x130 [test video]
- SSD1331 96x64 [test video]
- SSD1351 128x128 [test video]
- SSD1351 128x96
- ST7735 128x160 (various tabs) [test video]
- ST7735 128x128 (various tabs) [test video]
- ST7735 80x160 [test video]
- ST7789 TTGO T-Display 135x240 [test video]
- ST7789 240x240 [test video]
- ST7789 TTGO T-Watch 240x240 [test video]
- ST7789 240x320 [test video]
- ST7796 320x480 [test video]
- Canvas (framebuffer)
- Canvas_Indexed (for saving memory space)
- HX8347D 240x320 (first trial failed)
- HX8357A 240x320 (first trial failed)
- LG4573 480x800 (first trial failed)
- ILI9806 480x800 (first trial failed)
- ST7701 480x800
- FastLED Martix supported by co-operate with Canvas
- Mono display supported by co-operate with Canvas
- Multi-color e-ink display supported by co-operate with Canvas
- ILI9486 320x480 (3 bit color) supported by co-operate with Canvas
- http://elm-chan.org/fsw/tjpgd/00index.html
- https://github.com/adafruit/Adafruit-GFX-Library.git
- https://github.com/adafruit/Adafruit_ILI9341.git
- https://github.com/adafruit/Adafruit-SSD1351-library.git
- https://github.com/ananevilya/Arduino-ST7789-Library.git
- https://github.com/BasementCat/arduino-tft-gif
- https://github.com/Bodmer/TFT_eSPI
- https://github.com/daumemo/IPS_LCD_R61529_FT6236_Arduino_eSPI_Test
- https://github.com/espressif/arduino-esp32.git
- https://github.com/gitcnd/LCDWIKI_SPI.git
- https://github.com/lovyan03/LovyanGFX.git
- https://github.com/lovyan03/M5Stack_JpgLoopAnime