Go Down

Topic: Arduino+Nunchuck+Nunchucky (Read 2672 times) previous topic - next topic

lesto

devi vedere se le freccie son giuste o sono al contrario, a parte quello qualsiasi va bene
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

f.schiano

Si. LE frecce sono cosi' perche' ho provato.. Casomai rilevo qualche cambiamento ti faccio sapere :)

A domani (in quanto oggi purtroppo non ho avuto proprio tempo)
L'impossibile...richiede solo piu' tempo!

f.schiano

#32
Feb 18, 2012, 03:09 pm Last Edit: Feb 18, 2012, 03:40 pm by f.schiano Reason: 1


Partiamo dal fatto che prima di tutto devi trovare lo 0G la 1G, si fa così:
asse Z verso il basso: z=0G+1G, x=0G e y=0G
asse X verso il basso: z=0G, x=0G+1G e y=0G
asse Y verso il basso: z=0G, x=0G e y=0G+1G



Lesto per fare cio' devo, da software impostare tutti i valori uguali? Cioe':
Code: [Select]
 
   
  n=(buf[2]<<2)+((buf[5]>>2)&3)-500;  // accel X
  Serial.print("\t"); 
  Serial.print(n);

  n=(buf[3]<<2)+((buf[5]>>4)&3)-500;  // accel Y
  Serial.print("\t"); 
  Serial.print(n);

  n=(buf[4]<<2)+((buf[5]>>6)&3)-500;  // accel Z
  Serial.print("\t"); 
  Serial.print(n);


e non(come trovo in un esempio sul web in cui e' gia' calibrato per UN DETERMINATO NUNCHUCK):
Code: [Select]
 
  n=(buf[2]<<2)+((buf[5]>>2)&3)-524; // accel X
  Serial.print("\t"); 
  Serial.print(n);

  n=(buf[3]<<2)+((buf[5]>>4)&3)-597;  // accel Y
  Serial.print("\t"); 
  Serial.print(n);

  n=(buf[4]<<2)+((buf[5]>>6)&3)-668; // accel Z
  Serial.print("\t"); 
  Serial.print(n);


Giusto?

Grazie!
L'impossibile...richiede solo piu' tempo!

lesto



però questo da per scontatati che la X Y e Z leggano lo stesso valore per la stessa G, cosa non vera nell'imperfetto mondo reale.



è giusto che ogni asse abbia il suo valore di zero.

Quote
I valori non saranno tutti uguiali ma simili, mi pare che la Z discosti un po' essendo su un chip a parte.


infatti notare nel codice del tizio i valori dello zero per X Y Z: x0= 524, y0 = 597, z0=668

Quote
asse Z verso il basso: z=0G+1G, x=0G e y=0G
asse X verso il basso: z=0G, x=0G+1G e y=0G
asse Y verso il basso: z=0G, x=0G e y=0G+1G


Questo vale in un modo fisico perfetto, serve per capire il concetto, poi devi lottare con la realtà
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

f.schiano

Non ho capito bene cosa intendi con questo ultimo messaggio.

Ti riporto i miei valori togliendo a tutte le letture -500 (uguale per tutti):

z rivolto verso il basso: x=15     y=102    z=206
x rivolto verso il basso: x=218    y=18     z=53
y rivolto verso il basso: x=9       y=205    z=-70

Non mi sembra che siano molto simili tra loro questi valori. Non riesco ad intravedere quelle che tu hai chiamato 0G e 1G.

Scusami :(
L'impossibile...richiede solo piu' tempo!

lesto

quel 500 che togli è il G0...
ma come fai a sottrarre G0 se stai CERCANDO G0... i tui veri valori quindi sono:

515   602   706
710   510   553
509   705   430

notiamo subito che G0+G1 è circa 705 in tutti gli assi
mentre il G0 su x va da 509 a 515
il G0 su y va da 510 a 602 (uhmm quà sembra un bel errore di posizionamento della scheda)
il G0 su z va da 553 a 430

ripeti almeno altre 5 o 10 volte queste misurazioni cercando di esse il più preciso possibile: auutati con qualcosa che ti tenga la scheda in bolla, e usa una bolla se ce l'hai
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up