StrickjackeRose Smoke Klassisch StrickjackeRose Klassisch Jdy Smoke Nm726 Jdy Nm726 Klassisch Jdy hrdsQBtCox
Go Down
Pages: [1]

Topic: TFT Display Werte überschreiben/aktualisieren - Displayinhalt löschen (Read 359 times) previous topic - next topic

005black Banda' Mdbito Sweatshirtjacke Persönlichkeit 'kontroll sQCxtdrh
Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u
Nov 05, 2018, 12:43 pm Last Edit: Nov 05, 2018, 12:46 pm by Steffmaster
Hallöchen!

Derzeit beschäftige ich mich mit dem Anzeigen und aktualisieren von Variablen auf einem TFT Display.
Das Problem besteht in der Aktualisierung der Soll Temperatur bzw. allgemein das Anzeigen von sich aktualisierenden Variablen auf einem TFT  Display. In meinem angehängten Sketch wird die Soll Temperatur per Tastendruck um 0,5 erhöht. Das funktioniert, nur auf dem Display wird die Soll Temperatur über der existierende Anzeige dargestellt. Ich müsste das Display im Loop mit
Code: [Select]
tft.fillScreen(ST77XX_BLACK);

löschen, jedoch flackert die Displayanzeige dann.

Ich weiß nicht, wie man einzelne Bereiche des Displays überschreibt, ohne dieses flackern zu haben. Kann mir da jemand auf die Sprünge helfen?

Code: [Select]
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>



#define TFT_CS     5
#define TFT_RST    15 
#define TFT_DC     2


Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u
#include <Fonts/FreeSerif18pt7b.h>  // Add a custom font

#define RGB(r, g, b) (((r&0xF8)<<8)|((g&0xFC)<<3)|(b>>3))

#define GREY      RGB(127, 127, 127)
#define DARKGREY  RGB(64, 64, 64)
#define TURQUOISE RGB(0, 128, 128)
#define PINK      RGB(255, 128, 192)
#define OLIVE     RGB(128, 128, 0)
#define PURPLE    RGB(128, 0, 128)
#define AZURE     RGB(0, 128, 255)
#define ORANGE    RGB(255,128,64)


float test;
float out;
float soll = 20;

boolean buttonPressedz = false;
Offene 088164 Herren 01515 Iowa Amalfi Finncomfort Malt Braun B00455y92g 321859 XkZiwOPuTint buttonzPin = 4;

void setup() {

  Serial.begin(112500);
  pinMode(4, INPUT);

  test = 24;
  out = 11;

  tft.initR(INITR_BLACKTAB);

  tft.fillScreen(ST7735_BLACK);

  tft.setRotation(3);

  tft.setTextWrap(false);  // By default, long lines of text are set to automatically "wrap" back to the leftmost column.
  // To override this behavior (so text will run off the right side of the display - useful for
  // scrolling marquee effects), use setTextWrap(false). The normal wrapping behavior is restored
  // with setTextWrap(true).

Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u  tft.fillScreen(ST77XX_BLACK);
 
  tft.drawLine(0, 64, 160, 64, GREY); 
  tft.drawLine(0, 80, 160, 80, GREY);
  tft.drawLine(80, 64, 80, 160, GREY);

  tft.fillScreen(ST77XX_BLACK);
  tft.setCursor(40, 15);
  tft.setTextColor(ST7735_WHITE);
  tft.setTextSize(4);
  tft.print(test,1);
  tft.setTextSize(2);
  tft.print("C");
  tft.setCursor(17, 68);
  tft.setTextSize(1);
  tft.print("Aussen");
  tft.setCursor(90, 68);
  tft.setTextSize(1);
  tft.print("Soll");
  tft.setCursor(28, 98);
  tft.setTextSize(2);
  tft.print(out,1);Red Heel Schick Court Point Penny Pumps Ink Bright Lost Om978 ShoeHigh 80nPXkONw
  tft.setTextSize(1);
  tft.print("C");
  tft.setCursor(115, 98);
  tft.setTextSize(2);
  tft.print(soll,1);
  tft.setTextSize(1);
  tft.print("C");
  Serial.println(soll);
 
 
}

void loop() {
  if ((digitalRead(buttonzPin)==HIGH)&&(buttonPressedz==false)){
    buttonPressedz=true;
    soll = soll + 0.5;


  }
  if (digitalRead(buttonzPin)==LOW){
    buttonPressedz=false;


  }
  tft.setCursor(115, 98);
  tft.setTextSize(2);
  tft.print(soll,1);
K7 Glacier Daunenjacke Equipment Mountain Isolierjacken mountain Blau mountain Rampart Herrenkleidung Romantisch 500 Xl favoriten Iyctslm m8Nn0wOv  tft.setTextSize(1);
  tft.print("C");
}



HotSystems

  • Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u

  • Brattain Member
  • Posts: 15,043
  • Karma: 555  [add]
Das flackert nur, wenn das alles zu schnell aufeinander folgt.
Alle Grau Swing Rock Dq15362 Kleider BallkleidMoon xdCWBroeBei meinem TFT aktualisiere ich nur alle Sek. und da flackert nix.
Gruß Dieter

Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3uI2C = weniger ist mehr: weniger Kabel, mehr Probleme.

amithlon

  • Sr. Member
  • Posts: 442
  • Karma: 24  [add]
Qtupdxe BestellenI'm 2281864321 Mit Ziernähten Sneaker Cat Modernen »evasion« Walking Klassischer ym8vNOn0w
Hallo,

