Why do I only get white screens on my TFTs?

Hi I have bought some https://vi.aliexpress.com/item/1005007643668155.html 2.25" TFT RGB displays 76x280p with SPI-interface.
No matter what program I try or method or properties or settings, I can only get the default WHITE screen! I cannot get any text or fillscreens or anything.
I have tested wiring and ChatGPT has tried to help for several days without any luck!
We have mainly tried with Adafruit ST7789 driver, but also with plain SPI.
We have tested wirings, we have tested power supply, even flipped the flatcable, reset 100 times, even tried with taking the suppliers original STM32 code and converted to Teensy code, and we have even tried flipping direction and even 284x76 pixels bcs we found that number in their code files. etc.

Hope someone can help me to get some content on the displays!?

Thanx in advance
 
@loopstudio: It is almost impossible to help without a few more details.

- which example(s) did you find ??
- can you post the sourcecode for the sketch that you are using ??
- can you post pictures of your hardware ??
- which Teensy version are you using ??
- which build environment are you using ??
- which OS are you building under ??

Without these kinds of details, the only possible help that you might receive would be a pure guess, and that's not likely to be much help at all !!

Mark J Culross
KD5RXT
 
We have now also tested with the TFT_eSPI.h library. Still just white screens all the time.

We have now measured that SPI is completely dead. So any suggestions why we dont get fluctuations and pulsations on the SPI screw-pins-out-board where the Teensy 4.1 sits in?

We have used the following pins:
TFT_RST 7 is 3.15v
TFT_DC 23 is 3.15v
TFT_MOSI 21 Now 21 drops from -0,05 to -0,04 2 times and back up
TFT_SCK 22 is constantly -0.05v
TFT_CS1 24 gives signal and are on 3.15v

The code as of now:

C-like:
#include <TFT_eSPI.h>  // TFT library

TFT_eSPI tft = TFT_eSPI();  // Create TFT instance

void setup() {

    SPI.begin();
    Serial.begin(115200);
    Serial.println("🔍 TFT_eSPI Test Start");

    tft.init();
    tft.setRotation(1);
    tft.fillScreen(TFT_RED); // Fill screen with red
    delay(1000);
    tft.fillScreen(TFT_BLUE); // Fill screen with blue
    delay(1000);
    tft.fillScreen(TFT_GREEN); // Fill screen with green
    delay(1000);
    tft.setTextColor(TFT_WHITE, TFT_BLACK);
    tft.drawString("TFT_eSPI OK!", 10, 10, 4);
}

void loop() {}
 
@loopstudio: It is almost impossible to help without a few more details.

- which example(s) did you find ??
- can you post the sourcecode for the sketch that you are using ??
- can you post pictures of your hardware ??
- which Teensy version are you using ??
- which build environment are you using ??
- which OS are you building under ??

Without these kinds of details, the only possible help that you might receive would be a pure guess, and that's not likely to be much help at all !!

Mark J Culross
KD5RXT
The Teensy: https://vi.aliexpress.com/item/4001148959991.html
OS: WIn10
The TFTs are the 8pin version without PCB
Now we test with the TFT_eSPI.h library. before with the Adafruit_ST7789.h and we have also tested with just SPI.h
Which build do you refer to?
 
Calling SPI.begin() will assume you are using the default pins. CS=10, MOSI=11, MISO=12,SCK=13

If you wish to use alternate pins/ports, you will need to ensure that SPI is initialized accordingly and the library has support for alternative SPI ports (some don't. I don't have any experience with TFT_eSPI to know either way)
 
It appears that tft.init() will call spi.begin() which might conflict with what your call to SPI.begin() does.
Try commenting out your call to SPI.begin() and see if it makes any difference.

Pete
 
There is also a ST7735_t3 library that is bundled with Teensyduino, it supports the ST7735 and the ST7789. There are multiple examples to show how to setup. For example, for a 240x240 display the initialization is simply

