Ciao a tutti.
Allora volevo sapere se dalla variabile accZ che ritorna il nunchuck se ne può ricavare la velocità in Km/h.
Mi spiego meglio.
Prendendo spunto dal classico gioco che trovate alle giostre, dove dovete tirare un cazzotto ad una palla e poi la macchinetta vi dice, WOw FOrtissimo, oppure AAHahah :musichettadifiascototale: :D, in base alla potenza sferrata dal vostro pugno, e pensando di farci giocare qualche cuginetto, è venuta fuori sta cosa qua:
Partendo da una impugnatura in verticale e da un valore di 170 circa, quando supera una certa soglia, 255, compare il messaggio di successo.
Ora volevo sapere se potevo ricavarne in qualche modo la velocità dall'asse z. In realtà non so neanche se il concetto dal quale sto partendo è esatto. Però sicuramente voi saprete darmi qualche delucidazione.
Devi crearti un circuito integratore oppure elaborare i dati con un programma tipo excel...
Integrando il segnale otterrai la velocità del sensore in km/h (ammesso che il segnale che arriva sia in km/h^2) altrimenti otterrai una velocità fittizia...ma sempre di una velocità si tratta.
Per il circuito integratore basta cercare su internet e troverai come realizzarlo mentre per selezionare i componenti chiedi a chi davvero di competenza (non me :D)...
Un circuito integratore ??? cos'è?
Ciò che ricavi dal sensore è un acellerazione espressa in base a ciò che gli chiedi perchè se non ricordo male può leggere 1 e 2G, il valore dato è "semplicisticamente" la percentuale della tua G (m/s^2)
Se moltiplichi il dato dell'accelerazione per il peso del nunchuk espresso in Kg ottieni la forza applicata espressa in Newton.
In base al valore fai uscire le varie frasi.
Per trovare la velocitàpartendo da un acellerazione basta un integrale v=integrale di a dt
Se non ricordo l'integrale sbagliato,poi sull'asse zeta che è perpendicolare al piano, avrai un valore diciamo x che però varierà da 0 a x e da x a 1 o 2G a seconda di qual'è l'impostazione e la sensibilità del sensore, sappiate però che la misura non sarà per nulla precisa...
la cosa migliore per quest'applicazionea mio avviso è una cella di carico su cui mandare la forza del pugno tramite un silentblok o un giunto elastico a balestra... come fanno le macchinette tirapugni classiche da sagra...
Il valore dell'acc Z va da 150 circa quando è fermo tenuto a mò di pugno, e raggiungo max 255, 256 a pugno completato. A questo link http://www.makoto.it/ss_template.php?pagina=club&id_nav=16 ho trovato che la velocità media di un pugno è di circa 4,60 m/s, quindi 16,7 km/h. Diciamo che da me ballano 100 unità da quando è fermo al picco, è possibile ricavarne qualcosa? Purtroppo non conosco bene i sensori del nunchuk e come avrete capito la fisica non è il mio forte 8)
un accelerometro misura le accelerazioni, non le velocità.
Dai valori che leggi devi sottrarre il vettore gravità, e conoscere la velocità di partenza.
Devi studiarti un pò di fisica della cinematica, le formule del moto accelerato uniformemente dovrebbero andare bene (tra una letura e l'altra consideri l'accelerazione costante, quindi uniforme)
se non hai una curva di graduazione del nunchuck non puoi ricavare valori in m/s o m/s^2. Da quello che ho capito tu hai solo dei valori che vanno da 150 a 255. Si potrebbe supporre una linearità ma nella stragrande maggioranza dei casi non è così ( intendo 150:1G=255:2G).
Comunque costruire un circuito integratore è semplice dato che è cmposto da una resistenza e un condensatore quindi evita di suddividere in passi e considerare accelerazioni costanti dato che è una approsssimazione enorme che porterà a misure completamente fuori dalla realtà.
con l integratore avrai un valore fittizio della velocità...se è per un gioco va bene lo stesso...
i chip del nunchuck sono lineari, e da qualche parte (non ricordo dove) trovi anche i valori di conversione, che comunque puoi ricavare dato che è noto il valore di G e il valore di "0"
Insomma partendo dalla formula v=vo+at non se ne ricava nulla giusto?
Assumendo che v0 sia 0, t potrebbe essere un valore che non riesco a quantificare visto che stiamo parlando di accelerazione, nel senso se io metto un delay() tra una lettura e un'altra di 1ms, 10ms o 100ms il risultato non cambia, ho sempre una lettura instantanea dell'accelerazione che è più o meno quella.
Quanto potrebbe essere questa t in ms?
alla prima lettura
V0=0
a = valore letto convertito in m/s^2
t = tempo durata della lettura (diciamo 0)
alla seconda lettura
V0 = V calcolata prima (ed essendo t=0 è ancora 0)
a = valore letto convertito in m/s^2
t = tempo durata dalla lettura (quindi dalla lettura 1)
se hai messo tra le due letture un delay(10); ad esempio, t=10+un piccolo contributo dato dalla comunicazione col sensore, di solito pochi microsecondi.
In questo modo però stai dando per scontato che l'accelerazione, in quei 10 millisecondi, sia stata sempre uguale e pari alla lettura attuale. Io consiglio di fare
(a1+a2)/2, ovvero accelerazoine lettura precedente + accelerazione lettura attuale diviso 2, in pratica dai per scontato che l'accelerazione sia cresciuuta LINEARMENTE in questo frangente di tempo.