Giga Display Shield - Teilbildschirm löschen

Hallo zusammen

für eine Wetterstation hab ich mir folgende Hardware zugelegt:
Giga R1 WiFi + Giga Display Shield

jetz würde ich gerne eine Seite fixe Kommentare anzeigen lassen und auf der anderen die Variablen
wie kann ich nur für die Variable Seite (399-800 & 129-480) den Bildschirm löschen (mit etwa einem von "delay(10);") ?

Vermutlich nur, in dem du dir den aktuell gezeigten Inhalt merkst und diesen mit der Hintergrundfarbe überschreibst. Oder den genannten Berrich mit der Hintergrundfarbe überschreiben.
Poste mal einen Link deines Displays.

https://docs.arduino.cc/hardware/giga-display-shield/

der "weiße" Bereich soll stehts die aktuellen Werte anzeigen
wird derzeit immer nur überschrieben

es sollte gehen, wenn du immer direkt bevor du die Werte auf das Display schreibst, ein schwarzes Viereck in dem Bereich dieser Pixel zeichnest.
Welche Bibliothek verwendest du?

Was für Treiber IC hat das Ding, was für MCU und was für Bibliothek.
Das sind 400 x400 Pixel zum löschen. alles außer TFT_eSPI wird zu langsam, wird kein Spaß machen.

Wie man erkennen kann, reicht das überschreiben nicht.
Daher wie schon geschrieben, den gezeigten Wert speichern und nur bei Änderung mit schwarz überschreiben und neue Daten reinschreiben.

Vermutung die Werte werden falsch auf das Display geschrieben.
@multixy Zeige mall dein Sketsch und antworte auf gestellte Fragen.

Und weiter raten bringt auch nichts, zumindest bringt es niemand weiter.

Es ist ein HMI Display, habe mir die Daten angesehen.
Also nix mit anderer TFT Lib.

The Board
1 Application Examples
The GIGA Display Shield provides easy cross-form factor support for an external touch display, together with several
useful peripherals.
Human-Machine Interface Systems: The GIGA Display Shield can be paired together with a GIGA R1 WiFi
board for rapid development of a Human-Machine Interface system. The included gyroscope allows for easy
orientation detection to adjust the visual element orientation.
Interaction Design Prototyping: Quickly explore novel interaction design concepts and develop new ways to
communicate with technology, including social robots that respond to sound.
Voice Assistant Use the included microphone, together with the edge computing power of the GIGA R1 WiFi
for voice automation with visual feedback.

Es ist gannnnzzz arm am Beispielen nämlich Ein einziges

#include "Arduino_GigaDisplay_GFX.h"

GigaDisplay_GFX tft;

#define GC9A01A_CYAN    0x07FF
#define GC9A01A_RED     0xf800
#define GC9A01A_BLUE    0x001F
#define GC9A01A_GREEN   0x07E0
#define GC9A01A_MAGENTA 0xF81F
#define GC9A01A_WHITE   0xffff
#define GC9A01A_BLACK   0x0000
#define GC9A01A_YELLOW  0xFFE0

