1.8-inch TFT/Jumpers and faults/10. When the screen is wrong
Jumpers and faults · 10 of 10

When the screen is wrong

White means the backlight works and the controller never took its setup: RST, DC, SCL or MO. Black means the backlight is off: BL. Dim but readable is BL too. Red showing blue, black showing white and noise along an edge are settings the library needs, not wiring. Garbage through a TK97 is a clock too fast for the converter.

What the glass tells you

The backlight and the picture are separate. The backlight is lit by BL; the picture is drawn by the controller over SCL, MOSI, CS and DC after RST. So the first question is whether the backlight is on, and a lit white screen already answers it.

When the screen is wrong
What you see
The backlight is on and the controller has not taken a single command: a panel with no setup shows white. Check RST (it must be wired, and to the pin the sketch names), DC, and that SCL and MO are on your board's SPI clock and data out, not swapped. Through a TK97, check its 5V and GND wires too.

Wiring, or a setting

White, black and dim are wiring. White is a lit backlight in front of a controller that never got its setup: check RST, DC, SCL and MO, in that order. Black and dim are BL: not wired, on another pin, or never set HIGH, and the board keeps the backlight off until it is.

Red showing blue, black showing white, noise along an edge and the picture the wrong way up are settings. The wiring is right and the library has to be told something about this glass: its colour order, whether its colours are inverted, where the picture starts in the controller's memory, and which way up it is. In Arduino those are the initR() tab, invertDisplay() and setRotation(). Which ones this panel wants has not been verified. In the owner's video of an older sketch with INITR_BLACKTAB it showed black as white, so start with invertDisplay(true).

You seeTry
Black shows as whitetft.invertDisplay(true)
Red shows as blueINITR_REDTAB instead of INITR_BLACKTAB
Noise along one edgeINITR_GREENTAB: it starts 2 columns and 1 row in
Upside down or sidewayssetRotation() 0 to 3

Through a TK97

A picture that is clean on an ESP32 and noisy, flickering or smeared on an Uno through the converter is the clock. A level converter rounds off fast edges, and at a high clock they stop being edges at all. Keep the wires short and slow the clock: tft.setSPISpeed(4000000) after initR().

If the picture is right at 4 MHz, raise it until it is not, then back off.

When it does not work

It worked, then after moving the wires it shows white.

One of RST, DC, SCL or MO has come loose or moved one pin along. Check each against the table in first light, with the power off. White with the backlight on always means the controller has had no setup.

It shows the picture for a moment, then goes white or black.

Usually the supply. Check 3V3 comes from a 3.3 V pin that can supply the backlight, and that GND is firm. A long, thin 3V3 wire can sag when the backlight switches on.

The picture is fine but mirrored.

The library and the panel disagree about which way the columns or rows run. Try each setRotation() from 0 to 3; if none is right, the panel wants a different initR() tab.

Nothing works and I have checked every wire twice.

Run the first-light sketch unchanged, on the pins in its table. It prints to the serial monitor what should be showing. If the serial monitor is silent too, the problem is the board or the upload, not the display.

Where this goes next

Six bigger screens, from 0.96 to 3.5 inches, on one ribbon and one breakout.

The SPI TFT display kit →

Edit this page — content/books/tft-1-8-inch/when-the-screen-is-wrong.mdx

Community

Questions about this product

See what other owners have asked, and read their solutions.

Ask a question ↗

1.8-inch TFT Display

Loading discussions…

Discuss this article

Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.

Browse Modules and blocks on the forum →