UNIDUINOでUnity3DとArduinoを繋ぐ

そのうちやろうと思っていたUnity3DとArduinoの連動。UNIDUINOというプラグインを使ったら手軽でした。

UNIDUINO




Windowsでは.NETの機能を使ってシリアル通信できるのですが、MacのUnity3Dからはできませんでした。UNIDUINOは外部のライブラリに中継して、うまいことやってるみたいです(適当)。




Firmata
Firmata(フェルマータ)というシリアル通信の汎用的なプロトコルを利用しています。Arduinoにファームウェアを入れておけば、UNIDUINOだけでなく、Processing、openFrameworks、PureDataなどからも、値の読み書きができます。






Arduinoのセットアップ
Arduino IDEのメニュー
[File]-[Examples]-[Firmata]-[StandardFirmata]を開き、Arduinoに書き込みます。






ブレッドボードのセットアップ
Arduinoがコントロールできているか確認するために、LED、可変抵抗、タクトスイッチをブレッドボードに以下のように配線します。






UNIDUINOのセットアップ
Asset Storeから購入して、新規プロジェクトにインポート。





Asset/Uniduino/UniduinoTestPanel/UniduinoTestPanel を読み込みます。実行すると初回のみSerialPort supportのインストールを要求されます。完了したらUnity3Dを再起動します。





再度、/Uniduino/UniduinoTestPanel/UniduinoTestPanel を実行すると、デジタル0〜13ピン、アナログ0〜5ピンの状態が表示される。D11のLow/Highボタンを押すと、ブレッドボード上のLEDが制御される事を確認できます。




また、A0のModes-INPUT、Reporting-Analogを選択すると、可変抵抗の回転を読み取る事ができます。





動画のチュートリアル
実は公式な動画のチュートリアルをみた方が分かりやすいのでした。






AnalogRead
Asset/Uniduino/Tutorials/Analog Read/AnalogRead を読み込みます。可変抵抗の操作で、3Dオブジェクトを回転できます。