1.8TFT owerprint?

Good afternoon.
Maybe someone can tell me where the problem is?
And show how to fix it!
TFT display prints over an over ....

#include <TFT.h> 
#include <SPI.h>
#include <CAN.h>

#define TFT_cs   3
#define TFT_dc   5
#define TFT_rst  4
// create an instance of the library
TFT TFTscreen = TFT(TFT_cs, TFT_dc, TFT_rst);

const bool useStandardAddressing = true;

void setup() {

  TFTscreen.begin();
  TFTscreen.background(0, 0, 0);
  TFTscreen.setTextSize(1);
  TFTscreen.stroke(254, 210, 7);
  
  TFTscreen.text("Engine Temp.C", 5, 7);
  TFTscreen.text("Engine RPM", 5, 19);
  TFTscreen.text("Batt.Voltage", 5, 31);
  
  Serial.begin(9600);
  Serial.println("CAN OBD-II engine RPM");
  CAN.setClockFrequency(8e6);
  if (!CAN.begin(500E3)) {
    Serial.println("Starting CAN failed!");
    while (1);
  }

  // add filter to only receive the CAN bus ID's we care about
  if (useStandardAddressing) 
    CAN.filter(0x7e8);
}
void loop() {
 if (useStandardAddressing) 
  CAN.beginPacket(0x7df, 8);




Please post your entire sketch.

What you are observing is a 'standard feature'.
That area needs to be overwritten with a 'filled rectangle' (of the background color) before printing new data.

//Sorry...

#include <TFT.h> 
#include <SPI.h>
#include <CAN.h>

#define TFT_cs   3
#define TFT_dc   5
#define TFT_rst  4
// create an instance of the library
TFT TFTscreen = TFT(TFT_cs, TFT_dc, TFT_rst);

const bool useStandardAddressing = true;

void setup() {

  TFTscreen.begin();
  TFTscreen.background(0, 0, 0);
  TFTscreen.setTextSize(1);
  TFTscreen.stroke(254, 210, 7);
  
  TFTscreen.text("Engine Temp.C", 5, 7);
  TFTscreen.text("Engine RPM", 5, 19);
  TFTscreen.text("Batt.Voltage", 5, 31);
  
  Serial.begin(9600);
  Serial.println("CAN OBD-II engine RPM");
  CAN.setClockFrequency(8e6);
  if (!CAN.begin(500E3)) {
    Serial.println("Starting CAN failed!");
    while (1);
  }

  // add filter to only receive the CAN bus ID's we care about
  if (useStandardAddressing) 
    CAN.filter(0x7e8);
}
void loop() {
 if (useStandardAddressing) 
  CAN.beginPacket(0x7df, 8);
  CAN.write(0x02); // number of additional bytes
  CAN.write(0x01); // show current data
  CAN.write(0x0c); // engine RPM
  CAN.endPacket();

  // wait for response
  while (CAN.parsePacket() == 0 ||
         CAN.read() != 4 ||          // correct length
         CAN.read() != 0x41 ||      // correct mode
         CAN.read() != 0x0c);       // correct PID

  float rpm = ((CAN.read() * 256.0) + CAN.read()) / 4.0;

  Serial.print("Engine RPM = ");
  Serial.println(rpm);
  
  TFTscreen.setCursor(125, 19);
  TFTscreen.println(rpm);           //...............................................PROBLEM?
  
  delay(500);
}

For example, just add more spaces to this print line, to erase what what there before... you are using cursor positioning commands, so the value won't be printed after the spaces. It will overwrite them.

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