Go Down

Topic: Aiuto con touch sceen per nintendoDS (Read 2601 times) previous topic - next topic

ratto93

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...
Se corri veloce come un fulmine, ti schianterai come un tuono.

Stilgar

Fai la lettura X,Y in 2 letture distinte?
Come è collegato?

ratto93

questo è il collegamento l'ho preso da un sito: http://www.practicalarduino.com/projects/touch-control-panel
non cè verso che vada ho provato anche con delle resistenze di pull down ma nulla... i valori cambiano in continuazione
Se corri veloce come un fulmine, ti schianterai come un tuono.

uwefed

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

ratto93

è appunto ciò che ho fatto il codice è il seguente:
Code: [Select]

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);
}
Se corri veloce come un fulmine, ti schianterai come un tuono.

Stilgar

Hai provato questo?

https://github.com/practicalarduino/TouchControlPanel/blob/master/TouchControlPanel.pde

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?

uwefed

Il codice mi sembra giusto.
Ciao Uwe

Stilgar

http://kalshagar.wikispaces.com/Arduino+and+a+Nintendo+DS+touch+screen

Vedi se qui trovi le risposte che ti servivano ;)

ratto93

Si l'ho provato....
i valori cambiano anche se non cè il contatto sulla parte sensibile.....
si su google non cè un piffero.....
Se corri veloce come un fulmine, ti schianterai come un tuono.

Stilgar

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 ;)

ratto93


http://kalshagar.wikispaces.com/Arduino+and+a+Nintendo+DS+touch+screen

Vedi se qui trovi le risposte che ti servivano ;)

non va neanche così...... che p**** oggi non sarà giornata...
Se corri veloce come un fulmine, ti schianterai come un tuono.

uwefed

penso che devi mettere una resistenza di pullup sul canale che legge la tensione: controllo meglio.
Ciao Uwe

Stilgar

Ratto,
appena fatto ;)
Ora (senza toccare nulla) è inchiodato a 0.
Code: [Select]


// 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

ratto93

Se corri veloce come un fulmine, ti schianterai come un tuono.

uwefed

Ma, misurando con un tester i pin del Touchscreen cosa misuri (senza aver collegato niente esenza toccare lo scermo tattile?
Ciao Uwe

Go Up