TFT screen Buttons funktionieren nicht richtig

Zwei Probleme:

  1. Sobald ich den ON button gedrückt habe, kann ich den OFF button nicht mehr betätigen.
  2. Der drawButton Teil wiederholt sich konstant, sodass die Knöpfe flackern, wenn man sie betätigt.
    Würde mich über Hilfe freuen :).

Hier der Code:

#if 1

#include <Adafruit_GFX.h>
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include <TouchScreen.h>
#define MINPRESSURE 200
#define MAXPRESSURE 1000

#include <FastLED.h>
#define LED_PIN 33
#define NUM_LEDS 60
CRGB leds[NUM_LEDS];

const int XP=8,XM=A2,YP=A3,YM=9;
const int TS_LEFT=902,TS_RT=117,TS_TOP=85,TS_BOT=904;

TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
Adafruit_GFX_Button on_btn, off_btn;

int pixel_x, pixel_y;
bool Touch_getXY(void)
{TSPoint p = ts.getPoint();
pinMode(YP, OUTPUT);     
pinMode(XM, OUTPUT);
digitalWrite(YP, HIGH);   
digitalWrite(XM, HIGH);
bool pressed = (p.z > MINPRESSURE && p.z < MAXPRESSURE);
if (pressed) 
{pixel_x = map(p.x, TS_LEFT, TS_RT, 0, tft.width()); 
 pixel_y = map(p.y, TS_TOP, TS_BOT, 0, tft.height());}
return pressed;}

#define BLACK     0x0000
#define BLUE      0x001F
#define LIGHTBLUE 0x055F
#define RED       0xF800
#define GREEN     0x07E0
#define CYAN      0x07FF
#define MAGENTA   0xF81F
#define YELLOW    0xFFE0
#define WHITE     0xFFFF
#define HOTPINK   0xF810
#define ORANGE    0xFB00
#define GOLD      0xD585

int Analoganschluss=A7;
int y=0;

void setup(void)
{LEDS.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(64);
Serial.begin(9600);
uint16_t ID = tft.readID();
if (ID == 0xD3D3) ID = 0x9486; 
tft.begin(ID);
tft.setRotation(0);            
tft.fillScreen(BLACK);
on_btn.initButton(&tft,  120, 140, 130, 70, ORANGE, BLACK, WHITE, "ON", 4);
off_btn.initButton(&tft, 120, 240, 130, 70, ORANGE, BLACK, WHITE, "OFF", 4);
on_btn.drawButton(false);
off_btn.drawButton(false);
tft.setCursor(30,20);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("Sensorwert:");}

void loop(void)
{int Sensorwert=analogRead(Analoganschluss);
tft.setCursor(110,55);
tft.setTextColor(ORANGE,BLACK);
tft.setTextSize(2);
tft.print(Sensorwert);

if(Sensorwert<250)
{if(on_btn.justPressed())
{on_btn.drawButton(true);
for(int i=0;i<61;i++)
leds[i] = CRGB(255,0,0);
FastLED.show();return;}
{for(int i=0;i<61;i++)
leds[i] = CRGB(0,255,0);
FastLED.show();}}

else
{if(on_btn.justPressed())
{on_btn.drawButton(true);
for(int i=0;i<61;i++)
leds[i] = CRGB(0,0,0);
FastLED.show();return;}
{for(int i=0;i<61;i++)
leds[i] = CRGB(0,0,0);
FastLED.show();}}

bool down = Touch_getXY();
on_btn.press(down && on_btn.contains(pixel_x, pixel_y));
off_btn.press(down && off_btn.contains(pixel_x, pixel_y));}

#endif

Dein Sketch ist fast nicht zu lesen. In einem Mobilgerät überhaupt nicht.
Setze den bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken, oder [code] davor und [/code] dahinter ohne *.

Und achte bitte darauf, dass der Sketch richtig formatiert (STRG + T) in der IDE vorher drücken.

Damit wird dieser für alle besser lesbar.

Und poste bitte Hyperlinks deiner verwendeten Module sowie ein Schaltbild, wie du alles angeschlossen hast.

Zehner

Wie meinen?

Sofern von Dir nicht mehr kommt, wirst Du hier recht einsam bleiben, befürchte ich.

MfG

Es fehlen noch Antworten bzw. Informationen von dir. Ohne die keine Hilfe.