56
Arduino × Unity 2013 4 27 さいたま勉強会 1354日土曜日

20130427 さいたま勉強会

  • Upload
    -

  • View
    1.980

  • Download
    2

Embed Size (px)

Citation preview

Arduino × Unity2013年4月27日

さいたま勉強会

13年5月4日土曜日

Arduinoとは

13年5月4日土曜日

イタリア製マイコンチップ入出力ポートを備えた基板、C言語風のArduino言語とそれの統合開発環境から構成されるシステム。Arduino はスタンドアロン型のインタラクティブデバイス開発だけでなく、ホストコンピュータ上のソフトウェア(例えば、Adobe Flash、Processing、Max/MSP、Pure Data、SuperCollider)で制御することもできる。組み立て済みの基板を購入することもできるが、オープンソースハードウェアであり、ハードウェア設計情報のEAGLEファイルは無料で公開されており、誰でも自分の手で Arduino を組み立てることができる。(Wikiより抜粋)

13年5月4日土曜日

イタリア製マイコンチップ入出力ポートを備えた基板、C言語風のArduino言語とそれの統合開発環境から構成されるシステム。Arduino はスタンドアロン型のインタラクティブデバイス開発だけでなく、ホストコンピュータ上のソフトウェア(例えば、Adobe Flash、Processing、Max/MSP、Pure Data、SuperCollider)で制御することもできる。組み立て済みの基板を購入することもできるが、オープンソースハードウェアであり、ハードウェア設計情報のEAGLEファイルは無料で公開されており、誰でも自分の手で Arduino を組み立てることができる。(Wikiより抜粋)

13年5月4日土曜日

電源 5V

デジタルIN~OUT (5Vの電流でHIGH、LOW)

アナログIN(入力された電圧に対し、値を返す)

PWM出力(パルス幅変調)

主な入出力

13年5月4日土曜日

販売中のArduinoArduino UNO3

Arduino mini

Arduino Due

LilyPad Arduino USB

13年5月4日土曜日

販売中のArduinoArduino UNO3

Arduino mini

Arduino Due

LilyPad Arduino USB

13年5月4日土曜日

販売中のArduinoArduino UNO3

Arduino mini

Arduino Due

LilyPad Arduino USB

Arduino Esplora New!

13年5月4日土曜日

送料180円、3000円以上無料

支払いは各種クレジットカード、PayPal、振込、代引き

13年5月4日土曜日

送料180円、3000円以上無料

支払いは各種クレジットカード、PayPal、振込、代引き

13年5月4日土曜日

シールド、Gloove

ピン配列を考慮した、カセットのような回路基板。

GROVEは配線済みみの電子パーツがそのまま使用できるシールド。はんだ付け不要。

13年5月4日土曜日

シールド、Gloove

ピン配列を考慮した、カセットのような回路基板。

GROVEは配線済みみの電子パーツがそのまま使用できるシールド。はんだ付け不要。

13年5月4日土曜日

Make−Arduino

13年5月4日土曜日

Arduinoでゲーム用コントローラーを作るハードとソフトをセットにする

13年5月4日土曜日

ソフト専用コントローラーファミコンであった「ハイパーオリンピック」のような専用コントローラーをArduinoで作る

ゲームの設定のチューニングに外部コントローラーを使用する

13年5月4日土曜日

ソフト専用コントローラーファミコンであった「ハイパーオリンピック」のような専用コントローラーをArduinoで作る

ゲームの設定のチューニングに外部コントローラーを使用する

13年5月4日土曜日

市販のコントローラーと連動

WiiヌンチャクをArduinoを介してゲームに使用(I2C)

Kinectをハッキングし連動

13年5月4日土曜日

市販のコントローラーと連動

WiiヌンチャクをArduinoを介してゲームに使用(I2C)

Kinectをハッキングし連動

13年5月4日土曜日

ゲーム設定のチューニング用コントローラー

