eds53323 / Arduino_GFX

Arduino GFX developing for various color displays and various data bus interfaces

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Arduino_GFX

Arduino_GFX is a Arduino graphics library supporting various displays with various data bus interfaces.

This library start rewrite from Adafruit_GFX, TFT_eSPI, Ucglib and more...

Various dat bus interfaces

Most tiny display in hobbiest electronics world support 8-bit SPI, but some require 9-bit SPI. 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 require 9-bit SPI interface.

Larger display most likely not support standalone SPI since it is not fast enough to refresh the full screen details. Most of them can use 8-bit/16-bit Parallel interface.

Ease of use

Simple Declaration

(not require touch the header files in libraries folder)

#include <Arduino_GFX_Library.h>
Arduino_DataBus *bus = new Arduino_HWSPI(16 /* DC */, 5 /* CS */);
Arduino_GFX *gfx = new Arduino_ILI9341(bus, 17 /* RST */);

And Simple Usage

gfx->begin();
gfx->fillScreen(BLACK);
gfx->setCursor(10, 10);
gfx->setTextColor(RED);
gfx->println("Hello World!");

Performance

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

Currently Supported data bus

  • 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 (ESP32PAR16)

Tobe Support data bus (Donation can make it happen)

  • ESP32 I2S 8-bit/16-bit parallel interface
  • FastLED

Currently Supported Dev Board

  • Arduino Nano
  • Arduino Nano BLE 33
  • Arduino Pro Micro
  • ESP8266 Series
  • ESP32 Series

Tobe Support Dev Board

  • Arduino ATMega2560
  • ESP32-S2 Series
  • ESP32-S3 Series
  • Raspberry Pi Pico
  • RTL8720

Currently Supported Dev Device

  • M5Stack Core Family
  • Odroid Go
  • TTGO T-Watch
  • Wio Terminal

Currently Supported Display

Tobe Support Display (Donation can make it happen)

  • 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

Used source code

About

Arduino GFX developing for various color displays and various data bus interfaces


Languages

Language:C++ 97.5%Language:C 2.5%