C++:
// For 1.54" TFT with ST7789, assuming SPI is used.
ST7789_t3 tft = ST7789_t3(TFT_CS, TFT_DC, TFT_RST);


  // Or use this initializer (uncomment) if you're using a 1.54" 240x240 TFT
  tft.init(240, 240);   // initialize a ST7789 chip, 240x240 pixels
 
We have used the following pins:
TFT_RST 7 is 3.15v
TFT_DC 23 is 3.15v
TFT_MOSI 21 Now 21 drops from -0,05 to -0,04 2 times and back up
TFT_SCK 22 is constantly -0.05v
TFT_CS1 24 gives signal and are on 3.15v
Are these the pins you are trying to use on Teensy 4.1?
1741461123347.png

Pins 21 and 22 are not SPI pins,
SPI pins are 11-13
SPI1 pins are by default: 26, 27, 1, but there are a few alternative pins for some of the functions like pin 39
 
Calling SPI.begin() will assume you are using the default pins. CS=10, MOSI=11, MISO=12,SCK=13

If you wish to use alternate pins/ports, you will need to ensure that SPI is initialized accordingly and the library has support for alternative SPI ports (some don't. I don't have any experience with TFT_eSPI to know either way)
The SPI.begin() wasnt there at first, ChatGPT just suggested t put it in, to try fix the problem, but it didnt. So the code also doesntw ork without.
 
There is also a ST7735_t3 library that is bundled with Teensyduino, it supports the ST7735 and the ST7789. There are multiple examples to show how to setup. For example, for a 240x240 display the initialization is simply

C++:
// For 1.54" TFT with ST7789, assuming SPI is used.
ST7789_t3 tft = ST7789_t3(TFT_CS, TFT_DC, TFT_RST);


  // Or use this initializer (uncomment) if you're using a 1.54" 240x240 TFT
  tft.init(240, 240);   // initialize a ST7789 chip, 240x240 pixels
Sounds interesting, I will try that too and return when done.
 
Are these the pins you are trying to use on Teensy 4.1?
View attachment 37108
Pins 21 and 22 are not SPI pins,
SPI pins are 11-13
SPI1 pins are by default: 26, 27, 1, but there are a few alternative pins for some of the functions like pin 39
You are so right! - I have also been looking at this earlier, but it was ChatGPT who advised the connections, and I didnt question it enough apparently, as of cause ChatGPT can be wrong. But for me as a beginner, firsttime-usre of Teensy, I just had to rely on ChatGPT as my "expert"-helper!
But sure I will go to ChatGPT with this important information now! And Im pretty sure it has something to do with that - it makes logic! Thanx.
I will get back with info if it worked to change.
The thing is I need really a lot of connections and theres also a lot of expanders, in fact 8 I2C's as ChatGPT recommended.
 
But for me as a beginner, firsttime-usre of Teensy, I just had to rely on ChatGPT as my "expert"-helper!
You would be much better off running example programs and learning something before you start using ChapGPT. I think there should be a new forum rule that users, especially new users, say up front if they are using ChatGPT or other LLM. That would let other users know where these wildly incorrect programs are coming from.
 
You would be much better off running example programs and learning something before you start using ChapGPT. I think there should be a new forum rule that users, especially new users, say up front if they are using ChatGPT or other LLM. That would let other users know where these wildly incorrect programs are coming from.

Indeed. I have tried that and Controlio, even on a paid for service they are unable to help much and often send you off down rabbit holes. When you point it out, apologies are forthcoming and sense resumes for a few minutes. Then it goes back down the rabbit holes again.

Treat AI like you would a calculator; have some idea of the right answer in your head and then you can be more confident of the answer you get (or not).
 
Are these the pins you are trying to use on Teensy 4.1?
View attachment 37108
Pins 21 and 22 are not SPI pins,
SPI pins are 11-13
SPI1 pins are by default: 26, 27, 1, but there are a few alternative pins for some of the functions like pin 39
The change to correct default pins surely helped, thank you! :)