ゲーム内の設定(ジャンプの高さ、動くスピードなど)をゲーム実行中にリアルタイムで設定を変更させる。

13年5月4日土曜日

Unityとの連動方法(シリアル通信)コントローラーからの信号

13年5月4日土曜日

Arduino側設定

13年5月4日土曜日

シリアル通信命令一覧Serial.begin(通信速度)    void setup()に記載。初期化と通信速度設定。

変数 = Serial.read()      受信済みの1バイトを読込む(int型)

Serial.print(データ)      文字列・数値を出力(整数のみ)

Serial.println(データ)  Serial.print+改行

変数 = Serial.available()    バッファ中のバイト数(int型)

Serial.flush()         読み込みバッファのフラッシュ

]

13年5月4日土曜日

シリアル通信命令一覧Serial.begin(通信速度)    void setup()に記載。初期化と通信速度設定。

変数 = Serial.read()      受信済みの1バイトを読込む(int型)

Serial.print(データ)      文字列・数値を出力(整数のみ)

Serial.println(データ)  Serial.print+改行

変数 = Serial.available()    バッファ中のバイト数(int型)

Serial.flush()         読み込みバッファのフラッシュ

]

13年5月4日土曜日

シリアル通信命令一覧Serial.begin(通信速度)    void setup()に記載。初期化と通信速度設定。

変数 = Serial.read()      受信済みの1バイトを読込む(int型)

Serial.print(データ)      文字列・数値を出力(整数のみ)

Serial.println(データ)  Serial.print+改行

変数 = Serial.available()    バッファ中のバイト数(int型)

Serial.flush()         読み込みバッファのフラッシュ

]

13年5月4日土曜日

スケッチサンプルスケッチのAnalog Inputを呼び出す

Serial.beginとSerial.printlnを追記

int sensorPin = A0; //ボリュームint ledPin = 13; //LEDint sensorValue = 0; //ボリュームから読み取った値

void setup() { pinMode(ledPin, OUTPUT); //LEDの出力設定 Serial.begin(9600); //シリアルポート設定

}

