Solution for displaying Temperature & Humidity on a ST7735R TFT LCD

I recently built a project based on a ST7735R Graphical LCD and a DHT-22 temp/humidity sensor. I thought I'd share the solution I came up with for getting this to work together, and see if there were any improvements the community might offer.

/*
  Arduino TFT text example
  
  This example demonstrates how to draw text on the 
  TFT with an Arduino. 
  
  This example code is in the public domain

  Created 15 April 2013 by Scott Fitzgerald
 
  http://arduino.cc/en/Tutorial/TFTDisplayText

Heavily modified by Steve Spence

http://arduinotronics.blogspot.com
 
 */

#include <TFT.h>  // Arduino LCD library
#include <SPI.h>

// pin definition for the Uno
#define cs   10
#define dc   9
#define rst  8  

// pin definition for the Leonardo
// #define cs   7
// #define dc   0
// #define rst  1 

// create an instance of the library
TFT TFTscreen = TFT(cs, dc, rst);

// char array to print to the screen
char tempPrintout[6];
char humPrintout[6];




// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
// Fahrenheit conversion added by Steve Spence, http://arduinotronics.blogspot.com

#include <DHT.h>


#define DHTPIN 2     // what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11 
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin + (middle) of the sensor to +5V
// Connect pin S  (on the right) of the sensor to whatever your DHTPIN is
// Connect pin - (on the left) of the sensor to GROUND
// Connect 10k resistor between S and +

int cycleTime = 2000; // 2 second delay (slow sensor)

DHT dht(DHTPIN, DHTTYPE);

float h;
float t;

void setup() {
  
  // Put this line at the beginning of every sketch that uses the GLCD:
  TFTscreen.begin();

  // clear the screen with a black background
  TFTscreen.background(0, 0, 0);
  
  // write the static text to the screen
  // set the font color to white
  TFTscreen.stroke(255,255,255);
  // set the font size
  TFTscreen.setTextSize(2);
  // write the text to the top left corner of the screen
  TFTscreen.text("Temp (F)",0,0);
    // write the text to the top left corner of the screen
  TFTscreen.text("Humidity (%)",0,60);
  // ste the font size very large for the loop
  TFTscreen.setTextSize(4);

 dht.begin();

}

void loop() {

  // Read the value of the temp/humidity sensor on D2

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  h = dht.readHumidity();
  t = dht.readTemperature();
  t = (t*1.8)+32; //C to F conversion
  
 String tempVal = doubleToString(t, 2);
 String humVal = doubleToString(h, 0);
 // String sensorVal = String(1.234);
 
  // convert the reading to a char array
  tempVal.toCharArray(tempPrintout, 6);
  humVal.toCharArray(humPrintout, 6);

  // set the font color
  TFTscreen.stroke(255,255,255);
  // print the sensor value
  TFTscreen.text(tempPrintout, 0, 25);
  TFTscreen.text(humPrintout, 0, 85);
  // wait for a moment
  delay(cycleTime);
  // erase the text you just wrote
  TFTscreen.stroke(0,0,0);
  TFTscreen.text(tempPrintout, 0, 25);
  TFTscreen.text(humPrintout, 0, 85);
}

//Rounds down (via intermediary integer conversion truncation)
String doubleToString(double input,int decimalPlaces){
if(decimalPlaces!=0){
String string = String((int)(input*pow(10,decimalPlaces)));
if(abs(input)<1){
if(input>0)
string = "0"+string;
else if(input<0)
string = string.substring(0,1)+"0"+string.substring(1);
}
return string.substring(0,string.length()-decimalPlaces)+"."+string.substring(string.length()-decimalPlaces);
}
else {
return String((int)input);
}
}

TFT_DHT.PNG

dht_TFT.JPG