BUT...
- Only the right 1/4 of the display gets updated, the rest is pixel noise
- its difficult to get any text visible on the display at all. When it once succeeded me, it was vertical instead of horisontal - but the change of orientation, i tried all from 0- to even 4, didnt solve anything, onlymaybe maiking it wors with several divided areas on the screen and black/white pixel stribes at the right.
- When I briefly saw a small part of the text vertical, it was with white color! - Even my command was setting it to BLACK color
- I have tried some setAddrWindow() settings, which seemed like nothing changed anything.
- I have tried change 76 x 280 and opposite, but nothing changed.
- I once had some blue right side part on tft1 and yellow right side part on tft2, but now its like the displays are reset several like 3 times and removing the colors again
- so I have now build in 10 secs pauses between all important commands to try follow whats going on, when & why.
- But it feels like a mess and like the displays are updated or getting white at complete wrong commands.
- I have tried SPI_FREQUENCY settings form 10...-40... but it didnt seem to change anything.

Code:
#include <SPI.h>
#include <TFT_eSPI.h>  // Correct library for ST7789P3

// TFT Setup with Correct CS Pins
#define TFT_CS1  24  // Chip Select for TFT 1
#define TFT_CS2  25  // Chip Select for TFT 2
#define TFT_RST  7   // Reset pin
#define TFT_DC   23  // Data/Command pin
#define TFT_MOSI 11  // Data pin
#define TFT_SCLK 13  // Clock pin

TFT_eSPI tft1 = TFT_eSPI();  // First TrackChannel TFT
TFT_eSPI tft2 = TFT_eSPI();  // Second TrackChannel TFT

void setup() {
    Serial.begin(115200);
    while (!Serial);

    Serial.println("🔍 Before SPI.begin()");
    SPI.begin();
    Serial.println("🔍 After SPI.begin() - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before pinMode(TFT_CS1, OUTPUT)");
    pinMode(TFT_CS1, OUTPUT);
    Serial.println("🔍 After pinMode");
    Serial.println("🔍 Before init");
    tft1.init();
    Serial.println("🔍 After init - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before digitalWrite(TFT_CS1, HIGH)");
    digitalWrite(TFT_CS1, HIGH);
    Serial.println("🔍 After digitalWrite(TFT_CS1, HIGH) - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before startWrite()");
    tft1.startWrite();
    Serial.println("🔍 After startWrite() - no2 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before tft1.writecommand(TFT_SWRST)");
    tft1.writecommand(TFT_SWRST);  // Send Software Reset Command
    Serial.println("🔍 After tft1.writecommand(TFT_SWRST)");
    tft1.setCursor(0, 0);  // Restore previous text position
    tft1.setTextColor(TFT_BLACK, TFT_WHITE);
    tft1.setTextSize(2);
    tft1.setRotation(0);  // Restored previous rotation
    Serial.println("🔍 Now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before tft1.fillScreen(TFT_BLUE)");
    tft1.fillScreen(TFT_BLUE);  // Restore whole screen yellow
    Serial.println("🔍 After tft1.fillScreen(TFT_BLUE) - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before print(1234567890)");
    tft1.print("1234567890");
    Serial.println("🔍 After print(1234567890) - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before endWrite()");
    tft1.endWrite();
    Serial.println("🔍 After endWrite() - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before digitalWrite(TFT_CS1, LOW)");
    digitalWrite(TFT_CS1, LOW);
    Serial.println("🔍 After digitalWrite(TFT_CS1, LOW) - now 2 sec pause");
    delay(10000);
 
    Serial.println("🔍 Before SPI.begin()");
    SPI.begin();
    Serial.println("🔍 After SPI.begin() - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before pinMode(TFT_CS2, OUTPUT)");
    pinMode(TFT_CS2, OUTPUT);
    Serial.println("🔍 After pinMode");
    Serial.println("🔍 Before tft2.init()");
    tft2.init();
    Serial.println("🔍 After init - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before digitalWrite(TFT_CS2, HIGH)");
    digitalWrite(TFT_CS2, HIGH);
    Serial.println("🔍 After digitalWrite(TFT_CS2, HIGH) - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before startWrite()");
    tft2.startWrite();
    Serial.println("🔍 After startWrite() - no2 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before tft2.writecommand(TFT_SWRST)");
    tft2.writecommand(TFT_SWRST);  // Send Software Reset Command
    Serial.println("🔍 After tft2.writecommand(TFT_SWRST)");
    tft2.setCursor(0, 0);  // Restore previous text position
    tft2.setTextColor(TFT_BLACK, TFT_WHITE);
    tft2.setTextSize(2);
    tft2.setRotation(0);  // Restored previous rotation
    Serial.println("🔍 Now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before tft2.fillScreen(TFT_YELLOW)");
    tft2.fillScreen(TFT_YELLOW);  // Restore whole screen yellow
    Serial.println("🔍 Before tft2.fillScreen(TFT_BLUE) - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before print(1234567890)");
    tft2.print("1234567890");
    Serial.println("🔍 After print(1234567890) - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before endWrite()");
    tft2.endWrite();
    Serial.println("🔍 Before endWrite() - now 2 sec pause");
    delay(10000);
    Serial.println("🔍 Before digitalWrite(TFT_CS2, LOW)");
    digitalWrite(TFT_CS2, LOW);
    Serial.println("🔍 After digitalWrite(TFT_CS2, LOW) - now 2 sec pause");
    delay(10000);
 
//tft1.setAddrWindow(0-10, 0-10, 280, 76);
}

