Basic Graphics Test Wiring
Wiring up the display in SPI mode is pretty easy as there's not that many pins! We'll be using hardware SPI, but you can also use software SPI (any pins) later. Start by connecting the power pins
- 3-5V Vin connects to the microcontroller 5V pin
- GND connects to Arduino ground
- CLK connects to SPI clock. On Arduino Uno/Duemilanove/328-based, thats Digital 13. On Mega's, its Digital 52 and on Leonardo/Due its ICSP-3 (See SPI Connections for more details)
- MISO is not connected
- MOSI connects to SPI MOSI. On Arduino Uno/Duemilanove/328-based, thats Digital 11. On Mega's, its Digital 51 and on Leonardo/Due its ICSP-4 (See SPI Connections for more details)
- CS connects to our SPI Chip Select pin. We'll be using Digital 10 but you can later change this to any pin
- RST is not connected
-
D/C connects to our SPI data/command select pin. We'll be using Digital 8 but you can later change this pin too.
For the level shifter we use the CD74HC4050 which has a typical propagation delay of ~10ns
Install Arduino Libraries
We have example code ready to go for use with these TFTs. It's written for Arduino, which should be portable to any microcontroller by adapting the C++ source.
Three libraries need to be installed using the Arduino Library Manager…this is the preferred and modern way. From the Arduino “Sketch” menu, select “Include Library” then “Manage Libraries…”
Type “gfx” in the search field to quickly find the first library — Adafruit_GFX:
Repeat the search and install steps, looking for the Adafruit_BusIO and Adafruit_ST7735 libraries.
After restarting the Arduino software, you should see a new example folder called Adafruit_ST7735, and inside, an example called graphicstest.
In the graphicstest source code, look for the lines as follows:
// Use this initializer if using a 1.8" TFT screen: tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab // OR use this initializer if using a 1.8" TFT screen with offset such as WaveShare: // tft.initR(INITR_GREENTAB); // Init ST7735S chip, green tab // OR use this initializer (uncomment) if using a 1.44" TFT: //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab // OR use this initializer (uncomment) if using a 0.96" 160x80 TFT: //tft.initR(INITR_MINI160x80); // Init ST7735S mini display // OR use this initializer (uncomment) if using a 0.96" 160x80 TFT with // plug-in FPC (if you see the display is inverted!) //tft.initR(INITR_MINI160x80_PLUGIN); // Init ST7735S mini display
If you have the newer Revision B display, comment out the first line, and uncomment the fifth, so it looks like:
// Use this initializer if using a 1.8" TFT screen: //tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab // OR use this initializer if using a 1.8" TFT screen with offset such as WaveShare: // tft.initR(INITR_GREENTAB); // Init ST7735S chip, green tab // OR use this initializer (uncomment) if using a 1.44" TFT: //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab // OR use this initializer (uncomment) if using a 0.96" 160x80 TFT: //tft.initR(INITR_MINI160x80); // Init ST7735S mini display // OR use this initializer (uncomment) if using a 0.96" 160x80 TFT with // plug-in FPC (if you see the display is inverted!) tft.initR(INITR_MINI160x80_PLUGIN); // Init ST7735S mini display
If you have the older Revision A display, comment out the first line, and uncomment the fourth, so it looks like:
// Use this initializer if using a 1.8" TFT screen: //tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab // OR use this initializer if using a 1.8" TFT screen with offset such as WaveShare: // tft.initR(INITR_GREENTAB); // Init ST7735S chip, green tab // OR use this initializer (uncomment) if using a 1.44" TFT: //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab // OR use this initializer (uncomment) if using a 0.96" 160x80 TFT: tft.initR(INITR_MINI160x80); // Init ST7735S mini display // OR use this initializer (uncomment) if using a 0.96" 160x80 TFT with // plug-in FPC (if you see the display is inverted!) //tft.initR(INITR_MINI160x80_PLUGIN); // Init ST7735S mini display
Now upload the sketch to your Arduino. You may need to press the Reset button to reset the arduino and TFT. You should see a collection of graphical tests draw out on the TFT.
Changing Pins
Now that you have it working, there's a few things you can do to change around the pins.
If you're using Hardware SPI, the CLOCK and MOSI pins are 'fixed' and cant be changed. But you can change to software SPI, which is a bit slower, and that lets you pick any pins you like. Find these lines:
// Option 1 (recommended): must use the hardware SPI pins // (for UNO thats sclk = 13 and sid = 11) and pin 10 must be // an output. This is much faster - also required if you want // to use the microSD card (see the image drawing example) Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // Option 2: use any pins but a little slower! #define TFT_SCLK 13 // set these to be whatever pins you like! #define TFT_MOSI 11 // set these to be whatever pins you like! //Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
Comment out option 1, and uncomment option 2. Then you can change the TFT_ pins to whatever pins you'd like!
The 0.96" TFT has a auto-reset circuit on it so you probably dont need to use the RST pin. You can change
#define TFT_RST 9
to
#define TFT_RST -1
so that pin isn't used either. Or connect it up for manual TFT resetting!
Page last edited March 08, 2024
Text editor powered by tinymce.