Was kann ich dagegen tun das es nicht in dieser Zeile kein Fehler auftretet bitte mir helfen

So was gibt es in keiner Lib :wink: da hat sich der super du.... ChatGPT was ausgedacht, die KI muss noch sehr viel lernen.
Die Adafruit_ILI9341 kennt von sich nur die Farben

// Color definitions
#define ILI9341_BLACK 0x0000       ///<   0,   0,   0
#define ILI9341_NAVY 0x000F        ///<   0,   0, 123
#define ILI9341_DARKGREEN 0x03E0   ///<   0, 125,   0
#define ILI9341_DARKCYAN 0x03EF    ///<   0, 125, 123
#define ILI9341_MAROON 0x7800      ///< 123,   0,   0
#define ILI9341_PURPLE 0x780F      ///< 123,   0, 123
#define ILI9341_OLIVE 0x7BE0       ///< 123, 125,   0
#define ILI9341_LIGHTGREY 0xC618   ///< 198, 195, 198
#define ILI9341_DARKGREY 0x7BEF    ///< 123, 125, 123
#define ILI9341_BLUE 0x001F        ///<   0,   0, 255
#define ILI9341_GREEN 0x07E0       ///<   0, 255,   0
#define ILI9341_CYAN 0x07FF        ///<   0, 255, 255
#define ILI9341_RED 0xF800         ///< 255,   0,   0
#define ILI9341_MAGENTA 0xF81F     ///< 255,   0, 255
#define ILI9341_YELLOW 0xFFE0      ///< 255, 255,   0
#define ILI9341_WHITE 0xFFFF       ///< 255, 255, 255
#define ILI9341_ORANGE 0xFD20      ///< 255, 165,   0
#define ILI9341_GREENYELLOW 0xAFE5 ///< 173, 255,  41
#define ILI9341_PINK 0xFC18        ///< 255, 130, 198

/

Keine COLOR_HIGHLIGHT usw. also es wird niemals funktionieren, tja das was.
Man kann aber noch andere definieren, wen die Auswahl zu klein ist

1 Like

Ich probiere es morgen aus.

Das mit den Menü kann man übernehmen nur muss Passen zu der Lib = ein wenig umschreiben, ich meine den gleichen Kramm habe ich schon hier im Forum gesehen

chatGPT ist ein Wahrscheinlichkeits-Rechner.
Der Name chatGPT ist gut gewählt. Chatten halt. BlaBla reden das sich nach .... anhört.

Für "schreibe mir eine herzerweichende Weihnachtsgruße-Karte für Oma" funktioniert das.
Weil es da nicht auf jeden Buchstaben und jedes Wort ankommt.

Beim Programmieren hängt es davon ab ob ChatGPT eine Wahrscheinlichkeit von 100%
= ob chatGPT eine 1 zu 1 Vorlage findet
oder nicht.
Wenn die Wahrscheinlichkeit auch nur auf 99,9% absinkt
oder der Fragesteller die Anweisungen zum Code-erstellen zu unpräzise schreibt
dann sieht es zwar nach Code aus funktioniert aber nicht mehr.

Die präzise Funktionsbeschreibung kann man nur dann schreiben wenn man
selbst programmieren kann.
==> Schlussfolgerung
Das klassische googeln nach Stichworten hat eine höhere Erfolg-Chance als chatGPT-Geschnatter

