Ho acquistato il vetrino touch del nintendo ds e sto cercando di fare alcune prove partendo da questo tutorial:
http://tronixstuff.com/2010/12/29/tutorial-arduino-and-the-ds-touch-screen/
il codice che utilizzo è il seguente:
int x,y = 0;
void setup()
{
Serial.begin(9600);
}
int readX() // returns the value of the touch screen's X-axis
{
int xr=0;
pinMode(14, INPUT); // A0
pinMode(15, OUTPUT); // A1
pinMode(16, INPUT); // A2
pinMode(17, OUTPUT); // A3
digitalWrite(15, LOW); // set A1 to GND
digitalWrite(17, HIGH); // set A3 as 5V
delay(5); // short delay is required to give the analog pins time to adjust to their new roles
xr=analogRead(0);
return xr;
}
int readY() // returns the value of the touch screen's Y-axis
{
int yr=0;
pinMode(14, OUTPUT); // A0
pinMode(15, INPUT); // A1
pinMode(16, OUTPUT); // A2
pinMode(17, INPUT); // A3
digitalWrite(14, LOW); // set A0 to GND
digitalWrite(16, HIGH); // set A2 as 5V
delay(5); // short delay is required to give the analog pins time to adjust to their new roles
yr=analogRead(1);
return yr;
}
// the next four functions just display a zone label on the LCD
void displayA()
{
Serial.println("A");
}
void displayB()
{
Serial.println("B");
}
void displayC()
{
Serial.println("C");
}
void displayD()
{
Serial.println("D");
}
void loop()
{
// get values from touch screen
x=readX();
y=readY();
// now determine where the touch was located on the screen
if (y>510 && x>520 && x<1000 && y <1000)
{
displayA();
}
else
if (y>510 && x<510)
{
displayB();
}
else
if (y<500 && x>520)
{
displayC();
}
else
if (y<500 && x<510)
{
displayD();
}
else
if (x>1000 && y>1000)
{
}
}
In sostanza il codice intercetta la posizione del dito all'interno dell'area e stampa A, B, C oppure D se il dito si trova nel primo, secondo, terzo o quarto quadrante. Ma caricando lo scratch,
Il risultato è un ripetersi infinito di DACCDADDBAAABCCDDAA ecc... senza neppure toccare lo schermo.
Se invece tocco lo schermo non accade nulla di nuovo ma continua il ripetersi infinito ad ogni riga della stampata A, B, C oppure D casuale.
Ho provato anche a rallentare il loop mettendo un delay 1000 e lasciando il dito sullo schemo non accadeva nulla.
Gli unici collegamenti che ho fatto sono quelli che potete vedere qui:


Ho collegato i pin analogici 0,1,2,3 di arduino ai pin del touch in ordine rispettando le indicazioni che ho trovato sul tutorial indicato e su altri siti.
Non utilizzo altri pin, ne i 5V ne i 3V di arduino.
Secondo voi ho sbagliato qualcosa nella configurazione?