Hallo,
heute probiere ich mal die Code Funktion oben links aus. Ich hoffe dass sich dadurch der Sketch gut hier einbinden lässt.
Also: ich habe mir heute etwas Zeit genommen und habe diesen simplen Sketch erstellt, der einen Ausgang (38) über einen Push-Button im TS aktiviert.
Vielleicht kann ich damit ja jemanden den Einstieg in die TFT und TS Welt erleichtern?
VG
Klaus
//Touchscreen simple Test
//Schaltet Digitalausgang 38 über einen TS Button EIN und AUS
#include <Elegoo_GFX.h> // Core graphics library
#include <Elegoo_TFTLCD.h> // Hardware-specific library
#include <TouchScreen.h> //Touchscreen libary
#define YP A3 // must be an analog pin, use "An" notation!
#define XM A2 // must be an analog pin, use "An" notation!
#define YM 9 // can be a digital pin
#define XP 8 // can be a digital pin
#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
// optional
#define LCD_RESET A4
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
#define MINPRESSURE 10
#define MAXPRESSURE 1000
#define Schaltausgang 38
int tsx=0; //TS Umrechnungs Positionen Achsen x , y müssen
int tsy=0; //gedreht werden.
bool Schaltmerker=false; //Schaltmerker Ein-Aus
void setup() {
pinMode (Schaltausgang, OUTPUT);
tft.reset(); //reset
uint16_t identifier = tft.readID();
identifier=0x9341;
tft.begin(identifier);
tft.setRotation(3); //Rotation TFT 0 bis 3
tft.fillScreen(BLACK); //Hintergrundfarbe
//Bildschirmaufbau
tft.setCursor(0, 0); //Cursor in Grundposition
tft.fillScreen(BLACK); //Bildschirm löschen
tft.setTextColor(BLUE); tft.setTextSize(3);
tft.print(" Simple Switch");
tft.fillCircle(160,160,45,BLUE);
tft.fillCircle(160,160,25,RED);
tft.drawCircle(160,160,46,BLUE);
tft.drawCircle(160,160,49,RED);
}
void loop() {
digitalWrite(13, HIGH);
TSPoint p = ts.getPoint();
digitalWrite(13, LOW);
pinMode(XM, OUTPUT);
pinMode(YP, OUTPUT);
tsx = map(p.y, TS_MINY, TS_MAXY, 0, tft.width()); //Skalierung wichtig für
tsy = map(p.x, TS_MINX, TS_MAXX, 0, tft.height()); //Rotation TFT
if ((p.z > MINPRESSURE) && (p.z < MAXPRESSURE) && (tsx > 140) && (tsx < 180) && (tsy > 140) && (tsy < 180) && (Schaltmerker==false))
{
digitalWrite (Schaltausgang, HIGH); //Schaltquadrat wird definiert mit Druck auf Display und Schaltmerker
tft.fillCircle(160,160,25,YELLOW);
Schaltmerker=true;
tsx=0; //tsx u tsy reset
tsy=0;
delay (300); //Entprellzeit
}
if ((p.z > MINPRESSURE) && (p.z < MAXPRESSURE) && (tsx > 140) && (tsx < 180) && (tsy > 140) &&(tsy < 180) && (Schaltmerker==true))
{
digitalWrite (Schaltausgang, LOW);
tft.fillCircle(160,160,25,RED);
Schaltmerker=false;
tsx=0;
tsy=0;
delay (300);
}
}