皆さんこんばんは、Reveです。技術担当です。
今日もお待ちかねの自作ゲームコントローラーだよw
昨日は風邪を引いて寝込んでました
今までは、ボタン(タクトスイッチ)、ジョイスティック、加速度センサーと従来のコントローラーでも使われているような部品を使用してきましたが、今回は赤外線測距センサー:GP2Y0A21YK と人感センサー:SB412A を使って、少し変わったコントローラーを作ります。
(赤外線測距センサーって?)
赤外線を使って、前にある物体の距離を測るセンサーです。簡単に言うと、トイレで使われているセンサー。
今回使用するGP2Y0A21YKは、おおよそ10~80cmの距離を計測でき、それを電圧の大きさで出力します。
(人感センサーって?)
人や動物など、熱源を持つものが移動したことを検知するセンサーです。動いたことを検知するのであって、近接センサー(近いことを検知する)ではないのは注意点かもしれません。
今回使用するSB412Aは、動いているか否かを電圧の高低(HIGHかLOW)で出力します。
ちなみに、これらのセンサーも準備し忘れました。ごめんなさい。
(回路の構成)
というわけで回路に移りますが、今回はほとんど画像が用意できません(汗
ご容赦ください。
まず部品については、以下のものが必要になります。
・Arduino Micro
・ブレッドボード
・赤外線測距センサー
・人感センサー
・ジャンプワイヤー
もうArduino Microとブレッドボードはおなじみなので、適当に挿しておいてくださいw
(もし分からない場合は、画像右上のArduinoのようにブレッドボードへ挿せば大丈夫です。ほかの部品は関係ありません。)
Arduinoをブレッドボードに挿したら、次はセンサーを接続します。
・赤外線測距センサー
Arduino | 赤外線測距センサー |
5V | Vcc |
GND | GND |
A0 | Vo |
・人感センサー
Arduino | 人感センサー |
5V | 3 – 12V |
4 | Vout |
GND | GND |
赤外線測距センサーのケーブルは、そのままブレッドボードに挿せます。
ちなみに、ケーブルの配線はVccが黒、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 27 |
; title="strange_controller.ino"]#define SW 4 // 赤外線測距センサーの出力から距離を求める関数 float measureDist(int value) { float dist = 0.0; if(value > 80 && value < 675) { dist = 6768 / (dist - 3.0) - 4; // 距離を求める計算式 } return dist; } void setup() { pinMode(SW, INPUT); // (b) } void loop() { float msrDist = measureDist(analogRead(A0)); // 赤外線測距センサーから距離を求める Mouse.move((msrDist - 45) / 2, 0, 0); // 求めた距離をマウスの平行移動に利用 if(digitalRead(SW) == HIGH){ // 人感センサーの出力がある場合(動いたのを検知) Mouse.press(MOUSE_LEFT); } else{ Mouse.release(MOUSE_LEFT); } delay(10); } |
今回は、赤外線測距センサーでマウスポインタの平行移動を、人感センサーでマウス左ボタンの操作を行うプログラムになっています。赤外線測距センサーでの操作は、さながらテルミンか、最近でいうと1次元のみのLeap Motionといったところでしょうか。
マウスの操作に関しては、こちらの記事をご覧ください。手抜きとか言わない
画像なかったり既に荒だらけなんだから
今回あえて解説がいるとすれば、赤外線測距センサーの距離を求める計算です。
赤外線測距センサーの出力は最大でも3.3Vで、距離が離れるほど出力が小さくなっていきます。
今回は、比較的単純な、以下の式を利用しました。
(距離) = 6768 / ((センサー出力) – 3.0) – 4
ちなみに数式は、arudtech様のこちらの記事を参考にいたしました。
(ゲームをやってみよう)
今日ご紹介するゲームも、n_ryota様が運営されているゲーム開発ブランド ship of EYLN(http://dev.eyln.com/) から、「Processingによる横スクロールアクションゲーム」です(事前に承認を頂きました)。
リンク先に飛んで「Action」の画像をクリックすると、ゲームのページに行くことができます。
もうネタ切れなのであえて前回と同じゲームを選んだのは、ゲームが同じでもコントローラーが違えばプレイ感覚が異なるのを体験してもらいたかったためです。決して手抜きではない
というわけで、次回はもっとちゃんとした記事書きます。
(あとがき)
部品買い忘れた、画像がなかった…。
日本帰ってきたら、画像とか用意してちゃんと編集します。たぶん
コメント