void setup() {
  Serial.begin(9600);
  Serial.println("GC9A01A Test!");

  tft.begin();

  Serial.println(F("Benchmark                Time (microseconds)"));
  delay(10);
  Serial.print(F("Screen fill              "));
  Serial.println(testFillScreen());
  delay(500);

  Serial.print(F("Text                     "));
  Serial.println(testText());
  delay(3000);

  Serial.print(F("Lines                    "));
  Serial.println(testLines(GC9A01A_CYAN));
  delay(500);

  Serial.print(F("Horiz/Vert Lines         "));
  Serial.println(testFastLines(GC9A01A_RED, GC9A01A_BLUE));
  delay(500);

  Serial.print(F("Rectangles (outline)     "));
  Serial.println(testRects(GC9A01A_GREEN));
  delay(500);

  Serial.print(F("Rectangles (filled)      "));
  Serial.println(testFilledRects(GC9A01A_YELLOW, GC9A01A_MAGENTA));
  delay(500);

  Serial.print(F("Circles (filled)         "));
  Serial.println(testFilledCircles(10, GC9A01A_MAGENTA));

  Serial.print(F("Circles (outline)        "));
  Serial.println(testCircles(10, GC9A01A_WHITE));
  delay(500);

  Serial.print(F("Triangles (outline)      "));
  Serial.println(testTriangles());
  delay(500);

  Serial.print(F("Triangles (filled)       "));
  Serial.println(testFilledTriangles());
  delay(500);

  Serial.print(F("Rounded rects (outline)  "));
  Serial.println(testRoundRects());
  delay(500);

  Serial.print(F("Rounded rects (filled)   "));
  Serial.println(testFilledRoundRects());
  delay(500);

  Serial.println(F("Done!"));
}

void loop(void) {
  for (uint8_t rotation = 0; rotation < 4; rotation++) {
    tft.setRotation(rotation);
    testText();
    delay(1000);
  }
}

unsigned long testFillScreen() {
  unsigned long start = micros();
  tft.fillScreen(GC9A01A_BLACK);
  yield();
  tft.fillScreen(GC9A01A_RED);
  yield();
  tft.fillScreen(GC9A01A_GREEN);
  yield();
  tft.fillScreen(GC9A01A_BLUE);
  yield();
  tft.fillScreen(GC9A01A_BLACK);
  yield();
  return micros() - start;
}

unsigned long testText() {
  tft.fillScreen(GC9A01A_BLACK);
  unsigned long start = micros();
  tft.setCursor(0, 0);
  tft.setTextColor(GC9A01A_WHITE);  tft.setTextSize(1);
  tft.println("Hello World!");
  tft.setTextColor(GC9A01A_YELLOW); tft.setTextSize(2);
  tft.println(1234.56);
  tft.setTextColor(GC9A01A_RED);    tft.setTextSize(3);
  tft.println(0xDEADBEEF, HEX);
  tft.println();
  tft.setTextColor(GC9A01A_GREEN);
  tft.setTextSize(5);
  tft.println("Groop");
  tft.setTextSize(2);
  tft.println("I implore thee,");
  tft.setTextSize(1);
  tft.println("my foonting turlingdromes.");
  tft.println("And hooptiously drangle me");
  tft.println("with crinkly bindlewurdles,");
  tft.println("Or I will rend thee");
  tft.println("in the gobberwarts");
  tft.println("with my blurglecruncheon,");
  tft.println("see if I don't!");
  return micros() - start;
}

