Hallo liebe Leser.
Ich brauche eure Hilfe. Ich bin ein Anfanger beim Arduino programmieren ich habe nur geringfügiges Wissen. Ich besitzte dieses Touch Display DEBO TFT 1.8 TD Entwicklerboards - Display, 1,8", Touch, ST7735R hier der passende Link dazu DEBO TFT 1.8 TD: Entwicklerboards - Display, 1,8", Touch, ST7735R bei reichelt elektronik habe ich die 2 dazugehörigen COM-KY051VT.Hier der Link zur Verdrahtung ich benutze die Version ohne SD Karte https://joy-it.net/files/files/Produkte/RB-TFT1.8/RB-TFT1.8_Anleitung_2023-01-06.pdf . Verwendet werden diese Library laut Graphictest:,, Adafruit_GFX.h , Adafruit_ST7735.h , Adafruit_ST7789.h , SPI.h. Ich will ein Sketch erstellen, bei dem ein bzw mehrere Buttons auf dem Display erscheinen, mit je einem Button will ich nur einen Output am Arduino an und aus schalten. Wäre super wenn mir jemand das Programm schreiben bzw mir helfen kann oder jemand ein passendes Programm dazu hat. Ich habe es bereits versucht mit ChatGPT ein Programm zu erstellen, welches leider nicht toll aussieht von Anordnung etc und leider erkennt mein Touch Display bei dem Programm meine Touch Eingabe nicht. Vielen Dank an jeden der mir hilft. Hier der Sketch :#include <Adafruit_GFX.h> // Kerngrafikbibliothek
#include <Adafruit_ST7735.h> // Hardware-spezifische Bibliothek für ST7735
#include <Adafruit_ST7789.h> // Hardware-spezifische Bibliothek für ST7789
#include <SPI.h>
#if defined(ARDUINO_FEATHER_ESP32) // Feather Huzzah32
#define TFT_CS 14
#define TFT_RST 15
#define TFT_DC 32
#elif defined(ESP8266)
#define TFT_CS 4
#define TFT_RST 16
#define TFT_DC 5
#else
// Für das Breakout-Board können Sie beliebige 2 oder 3 Pins verwenden.
// Diese Pins funktionieren auch für das 1,8" TFT-Schild.
#define TFT_CS 10
#define TFT_RST 9 // Oder auf -1 setzen und mit dem Arduino RESET-Pin verbinden
#define TFT_DC 8
#endif
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
const int buttonPin = 12; // Pin für den Button
int buttonState = 0; // Variable zum Speichern des aktuellen Button-Zustands
int lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup(void) {
Serial.begin(9600);
Serial.print(F("Hello! ST77xx TFT Test"));
tft.initR(INITR_BLACKTAB); // Init ST7735S Chip, Black Tab
Serial.println(F("Initialized"));
tft.fillScreen(ST77XX_BLACK);
mediabutton(); // Funktion aufrufen, um den Button darzustellen
pinMode(buttonPin, INPUT); // Button-Pin als Eingang konfigurieren
Serial.println("done");
delay(1000);
}
void loop() {
int reading = digitalRead(buttonPin); // Button-Zustand lesen
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
tft.fillRect(60, 40, 80, 40, ST77XX_GREEN); // Bereich grün füllen, um "HIGH" anzuzeigen
tft.setCursor(65, 55);
tft.setTextColor(ST77XX_BLACK);
tft.setTextSize(2);
tft.print("HIGH");
} else {
tft.fillRect(60, 40, 80, 40, ST77XX_RED); // Bereich rot füllen, um "LOW" anzuzeigen
tft.setCursor(70, 55);
tft.setTextColor(ST77XX_BLACK);
tft.setTextSize(2);
tft.print("LOW");
}
}
}
lastButtonState = reading;
delay(50); // Kleine Verzögerung für Stabilität
}
void mediabutton() {
// Button
tft.fillRoundRect(60, 10, 80, 30, 8, ST77XX_WHITE); // Button-Hintergrund zeichnen
tft.setCursor(70, 20);
tft.setTextColor(ST77XX_BLACK);
tft.setTextSize(1);
tft.print("Button");
}