void loop() {
}


What I have in the User_setup.h:

Code:
#define USER_SETUP_INFO "User_Setup"

//MY CODE
#define ST7789_DRIVER

//MY CODE
#define TFT_WIDTH  76
#define TFT_HEIGHT 280

//MY CODE
// SPI Pins - Match Our Wiring
#define TFT_CS   24
#define TFT_RST  7
#define TFT_DC   23
#define TFT_MOSI 11
#define TFT_SCLK 13

#define LOAD_GLCD   // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2  // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4  // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6  // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7  // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8  // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF  // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT


// #define SPI_FREQUENCY   1000000
// #define SPI_FREQUENCY   5000000
// #define SPI_FREQUENCY  10000000
 #define SPI_FREQUENCY  20000000
// #define SPI_FREQUENCY  27000000
// #define SPI_FREQUENCY  40000000
// #define SPI_FREQUENCY  55000000 // STM32 SPI1 only (SPI2 maximum is 27MHz)
// #define SPI_FREQUENCY  80000000

// Optional reduced SPI frequency for reading TFT
#define SPI_READ_FREQUENCY  20000000

// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here:
#define SPI_TOUCH_FREQUENCY  2500000


//MY CODE
#define TOUCH_CS -1  // No touch support

#define CGRAM_OFFSET

What I have experienced this if I tried other orientations than 1, e.g. 0,2,3 and 4: The color got splitted up and right side got filled with stribes:
1741564310573.png

and only right side color and the other display white, if I have orientation 1:
1741564343876.png

The code I uploaded now is actually resulting in this, where tft1 is white and tft2 is mess pixels and only right side has yellow:
(but with the many 10 secs pauses in the code I could see that both displays gets correct color, it just disappears again for tft1!)
1741564569924.png

I dont have snapshot of the testcase where I got partial vertical text inside the yellow area.

