TFT Screen unresponsive after DHT11 connected

I have an 2.4" (eBay) TFT screen attached to an Arduino Uno clone. I’ve previously written a multi touch screen sketch which works exactly as expected. I’ve also written a sketch without the TFT screen that reads values from a DHTXX and either displays them through the serial monitor, or onto a display via a C# interface. Also works exactly as expected.

Now the problem…when I try to merge the two sketches, the TFT screen becomes unresponsive. The exact result is dependant on where the DHTXX.begin() command is positioned.

Code is below, minus the screendraw portion.

#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// library SPFD5408 

#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>     // Touch library

// LCD Pin

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4 // Optional : otherwise connect to Arduino's reset pin

// Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

// Init LCD

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

// Dimensions

uint16_t width = 0;
uint16_t height = 0;

void setup(void) 
{

  Serial.begin(9600);
  //dht.begin();
  // Initialise the TFT
  
  tft.reset();
  tft.begin(0x9341);
  tft.setRotation(3); // Need for the Mega, please changed for your choice or rotation initial
  width = tft.width() - 1;
  height = tft.height() - 1;

//  Draw the Main Screen on program load.
  drawMainScreen();
  //dht.begin();
}

void loop()
{
              //float h = dht.readHumidity();
              //float t = dht.readTemperature();
              tft.setCursor (25, 144);
              tft.setTextSize (2);
              tft.setTextColor(BLACK);
              tft.println("hello");
   
}

void drawHeading() {

    tft.setCursor (65, 20);
    tft.setTextSize (2);
    tft.setTextColor(WHITE);
    tft.println("ILLAWARRA COATINGS");
    tft.drawFastHLine(65, 40, 215, BLUE);
    tft.fillRect (65,40,215,3,BLUE);
    tft.setCursor (110, 60);
    tft.setTextSize (2);
    tft.println("Laboratory");
    tft.setCursor (45, 80);
    tft.println("Climate Control System");
    tft.setTextSize (1.5);
    tft.setCursor (175, 200);
    tft.println("     Copyright 2016");
    tft.setCursor (175, 220);
    tft.println("        9chd.com");

  }

void drawMainScreenButtonLabels()

  {

    tft.setCursor (25, 144);
    tft.setTextSize (2);
    tft.setTextColor(BLACK);
    //tft.println("Set Points");

    tft.setCursor (190, 144);
    //tft.println("Monitoring");

    tft.setCursor (55, 210);
    tft.setTextColor(WHITE);
    //tft.println("RESET");

  }

If the DHTXX.begin() command occurs before the TFT.begin() command, the screen simply turns white. If it is after the TFT.begin() command, the screen prints correctly and then becomes unresponsive.

I’ve repeated this project with a BME280 attached via I2C but have exactly the same issue, unresponsive screen when the sensor is started.

Any suggestions greatly appreciated.