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 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?
#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);
#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;
int 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).
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);
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);
tft.setTextSize(1);
tft.print("C");
}