This post is Private. Only a writer or those who know its URL can access this post.

Article information
Show article in Markdown
Report article
Help us understand the problem. What is going on with this article?

Unityでハードウェア

More than 3 years have passed since last update.

自己紹介

ゲーム作れるドラマーです(白目)
ハードウェア開発大好きです。

先日こんな発表をさせていただきました。

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のメニューバーからファイル→スケッチの例からサンプルコードを開いて、インストールしましょう。

StandardFirmata___Arduino_1_6_6.png

あとは必要なピンにセンサーやLEDなどをつなぎこむだけです。
簡単な回路を準備したいと思いますので、
どこのご家庭にもある、LED、可変抵抗などをご用意いただけたらと思います。

Unity側の設定

さて、ここでは電子工作のHellow World、「Lチカ」をやってみましょう。

今回はArduino UNOを用意しました。
UNOには、デジタル出力13系統、アナログ出力が6系統準備されています。

このうちの13番ピンは、基盤に実装されているLEDと連動しています。
まずはこのLEDをチカチカさせましょう。

空白_Skitch_キャンバス.png

通常の手順通りにアセットをインストールします。
インストール後のフォルダ構成は以下のようになりますので、
テスト用のシーンとなるUniduinoTestPanel.unityを開きましょう。
UniduinoTestPanel_unity_-_Mini4WD_-_PC__Mac___Linux_Standalone__Personal_.png

ここで、FirmataをインストールしたArduinoをつなぎましょう。
USBポートにArduinoを接続します。

つないだら、UnityのPlayボタンを押しましょう。
そうすると、OSX用のシリアルポート(通信言語)のサポートファイルのインストールポップが表示されます。ここはインストールボタンを押しましょう。

空白_Skitch_キャンバス.png

さて、ここでゲームがPlay中のステータスになっていると思います。
Game画面を見てみましょう。

UniduinoTestPanel_unity_-_Mini4WD_-_PC__Mac___Linux_Standalone__Personal_.png

ヘッダー部分のメニュー項目を説明します。

メニュー
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にしてみましょう。

UniduinoTestPanel_unity_-_Mini4WD_-_PC__Mac___Linux_Standalone__Personal_.png

HIGHにすると、基盤上にあるオレンジ色のLEDが光ります。
これは前にも説明した通り、13番ピンにつながっていますので、
13番ピンにLEDを接続すると基盤のLEDと同様に光ります。

まとめ

いかがでしたでしょうか。
基本的な説明でしたが、ところどころディープに掘り下げてしまったところもありで、
少々難解な部分もあったと思います。
メニューなどは実際に使用することのないものありそうですが、
機能の一環として把握しておきましょう。

dsgarage
UnityとArduinoをこよなく愛するドラマーです。
unity-game-dev-guild
趣味・仕事問わずUnityでゲームを作っている開発者のみで構成されるオンラインコミュニティです。Unityでゲームを開発・運用するにあたって必要なあらゆる知見を共有することを目的とします。
https://unity-game-dev-guild.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした