Skip to content
SuperUserNameMan edited this page Mar 26, 2021 · 21 revisions

Background

Due to different timings and features, not all hardware related libraries work out-of-the-box.

Some already got fixes, which need to get their way into release versions. Some don't ;)

If you want to get a library listed, know the working state, or even already submitted PRs and have a working version, please open an issue and we'll update the page.

Libraries

Name Device Interface Known working Alternative Description/Information
Adafruit GFX ST7735 LCD SPI ⭕ : 1.9.0 jazyakk PR submitted
see note
ADAFRUIT SSD1306 OLED displays I2C ✅ 2.2.1 just works
Thinary AHT10 AHT10 Temperature and humidity sensor module I²C ✅ : 1.0.0 specifically made for this module
Ethernet W5500/W5100 SPI ✅ 2.0.0 just works, see note
FastLED LED Stripes Bit-Bang ⭕ : 3.3.3 jayzakk PR submitted
Light_WS2812 LED Stripes Bit-Bang ✅ > 2.4 PR by jg1uaa
Nokia 5110 LCD library Nokia 5110 LCD SPI ✅ : 2.3.0 up to 86 fps @ 32MHz in hardware SPI mode, and up to 32 fps @ 32MHz in software SPI mode
RF24 nRF24L01
2.4G comm
SPI ✅ : 1.3.9 just works
TFT ST7735 LCD SPI
TFT 1.0.6
GFX 1.5.18
TFT.h uses older Adafruit GFX code, with compatible SPIcode

Notes: Ethernet.h

I measured data throughput with a simple iperf client/server from/to a local linux box.

Receive testing: iperf -c 192.168.178.10 -w 16k -t 20 -i 2 and a simple if (client.available()) client.read(buf, 1024); loop

Sending test: ipferf -s and a simple for (int x=0;x<8192;x++) client.write(buf,1024); loop

Object SPI Speed Receive Mbit/sec Send MBit/sec
Arduino Nano, Atmel 328p, 16MHz 8M 4.14 2.90
LGT at 16MHz 8M 4.19 (oldSPI)
7.05 (tbufSPI *)
3.26 (oldSPI)
6.05 (tbufSPI *)
LGT at 32MHz 8M 5.77 (oldSPI)
7.38 (tbufSPI *)
4.36 (oldSPI)
6.30 (tbufSPI *)
LGT at 32MHz 16M 8.20 (oldSPI)
14.1 (tbufSPI *)
6.08 (oldSPI)
10.7 (tbufSPI *)

For SPI Speed of 16M, a change in w5100.h is needed. This only is possible with a w5500 controller, the older ones do not support higher speeds. Uncomment/Comment SPI_ETHERNET_SETTINGS as outlined in the file.

NB: * = tbufSPI is a PR I submitted to LGT8F core, and one to Ethernet.h, adding a new function using the SPI buffer.

Notes: Adafruit GFX SPI

The PR consists of changing the SPI speed to max, so you can expect at about twice faster drawing at 32MHz.