Problema con la programación de una pantalla TFT

Buenas, soy un joven principiante en el ambnito del arduino, el cual a emprendido un proyecto de escuela que trata sobre una casa domotizada. En este proyecto ha echo que se realice una maqueta, la cual contiene algunos sensores: Sensor de infrarojos, Reconocimiento de voz, sensor de temperatura, un motor, y una pantalla TFT.
La cosa es que he emezado nuevo en este mundo de la programación he indagado para buscarmelas mas o menos con programaciónes adaptadas a mis requisitos. Este echo hace que las programaciones que tengo, por partes separadas, funcionan a la perfección. Pero el problema , realmente viene cuando se trata de ajuntar todos los programas, el cual me salta un error normalmente entre la linea 120-135. Donde:

void loop() {
delay(1000);
sensors.requestTemperatures();
Serial.print("Temperature for the device 1 (index 0) is: ");
previousTemp = tempC;
tempC = sensors.getTempCByIndex(0);
if(tempC<minTemp)
{
deleteMinTemp();
minTemp = tempC;
}
if(tempC>maxTemp)
{
deleteMaxTemp();
maxTemp = tempC;
}
if(previousTemp!=tempC)
{
deletePreviousTemp();
deleteMinTemp();
deleteMaxTemp();
printTemp();
printMinTemp();
printMaxTemp();
}

Donde la linea 9 en este fragmento me suele dar problemas, i no se el motivo exactamente. Tambien adjunto toda la programación.
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SPI.h>
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"
#include <infrarrojo.h>
#include <TimerOne.h>
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"

VR myVR(2,3);

uint8_t records[7];
uint8_t buf[64];

int ventilador = 6;

#define frioRecord (3)
#define calorRecord (2)
infrarrojo estado (13);
int VALOR;
int led =12;
int led_estado;
long int Time=0;

#define onRecord (0)
#define offRecord (1)
#define DATO 5
#define TFT_CS 10
#define TFT_RST 9
#define TFT_DC 8

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

#define TFT_SCLK 13
#define TFT_MOSI 11

OneWire ourWire (DATO);

DallasTemperature sensors (&ourWire);

float previousTemp = -100.0;
float tempC = 0;
float minTemp = 200;
float maxTemp = 0;
#define ONE_WIRE_BUS 2
#define TEMP_X 20
#define TEMP_Y 40

void printSignature(uint8_t *buf, int len)
{
int i;
for(i=0; i<len; i++){
if(buf[i]>0x19 && buf[i]<0x7F){
Serial.write(buf[i]);
}
else{
Serial.print("[");
Serial.print(buf[i], HEX);
Serial.print("]");
}
}
}

void printVR(uint8_t *buf)
{
Serial.println("VR Index\tGroup\tRecordNum\tSignature");

Serial.print(buf[2], DEC);
Serial.print("\t\t");

if(buf[0] == 0xFF){
Serial.print("NONE");
}
else if(buf[0]&0x80){
Serial.print("UG ");
Serial.print(buf[0]&(~0x80), DEC);
}
else{
Serial.print("SG ");
Serial.print(buf[0], DEC);
}
Serial.print("\t");

Serial.print(buf[1], DEC);
Serial.print("\t\t");
if(buf[3]>0){
printSignature(buf+4, buf[3]);
}
else{
Serial.print("NONE");
}
Serial.println("\r\n");
}

void setup(){
delay(1500);
Serial.begin (9600);
sensors.begin ();

tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
tft.setRotation(1);
tft.setTextSize(2);
tft.setCursor(15,10);
tft.println("Temperatura\n");
myVR.begin(9600);

Serial.begin(115200);
Serial.println("Elechouse Voice Recognition V3 Module\r\nControl ventilador sample");

pinMode(ventilador, OUTPUT);

if(myVR.clear() == 0){
Serial.println("Recognizer cleared.");
}else{
Serial.println("Not find VoiceRecognitionModule.");
Serial.println("Please check connection and restart Arduino.");
while(1);
}

if(myVR.load((uint8_t)calorRecord) >= 0){
Serial.println("calorRecord loaded");
}

if(myVR.load((uint8_t)frioRecord) >= 0){
Serial.println("frioRecord loaded");
}
{
pinMode(led,OUTPUT);
Serial.begin(9600);
Timer1.initialize(40000);
}
/** initialize */
myVR.begin(9600);

Serial.begin(115200);
Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample");

pinMode(led, OUTPUT);

if(myVR.clear() == 0){
Serial.println("Recognizer cleared.");
}else{
Serial.println("Not find VoiceRecognitionModule.");
Serial.println("Please check connection and restart Arduino.");
while(1);
}

if(myVR.load((uint8_t)onRecord) >= 0){
Serial.println("onRecord loaded");
}

if(myVR.load((uint8_t)offRecord) >= 0){
Serial.println("offRecord loaded");
}
}

void loop() {
delay(1000);
sensors.requestTemperatures();
Serial.print("Temperature for the device 1 (index 0) is: ");
previousTemp = tempC;
tempC = sensors.getTempCByIndex(0);
if(tempC<minTemp)
{
deleteMinTemp();
minTemp = tempC;
}
if(tempC>maxTemp)
{
deleteMaxTemp();
maxTemp = tempC;
}
if(previousTemp!=tempC)
{
deletePreviousTemp();
deleteMinTemp();
deleteMaxTemp();
printTemp();
printMinTemp();
printMaxTemp();
}
{
Serial.print("\n leyendo estado sensor: \n");
Serial.print(estado.lectura(VALOR));
led_estado = estado.lectura(VALOR);
if(led_estado == 0)
{
digitalWrite(led,HIGH);
delay(8000);
digitalWrite(led,LOW);
delay(100);
}
}
int ret;
ret = myVR.recognize(buf, 50);
if(ret>0){
switch(buf[1]){
case onRecord:

    digitalWrite(led, HIGH);
    break;
  case offRecord:
    
    digitalWrite(led, LOW);
    break;
  default:
    Serial.println("Record function undefined");
    break;
}

printVR(buf);

ret = myVR.recognize(buf, 50);
if(ret>0){
switch(buf[1]){
case calorRecord:

    digitalWrite(ventilador, HIGH);
    break;
  case frioRecord:
    
    digitalWrite(ventilador, LOW);
    break;
  default:
    Serial.println("Record function undefined");
    break;
}

printVR(buf);

}
}

void deletePreviousTemp()
{
tft.setCursor(35, 40);
tft.setTextSize(4);
tft.setTextColor(ST77XX_BLACK);
tft.println(previousTemp,1);
}

void printTemp()
{
tft.setCursor(35, 40);
tft.setTextSize(4);
tft.setTextColor(ST77XX_WHITE);
tft.println(tempC,1);
}

void printMinTemp()
{
tft.setCursor(20, 90);
tft.setTextSize(2);
tft.setTextColor(ST77XX_BLUE);
tft.println(minTemp,1);
}

void printMaxTemp()
{
tft.setCursor(100, 90);
tft.setTextSize(2);
tft.setTextColor(ST77XX_RED);
tft.println(maxTemp,1);
}

void deleteMaxTemp()
{
tft.setCursor(100, 90);
tft.setTextSize(2);
tft.setTextColor(ST77XX_BLACK);
tft.println(maxTemp,1);
}

void deleteMinTemp()
{
tft.setCursor(20, 90);
tft.setTextSize(2);
tft.setTextColor(ST77XX_BLACK);
tft.println(minTemp,1);
}

void printMinTempDegreesSymbol()
{
tft.setCursor(25, 90);
tft.setTextSize(2);
tft.setTextColor(ST77XX_BLUE);
tft.println((char)247 );
tft.setCursor(30, 90);
tft.println("C");
}

void printMaxTempDegreesSymbol()
{
tft.setCursor(105, 90);
tft.setTextSize(2);
tft.setTextColor(ST77XX_RED);
tft.println((char)247 );
tft.setCursor(110, 90);
tft.println("C");
}

Espero vuestras respuestas gracias.

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


Lo que debes hacer esta indicado en muchos hilos de este foro.

  1. Agrupa todas las variables y constantes sin repetir.
  2. Arma el setup() sin repetir inicializaciones. Serial.begin() u objetos.
  3. Lo mismo con el loop()
  4. Todas funciones y procedimientos.
  5. No uses delay() porque lo que funciona en un código no servirá para otro ya que el delay() genera una pausa en la que nada se hace.
    En su reemplazo debes usar millis() pero no es tan fácil ni tan dificil de usar. Ve a Documentación y lee Entender millis y no morir en el intento