vgs

 if (x > 50 && x < 200) {
    if (y > 100 && y < 130) {
      currentOption = OPTION_1;
    } else if (y > 150 && y < 180) {
      currentOption = OPTION_2;
    } else if (y > 200 && y < 230) {
      currentOption = OPTION_3;
    }

ist auch nicht schön, zeichne mal auf wie das Menü soll aussehen. und teste mit welcher Lib dein Display funktioniert, erst danach kann man was bauen.
vor einiger zeit habe mit Menü rumgespielt, und damit das Display nicht flackert wurde viel im Setup vorbereitet zB. Beschriftung der Menü Zeile usw.

Ps. das

handleTouch(int16_t x, int16_t y)

gibt es nicht , wenigstens bei den Touch Lib's was ich kenne :wink:

#include <Adafruit_GFX.h>
#include <MCUFRIEND_kbv.h>
#include <TouchScreen.h>

// Pins für das TFT-Display
#define TFT_CLK 13
#define TFT_MISO 12
#define TFT_MOSI 11
#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST 8

// Pins für den Touchscreen
#define TS_XP A2
#define TS_YP A3
#define TS_XN A1
#define TS_YN A0

// Kalibrierungswerte für den Touchscreen
#define TS_MINX 0
#define TS_MINY 0
#define TS_MAXX 240
#define TS_MAXY 320

// Farben
#define BLACK       0x0000
#define WHITE       0xFFFF
#define RED         0xF800
#define GREEN       0x07E0
#define BLUE        0x001F
#define YELLOW      0xFFE0
#define CYAN        0x07FF
#define MAGENTA     0xF81F

// Erstelle ein Objekt für das Display
MCUFRIEND_kbv tft;

// Erstelle ein Objekt für den Touchscreen
TouchScreen ts = TouchScreen(TS_XP, TS_YP, TS_XN, TS_YN, 300);

void setup() {
  // Initialisiere das TFT-Display
  tft.begin(0x9341);  // Passende Display-Treiber-Initialisierung verwenden
  tft.setRotation(3);
  tft.fillScreen(BLACK);  // Setze den Hintergrund auf Schwarz

  calibrateTouchScreen();  // Kalibriere den Touchscreen
}

void loop() {
  // Hier kannst du den Touchscreen auslesen und entsprechend reagieren
}

void calibrateTouchScreen() {
  // Zeige eine Anleitung zur Berührung der Ecken
  tft.fillScreen(BLACK);
  tft.setTextColor(WHITE);
  tft.setTextSize(2);
  tft.setCursor(10, 10);
  tft.println("Kalibriere den Touchscreen");
  tft.println("Berühre die roten Kreise nacheinander");
  tft.println("in der Reihenfolge: oben links, oben rechts,");
  tft.println("unten rechts, unten links");

  // Koordinaten der Kalibrierungspunkte
  int calibrationPoints[4][2] = {
    {10, 10},     // Oben links
    {tft.width() - 10, 10},  // Oben rechts
    {tft.width() - 10, tft.height() - 10},  // Unten rechts
    {10, tft.height() - 10}   // Unten links
  };

  // Kalibriere den Touchscreen für jeden Kalibrierungspunkt
  for (int i = 0; i < 4; i++) {
    tft.fillCircle(calibrationPoints[i][0], calibrationPoints[i][1], 5, RED);

    // Warte, bis der Bildschirm berührt wird
    TSPoint p;
    while (!touched(p)) {}

    // Speichere die Berührungsdaten für die Kalibrierung
    if (i == 0) {
    TS_MINX = p.x;
    TS_MINY = p.y;
   } else if (i == 3) {
    TS_MAXX = p.x;
    **TS_MAXY = p.y;**
  }


    // Lösche den roten Kreis
    tft.fillCircle(calibrationPoints[i][0], calibrationPoints[i][1], 5, BLACK);
  }

  // Zeige die Kalibrierungswerte an
  tft.fillScreen(BLACK);
  tft.setTextColor(WHITE);
  tft.setTextSize(2);
  tft.setCursor(10, 10);
  tft.print("Kalibrierung abgeschlossen");
  tft.setCursor(10, 40);
  tft.print("TS_MINX = ");
  tft.println(TS_MINX);
  tft.setCursor(10, 70);
  tft.print("TS_MINY = ");
  tft.println(TS_MINY);
  tft.setCursor(10, 100);
  tft.print("TS_MAXX = ");
  tft.println(TS_MAXX);
  tft.setCursor(10, 130);
  tft.print("TS_MAXY = ");
  tft.println(TS_MAXY);
  delay(3000);
}

bool touched(TSPoint &p) {
  // Lies die Berührungsdaten des Touchscreens
  p = ts.getPoint();
  pinMode(TS_XP, OUTPUT);
  pinMode(TS_YP, OUTPUT);

  // Überprüfe, ob der Touchscreen gültige Berührungsdaten liefert
  if (p.z > 0 && p.z < 1000) {
    // Konvertiere die X- und Y-Koordinaten
    p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
    p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
    return true;
  }

  return false;
}

Es ist mit Sternchen markiert

Warum bleibst du nicht beim alten Thread?
https://forum.arduino.cc/t/was-kann-ich-dagegen-tun-das-es-nicht-in-dieser-zeile-kein-fehler-auftretet-bitte-mir-helfen

1 Like

Gehe ich fälschlicher Weise davon aus, das in diesem Teil des Forum deutsch gesprochen wird?
Und @Plumps hat es bereits auf den Punkt gebracht.

1 Like

Wissen Sie zufällig den Code dawo ich markiert habe ? :thinking:

Wo du mit ** markiert hast, bzw. schon kurz vorher,
TS_MINX = p.x;
passt nicht zu

Den Fehler kriegst du z.B. weg, wenn du aus den #define Variablendefinitionen machst.
int TS_MINX=0;
usw.

Ob das tut was du willst, ist eine andere Frage.

Schreien/drängeln hilft dir nicht aufs Pferd!

Die Sprache lernen, welche man da verwendet, dagegen schon.
Ich rate zu einem der, schönen, dicken und modernen, C++ Grundlagenbücher.

  1. Es ist mit Sternchen markiert Wo? Oder bin ich blind?
    Die Kalibrierungswerte sind niemals 0, 0, 240, 320, eher 663,-13,894,-30
    Starte den Sketch schreibe die werte ab und trage ein, dir wird doch alles ausgegeben
    aber nur wen das Display funktioniert. :wink:

  2. Ein SPI Display hat kein Touch mit der Pinbelegung

  1. MCUFRIEND_kbv bedient nicht SPI Displays, oder hast du mittlerweile 2 Displays?

Ohne Antworten auf fragen wird nix.

Der Code ist komplett zusammenkopiert - darum geht der ja auch nich. Nu soll geraten werden. Das kann ChatGPT aber besser :slight_smile:

1 Like

Das sehe ich auch, gerade bei Displays :wink:
So resistent wie der, die TO ist war schon lange hier Niemand.
Scheint aber zu sein das Der, Die aufgegeben hat oder will nur Trollen

Hallo,

dir fehlt die Klasse TSPoint. Du erstellst mit dem Datentyp TSPoint eine Instanz p. Der Compiler sagt dir das er den Datentyp TSPoint nicht kennt.
Und diese Zuweisungen sind generell Unsinn.

TS_MINX = p.x;
TS_MINY = p.y;
TS_MAXX = p.x;
TS_MAXY = p.y;

Die defines sind praktisch Konstanten, sie legen die Auflösung fest, warum soll man diese überschreiben wollen. Tipp. Die Libs bringen bestimmt Beispiele mit. Die solltest du durchgehen.

Hallo, etwas OT
man sollte KI erweitern auf BKI,
Begrenzte Künstliche Intelligenz.

oder man lässt es bei bei KI dann aber
Künstlerische Intelligenz

Ich weiß es auch nicht , als die Dampfmaschine erfunden wurde vertrat man auch die Meinung , "Was soll das es gibt doch Pferde". Und dennoch, man nutzt auch keine Dampfmaschine um auf den Mond zu kommen. Wir sind am Anfang einer neuen Technologie, die vermutlich irgendwann unseren Kopf ersetzt. Hoffentlich geht es gut.
Heinz

KI kann schon viel, aber ChatGPT wurde nicht als KI nennen, das ist falsch
@StefanL38 in #26 hat vollkommen recht mit :
"Der Name chatGPT ist gut gewählt. Chatten halt. BlaBla reden das sich nach .... anhört."

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.