Forum: Mikrocontroller und Digitale Elektronik Arduino TFT Display flackert bei überschreiben


von Frederick (Gast)


Lesenswert?

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);

von STK500-Besitzer (Gast)


Lesenswert?

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.

von Joachim B. (jar)


Lesenswert?

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!

von abplocker (Gast)


Lesenswert?

Flackern kann auch das Symptom einer einbrechenden
Versorgungsspannung sein.

von Joachim B. (jar)


Lesenswert?

abplocker schrieb:
> Flackern kann auch das Symptom einer einbrechenden
> Versorgungsspannung sein

auch das! +1

von Adam P. (adamap)


Lesenswert?

Frederick schrieb:
> Mein Display flackert beim überschreiben

Meinst du "flackern" oder siehst du vllt. den Bildaufbau.
Dann wäre es zu kleiner SPI Takt.

Nutzt die Bibliothek das Hardware SPI oder macht die das mit Software 
SPI.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.