##自己紹介
ゲーム作れるドラマーです(白目)
ハードウェア開発大好きです。
先日こんな発表をさせていただきました。
Unityお・と・なのLT大会
http://www.slideshare.net/secret/2OvlqGsUeQZvBf
ミニ四駆大好きすぎて、充電器をUnityでつくるお話をしました。
お気づきかと思いますが(は?)、Uniduinoというasset大好きさんです。
野良んジェリストとして頑張らせていただきます。
##Unityでハードウェアを扱う理由
昔ながらのマイコンは、C、C++で書かれることが多くなかなかハードルが高いものでした。
それが、とあるアセットを使うと、いとも簡単にマイコン開発ができてしまうという素晴らしいお話です。
とはいえ、マイコン単体で動かすには今回の方法は不向きです。
Unityでコンパイルするアプリケーションで制御するので、必ずPCなどが必要になります。
しかしながら、ゼロからマイコンの制御文をCで書く、C++でライブラリを使用するなどのハードルを考えると全然低コストで意味のある開発ができると思います。
##Uniduino
###紹介
UNIDUINO - Arduino for Unity
http://u3d.as/4oP
Arduinoというマイコンを、Unity上で操作できるようになるスグレモノAsset。
インストールしてUSBでつないで、Arduino側に必要なライブラリを書き込めばハイ出来上がり!
どこのご家庭にもある、ゲームエンジンと連動するArduinoの出来上がりです!(白目)
こちらのアセットは$30とちょっと気になるお値段ですが、使ってみると確実に元が取れたなと胸を張れる素晴らしいアセットです。安心してください、買ってますよ。
###テストシーン起動時の注意
今回は、準備済みのテストシーンを使ってテストを行いたいと思います。
一点注意ですが、インストールした後にテストシーンを稼働させたいところですが、セットアップ時にはArduinoクラスがアクティブになっていない状態です。
チェックが付いていないとArduino側にインストールした、Firmataのバージョンをチェックしろと、 エラーでなくメッセージが返ってきます。これはハマりどころなので要注意です。
##Arduino側の実装
こちらは、スケッチのサンプルにあるStanderdFirmata
をインストールしましょう。
まずはArduinoをUSBでつなぎ、ArduinoIDEのメニューバーからファイル→スケッチの例からサンプルコードを開いて、インストールしましょう。
あとは必要なピンにセンサーやLEDなどをつなぎこむだけです。
簡単な回路を準備したいと思いますので、
どこのご家庭にもある、LED、可変抵抗などをご用意いただけたらと思います。
##Unity側の設定
さて、ここでは電子工作のHellow World、「Lチカ」をやってみましょう。
今回はArduino UNOを用意しました。
UNOには、デジタル出力13系統、アナログ出力が6系統準備されています。
このうちの13番ピンは、基盤に実装されているLEDと連動しています。
まずはこのLEDをチカチカさせましょう。
通常の手順通りにアセットをインストールします。
インストール後のフォルダ構成は以下のようになりますので、
テスト用のシーンとなるUniduinoTestPanel.unityを開きましょう。
ここで、FirmataをインストールしたArduinoをつなぎましょう。
USBポートにArduinoを接続します。
つないだら、UnityのPlayボタンを押しましょう。
そうすると、OSX用のシリアルポート(通信言語)のサポートファイルのインストールポップが表示されます。ここはインストールボタンを押しましょう。
さて、ここでゲームがPlay中のステータスになっていると思います。
Game画面を見てみましょう。
ヘッダー部分のメニュー項目を説明します。
メニュー
Connect:Arduinoと接続します
Disconnect:Arduinoとの接続を切断します
Conected Firmata:ArduinoにインストールされたFirmataのバージョン情報
SerialPort:現在接続のために選択されているUSBポート
Guess:変更時のエンターボタン
Query Capabilities:Arduinoの機能を確認するためのボタン(ピンの数など)
メニューの下が、各ピン情報の項目になります。
PinSetting
Pin:Value:Arduinoの各ピン情報(DはデジタルAはアナログ)
Output:Arduino上でのピンのON/OFF(ModesがPWMの時はスライダー)
Modes:各ピンに備わったモード切り替えができます
Reporting:受診しているデータをPin:Valueに表示します
D0、D1にモードが設定されていないのは、データ書き込み用のピンになり、ここで何かを設定してしまうとデータの書き込みができないからです。
ここで一点注意です。
Playボタンを押してこのGUIが表示されない状態は、
Arduinoか接続側に何か問題があるためです。
以上でUnityとArduinoの準備が整いました。
実際にLチカしてみましょう。
##テスト
それでは、Arduinoが接続され、GUIが表示されている前提で、Arduinoの基盤に実装されている13番ピンにつながっているLEDを光らせてみましょう。
ピン情報のモニターを下に移動すると、D13の行があります。
このOutputボタンを押してHIGH
にしてみましょう。
HIGH
にすると、基盤上にあるオレンジ色のLEDが光ります。
これは前にも説明した通り、13番ピンにつながっていますので、
13番ピンにLEDを接続すると基盤のLEDと同様に光ります。
##まとめ
いかがでしたでしょうか。
基本的な説明でしたが、ところどころディープに掘り下げてしまったところもありで、
少々難解な部分もあったと思います。
メニューなどは実際に使用することのないものありそうですが、
機能の一環として把握しておきましょう。