Controllo touch screen resistivo 4 fili

Salve a tutti.
Ho pensato di scorporare un po' il mio vecchio post per semplificare un po' le cose e affrontarne una alla volta, visto che nessuno ha potuto aiutarmi prima..forse affrontando un pezzo alla volta riusciamo a cavare un ragno dal buco!

Ho utilizzato uno schermo touch resistivo a 4 fili, collegati nelle porte analogiche da 0 a 3 ho collegato una presa MIDI come segue: pin 2 a GND, pin 4 a +5V con resistenza da 220 ohm e pin 5 all'uscita seriale TX (pin digitale 1 di ardu).

Ho scritto il seguente codice, prendendo spunto qua e la da vari post sul forum, il 95% del codice mi è chiaro, ma ho qualche dubbio:

#define xLow  14 //vado a definire le i pin dello schermo
#define xHigh 16
#define yLow  17
#define yHigh 15
 
void setup(){
  Serial.begin(31250);  //avvio la trasmissione seriale a 31250 perché comunico via protocollo midi
}
 
void loop(){
  
  pinMode(xLow,OUTPUT);  //parte 1, preparo i pin alla lettura del valore di resistenza del touch screen sull'asse X
  pinMode(xHigh,OUTPUT);
  digitalWrite(xLow,LOW);
  digitalWrite(xHigh,HIGH);
 
  digitalWrite(yLow,LOW);
  digitalWrite(yHigh,LOW);
 
  pinMode(yLow,INPUT);
  pinMode(yHigh,INPUT);
  delay(10);                      // fine parte 1 
 
  //xLow has analog port -14 !!
  int x=analogRead(yLow -14);  //vado a leggere il valore dell'asse x 

  //[color=red]qui non capisco benissimo la parte tra parentesi (yLow-14) ..delucidazioni??[/color]
 
  pinMode(yLow,OUTPUT);  //parte 2, come sopra ma per la y
  pinMode(yHigh,OUTPUT);
  digitalWrite(yLow,LOW);
  digitalWrite(yHigh,HIGH);
 
  digitalWrite(xLow,LOW);
  digitalWrite(xHigh,LOW);
 
  pinMode(xLow,INPUT);
  pinMode(xHigh,INPUT);
  delay(10);
 
  //xLow has analog port -14 !!
  int y=analogRead(xLow - 14); //come sopra l'istruzione tra parentesi non mi è chiarissima, il resto si
  
  /*Serial.print(x, DEC);  
  Serial.print(',');
  Serial.println(y, DEC);
  delay(200);*/                  //questa parte è per il debug..e quindi è disattivata, per usarla c'è da cambiare la velocità della seriale
 
 if (0 < x < 1023 and  0 < y < 1023) {    //qui definisco la condizione per cui il pad è toccato..ed iniziano i problemi
 
               midiCC(0xB0,92,127); //questo comando, preso dal manuale del device midi, invia il segnale di on al pad
 
                int midix = map(x,0,1023,0,127);  // mappa il valore dell'asse x e lo converte in midi 0->127
                midiCC(0xB0, 12, midix);  // manda il segnale di control change, anche qui da manuale (questa parte funziona)
                  
                int midiy = map(y,0,1023,0,127);  // come sopra ma per la y
                midiCC(0xB0, 13, midiy);  // come sopra
               
 }
 else {
               midiCC(0xB0,92,0); //qui quando il pad non è toccato dovrebbe mandare il segnale di off al device e smettere di leggere le coordinate...ma questo non va!
 }
delay(200);

}

void midiCC(char command, char value1, char value2) {  //questa funzione manda il segnale midi
  Serial.write(command);
  Serial.write(value1);
  Serial.write(value2);
}

Il problemi è il seguente:

le coordinate sul touch vengono lette bene, ma quando rilascio il touch, mi continua a mandare un segnale in basso a sx (suppongo sia la posizione x=0 y=0 o giù di li..fatto sta che non mi spegne la lettura dal touch come dovrebbe fare con il comando midiCC(0xB0,92,0)

Diamo per scontato che i fili siano attaccati bene...e presupponendo che i canali midi e i comandi midi li ho presi dal manuale..dove diavolo sbaglio?
Heeelp!

Edit: potrebbe essere utile eseguire nel void setup una serie di letture sugli assi x ed y e sottrarre la media al valore letto nella void loop per eliminare eventuale "rumore di fondo" del touch? Eseguire una sorta di "lettura del bianco" (sono un chimico, per cui parlo da chimico..non so come si esprima lo stesso concetto da elettronico) da sottrarre alla lettura per azzerarla e liberare da interferenze la condizione di accensione?

Ho modificato sostanzialmente il post, per cui uppo, spero di non infrangere il regolamento, nel caso mi scuso

Altro aggiornamento, scusate il monologo, ma quando faccio dei passi in avanti li condivido, faccio bene?

Ho capito la parte di codice che non capivo..o almeno credo, per cui spiego:

 //xLow has analog port -14 !!
  int x=analogRead(yLow -14);  //vado a leggere il valore dell'asse x

Il punto è che qui è sbagliato andarlo a leggere così, e forse è questo uno dei problemi del programma, in quanto la lettura viene fatta secondo questo principio:

Lettura coordinate x:

Pin schermo Pin Arduino pinMode state
xLow -- Right A0 OUTPUT LOW
xHigh -- Left A1 OUTPUT HIGH
yLow -- Bottom A2 INPUT
yHigh -- Top A3 INPUT
int x1 = analogRead(A2);
int x2 = analogRead(A3);

unsigned int x = x1 - x2;

ok, ora utilizzando una unsigned int, è come se utilizzassi il valore assoluto giusto?

ovviamente ripeto il medesimo procedimento per y, nel programma precedente veniva sottratta in entrambi i casi la variabile xLow, ma essendo impostata come output ed essendo LOW mi andava a destabilizzare la lettura??

Può essere utile mettere delle resistenze da 220ohm per dire tra i pin del touch screen e il ground? in teoria dovrebbero stabilizzarmi la lettura..o me la vanno a disturbare?

Aiuto!!!