Rotazione touchscreen

Ciao a tutti, ho acquistato un tft touch da 3.5" che mi è arrivato con annesso cd con esempi da compilare ed usare.
Ho fatto delle prove, e tutto va per il meglio, almeno per quel che lo devo usare io, solo che ho provato a modificate il file originale che ho allegato, con la rotazione dello schermo di 90°. La parte grafica va bene, ma non capisco perchè non funzioni appropriatamente la parte touch, funzionare, funziona, ma non "preme" i tasti giusti.
Le mie modifiche sono relativa :

  • ho modificato l'array bidimensionale con i nomi dei tasti;
char buttonlabels[15][5] = {"Func","1","2","3","<","Back","4","5","6","0","Ent","7","8","9",">" };
  • ho invertito il numero di righe e colonne
/tft.setRotation(1);
  tft.fillScreen(BLACK);
  
  // create buttons
  for (uint8_t row=0; row<3; row++) {
    for (uint8_t col=0; col<5; col++) {
      buttons[col + row*5].initButton(&tft, BUTTON_X+col*(BUTTON_W+BUTTON_SPACING_X), 
                 BUTTON_Y+row*(BUTTON_H+BUTTON_SPACING_Y),    // x, y, w, h, outline, fill, text
                  BUTTON_W, BUTTON_H, WHITE, buttoncolors[row+col*3], WHITE,
                  buttonlabels[col + row*5], BUTTON_TEXTSIZE); 
      buttons[col + row*5].drawButton();
    }
  }

Devo invertire la parte TSPoint? Se si, come?
Grazie.

phonecal.ino (10.4 KB)

Il touch screen è fatto da una parte output (il display) e una parte input (la membrana touch).
Se ruoti una devi ruotare anche l'altra...

Grazie per la risposta.Non saprei come fare ,devo per caso invertire X e Y nel costruttore

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

???

Aggiungo una cosa, il valore 300 ho letti essere la resistenza che ci dovrebbe essere tra due poli,quali e si misura col multimetro come?

Grazie ancora.