.: robotitaly.NET :. - la community italiana sulla robotica  

Vai indietro   .: robotitaly.NET :. - la community italiana sulla robotica > Prodotti DROIDS > 990.005 MuIn - Multi Inteface Board

Rispondi
 
Strumenti della discussione ModalitÓ di visualizzazione
  #11  
Vecchio 02-01-2011, 03:01 PM
CyB3rn0id CyB3rn0id non Ŕ collegato
Roboter Attivo
 
Registrato dal: Feb 2008
Messaggi: 164
Blog Entries: 11
predefinito

Scusa, rileggendo meglio: a te non serve questo.

In pratica tu ricevi i bytes sulla seriale, in una stringa. Basta che che cicli la stringa per prenderti un byte alla volta (con la funzione MID), ogni byte che prelevi lo converti in numero decimale con la funzione ASC. Sul numero che ottieni ci fai la decodifica e gli opportuni movimenti con bitshift e OR per riavere il valore dell'accelerometro in 10 bit e i due pulsanti, i numeri ottenuti li mostri in textbox.

Riassumendo
1- ricevi tutti i bytes in una stringa (es.: buffer)
2- cicli la stringa per estrarti tutti i singoli caratteri (con un ciclo for scorri da 1 fino a buffer.length, estrai un carattere alla volta con MID e lo memorizzi in un array come numero intero usando la funzione ASC)
3- nel ciclo stesso, per ogni carattere, ti conviene pure eseguire la decodifica in maniera tale che ottieni un array di integer giÓ decodificati
4- mostri i valori in textbox facendo gli opportuni aggiustamenti
__________________
www.settorezero.com
Rispondi quotando
  #12  
Vecchio 02-01-2011, 06:08 PM
CyB3rn0id CyB3rn0id non Ŕ collegato
Roboter Attivo
 
Registrato dal: Feb 2008
Messaggi: 164
Blog Entries: 11
predefinito

Il codice per Arduino che si trova qui:

http://www.windmeadow.com/node/42

Ŕ quello pi¨ eloquente di tutti. Si vede chiaramente che c'Ŕ una funzione di decodifica:
char
nunchuk_decode_byte (char x)
{
x = (x ^ 0x17) + 0x17;
return x;
}


I bytes vengono decodificati man mano che vengono ricevuti e memorizzati in un array che chiama outbuf[]. Vedi che esegue le operazioni per l'accelerometro:
int accel_x_axis = outbuf[2] * 2 * 2;
int accel_y_axis = outbuf[3] * 2 * 2;
int accel_z_axis = outbuf[4] * 2 * 2;

che io personalmente avrei eseguito con uno shift a sinistra di 2 posizioni, che alla fine Ŕ la stessa cosa. In pratica tu quei byte che leggi dell'accelerometro sono la parte alta (8bit) quindi devi spostarli verso sinistra per "far posto" ai due bit bassi che si trovano nell'ultimo byte ricevuto:
if ((outbuf[5] >> 2) & 1)
{
accel_x_axis += 2;
}
if ((outbuf[5] >> 3) & 1)
{
accel_x_axis += 1;
}

... e cosý via per gli altri due assi

anche questo Ŕ eseguito in maniera un po' strana per i miei gusti, perchŔ avrei usato una maschera e un bitshift ma va bene lo stesso, comunque ti fa capire bene come vanno eseguiti i calcoli.
__________________
www.settorezero.com
Rispondi quotando
  #13  
Vecchio 02-01-2011, 10:10 PM
CyB3rn0id CyB3rn0id non Ŕ collegato
Roboter Attivo
 
Registrato dal: Feb 2008
Messaggi: 164
Blog Entries: 11
predefinito

Prima di mettermici sul serio, sto facendo alcune prove interfacciandomi col bus pirate. Con mia grande sorpresa ho potuto notare che il nunchuck che ho io fa parte di quelli "parzialmente" compatibili in quanto ha una sequenza di inizializzazione differente, ma comunque documentata un po' dappertutto, anche sullo stesso sito del bus pirate:

http://dangerousprototypes.com/docs/...ck_quick_guide

