這次就說明一下如何讀取
首先可以看到
http://www.windmeadow.com/node/42
這個網站
他有完整的說明
不過我這邊再仔細的說一次
- WII搖桿的Speed
Since the nunchuck uses "Fast" I2C, we will need to change the default speed:
#define TWI_FREQ 400000L.
可以得知speed_mode為fast
bps為400000L
- WII搖桿傳輸的基本設定
For the Arduino to communicate with the nunchuck, it must send a handshake. So first send 2 bytes "0x40,0x00". Then send one byte "0x00" each time you request data from the nunchuck. The data from the nunchuck will come back in 6 byte chunks.
在一開始必須先傳兩個byte給搖桿
分別為0x40與0x00
然後再每次讀取前必須先傳一個0x00給搖桿
傳輸完後會回傳6個byte回來
建議在傳輸完0x00後delay一小段時間
- wii解碼
再文件中似乎沒提到
不過在下面的範例程式有提到
char
nunchuk_decode_byte (char x)
{
x = (x ^ 0x17) + 0x17;
return x;
}
否則會得到錯誤的值
解碼的方式為 先將值XOR 0x17再加上0x17
- 如何解讀6個BYTE
有搖桿,加速度,兩顆按鍵
搖桿有XY兩軸
加速度則有XYZ三軸
所以對照到文中的表格
- 第一個byte為搖桿的X軸
- 第二個byte為搖桿的Y軸
- 第三個byte為加速度的X軸的前8個bit
- 第四個byte為加速度的Y軸的前8個bit
- 第五個byte為加速度的Z軸的前8個bit
- 第六個byte 先分為8個bit看
第二個bit為C鍵 0為按下 1為沒按下
接著
第三及第四為加速度X的後兩個bit
第五及第六為加速度Y的後兩個bit
第七及第八為加速度Z的後兩個bit
所以這裡可以得知加速度一共有10個bit
這樣就可以讀出所有wii搖桿的資訊了
影片及code將會補貼...
0 留言:
張貼留言