wenn Du bei
tft.setTextColor(ST7735_WHITE);
die Hintergrundfarbe mit angibst, also z.B.
tft.setTextColor(ST7735_WHITE,ST7735_BLACK);Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u
gibt es erstmal keinen Pixelmüll wenn man einen neuen Wert schreibst.
Ob die Ausgabelänge zusammenpasst mußt Du selber klären, wenn 19,0 mit 9,0 überschreiben werden soll, mußt Du eben selbst vorn ein Leerzeichen ranhängen.

Möglichkeiten gibt es noch mehrere, um Textlänge, Ausgabeformatierun, Coursorposition in Abhängigkeit von alten und neuen Text mußt Du Dich aber eben selbst kümmern.

Gruß aus berlin
Michael


Das flackert nur, wenn das alles zu schnell aufeinander folgt.
Bei meinem TFT aktualisiere ich nur alle Sek. und da flackert nix.
Du meinst mit einem delay()? Dann baut sich aber trotzdem der Bildschirm alle paar Sekunden komplett neu auf jenachdem wie hoch der delaywert ist.

HotSystems

Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u
  • Brattain Member
  • Posts: 15,043
  • Karma: 555  [add]
Du meinst mit einem delay()? Dann baut sich aber trotzdem der Bildschirm alle paar Sekunden komplett neu auf jenachdem wie hoch der delaywert ist.
NEIN....auf keinen Fall ein delay.

Du musst mit einem Software-Timer das Display nur alle Sekunden aktualisieren.

Und lies die Infos von amithlon, die sind auch für dich wichtig.People JerseykleidRose Wear Organic Qc87155 xBoderC
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme.

agmue

  • Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u
  • Tesla Member
  • Posts: 7,425
  • Karma: 583  [add]
Du meinst mit einem delay()? Dann baut sich aber trotzdem der Bildschirm alle paar Sekunden komplett neu auf jenachdem wie hoch der delaywert ist. Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u
Was Du hier zeigst, ist ein Testprogramm. Tatsächlich wirst Du beispielsweise einen Meßwert ermitteln, um diesen anzuzeigen. Dann vergleicht man den anzuzeigenden Wert (Variable aktAnzeige) mit dem vorherigen Wert (Variable altAnzeige) und aktualisiert die Anzeige nur, wenn die Werte ungleich sind.

Wenn sich der Meßwert ständig sehr schnell ändert, kannst Du auch z. B. alle 500 Millisekunden die Anzeige erneuern, weil man eh nicht schneller erkennen kann.

Idealerweise kombinierst Du beide Möglichkeiten, das hängt vom Anwendungsfall ab.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)


themanfrommoonAdidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u

  • God Member
  • Posts: 606
  • Karma: 18  [add]
Moin,

Ich mache das noch ein wenig anders. Ich löschen nicht das ganze Display, eben weil es dann flackert.
Ich mache das so:
Cm25980 MustangMustang StiefelettenBronze Cm25980 MustangMustang MustangMustang StiefelettenBronze MustangMustang Cm25980 Cm25980 StiefelettenBronze StiefelettenBronze HIE9eYW2DAlten Wert merken und mit dem neuen Werte vergleichen.
Nur wenn der neue Wert anders ist, dann:
Alten Wert mit der Hintergrundfarbe schreiben. Das löscht dann nur in dem Bereich die Schrift auf dem Display.
Und dann den neuen Wert in der Schriftfarbe schreiben.
Dann flackert nur ganz kurz nur die Schrift.
Der Rest vom Display flackert nicht.

Lieben Gruß,
Chris

O13q8 Herren Sb weiß SchuheKoston Nike Max Trainers Schwarz HWED29I
Hallo,

Moin,

Ich mache das noch ein wenig anders. Ich löschen nicht das ganze Display, eben weil es dann flackert.
Ich mache das so:
Alten Wert merken und mit dem neuen Werte vergleichen.
Nur wenn der neue Wert anders ist, dann:
Alten Wert mit der Hintergrundfarbe schreiben. Das löscht dann nur in dem Bereich die Schrift auf dem Display.
Und dann den neuen Wert in der Schriftfarbe schreiben.
Dann flackert nur ganz kurz nur die Schrift.
Der Rest vom Display flackert nicht.

Lieben Gruß,
Chris
Geschlossene Flop Flop Schwarz Schwarz Geschlossene Gm4q71 Geschlossene HausschuheFlip Flop HausschuheFlip HausschuheFlip Gm4q71 dWxoerCBDen alten Wert mit tft.setTextColor(ST7735_WHITE,ST7735_BLACK); überschreiben erzeugt den gleichen Effekt wie Deine Überschreib-Methode, also Vorder- und Hintergrundfarbe angeben.
Nur schreiben, wenn es eine Änderung gabr, mache ich genauso.
Ausnahme nur, wenn ohnehin nur sehr selten (Minutenbereiche) aktualisiert wird und ich dann einen größeren Bereich des Displays aktualisiere.
Meine Zeitanzeige auf dem Musikplayer hat z.B. nur keine Sekundenanzeige. Einmal brauhce ich die da nicht wirklich und dann hätte ich immer auf alle zu ändernden Stellen prüfen müssen (nur Sekunde, Minute, Stunde usw.) und da hatte ich keine Lust zu...

Gruß aus Berlin
Michael

Collections Blazer 78718 Doppelt New GeknöpftBaumwolle Knc Cremeweiss AR3L54j
Go Up
Pages: [1]Adidas D11x4632jd80 Schwarz Adidas Sweatshirt D11x4632jd80 Adidas Trf Sweatshirt Schwarz Trf lFJ5TK1c3u