in pratica si comporta come il "nunchuck knockoff dealextreme", inizializzando come il nunchuck standard, difatti, il buspirate mi restituisce sempre tutti 0xFF quando eseguo la lettura, se invece inizializzo come il dealextreme, i valori variano.
__________________
www.settorezero.com
Rispondi quotando
  #14  
Vecchio 02-02-2011, 09:53 PM
sigi91 sigi91 non Ŕ collegato
Roboter Attivo
 
Registrato dal: Dec 2010
Messaggi: 50
predefinito

Mi dispiace per˛ io mi sono fermato con le prove e con la realizzazione del progetto MuIn e Nunchuck...semplicemente non ho tempo, scuola e poi da quando mi Ŕ arrivata la schedina Luigino non riesco a resistere e fare altre cose tranne esperimentare e studiare il linguaggio per la programmazione Arduino
Ora mi succedono anche delle cose strane coi Xbee...la comunicazione Xbee-MuIn -.-
Mah...appena avr˛ del tempo torner˛ a finire qst cosa, visto che l'ho iniziato a fare....

@CyB3rn0id

Tu se realizzi qlks fammi sapere...
Rispondi quotando
  #15  
Vecchio 02-17-2011, 03:34 AM
sigi91 sigi91 non Ŕ collegato
Roboter Attivo
 
Registrato dal: Dec 2010
Messaggi: 50
predefinito

wow....con Luigino328 sono riuscito a far funzionare il nunchuck e ottenere la lettura corretta il mio problema erano le resistenze di pull up su SDA e SCK (quando ho messo queste, violÓ funzia) l'indirizzo che ho usato Ŕ 0x52 (il nunchuck non Ŕ originale)....tra poco vedo di collegarlo anche con la MuIn

Ciao
Rispondi quotando
  #16  
Vecchio 02-23-2011, 10:12 PM
CyB3rn0id CyB3rn0id non Ŕ collegato
Roboter Attivo
 
Registrato dal: Feb 2008
Messaggi: 164
Blog Entries: 11
predefinito

Svelato l'arcano: la questione degli indirizzi era data dal fatto che su Arduino si usa l'indirizzo base e poi la libreria provvede ad aggiungere il bit per la lettura/scrittura... Alla fine si tratta dello stesso indirizzo... le librerie I2C che aggiungono il bit vogliono l'indirizzo "corto", quelle che non lo aggiungono vogliono i due indirizzi uno per la lettura e uno per la scrittura
__________________
www.settorezero.com
Rispondi quotando
  #17  
Vecchio 02-24-2011, 02:05 AM
sigi91 sigi91 non Ŕ collegato
Roboter Attivo
 
Registrato dal: Dec 2010
Messaggi: 50
predefinito

Quote:
Originariamente inviata da CyB3rn0id Visualizza il messaggio
Svelato l'arcano: la questione degli indirizzi era data dal fatto che su Arduino si usa l'indirizzo base e poi la libreria provvede ad aggiungere il bit per la lettura/scrittura... Alla fine si tratta dello stesso indirizzo... le librerie I2C che aggiungono il bit vogliono l'indirizzo "corto", quelle che non lo aggiungono vogliono i due indirizzi uno per la lettura e uno per la scrittura
Io questa nota l'ho trovato in un forum..quindi mi Ŕ andata di culo almeno non ho perso altro tempo per capire che cosa non va....in alcuni circuiti avevo visto usare le resistenze di pull-up e cosi le ho messo anch'io e finalmente il circuito mi funzionava...

Ah cmq il mio Nunchuk Ŕ bruciato avevo portato a scuola tutto quanto su una bread-board e non mi sono accorto che si Ŕ staccato il trimmer che era su LM317...cosi al posto di 3.3V gli ho dato 10V per un stupido errore

Ora mi tocca a comprare un'altro Nunchuck
Rispondi quotando
Rispondi

Segnalibri

Tag
arduino, i2c, muin, nunchuck, wii

Strumenti della discussione
ModalitÓ di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code Ŕ attivo
Le smilie sono attive
Il codice IMG Ŕ attivo
il codice HTML Ŕ disattivato

Salto del forum


Tutti gli orari sono GMT. Attualmente sono le 12:54 AM.


Powered by vBulletin versione 3.8.7
Copyright ©: 2000 - 2018, Jelsoft Enterprises Ltd.