こんばんは、Reveです。
さて、今回も自作ゲームコントローラーの話をしましょう。
え、飽きた?ちょっと待ってちょっと待っておにーさんw
今日はWiiコントローラー(っぽいの)を作りますんで、加速度センサーでコントローラー作るんで、もう少しお付き合いいただければorz
(加速度センサーとは)
Wiiコントローラーでご存知の方も多いと思いますが、物体にかかる加速度を計測するためのセンサーです。加速度は、センサーの平面方向2軸と垂直方向1軸の合わせて3軸それぞれの度合いが測定されます(デバイスによります)。
物体が動いている最中はもちろん、静止時も重力(加速度)がかかるため
物体の姿勢を計測するのにも使用されます。
(回路の構成)
それでは、今回使用する部品を紹介します。
・Arduino Micro
・ブレッドボード
・加速度センサー(KXR-94 2050)
・ジャンパーピン
・ジャンプワイヤー
もうArduino Microとブレッドボードはおなじみですね。
加速度センサーはKXR-94 2050という、秋月電子で850円(税込)で購入できるデバイスを使います。
大変お求めやすい価格になっております。
これは、加速度をセンサーに対して3軸方向で測定するもので、その度合いは電圧の大きさで出力されます。
アナログ入力で加速度の大きさを計測できるため、使いやすいセンサーと言えます。
加速度センサーとArduino Microそれぞれのピンを、下の一覧の通りに接続します。
Arduino | 加速度センサー |
5V | 1: 電源, 2: 有効化 |
GND | 3: GND, 5: セルフテスト |
A0 | 6: X軸 |
A1 | 7: Y軸 |
A2 | 8: Z軸 |
加速度センサーのピンそれぞれの役割については、
・電源: 加速度センサーの電源 (2.5~5.25V)。
・有効化: 電源と接続で駆動、GNDと接続でスリープ状態に入る。
・GND: 加速度センサーのGND (0V)
・X,Y,Z軸: それぞれの軸方向の出力
となっています。なお、セルフテストは特殊なため、ここでは説明を省きます(GNDと接続で通常使用)。
接続した際のイメージは以下の通りです。
今回ジャンパーピンを使用したのは、加速度センサーのピン同士を接続するのにコードではごちゃごちゃしてしまうため、コードをやめてすっきりと配線するためです。
なお、それぞれの線の色がピン、およびワイヤーの色に対応しています。
制作した回路はこのようになります。
(プログラム)
続いて、プログラムに行きましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
; title="AccSensor_mouse.ino"]int readAxis(int thisAxis, int range, int threshold) { int reading = map(analogRead(thisAxis), 0, 1023, 0, range); reading -= range / 2; if (abs(reading) < threshold) { reading = 0; } return reading; } void setup() { // ここでは何も設定しない } void loop() { int valX = readAxis(A0, 24, 2); // X軸方向の加速度 int valY = readAxis(A1, 24, 2); // Y軸方向の加速度 int valZ = analogRead(A2); // Z軸方向の加速度 Mouse.move(valX, -valY, 0); if(valZ < 500) // Z軸の加速度が一定値を下回る { Mouse.press(MOUSE_LEFT); else if(valZ > 730){ // Z軸の加速度が一定値を上回る Mouse.release(MOUSE_LEFT); } delay(10); } |
今回のプログラムは、今までのサンプルを基に作成されているため、解説が面倒だから詳細については前回の記事をご覧ください。
このプログラムは、加速度センサーの平面方向をマウスポインタの移動、垂直方向をマウス左ボタンの操作に割り当てています。
左クリックについては、加速度センサーを上に振り上げることで可能です。振りが強いほどボタンを長く押すようになります。また、センサーを逆さに向けるとボタンが押しっぱなしの状態になります。
(ゲームをやってみよう)
今日ご紹介するゲームは、n_ryota様が運営されているゲーム開発ブランド ship of EYLN(http://dev.eyln.com/) から、「Processingによる横スクロールアクションゲーム」です(事前に承認を頂きました)。
リンク先に飛んで「Action」の画像をクリックすると、ゲームのページに行くことができます。
こちらは、Processingというプログラミング言語で開発されたアクションゲームで、マウスだけで操作できます。
そのため、今回のコントローラーも当然使えます。
コントローラーが変化したことで、マウスとは違うゲーム感覚を味わえたと思います。
なんだかWiiコントローラーを自作した気分になりませんか?
え、操作がマウスより難しくなった?聞こえんなぁー
そんなわけで、また次回もお楽しみに(・ω・)ノシ
(あとがき)
コントローラーとゲーム操作のパラメータ調整って、案外難しいですね。
大きくしすぎても、小さくしすぎても操作性が悪くなるので、気持ちよく操作できるように設定するのも難しいものですね。
ゲーム開発はこんなところでも大変なんだなぁと、作りながら思ってました。
コメント