Qualcuno saprebbe aiutarmi sul come usare un touch screeen del nintendo ds volevo suddivederlo in varie aree per utilizzarle poi con bottoni virtuali....
ho il seguente problema non riesco a fare delle letture "normali" i valori letti cambiano in continuazione...
Fai la lettura X,Y in 2 letture distinte?
Come è collegato?
questo è il collegamento l'ho preso da un sito: practicalarduino.com
non cè verso che vada ho provato anche con delle resistenze di pull down ma nulla... i valori cambiano in continuazione
Il touchscriee é composta da 2 pellicole con un rivestimento resistivo e elettrodi, uno a DX e SX e l' altro in alto e in basso e in mezzo dei distanziatori in modo che i 2 rivestimenti resistivi non si toccano.
Devi dare della tensione in una direzione e misurare la tensoine risultante sul altra direzione:
Dai GND a X1 e 5V a X2 (cosí hai un parttore resistivo che va da 0 v a 5V) premendo il Touchscreen la pellicola X fa contatto con la pellicola Y. Leggi la tensione sul asse Y1 e trovi il punto di contatto in asse X.
Ripeti il tutto sul asse Y:
Dai GND a Y1 e 5V a Y2 e leggi la tensione sul X1 e trovi il punto di contatto in asse Y.
Ciao Uwe
è appunto ciò che ho fatto il codice è il seguente:
int xVal = 0;
int yVal = 0;
void setup()
{
Serial.begin(38400);
Serial.println("Starting up touch screen reader");
}
void loop()
{
pinMode( 15, INPUT ); // Analog pin 1
pinMode( 17, INPUT ); // Analog pin 3
pinMode( 14, OUTPUT ); // Analog pin 0
digitalWrite( 14, LOW ); // Use analog pin 0 as a GND connection
pinMode( 16, OUTPUT ); // Analog pin 2
digitalWrite( 16, HIGH ); // Use analog pin 2 as a +5V connection
delay(2); // Wait for voltage to settle
xVal = analogRead( 1 ); // Read the X value
pinMode( 14, INPUT ); // Analog pin 0
pinMode( 16, INPUT ); // Analog pin 2
pinMode( 15, OUTPUT ); // Analog pin 1
digitalWrite( 15, LOW ); // Use analog pin 1 as a GND connection
pinMode( 17, OUTPUT ); // Analog pin 3
digitalWrite( 17, HIGH ); // Use analog pin 3 as a +5V connection
delay(2); // Wait for voltage to settle
yVal = analogRead( 0 ); // Read the Y value
Serial.print(xVal);
Serial.print(",");
Serial.println(yVal);
delay (200);
}
Hai provato questo?
il fatto che i valori cambino ... non mi sembra "male".
Vuol dire che funziona ... no?
A parte le battutacce, leggevo (nel vecchio forum) che se metti delle resistenze di carico (non ricordo come e valore) non hai bisogno di fare la "taratura".
Provato con google?
Il codice mi sembra giusto.
Ciao Uwe
http://kalshagar.wikispaces.com/Arduino+and+a+Nintendo+DS+touch+screen
Vedi se qui trovi le risposte che ti servivano ![]()
Si l'ho provato....
i valori cambiano anche se non cè il contatto sulla parte sensibile.....
si su google non cè un piffero.....
Sto provando il codice.
A me varia continuamente da:
Starting up touch screen reader
468,1003
997,1001
998,1001
996,1001
1002,1001
1000,1001
1001,1001
1002,1000
1002,1001
996,997
996,997
998,998
999,999
342,850
304,848
Effettivamente sbarella ![]()
Stilgar:
http://kalshagar.wikispaces.com/Arduino+and+a+Nintendo+DS+touch+screenVedi se qui trovi le risposte che ti servivano
non va neanche così...... che p**** oggi non sarà giornata...
penso che devi mettere una resistenza di pullup sul canale che legge la tensione: controllo meglio.
Ciao Uwe
Ratto,
appena fatto ![]()
Ora (senza toccare nulla) è inchiodato a 0.
// Taken from http://kousaku-kousaku.blogspot.com/2008/08/arduino_24.html
/*
#define xLow 14
#define xHigh 15
#define yLow 16
#define yHigh 17
*/
//modified to match my sparkfun connector
#define xLow 17
#define xHigh 15
#define yLow 16
#define yHigh 14
void setup(){
Serial.begin(9600);
}
void loop(){
pinMode(xLow,OUTPUT);
pinMode(xHigh,OUTPUT);
digitalWrite(xLow,LOW);
digitalWrite(xHigh,HIGH);
digitalWrite(yLow,LOW);
digitalWrite(yHigh,LOW);
pinMode(yLow,INPUT);
pinMode(yHigh,INPUT);
delay(10);
//xLow has analog port -14 !!
int x=analogRead(yLow -14);
pinMode(yLow,OUTPUT);
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);
Serial.print(x,DEC);
Serial.print(",");
Serial.println(y,DEC);
delay(200);
}
Messe pure le resistenze ![]()
Ora devo scappare a prendere mio figlio.
Alla prox
bah continua a non andarmi...
Ma, misurando con un tester i pin del Touchscreen cosa misuri (senza aver collegato niente esenza toccare lo scermo tattile?
Ciao Uwe
Allora tra X1 e X2: 968 ohm
tra Y1 e Y2: 303 ohm
tra X1 e Y1: ---
tra X2 e Y1: 968 ohm
tra X2 e Y2: ---
http://kalshagar.wikispaces.com/Arduino+and+a+Nintendo+DS+touch+screen
Prova a mettere le resistenze che suggerisce qui ![]()
Usa il suo codice.
Vediamo se ti inizia a funzionare ![]()
ratto93:
Allora tra X1 e X2: 968 ohm
tra Y1 e Y2: 303 ohm
tra X1 e Y1: ---
tra X2 e Y1: 968 ohm
tra X2 e Y2: ---
Qualcosa non quadra.
Senza che tocchi il Touchscreen non dovresti avere una resistenza tra X2 e Y1 oltre se hai una resistenza tra X2 e Y1 dovresti misurare anche qualcosa tra X1 e Y1 e X2 e Y2
Cosa misuri tra X1 e Y2?
Ripeti per favore le misure.
Grazie Ciao Uwe
fatto stessi risutati....
Questo mi lascia perplesso. Mi sá che é rotto.
Non c'é nessuno chene ha uno e che potrebbe controllare la misura?
Ciao Uwe