ちょっと未来

色々作って、色々書きます。最近はOculus Riftでメーヴェ風フライトシミュレータ作ってます

Oculus Riftでメーヴェを作ろう(5) 扇風機を制御して風を感じる

飛んでる感を増すために”風”を感じたいと思っています。
Oculust Riftのデモでもよくサーキュレーターを前に置いてるのを見たりします。

今回はせっかくArduinoと繋いでるので、Arduinoから扇風機を制御できるようにしたいと思います。

f:id:wasan:20140913221956p:plain

扇風機は秋葉原で特価のUSB扇風機を買ってきました。
電源がUSBくらいの低電圧だと扱いやすいですね。

今回はモータドライバICを使って、Arduinoから扇風機の風力を制御してみようと思います。 ではさっそく作業です♪

USBケーブルをチョン切る

”USB→扇風機”の間に回路を挟んで制御するために、ケーブルを切断します。

f:id:wasan:20140913222741j:plain

回路を組む

モータドライバICにはTA7291Pを使います。
回路についてはコチラ→ 建築発明工作ゼミ2008: Arduino 小型DCモータ/TA7291P の通りに組みました。

Arduinoの1,2ピン(デジタル入力)と3ピン(PWM入力)を使います。
入力電源は今回の場合USBケーブルを繋いでいます。

なんかゴチャゴチャ、いかめしいですね。

f:id:wasan:20140913224044j:plain

Unityプログラム

今回もUNIDUINOを使います。

起動時にPIN設定と正転反転の信号を送ります。

void Start () {
        arduino.pinMode(1, PinMode.OUTPUT); //motor
        arduino.pinMode(2, PinMode.OUTPUT); //motor
        arduino.pinMode(3, PinMode.PWM); //motor

        arduino.digitalWrite (1, Arduino.HIGH);
        arduino.digitalWrite (2, Arduino.LOW);
}

↑キーで風力アップ、↓キーで風力ダウンする場合こんな感じになります。
3番のPWMピンにPWM値を与えます。
PWM値は0~255で255が最大パワーになります。

   int fanSpeed = 0;

   void Update () {
        if (Input.GetKey (KeyCode.UpArrow) && fanSpeed < 255 ) {
            fanSpeed ++;
            arduino.analogWrite(3, fanSpeed);
        }
        if (Input.GetKey (KeyCode.DownArrow) && fanSpeed > 0 ) {
            fanSpeed --;
            arduino.analogWrite(3, fanSpeed);
        }
    } 

完成♪

とりあえずキー操作で扇風機が動きます。
これを画面内のメーヴェの動きによって制御しようかと思います。

f:id:wasan:20140913224337j:plain

ただ、、、ちょっと風が弱いなぁ、、、USB扇風機だとこんなものかなー。