Adafruit_ST7735 drives small SPI TFT panels on Arduino
This is a library for the Adafruit 1.8" SPI display http://www.adafruit.com/products/358 and http://www.adafruit.com/products/618
At a glance
- What is it?
- The Adafruit ST7735 library is a C++ driver for several Adafruit SPI displays built on ST77 series controllers, covering the 1.8 inch TFT breakout, the 1.8 inch TFT shield, the 1.44 inch breakout and the raw 1.8 inch panel, and it also carries the ST7789 and ST7796S drivers. The trade is that it is a bare driver with no graphics of its own, and it leans on Adafruit_GFX for anything beyond pixels.
- Who is it for?
- The Adafruit ST7735 library suits a maker driving one of the small Adafruit SPI panels and who wants a driver that handles the controller initialisation rather than writing the register sequence by hand. It does not suit a project that wants a display abstraction of its own, because the drawing layer comes from Adafruit_GFX rather than from this library, and it does not cover larger or different controllers beyond the ST77 family, the ST7789 and the ST7796S.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One driver for a family of panels, not a single breakout
The problem is that small SPI TFT panels look identical from the outside and behave differently underneath, so the display code you write for one of them tends to break on the next. This library exists to close that gap, and it is described as a library for several Adafruit displays based on ST77 drivers. The supported hardware is listed concretely: the Adafruit 1.8 inch TFT Breakout with SD card, the 1.8 inch TFT shield, the 1.44 inch TFT breakout, and the Adafruit raw 1.8 inch TFT display. The README points at the tutorials and wiring diagrams behind those product links. The intended user is a maker or an engineer wiring one of these panels to a microcontroller, and the library's job is the boring part: talking to the controller over SPI so your sketch does not have to.
SPI with four or five pins, and RST is the optional one
The hardware interface is described in one sentence that saves an afternoon of reading datasheets. These displays use SPI to communicate, four or five pins are required to interface, and RST is optional. That is the wiring constraint, and it is the reason the library is small. Because the reset line is optional, the same code path works whether or not your particular board or breakout brings RST out, which is what makes a single driver usable across four different products. The library was written by Limor Fried, known as Ladyada, for Adafruit Industries, and the README asks for support for open source hardware by buying Adafruit products, which is a reasonable thing for a driver written by a hardware vendor to say.
The drawing layer lives in Adafruit_GFX, not here
The scope boundary is stated at the end of the README: it also requires the Adafruit_GFX library for Arduino. That is the single most important practical fact for anyone picking this up. This library is a controller driver, and the graphics primitives, fonts, drawing and the shape of the display object you hold in your sketch come from Adafruit_GFX. That is the trade, and it is a good one, because GFX is the layer that already knows how to talk to many kinds of display, and it means the same drawing code can be pointed at a different panel later. What it also means is that a project that wants a self-contained display stack, or one that wants the drawing API somewhere other than Adafruit_GFX, will not find it here. The README also notes that the Adafruit GFX library is needed for Arduino, and the topic tag on the repository is arduino-library.
The source tree holds three controllers behind two file pairs
The repository layout shows how the driver family is arranged, and it is more than one class in a single file. There is Adafruit_ST7735.cpp and Adafruit_ST7735.h, Adafruit_ST7789.cpp and Adafruit_ST7789.h, and Adafruit_ST7796S.cpp and Adafruit_ST7796S.h, plus a shared Adafruit_ST77xx.cpp and Adafruit_ST77xx.h that sits underneath the three. That structure is what makes the naming a bit confusing at first, since the library is called Adafruit_ST7735 but the code covers more than the ST7735. The release history shows the family growing, with 1.11.0 adding support for the ST7796S, which is the most recent of the three drivers in the tree. The package also has a library.properties file, which is the manifest the Arduino Library Manager reads, and a CMakeLists.txt, so the same code can be consumed by a CMake build as well.
Installing means Library Manager or a folder you rename yourself
The installation instructions are the older Arduino style rather than a package manager line, and the README explains both paths. Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress it and rename the uncompressed folder Adafruit_ST7735, then confirm that the Adafruit_ST7735 folder contains Adafruit_ST7735.cpp, Adafruit_ST7735.h and related source files. You place that Adafruit_ST7735 library folder in your ArduinoSketchFolder/Libraries folder, creating the Libraries subfolder if it is your first library, and then restart the IDE. The folder naming is the part that trips people up, because the library manager version handles it and the manual version does not.
The examples cover rotation, on/off and a lot of specific boards
The examples directory shows the range of things people actually use these panels for, and it is where the board-specific knowledge lives. There is a displayOnOffTest and a rotationtest, which are the two you want when bringing up new hardware, and a graphicstest, which is the usual first program. Then there are board-specific variants of that same graphicstest for a Feather ESP32S2 TFT, the Hallowing M0, the Hallowing M4, the PyBadge PyGamer, the TFT Gizmo and the ST7789, plus a seesaw_shield18_test and a shieldtest, which target the two Adafruit boards that carry the display as a shield rather than as a breakout. There is also a miniTFTWing example and an ST7796S_demo, the latter exercising the newest driver in the tree. The variety of board names is itself informative, because it shows how many different pin configurations this one driver family has to accommodate.
The licence header asks for attribution, the metadata does not say
There is an inconsistency worth flagging, and it is about the terms rather than the code. The source header states MIT license, all text above must be included in any redistribution, and the MIT licence text in the header is what governs the code. The repository metadata, by contrast, records the licence as unknown. For a library that you are likely to vendor into a sketch folder and ship inside a product, the header is the authoritative statement of terms, and the practical obligation is that the attribution text travels with any redistribution. That is a mild condition compared with the AGPL and the LGPL, but it is not nothing, and the fact that a machine-readable licence field is missing is the kind of thing that trips up automated tooling later. The releases are versioned 1.11.0, 1.10.4 and 1.10.3, and the last push to the repository was on 2026-10-18, so the code itself is being maintained.
Editorial conclusion
The Adafruit ST7735 library suits a maker driving one of the small Adafruit SPI panels and who wants a driver that handles the controller initialisation rather than writing the register sequence by hand. It does not suit a project that wants a display abstraction of its own, because the drawing layer comes from Adafruit_GFX rather than from this library, and it does not cover larger or different controllers beyond the ST77 family, the ST7789 and the ST7796S. Before adopting, confirm the panel you have is one of the listed products, install Adafruit_GFX alongside it, and note that the licence field in the repository metadata is left unknown while the source header states MIT with an attribution requirement, and that the last push to the repository was on 2026-10-18 with the newest tagged release 1.11.0 from 2025-01-28.
Frequently asked questions
Which displays does the Adafruit ST7735 library support?
The README lists several Adafruit displays based on ST77 drivers: the Adafruit 1.8 inch TFT Breakout with SD card, the 1.8 inch TFT shield, the 1.44 inch TFT breakout, and the Adafruit raw 1.8 inch TFT display. The source tree also carries drivers for the ST7789 and the ST7796S.
How do I install the Adafruit ST7735 library?
Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, download the ZIP, uncompress it, rename the uncompressed folder Adafruit_ST7735, confirm it contains Adafruit_ST7735.cpp and Adafruit_ST7735.h, place it in your ArduinoSketchFolder/Libraries folder, creating that subfolder if it is your first library, and restart the IDE.
Does the Adafruit ST7735 library draw graphics itself?
No. The README states that it also requires the Adafruit_GFX library for Arduino. This library handles the controller and the SPI interface, while the drawing primitives come from Adafruit_GFX, which is what lets the same drawing code target other displays later.
How many pins does an ST7735 display need?
The README says these displays use SPI to communicate, four or five pins are required to interface, and RST is optional. That optional reset line is what allows one driver to serve the 1.8 inch breakout, the 1.8 inch shield, the 1.44 inch breakout and the raw 1.8 inch panel.
Which example should I start with on new hardware?
The examples directory includes displayOnOffTest and rotationtest, which are the useful first programs when bringing up a new panel, and a graphicstest as the usual first drawing program. There are also board-specific graphicstest variants for the Feather ESP32S2 TFT, the Hallowing M0 and M4, the PyBadge PyGamer, the TFT Gizmo and the ST7789, plus a seesaw_shield18_test and a shieldtest for the shield form factor.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/adafruit-adafruit-st7735-library)Was this useful?