So...
A) How do I get the color to fill the whole display?
B) How do I get correct orientation (when it seems like the orientation params doesnt change anything!?
C) How do I get black text, when it supposed to!?
D) How do I get rid of the 3 updates of the displays which color, clears, colors, clears only one screen? I actually put the writecommand(TFT_SWRST) in to SOLVE the problem with old dirt & updates on the screen from each time till next time, so I clean up old garbage content, so I want to keep that one! as none of the other commands seemed to do that.
E) What is the correct order of all these TFT commands?
F) Is it the driver which are not working with this display? If yes, can You recommend another where I can get better result?
 
Last edited:
Indeed. I have tried that and Controlio, even on a paid for service they are unable to help much and often send you off down rabbit holes. When you point it out, apologies are forthcoming and sense resumes for a few minutes. Then it goes back down the rabbit holes again.

Treat AI like you would a calculator; have some idea of the right answer in your head and then you can be more confident of the answer you get (or not).
Yes, I totally agree, I have been using ChatGPT intensively for a month now, and its performance is really scary!
First you get amazed how fast it helps you in the right direction, but then after many hours, a day or 3 you discover how forgettable he is, how he mess up things, swap things, suddently forget/removes/truncate things, does things completely wrong even you have told him 10 times to do it opposite and he every time promises to do it correct from now on. So I only see AI as yhe "(A)ssistant" and me as the one who has to bring the "(I)ntelligence"!
Also if it gets too complicated or long, ChatGPT is extremely slow, hanging, ya even occupies your browser & CPU 100% & crashes your whole computer!
But still ChatGPT has helped me in many ways with this project, but you have to double-check everything and not take anything for the truth, even he claims it!
 
G) Also: What is the difference between ST7789 and the ST7789P3 ?
Because my display is ST7789P3, but all drivers are plain ST7789.
 
NEW BETTER RESULT:

Now I get first yellow fill on TFT1 and then blue fill on TFT2!

The PROBLEM is just that after filling tft1 with yeellow & text, tft1 is getting all white when filling tft2 with blue & text.

Any suggestions to what could be wrong?

ChatGPT told me that the SPI0 can be shared between several TFTs.


C-like:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>

// Define SPI Pins
#define TFT_CS1   24  // TFT1 Chip Select
#define TFT_CS2   25  // TFT2 Chip Select
#define TFT_RST   7   // Reset pin
#define TFT_DC    23  // Data/Command pin
#define TFT_MOSI  11  // SPI MOSI
#define TFT_SCLK  13  // SPI Clock

// Initialize TFT displays
Adafruit_ST7789 tft1 = Adafruit_ST7789(TFT_CS1, TFT_DC, TFT_RST);
Adafruit_ST7789 tft2 = Adafruit_ST7789(TFT_CS2, TFT_DC, TFT_RST);

void setup() {
    Serial.begin(115200);
    while (!Serial);
    Serial.println("Starting Adafruit ST7789 Dual TFT Test...");

    SPI.begin();  // ✅ Only start SPI ONCE

    // --- Initialize TFT1 ---
    Serial.println("Initializing TFT1...");
    digitalWrite(TFT_CS1, LOW);
    tft1.init(76, 284, SPI_MODE0);
    tft1.setRotation(1);
    tft1.fillScreen(ST77XX_BLUE);
    tft1.setTextColor(ST77XX_WHITE);
    tft1.setTextSize(2);
    tft1.setCursor(5, 5);
    tft1.print("TrackChannel 1");
    digitalWrite(TFT_CS1, HIGH);

    delay(1000); // Short pause to ensure stability

    // --- Initialize TFT2 ---
    Serial.println("Initializing TFT2...");
    digitalWrite(TFT_CS2, LOW);
    tft2.init(76, 284, SPI_MODE0);
    tft2.setRotation(1);
    tft2.fillScreen(ST77XX_YELLOW);
    tft2.setTextColor(ST77XX_BLACK);
    tft2.setTextSize(2);
    tft2.setCursor(5, 5);
    tft2.print("TrackChannel 2");
    digitalWrite(TFT_CS2, HIGH);

    Serial.println("Test complete.");
}

