"Bitte um Hilfe" Touch Display Button der einen Ausgang schaltet

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

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Oh Verzeihung dann habe ich mich verklickt. Danke!

Willkommen im Forum :wink:
Stell mal alles in Code tags, so kann man das nicht kopieren.

wie geht das?

In der IDE für Forum kopieren hier im Fenster einfügen.
Oder in der IDE strg + A drücken, danach strg +C . und hier mit strg+V einfügen.

 #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");
}

Habe für dich gemacht :wink:
Funktioniert das Display?
Was für ESP wird benutzt?

Funktioniert leider nicht das Programm. Was ist ESP?

der Output geht leider nicht auf high

@fony will wissen, ob du einen Arduino oder ein Board mit Controller vom Typ ESP8266 bzw. ESP32 verwendest.
Link zum Board, Schaltplan wie du es verdrahtet hast (Bleistiftzeichnung reicht) und ein Foto vom Aufbau wären hilfreich.

Welscher?
Ich sehe kein definierten Output Pin.
Das gefundene Demo wird nie tun was do möchtest.

Der Touch kann nicht funktionieren den der ist gar nicht im Sketch eingebunden.
Zeige bitte die Rückseite vom Display, so das man die Pin Bezeichnung sehen, lesen kann.

Hallo, wenn du hier schreibst, du möchtest einen Arduino programmieren, warum zeigst du uns die Anschaltung an einen Raspi ?
Der "Arduino" bzw. kompatible und ein Raspi sind völlig unterschiedliche Controller. Da solltest du auch mal genauere Angaben machen.
Was wir dazu brauchen wurde dir ja schon mehrfach geschrieben. Und sollte dir da noch etwas unklar sein, dann frage doch einfach nach.

Fakt ist jedenfalls, wenn man einfach irgend ein Programm aus dem Web nimmt, ohne genau zu Wissen, was das macht, kann es nicht funktionieren. Und auch dabei kann dir ChatGPT (KI = keine Intelligenz) nicht helfen.

Ist allgemein für alle ESP habe den Sketch getestet.

Wenn du willst kann ich dir helfen, musst aber antworten und bereit sein das was ich schreibe testen.
Normalerweise habe zeit zum rumspielen ab ca. 18h.

Das ändet nichts an der Tatsache, dass da ein Raspi gezeigt wird.
Vermute @technologie16 kennt den Unterschied nicht, zumal er dabei geschrieben hat, so ist das Display angeschlossen.
Und auch wenn ihm alles vorgekaut wird, lernt er es nicht.

Verwechselst Du möglicherweise "ESP" mit "µC"? In der Anleitung ist auch ein UNO abgebildet, das ist kein "ESP".

Auch Deine Frage in #7 hatte mich schon dahingehend irritiert :slightly_smiling_face:

Aus der TFT-Datei:

Och du Armer :wink:
Jedoch hat der TO auf keine Frage reagiert.
Wo möglich war schon zu spät, ist mir auch egal.
Habe nur nach ESP gefragt nach dem ich den Sketch getestet habe!

Das wäre sehr nett von dir. Ich kann dir heute nach der Arbeit alle Infos geben die du benötigst. Dann werde ich wohl ein neues Programm schreiben. Nur ich habe davon leider keine Ahnung vllt kannst du mir ja das erklären. Ich benutze aber einen Arduino Nano schon mal vorweg.

Und deswegen musst du auch alle anderen Fragen nicht beantworten.

Ok hast du auch die zwei Teile ? sonst machst das Display kaputt