Empalme de variables en pantalla 3.5 TFTILI9486

Estoy haciendo un control de temperatura pero estoy teniendo problemas al momento de mostrar las variables en la pantalla, se me actualizan pero no se borra el valor anterior impreso en la pantalla y se van empalmando cada vez que modifico la temperatura.

tengo declarada la variable global

int Termostato=40;

ya intente con tft.print(" "); y sigue haciendo lo mismo. En el monitor serial si me funciona correctamente, el problema esta a la hora de imprimir en la pantalla.

alguien me pudiera ayudar con esto por favor, se los agradecería mucho.

les dejo un poco del codigo para que vean lo que estoy haciendo:

int Termostato=40;

void drawHomeScreen() {

// AQUI DIBUJO LA PANTALLA (NO IMPRIMO NINGUNA VARIABLE)

}


//USO ESTA SECCION PARA IMPRIMIR LAS VARIABLES

void VerVariables() {
  
tft.setCursor(35,140);
tft.setTextSize(5);
tft.setTextColor(WHITE);
tft.print(Termostato);
tft.print(" C");

}

void setup() {

  Serial.begin(9600);
    uint16_t ID = tft.readID();
    Serial.print("TFT ID = 0x");
    Serial.println(ID, HEX);
    Serial.println("Calibrate for your Touch Panel");
    if (ID == 0xD3D3) ID = 0x9486; // write-only shield
    tft.begin(ID);
    tft.setRotation(0);            //PORTRAIT
    tft.fillScreen(BLACK);
    drawHomeScreen();
    
  BTMas.initButton(&tft, 51, 221, 47, 47 , GREEN, GREEN, WHITE,"+",4);
  BTMas.drawButton(false);
  BTMenos.initButton(&tft, 131, 221, 47, 47 , GREEN, GREEN, WHITE,"-",4);
  BTMenos.drawButton(false);

}

void loop() { 

bool down = Touch_getXY();

VerVariables();


//############ AUMENTAR TEMPERATURA

BTMas.press(down && BTMas.contains(pixel_x, pixel_y));
        
    if (BTMas.justReleased()){

  Termostato = Termostato + 5;
  
  tft.setCursor(35,140);
  tft.setTextSize(5);
  tft.setTextColor(WHITE);
  tft.print(Termostato);
  tft.print(" C");

  Serial.print(Termostato);
  Serial.println(" C");
  delay (50);
  
}

//########### BAJAR TEMPERATURA        
    
 BTMenos.press(down && BTMenos.contains(pixel_x, pixel_y));
        
    if (BTMenos.justReleased()){

  Termostato = Termostato - 5;

  tft.setCursor(35,140);
  tft.setTextSize(5);
  tft.setTextColor(WHITE);
  tft.print(Termostato);
  tft.print(" C");

  Serial.print(Termostato);
  Serial.println(" C");
  delay (50);
  
}


}

La librería que estas usando está basada en el entorno GFX de adafruit, no cuento con el hardware que tienes, pero tengo a mano una pantalla ILI9341 de 3.2" SPI en un teensy 3.2, así que las instrucciones serán idénticas a las que puedes usar.

Para imprimir texto hay una función que permite establecer el fondo de los caracteres sobre el cual se envían las cadenas de texto.

tft.setTextColor(BLACK, GREEN);

El primer argumento de color corresponde al color de la cadena de caracteres, el segundo argumento, es el color de fondo sobre el que se escribe el texto. Con esta función cada vez que escribes un texto que cambia constantemente, se consigue borrar el valor previo, sin que se sobrescriban todas las cadenas que envías a la pantalla en una determinada posición.

En el encabezado

int Termostato=25, velT=1;
char TX[50];
long previousMillisT = 0, intervalo_lectura = 500;

Dentro de la función de impresión de lecturas en pantalla o dentro del void loop:

  unsigned long currentMillisT = millis();        
  if(currentMillisT - previousMillisT > intervalo_lectura)
  {
    previousMillisT = currentMillisT;
    
    Termostato=Termostato+velT;
    if(Termostato>=65){velT=-1;}
    if(Termostato<=25){velT=1;}
    
    tft.setTextSize(3);
    tft.setTextColor(BLACK, GREEN);
    sprintf(TX,"%d C",Termostato);  
    tft.setCursor(230, 100);  tft.print(TX);
    tft.setTextSize(2);  tft.setCursor(272, 96);  tft.print("o");
  }