Cannot get Nano to display anything on SPI TFT (white screen)

Pretty new to working with displays and it's possible I just have some junk hardware, but maybe there's something I'm overlooking.

I'm trying to get an off-brand (REXQualis) Arduino Nano to display anything at all to a cheap 1.8" SPI TFT display, as seen here. As far as I can tell, the Nano has a pinout identical to the official branded ones.

The display lights up, but no further changes take place no matter what I upload to the Nano.

I've tried a few different tutorials including this one that seems to use the exact same display module. Currently my sketch is an almost-exact copy/paste of the "hello world" example from ucglib's documentation, as shown here:

#include <SPI.h>
#include "Ucglib.h"

Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 8 , /*cs=*/ 10, /*reset=*/ 9);

void setup(void) {
  delay(1000);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  ucg.clearScreen();
}

void loop(void) {
  ucg.setFont(ucg_font_ncenR14_tr);
  ucg.setPrintPos(0,25);
  ucg.setColor(255, 255, 255);
  ucg.print("Hello World!");
  delay(500);  
}

Here's how I have everything wired up on my breadboard. (Couldn't find a suitable part for the display, so it's represented by a perf board with labels matching the headers on the display module.)

Is there something really obvious I'm missing here? Any ideas or troubleshooting methods to try?

Your Fritzing matches the UCGLIB constructor.

But we need to see a photo of your actual wiring to see whether your theory matches your practice.

Likewise, we need to see if you have headers that are properly soldered.

David.

Fair enough! Here's one photo from overhead. If you need greater detail on the cluster of jumper wires connected to the TFT module, I can upload that in a separate reply.

The headers came pre-soldered and, as far as I can see, don't have any shorts or missing solder.

I2C screen?
UPD: the chip uses SPI

It claims in the listing to be SPI, and I've seen tutorials using (what appears to be) the same module with SPI rather than I2C. Do you think I should try using I2C protocol anyway?

No-no.
UPD. Yor Link is now broken.

Thanks, just edited to fix the broken link.

Hi Treetop,
I would suggest to use the Adafruit_GFX and Adafruit_ST7735 libraries. I got one of these ST7735 TFTs working some time ago powered by a Nano.
See my post on this issue on TheSolarUniverse. There is a wiring scheme (DC wired to pin 9) and a sketch.
Good luck, Photoncatcher

@photoncatcher Thanks! I gave this a try (after correcting a few errors caused by Wordpress formatting) but still got the exact same result. Wondering if maybe I just have a faulty TFT module.

You could have bent the wires so that the photo showed both ends.

We can only trust your eyesight. I note that the Fritzing colours don't match your wire colours.

The Chinese male-male jumper leads are very unreliable. I suggest that you test each jumper lead before use.

I would expect library examples to work with Adafruit_ST7735 or Ucglib. Just concentrate on connecting the correct colour wire to match the Fritzing.

David.

p.s. note that the ST7735 controller requires 3.3V logic signals. Your Nano has 5V logic. You should use level shifters or series resistors.

Does the library have a constructor for hardware SPI for that display? Odd to use software SPI with the hardware pins.

Yeah, i use 220 ohm resistors in the control wires. Cheap, dirty and effective.

Hi David,
I have been using the following constructor;

Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, rst);

with CD at pin 10, DC at pin 9 and RST at pin 8
The Adafruit_GFX has an excellent series of graphic test in Examples

Regardds, photoncatcher

I was referring to the data and clock pins, hardware SPI is on pins 11, 12, and 13 on a nano. The u8glib constructor appears to be for software SPI.

@david_prentice Thanks for the note about the resistors and the male-male jumpers; I'll keep that in mind for further testing.

For the sake of completion, here are a few more photos showing the connections and the solder joints on the leads. Hopefully the wiring is clear enough here. It matches what's shown on the Fritzing diagram. (To be clear, I based the Fritzing diagram on the connections I'd made in reality, not the other way around.)

One photo per reply since I'm a new user.

Wiring:

Arduino Nano headers:

TFT module headers:

Well, to conclude this thread: I'm almost certain I had a faulty display. I bought another display (slightly different board design but same chip) and wired it up the exact same way; it worked perfectly.

Thanks for the helpful suggestions anyway!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.