Hallo
Ich habe heute ein kleines (2.8") display von Adafruit bekommen.
Aber ich kann leider die Touch funktion nicht zum laufen bringen.
Ich habe den Original sketch von adafruit genommen und auf das was ich brauche geändert.
Dabei habe ich wohl etwas viel geändert ich komm aber nicht dahinter was !
Kann da mal einer drüber gucken und mir sagen wo ich den bock geschossen habe
#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_ILI9341.h>
#include <Adafruit_STMPE610.h>
// calibrierung des Displays
#define TS_MINX 20
#define TS_MINY 20
#define TS_MAXX 300
#define TS_MAXY 220
#define STMPE_CS 8
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
#define TFT_CS 10
#define TFT_DC 9
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
#define button1_X 20
#define button1_Y 20
#define button1_W 280
#define button1_H 40
#define button2_X 20
#define button2_Y 68
#define button2_W 280
#define button2_H 40
#define PRINTCOL 0xFFFF
String nummer1 = "01575849321";
String nummer2 = "017736485954";
String nummer3 = "01748573290";
int aktive_nummer = 0;
void setup(void)
{
tft.begin();
tft.fillScreen(ILI9341_BLACK);
// ausrichtung des bildes landscape (USB oben links)
tft.setRotation(1);
// Schriftgrösse auf 3 gesetzt
tft.setTextSize(3);
// Textfarbe setzen
tft.setTextColor(PRINTCOL);
// feiner roter rahmen um das bild
tft.drawRect(10, 10, 300, 220, ILI9341_RED); //von links, von oben, breite, höhe
// Zeichnet den ersten button
// Feiner rahmen um den ersten label mit nummer
tft.drawRect(19, 19, 282, 42, ILI9341_WHITE); //von links, von oben, breite, höhe
// Button 1 den blauen hintergrund ausfüllen
tft.fillRect(20, 20, 280, 40, ILI9341_BLUE); //von links, von oben, breite, höhe
// Cursor zum schreiben setzen
tft.setCursor(30, 30);
// Text von variable nummer1 schreiben
tft.println(nummer1);
// Runden weissen kreis zeichnen
tft.fillCircle(275, 40, 16, ILI9341_WHITE); //von links, von oben, durchmesser
// Runden schwarzen kreis zeichnen
tft.fillCircle(275, 40, 15, ILI9341_BLACK); //von links, von oben, durchmesser
// Zeichnet den zweiten button
// Feiner rahmen um den ersten label mit nummer
tft.drawRect(19, 67, 282, 42, ILI9341_WHITE); //von links, von oben, breite, höhe
// Button 1 den blauen hintergrund ausfüllen
tft.fillRect(20, 68, 280, 40, ILI9341_BLUE); //von links, von oben, breite, höhe
// Cursor zum schreiben setzen
tft.setCursor(30, 78); //von links, von oben
// Text von variable nummer2 schreiben
tft.println(nummer2);
// Runden weissen kreis zeichnen
tft.fillCircle(275, 88, 16, ILI9341_WHITE); //von links, von oben, durchmesser
// Runden roten kreis zeichnen
tft.fillCircle(275, 88, 15, ILI9341_RED); //von links, von oben, durchmesser
}
void loop()
{
// Abfrage ob touch vorliegt
if (!ts.bufferEmpty())
{
TS_Point p = ts.getPoint();
p.x = map(p.x, TS_MINY, TS_MAXY, 0, tft.height());
p.y = map(p.y, TS_MINX, TS_MAXX, 0, tft.width());
int y = tft.height() - p.x;
int x = p.y;
// Der erste button oben
if ((x > button1_X) && (x < (button1_X + button1_W))) {
if ((y > button1_Y) && (y < (button1_Y + button1_H))) {
erste_nummer();
}
}
}
} // Ende loop
void erste_nummer()
{
// Punkt im ersten button grün zeichnen
tft.fillCircle(275, 39, 15, ILI9341_GREEN); // von links, von oben, durchmesser
// Punkt im zweiten button schwarz zeichnen
tft.fillCircle(275, 88, 15, ILI9341_BLACK); // von links, von oben, durchmesser
aktive_nummer = 1;
}