Arduino TFT Display flackert bei überschreiben

Gast #6758174
Guten Tag
Mein Display flackert beim überschreiben und ich Verstehe nicht weshalb.
Unten ist der Code mit dem Teil des Schreiben und dem anschliessenden 
überschreiben. Das Display wird mit einem Arduino per SPI betrieben. Das 
Display ist das Folgende:
https://www.bastelgarage.ch/128x160-1-8inch-lcd-display-modul?search=1.8%20inch%20lcd

Bei Fragen stehe ich gerne zur Verfügung
1
  TFTscreen.stroke(0, 0, 0);//Schwarz
2
  // print the sensor value
3
//Text setzen-------------------------------------------------------------
4
  TFTscreen.text(sensorPrintout, 2, 20); // Bodenfeuchtigkeit
5
  TFTscreen.text(Temperatur, 2, 60); // Temperatur
6
  TFTscreen.text("C", 20, 60); // Temperatur
7
  TFTscreen.text(Luftfeuchtigkeit, 2, 105); //Luftfeuchtigkeit
8
  TFTscreen.text("%", 20, 105); // Temperatur
9

10
  //TFTscreen.text(Bedingung_Bodenfeuchtigkeit[4], 30, 20); // aktueller Wert für Pumpen
11
  TFTscreen.text(sensorPrintout4, 40, 20);
12

13

14
  // wait for a moment
15
delay(1000);
16
  //Text löschen-----------------------------------------------------------
17
  //Textfarbe auf Schwarz setzen
18
 TFTscreen.stroke(255, 255, 255); // muss mit Weiss reseten sonst werden 
19
  TFTscreen.text(sensorPrintout, 2, 20); //Bodenfeuchtigkeit
20
  TFTscreen.text(Temperatur, 2, 60); // Temperatur
21
  TFTscreen.text(Luftfeuchtigkeit, 2, 105); //Luftfeuchtigkeit
22
 // TFTscreen.text(Bedingung_Bodenfeuchtigkeit, 10, 20); // aktueller Wert für Pumpen
23
  TFTscreen.text(sensorPrintout4, 40, 20);
Gast #6758184
1
TFTscreen.stroke(0, 0, 0);
2
....
3
TFTscreen.stroke(255, 255, 255);

Wenn ich den "Code" richtig verstehen, flackert das Display wegen dieser 
beiden Zeilen.
#6758189
flackern ist oft ein Zeichen falscher Programmierung.
Viele löschen zuerst das ganze Display was eben dauert und deswegen 
flackerts.
Besser man löscht nur dort wo man neu schreibt.
Ich hatte zumindest Texte im Array als backup und wo sich was ändern 
sollte diese alten Buchstaben erst in schwarz geschrieben und dann neue 
geschrieben.

bis 100 Buchstaben hat man ja RAM genug, je nach Programm.
Einige Controller haben auch viel mehr RAM so das auch 1000 
Buchstaben/Zahlen/Zeichen als backup gehalten werden können.

Ich schreibe erst mit sprintf(RAM-ARAY,.....
und schicke das nur alle 250ms zum TFT und je nach Größe auch nur die 
Zeichen an die Änderungsposition.

Warum sollte ich Temperatur oder Datum 4x pro Sekunde neu schreiben, da 
ändert sich doch nichts, nur die Daten ändern sich und das wären für die 
Temperatur maximal 3-4 Zeichen.
OK das Datum zum Jahreswechsel immerhin 8 Zeichen!
Gast #6758215
noch weniger flackert es wenn man einen Bereich im Ram vorbereitet und 
dann am Stück überträgt, die üblichen TFT unterstützen das mit einem 
Window das man setzen kann. Löschen und danach Schreiben führt zu 
sichtbarem flackern, auch wenn nur wenige ms dazwischen liegen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.