unsigned long testLines(uint16_t color) {
  unsigned long start, t;
  int           x1, y1, x2, y2,
                w = tft.width(),
                h = tft.height();

  tft.fillScreen(GC9A01A_BLACK);
  yield();

  x1 = y1 = 0;
  y2    = h - 1;
  start = micros();
  for (x2 = 0; x2 < w; x2 += 6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = w - 1;
  for (y2 = 0; y2 < h; y2 += 6) tft.drawLine(x1, y1, x2, y2, color);
  t     = micros() - start; // fillScreen doesn't count against timing

  yield();
  tft.fillScreen(GC9A01A_BLACK);
  yield();

  x1    = w - 1;
  y1    = 0;
  y2    = h - 1;
  start = micros();
  for (x2 = 0; x2 < w; x2 += 6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = 0;
  for (y2 = 0; y2 < h; y2 += 6) tft.drawLine(x1, y1, x2, y2, color);
  t    += micros() - start;

  yield();
  tft.fillScreen(GC9A01A_BLACK);
  yield();

  x1    = 0;
  y1    = h - 1;
  y2    = 0;
  start = micros();
  for (x2 = 0; x2 < w; x2 += 6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = w - 1;
  for (y2 = 0; y2 < h; y2 += 6) tft.drawLine(x1, y1, x2, y2, color);
  t    += micros() - start;

  yield();
  tft.fillScreen(GC9A01A_BLACK);
  yield();

  x1    = w - 1;
  y1    = h - 1;
  y2    = 0;
  start = micros();
  for (x2 = 0; x2 < w; x2 += 6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = 0;
  for (y2 = 0; y2 < h; y2 += 6) tft.drawLine(x1, y1, x2, y2, color);

  yield();
  return micros() - start;
}

unsigned long testFastLines(uint16_t color1, uint16_t color2) {
  unsigned long start;
  int           x, y, w = tft.width(), h = tft.height();

  tft.fillScreen(GC9A01A_BLACK);
  start = micros();
  for (y = 0; y < h; y += 5) tft.drawFastHLine(0, y, w, color1);
  for (x = 0; x < w; x += 5) tft.drawFastVLine(x, 0, h, color2);

  return micros() - start;
}

unsigned long testRects(uint16_t color) {
  unsigned long start;
  int           n, i, i2,
                cx = tft.width()  / 2,
                cy = tft.height() / 2;

  tft.fillScreen(GC9A01A_BLACK);
  n     = min(tft.width(), tft.height());
  start = micros();
  for (i = 2; i < n; i += 6) {
    i2 = i / 2;
    tft.drawRect(cx - i2, cy - i2, i, i, color);
  }

  return micros() - start;
}

unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
  unsigned long start, t = 0;
  int           n, i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;

  tft.fillScreen(GC9A01A_BLACK);
  n = min(tft.width(), tft.height());
  for (i = n; i > 0; i -= 6) {
    i2    = i / 2;
    start = micros();
    tft.fillRect(cx - i2, cy - i2, i, i, color1);
    t    += micros() - start;
    // Outlines are not included in timing results
    tft.drawRect(cx - i2, cy - i2, i, i, color2);
    yield();
  }

  return t;
}

unsigned long testFilledCircles(uint8_t radius, uint16_t color) {
  unsigned long start;
  int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2;

  tft.fillScreen(GC9A01A_BLACK);
  start = micros();
  for (x = radius; x < w; x += r2) {
    for (y = radius; y < h; y += r2) {
      tft.fillCircle(x, y, radius, color);
    }
  }

  return micros() - start;
}

unsigned long testCircles(uint8_t radius, uint16_t color) {
  unsigned long start;
  int           x, y, r2 = radius * 2,
                      w = tft.width()  + radius,
                      h = tft.height() + radius;

  // Screen is not cleared for this one -- this is
  // intentional and does not affect the reported time.
  start = micros();
  for (x = 0; x < w; x += r2) {
    for (y = 0; y < h; y += r2) {
      tft.drawCircle(x, y, radius, color);
    }
  }

  return micros() - start;
}

unsigned long testTriangles() {
  unsigned long start;
  int           n, i, cx = tft.width()  / 2 - 1,
                      cy = tft.height() / 2 - 1;

  tft.fillScreen(GC9A01A_BLACK);
  n     = min(cx, cy);
  start = micros();
  for (i = 0; i < n; i += 5) {
    tft.drawTriangle(
      cx    , cy - i, // peak
      cx - i, cy + i, // bottom left
      cx + i, cy + i, // bottom right
      tft.color565(i, i, i));
  }

  return micros() - start;
}

unsigned long testFilledTriangles() {
  unsigned long start, t = 0;
  int           i, cx = tft.width()  / 2 - 1,
                   cy = tft.height() / 2 - 1;

  tft.fillScreen(GC9A01A_BLACK);
  start = micros();
  for (i = min(cx, cy); i > 10; i -= 5) {
    start = micros();
    tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
                     tft.color565(0, i * 10, i * 10));
    t += micros() - start;
    tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
                     tft.color565(i * 10, i * 10, 0));
    yield();
  }

  return t;
}

unsigned long testRoundRects() {
  unsigned long start;
  int           w, i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;

  tft.fillScreen(GC9A01A_BLACK);
  w     = min(tft.width(), tft.height());
  start = micros();
  for (i = 0; i < w; i += 6) {
    i2 = i / 2;
    tft.drawRoundRect(cx - i2, cy - i2, i, i, i / 8, tft.color565(i, 0, 0));
  }

  return micros() - start;
}

unsigned long testFilledRoundRects() {
  unsigned long start;
  int           i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;

  tft.fillScreen(GC9A01A_BLACK);
  start = micros();
  for (i = min(tft.width(), tft.height()); i > 20; i -= 6) {
    i2 = i / 2;
    tft.fillRoundRect(cx - i2, cy - i2, i, i, i / 8, tft.color565(0, i, 0));
    yield();
  }

  return micros() - start;
}

Also es wird die Print Bibliothek Include't deshalb ist meine Vermutung wahr, es wird im falschem Format auf das Display geschrieben.
Manchmal ist die Zusammenarbeit mehreren Bibliotheken ein wenig schwierig, solche Probleme habe öfters bei meinen Projekten, also Lernen, Lesen, schauen wie was wird gebaut :wink:

Wenn das tatsächlich das beschriebene HMI ist, sollte @multixy einfach mal die Dokumentation dazu durchlesen. Da steht sicher etwas dazu geschrieben.
Es sei denn er möchte, dass wir ihm das vorlesen.

"Arduino_GigaDisplay_GFX.h"

der Rote Text wird im "void setup" geschrieben, weil brauch ja nie erneuert werden

der weiße Text im "void loop", derzeit ohne schwarzen Hintergrund schreiben bevor sich der Wert ändert

Ohne dem könnte nix geschrieben werden :wink:
Also hat der TO die benutzt.

Dann mach es doch mal so wie vorgeschlagen.

Schau dir mal an die GFX.h
dort ist ja Standard Funktion

fillRect(x, y, width, height, YELLOW) color a rectangle.

Mit der nur den Text löschen was sich geändert hat.
wenn man die vernünftig nutzt gibt's kein flackern.
Wen du mir nur ein Fragment vom Code zeigst wo und wie die werte werden geschrieben, zeige dir wie ich das mache, nämlich mit der Funktion bool dadurch merkt man nicht das sich was geändert hat.

Bei Änderung den Text in schwarz überschreiben wird doch einfacher.

Merkwürdig nur, dass der TO auf die Tipps überhaupt nicht reagiert.

hier ein Auszug aus dem sketch:

#include <Adafruit_GFX.h>
GigaDisplay_GFX display;
void setup() {
  Serial.begin(115200);
  
display.begin();
  display.fillScreen(BLACK);
  display.setRotation(1);
  
  display.setCursor(10,10); //x,y
  display.setTextColor(RED);
  display.setTextSize(5); //adjust text size
  display.println("Wetterstation"); //print

  display.setTextColor(RED);
  display.setCursor(10,100); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Anemometer: ");

  display.setTextColor(RED);
  display.setCursor(10,130); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Windrichtung: ");

  display.setTextColor(RED);
  display.setCursor(10,160); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Regen Niederschlag: ");

  display.setTextColor(RED);
  display.setCursor(10,190); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Temperatur: ");

  display.setTextColor(RED);
  display.setCursor(10,220); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Luftfeuchtigkeit: ");

  display.setTextColor(RED);
  display.setCursor(10,250); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Luftdruck: ");

  display.setTextColor(RED);
  display.setCursor(10,280); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Hoehe > NN: ");

  display.setTextColor(RED);
  display.setCursor(10,310); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Licht: ");

  display.setTextColor(RED);
  display.setCursor(10,340); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Regen: ");

  display.setTextColor(RED);
  display.setCursor(10,370); //x,y
  display.setTextSize(3); //adjust text size
  display.println("Feuchtigkeit: ");
 
  delay(10);

void loop() {

Serial.begin(115200);

DisplayVoidLoop();
Serial.println(millis());
  display.fillScreen(0);
  display.fillRect(400, 800, 130, 480, BLACK);
  display.print(false);
  /*delay(100);*/
  /*display.begin();
  display.fillScreen(BLACK);
  display.setRotation(1);
  display.setCursor(10,400); //x,y

  display.setTextColor(WHITE);
  display.setTextSize(5); //adjust text size
  display.println(" "); //print*/

  display.setTextColor(WHITE);
  display.setCursor(400,100); //x,y
  display.setTextSize(3); //adjust text size
  display.print(AnemometerVariable_ms/100.0);
  display.print(" m/s");

  display.print(" ; ");
  display.print(AnemometerVariable_kmh/100.0);
  display.println(" km/h");

  //display.print(" ; ");
  //display.print(AnemometerVariable_kn/100.0);
  //display.print(" kn");

  //display.print(" ; ");
  //display.print(AnemometerVariable_mph/100.0);
  //display.println(" mph");

  display.setTextColor(WHITE);
  display.setCursor(400,130); //x,y
  display.setTextSize(3); //adjust text size
  display.print(WindrichtungVariable/100.0);
  display.println(" Grad");

  display.setTextColor(WHITE);
  display.setCursor(400,160); //x,y
  display.setTextSize(3); //adjust text size
  display.print(Regen_NiederschlagVariable_mm);
  display.print(" mm");
  display.print(" ; ");
  display.print(Regen_NiederschlagVariable_lqm);
  display.println(" l/qm");

  display.setTextColor(WHITE);
  display.setCursor(400,190); //x,y
  display.setTextSize(3); //adjust text size
  display.print(Temperatur);
  display.println(" C");

  display.setTextColor(WHITE);
  display.setCursor(400,220); //x,y
  display.setTextSize(3); //adjust text size
  display.print(Luftfeuchtigkeit);
  display.println(" %");

  display.setTextColor(WHITE);
  display.setCursor(400,250); //x,y
  display.setTextSize(3); //adjust text size
  display.print(Luftdruck);
  display.println(" hPa");

  display.setTextColor(WHITE);
  display.setCursor(400,280); //x,y
  display.setTextSize(3); //adjust text size
  display.print(AltitudeAboveSeaLevel);
  display.println(" m");

  display.setTextColor(WHITE);
  display.setCursor(400,310); //x,y
  display.setTextSize(3); //adjust text size
  display.print(Helligkeit);
  display.println(" lx");

  display.setTextColor(WHITE);
  display.setCursor(400,340); //x,y
  display.setTextSize(3); //adjust text size
  display.println(Regen);

  display.setTextColor(WHITE);
  display.setCursor(400,370); //x,y
  display.setTextSize(3); //adjust text size
  display.print(RegenVariable/100.0);
  display.println(" %\n");

  delay(10);

moin

ich bin nicht jeden Tag online :wink:

hab ja auch noch was anderes zu tun als dieses :upside_down_face:

Unsere Tipps hast du aber ignoriert ?

Na dann...

Habe mir mal den Schnipsel, angeschaut.
Du verwendest unnötig sehr oft das gleiche, in Setup wie in der loop

display.setTextColor(RED);
 display.setTextSize(3);

wozu? Es reicht das ein mal deklarieren.
So wie ich das sehe auf dem Display, es wird versucht die Symptome behandeln nicht die Ursache, schade das du nur Schnipsel zeigst und nicht alles. ist aber egal, versprochen ist versprochen :wink:
Ach ja, es wird bei deinem Display die Standard Adafruit GFX genutzt, mit der kannst eine vernünftige Schriftart nutzen und nicht die Standard Schriftart hochskalieren, ist zwar lesbar jedoch schön ist das nicht, auch auf einem hochauflösendem Display.