Display, cancellare il testo per nuovi dati

Ciao ragazzi, una domanda, come faccio a far cancellare tutti i dati sulla riga e non solo quelli che vengono modificati?

Vi spiego, ho un VL5310X, collegato ad un display ST7735, ho un problema se che il sensore rileva variazioni in altezza dei primi due numeri (migliaia e centinaia), mi lascia sul display le ultime 2 cifre della precedente misura, ad esempio se il sensore misura 1890 mm e poi 17 mm sul display vedo 1790 mm in pretica non viene cancellato il 90, mentre sul monitor seriale di Arduino leggo la misura corretta.
Come posso risolvere questo problema?
Vi allego la parte dello sketch in cui c'è il problema.
pensavo che con tft.setTextColor(colore testo, colore sfondo), avrei risolto invece no, non posso creare un rettangolo sotto perché a sinistra del testo ho una colonna che varia in base alla percentuale di un calcolo.

Anche se compare l'avviso tempo scaduto e poi invece riesce a leggere, il testo tempo scaduto non viene cancellato.

Consigli?

Sempre grazie per i vostri consigli :slight_smile:

Dimenticavo, come faccio a non far rilevare il sensore, così da testare il comando di allerta sul display?
Se stacco i PIN mi da solo l'errore tempo scad

int A = digitalRead(sensore_H2O);
if(A == LOW){
  tft.setCursor(6, 95);
  tft.setTextSize(2);
  tft.setTextColor(STEELBLUE, BLACK);
  tft.print(sensor.readRangeContinuousMillimeters());
  Serial.println(sensor.readRangeContinuousMillimeters());
  if (sensor.timeoutOccurred()) { 
    tft.setCursor(4, 95);
    tft.setTextSize(2);
    tft.setTextColor(RED, BLACK);
    tft.print("Tempo scad"); 
  
  }
}

Non sono sicuro al 100%, ma credo che il sistema piu veloce sia riscrivere il vecchio dato con il colore di sfondo immediatamente prima di scrivere il nuovo ...

Se formatti il numero prima di stamparlo usando dtostrf() avrà sempre la stessa lunghezza e sovrascriverà il precedente.

Ciao, Ale.

Ciao ragazzi questa mattina mi è venuta in mente un'idea ed ho risolto :slight_smile:
Ho aggiunto queste righe

char H [7];
  dtostrf(sensor.readRangeContinuousMillimeters(), 5, 2, H);
  tft.print(H);

Funziona :slight_smile:

La stessa idea che consigliata da @ilguargua, mi veniva in mente ieri non vi disturbavo

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.