LCD 3.95 TouchScreen

Salve a tutti sto facendo alcuni test con la mia scheda arduino uno e un lcd touchscreen 3.95 con driver ILI9488.
Il mio primo test è che alla pressione dello schermo sul mio lcd compaia una scritta.
Il codice che ho utilizzato è il seguente:

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_TFTLCD.h> // Hardware-specific library
#include <TouchScreen.h>

#if defined(__SAM3X8E__)
    #undef __FlashStringHelper::F(string_literal)
    #define F(string_literal) string_literal
#endif

#define YP A1  // must be an analog pin, use "An" notation!
#define XM A2  // must be an analog pin, use "An" notation!
#define YM 7   // can be a digital pin
#define XP 6   // can be a digital pin

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

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

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
#define BOXSIZE 40

#define MINPRESSURE 350
#define MAXPRESSURE 1000

TSPoint p;

void setup() {
    Serial.begin(9600);
    tft.reset();
    uint16_t identifier = tft.readID();
    tft.begin(identifier);
    tft.setRotation(1);
    tft.fillScreen(BLUE);
    tft.setTextSize(3);
    tft.setCursor(10,10);
    tft.println("Mio primo test");
    tft.println(tft.height());
    tft.println(tft.width());
    tft.fillRect(0, 320-BOXSIZE, BOXSIZE, BOXSIZE, WHITE);
    tft.fillRect(480-BOXSIZE, 320-BOXSIZE, BOXSIZE, BOXSIZE, RED);
    delay(3000);

}

void loop() {
  p = ts.getPoint();


if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
     tft.setTextSize(3);
     tft.setCursor(0,0);
     tft.println("OKKKKK");
       
   }

}

Ho compilato il codice senza errori.

il problema è che non funziona quando tocco sullo schermo o non succede niente (più che non succede niente sembra un piccolo refresh riportando lo schermo alla situazione iniziale) o lo schermo diventa tutto bianco, oppure senza che venga modificato il testo sullo schermo cambia il colore di sfondo.

Questo però accade se tocco un particolare punto centrale dello schermo.

Da cosa può dipendere questo problema?
Ho provato varie modifiche al codice ed ho provato varie librerie, tra cui ho fatto molta fatica a trovare la libreria per il driver ILI9488.

Avete qualche suggerimento da darmi.

Ho provato a caricare sulla scheda il programma di esempio tftpaint e sembra funzionare bene se non per il fatto spostandomi sul lato destro c'è un offset elevato nel disegno. Infatti se tocco sullo schermo al lato estremo sinistro mi disegna a quasi un centimetro verso destra....

Può essere qualche pin invertito??? qualche configurazione errata?

Ho fatto dei test con il monitor seriale per vedere se il touch fosse difettoso ma sembra funzionare bene. In base a dove tocco mi restituisce le coordinate giuste.

Vi ringrazio per il vostro aiuto.

Ho individuato il problema.

L'errore sta nel fatto che avevo dimenticato di dichiarare queste uscite

pinMode(XM, OUTPUT); pinMode(YP, OUTPUT);

Comunque grazie lo stesso.