void loop() { sensorValue = analogRead(sensorPin); Serial.println(sensorValue); //値を出力 digitalWrite(ledPin, HIGH); delay(sensorValue); digitalWrite(ledPin, LOW); delay(sensorValue); }

13年5月4日土曜日

スケッチサンプルスケッチのAnalog Inputを呼び出す

Serial.beginとSerial.printlnを追記

int sensorPin = A0; //ボリュームint ledPin = 13; //LEDint sensorValue = 0; //ボリュームから読み取った値

void setup() { pinMode(ledPin, OUTPUT); //LEDの出力設定 Serial.begin(9600); //シリアルポート設定

}

void loop() { sensorValue = analogRead(sensorPin); Serial.println(sensorValue); //値を出力 digitalWrite(ledPin, HIGH); delay(sensorValue); digitalWrite(ledPin, LOW); delay(sensorValue); }

13年5月4日土曜日

スケッチサンプルスケッチのAnalog Inputを呼び出す

Serial.beginとSerial.printlnを追記

int sensorPin = A0; //ボリュームint ledPin = 13; //LEDint sensorValue = 0; //ボリュームから読み取った値

void setup() { pinMode(ledPin, OUTPUT); //LEDの出力設定 Serial.begin(9600); //シリアルポート設定

}

void loop() { sensorValue = analogRead(sensorPin); Serial.println(sensorValue); //値を出力 digitalWrite(ledPin, HIGH); delay(sensorValue); digitalWrite(ledPin, LOW); delay(sensorValue); }

13年5月4日土曜日

配線通常のAnalogInputと同様A0とD13ポートを使用

ボリュームのどちらでもいいので、両端のピンを+とーに接続、真ん中のピンをA0に接続

13年5月4日土曜日

配線通常のAnalogInputと同様A0とD13ポートを使用

ボリュームのどちらでもいいので、両端のピンを+とーに接続、真ん中のピンをA0に接続

13年5月4日土曜日

書き込んだ後シリアルモニターを起動

IDEの右上、虫眼鏡のボタンをクリック

⇒のような画面が出てきてArduinoからの値が書き出されていく

13年5月4日土曜日

書き込んだ後シリアルモニターを起動

IDEの右上、虫眼鏡のボタンをクリック

⇒のような画面が出てきてArduinoからの値が書き出されていく

13年5月4日土曜日

Unity側設定

13年5月4日土曜日

注意事項C#のSerialPortのイベントハンドラが使えない

シリアルポートにSystem.IO.Portsを使用しているが、Unity標準の.NET 2.0 Subsetには含まれていない

13年5月4日土曜日

System.IO.Ports設定Edit->Project Settings->Playerを開きます

Optimization- > Api Compatible Levelを .NET 2.0にします

13年5月4日土曜日

System.IO.Ports設定Edit->Project Settings->Playerを開きます

Optimization- > Api Compatible Levelを .NET 2.0にします

13年5月4日土曜日

コーディング(C#)

13年5月4日土曜日

コーディング(C#)

編集中

13年5月4日土曜日

UniduinoAssettStore

13年5月4日土曜日

Uniduinoとは

13年5月4日土曜日

13年5月4日土曜日

UnityとArduinoを簡単に接続!シリアル値でのやり取りが安定しない中、アセットを介す事で手軽に接続が可能!

名古屋に出現した4D映画館がゲームで再現!

13年5月4日土曜日

Uniduinoでの利便性

13年5月4日土曜日

Uniduinoでの利便性Firmataを書き込んでしまうのでArduinoで処理させたい事がオブジェクトの仕様に依存する

既存のArduinoライブラリが使用出来ない

13年5月4日土曜日

Uniduinoデモ映像

13年5月4日土曜日

Uniduinoデモ映像

13年5月4日土曜日

それではUniduino実装ここでもLチカ!

13年5月4日土曜日

注意事項アセットストアからリソースを全てダウンロード

System.IO.Portsの設定はこちらでも必要

イベントハンドラの問題もあるので、Arduinoへの命令はコルーチンで

コルーチン内でコーディングするので、Arduinoのスケッチとは形式が異なる

ArduinoへはStanderdFirmataを書き込むので、Arduino側で設定したい内容はC#でコーディングが必要。(Arduino標準のライブラリは使えない?)

13年5月4日土曜日

Uniduinoの設定UniduinoAssett内の、プレハブをヒエラルキーへドラッグ&ドロップ

空のオブジェクトを配置し、C#スクリプト作成の後オブジェクトへ実装

13年5月4日土曜日

コーディング3行目でUniduinoを使用する宣言

11行目でコルーチンの設定

Arduinoへの命令は18行目以降の内容になります。

13年5月4日土曜日

実行

通常の実行として、再生ボタンを押します

例によって13番ポートに直結した表面実装のLEDが光りだします

13年5月4日土曜日

Getting StartedDemo Scene

13年5月4日土曜日

Getting Started

EDWONで用意されたテスト用シーン

Uniduino⇒UniduinoTestPanel⇒UniduinoTestPanel.unityを開く

実行ボタン押下

13年5月4日土曜日

Pin設定、配線今回もAnarogInputの配線を使用

アナログ0番ピンでボリュームの値を取得

実行したUniduinoTestPanel画面のD14/A0ピンのANALOG、Analogボタンを押下

取得した値が表示

13年5月4日土曜日

今後の課題

13年5月4日土曜日

不安定な部分の検証、利便性向上

シリアルポートの仕様を引き続き調査

Firmataを使用してもArduino側でのライブラリ実装の仕様を確立

画面上からは読み取れない情報をLCDディスプレイに表示

ゲーム内の設定を左右するスイッチ(レースゲームだとブーストなど)を設定しゲーム制作

ゲーム内の環境が肌で感じられるハード制作(4Dゲーム)

13年5月4日土曜日

ご清聴、有り難うございました!

13年5月4日土曜日