void loop() {
}

And why are text white, when the code tells it to be black?

Is it still ok that the DC pin is connected to pin 23?
 
First thing I would do is to initialize both CS pins to HIGH before calling either displays init.
like:

Code:
pinMode(TFT_CS1, OUTPUT);
digitalWrite(TFT_CS1, HIGH);
pinMode(TFT_CS2, OUTPUT);
digitalWrite(TFT_CS2, HIGH);

You don't need to set them LOW, the display driver will do so for you.
The reason to set them both HIGH before, is, taking a guess these cheap displays don't have Pull up resistors on their CS pins. So they are
floating, and if for example when you are trying to initialize the first display, the 2nd one also thinks that it's CS is low (selected), it may
also try to use the data associated with the first one.... And potentially either or both displays could get confussed...

Possible problems: The Adafruit display assumes that if it is not one of some specific resolution displays, than it assumes
that the display is setup to use the memory within the chip is centered within the possible (240x320) on the chip. Which potentially
it might not be.

Colors and orientation... Could be different on these displays, that is the Adafruit library assumes:
Code:
void Adafruit_ST7789::setRotation(uint8_t m) {
  uint8_t madctl = 0;

  rotation = m & 3; // can't be higher than 3

  switch (rotation) {
  case 0:
    madctl = ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB;
    _xstart = _colstart;
    _ystart = _rowstart;
    _width = windowWidth;
    _height = windowHeight;
    break;
  case 1:
    madctl = ST77XX_MADCTL_MY | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB;
    _xstart = _rowstart;
    _ystart = _colstart2;
    _height = windowWidth;
    _width = windowHeight;
    break;
  case 2:
    madctl = ST77XX_MADCTL_RGB;
    _xstart = _colstart2;
    _ystart = _rowstart2;
    _width = windowWidth;
    _height = windowHeight;
    break;
  case 3:
    madctl = ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB;
    _xstart = _rowstart2;
    _ystart = _colstart;
    _height = windowWidth;
    _width = windowHeight;
    break;
  }

  sendCommand(ST77XX_MADCTL, &madctl, 1);
}
You will see that the set something called madctl, and for example assumes that the
colors are displayed using RGB... Which hopefully is true, as hopefully if you display a color like RED it shows up RED.
It controls how the memory is laid out ...
So if this does not work, one might have to either hack it or the like...
 
Is the Adafruit library able to handle 2 separate displays ??? May be it has some global variables.
Try to connect only one display and make it work.
 
ChatGPT told me that the SPI0 can be shared between several TFTs.

In theory, yes.

But ChatGPT lacks the practical experience of dealing with signal quality problems due to fast SPI signals on long wires.

Fortunately for you, we did have someone who eventually got 8 SPI displays working. It took a lot of trial and error to get the signal quality good enough. Maybe a bit of searching you might find that conversation?
 
In theory, yes.

But ChatGPT lacks the practical experience of dealing with signal quality problems due to fast SPI signals on long wires.

Fortunately for you, we did have someone who eventually got 8 SPI displays working. It took a lot of trial and error to get the signal quality good enough. Maybe a bit of searching you might find that conversation?
My plan is to run the first 5 TFTs on SPI0, the next 5 TFTs on SPI1 and the last controller TFT on SPI2.
You have a link to your solution?
And what library did you use?
What technique did you use to get several displays to show result at the same time without init() resetting the alreday filled screens?
 
Now I finally found the solution! :)

init() has en extra parameter, wehere its possible to remocve the reset form the nit() routtine! And it worked! <3

Code:
Adafruit_ST7789 tft1 = Adafruit_ST7789(TFT_CS1, TFT_DC, -1);  // ✅ Remove reset from init()

Thanx to @Angelo for pointing me in that direction and @PaulStoffregen for poiting me to search the library for multiple displays :)
 
Back
Top