もうなんか、風邪をひいてしまってズビズバーです。今週末にはbirthday bash!があるからがんばるよ!遊びにおいでよ!(タイムテーブル公開しました) さてさて。今日は「Arduinoを使ってWiiリモコンでmidi操作を可能にした話」の続き。Bluetoothの受信のあたりを。 ■Bluetoothの受信 「arduinoを使ってWiiリモコンでMIDI操作」と一言ざっくり言っても、その実必要な技術はなんなのか。まあ「arduinoの知識」とか「C言語」とか基礎的な所を除けば「Bluetoothの受信」「MIDIの送信」の2つに絞れます。僕の場合、arduinoでのmidi出力は既に成功しているので、今回クリアしなきゃいけないのは「Bluetoothの受信」って事になる。 先の「みならい工作」さんを参照すると、このプログラムは「USB Host Shield」と「Bluetooth USBアダプタ」を使う様子。USB Host ShieldはSparkFun社から出ていて、スイッチサイエンスで通販することができます。というか千石でも買える。Bluetooth USBアダプタはあきばおーとかで安いのを買ってくればよろしい。 ソースコードは「みならい工作」さんのpdeを参照に。ソースコードをじーっとみていると、どうやら「wiiremote」っていうグローバル変数を定義・使用してそうさしているっぽい。傾きは「wiiremote.Report.Accel.X」みたいな変数を使っている。そのほかはヘッダとか見ながらちょこちょこいじれば、案外簡単にいろいろ検出できる。突発的に検出値が飛び跳ねる様な事も無いので、いわゆる「何回分かの値で平均値を取る」みたいな事もしなくていいらしい。ハードウェアで実現しているのか、既にドライバで実装されているかは不明。
こんなかんじ。 ただ、Wiiリモコンに乗っているのは加速度センサであって、傾きセンサでは無い。ゆっくり動かしている間はそんなに気にならないんだけど、素早く動かした際に誤検出が頻発する。いや、正しくは誤検出じゃないんだけどね。簡単に言うと、素早く動かした場合と、急に動きを止めた場合で、加速度的には同じですよね。とかそういう。このへん、僕も感覚では何となく解るけどしっかりと把握している訳では無いので深く突っ込まれるときついです。 これらを加味して、「可能な限りの振り回し検出」を実装してみた。8月中旬でここまでだったかな。 ツイート Recent Entries from Same Category
|
コメント
|