【1-2】聴覚VRを作る - Arduinoを組む
はじめに
前回はプロトタイピングに必要な機材を買いそろえ、ソフトウェアもダウンロードしました。今回は、実際にArduinoの回路を組んで、Unityと連携させて動かしてみたいと思います。
動作デモ
ジャイロセンサーを使った回路を組む前に、いわゆる「Lチカ」回路を組んでArduinoとUnityの連携テストをしたいと思います。
UnityからArduinoに指示を送るために、Uniduinoという有料アセットを使います。筆者の購入時点では$30でした。
まず、SceneのHierarchyにUniduinoというPrefabを投入します。
UniduinoプレハブのInspectorを見ると、Arduinoというスクリプトがアタッチされています。この中のPortNameに、ArduinoIDEの「ツール > シリアルポート」からみられるポート番号を記入します。(PCにArduinoを接続してないと表示されません)
次に、Unityと連携させるためのスケッチを、ArduinoIDEでArduinoに書き込みます。
Arduinoに書き込むスケッチ(Firmata(ふぁるまーた)という PC と Arduino 間で色々とやり取りできるプロトコルを実装したファームウェア)や、Unity側でのC#スクリプトの書き方については凹みさんの記事を参考にしました。
上の記事を参考にして、「BlinkyLight」コンポーネント(C#スクリプト)を作成し、UniduinoオブジェクトにAddComponentしました。
さて、準備は万端です。ゲームを再生してみます。
動きました!!
スクリプト通り、一秒ごとにLEDランプが点滅しています。
Uniduinoアセットを使ったArduinoとUnityのテストに成功したところで、ジャイロセンサーを使った回路を組んでいきましょう。
ジャイロセンサー回路を組む
加速度センサーを使った回路を組むにあたって、以下のサイトを参考にしました。
ジャイロセンサーの型番がサイトのものと違うので、ジャイロセンサー購入時についてきた説明書と参照しながら以下のように繋げました。
新しくCubeのオブジェクトを作成し、C#スクリプトも作成して凹みさんの記事の「Accelerometer.cs」をコピペします。
Cubeに今作ったAccelerometerをAddComponentして、Inspector内の「Target」にCube自身を追加。
いざ再生!
あれ、、、、
なんとも微々たる傾き方です。しかもどうやらRotationのY軸が動いていない。
配線を間違えているか、はんだ付けでミスってY軸部分の回路を焼いたか。
確認するために次のスクリプトを追加し、ジャイロセンサーの出力が直接Inspector内に出力されるようにしました。
public class Accelerometer : MonoBehaviour { private Arduino arduino_; public Transform target; public Vector3 baseValues = Vector3.zero; //追加 public Vector3 output; ~~省略~~ void Update() { //追加 output = new Vector3( arduino_.analogRead(0), arduino_.analogRead(1), arduino_.analogRead(2) ); } ~~省略~~ }
再生してみるとこうなりました。
X,Y,Zすべてしっかり動いていますね。しかしどれも400~600の範囲のアナログ値が出力されています。ジャイロセンサーの型番が凹みさんの記事のものとは違うので同じようにうまくはいかないみたいです。
説明書によると、加速度を電圧として出力できるみたいです。自分で計算しなおしてスクリプトを書き換える必要がありそうです。
次回、出力された電圧値からCubeが適切に回転するようにAccelerometer.csを書き換えていきたいと思います。