Vimeo.そろそろこのアバターの格好で記事投稿するのが辛くなり始める今日この頃。皆様いかがお過ごしでしょうか。今回はopenFrameworksをArduinoでコントロールするネタです。(Arduinoはほぼオマケですが...)動画ではひらひら揺らめく面と、再生している音楽が同期しています。赤外線センサーに手を近づけて、面の揺らめきと音楽のスピード・音量をコントロールします。ArduinoはINとOUTを備えたマイコンボードの統合開発環境です。一般的なPCやガジェットには無いセンサーをコンテンツに取り込むだけでなく、LED、モーターや家電のコントロールも出来る素敵インターフェースです。http://www.arduino.cc/Arduinoはボードにプログラムを書き込み、電源を供給すればスタンドアロンでも動かす事ができます。Processing・openFrameworksでも簡単に相互通信できるAPIが用意されています。面白いプラットフォームなのでいろんな記事を調べてみてください。いつもの様に制作過程の流れで説明していきます。今回のインスタレーションでは赤外線測距モジュール(GP2Y0A21)を使っています。―「作りながら考える」ためのArduino実践レシピhttp://www.oreilly.co.jp/books/9784873114538/まずは下記回路図の様にArduinoを組み立てます。赤外線センサーから値が取れていることを確認します。以下のスケッチでは距離がcm単位でSerialに出力されます。-4;Serial.println(range+"cm");}}2.openFrameworksとArduinoをつなぐopenFrameworksで値を取得する行程に入りますが、Arduinoでは先程のスケッチは使用しません。ArduinoボードにはStandardFirmataを書き込んでおきます。StandardFirmataは、色んなプラットフォームとArduinoを繋ぐものです。StandardFirmataのインストール方法とArduinoへの書き込み方法については割愛します。openFrameworksのコードに移ります。Arduinoを更新ard.update();}コンソールにセンサー値が出力されたら接続成功です。このセンサー値は近くに何も無い場合、150以下で推移、最も手を近づけた時600強の値が出ます。純粋なセンサー値とは別に、この回で使用しているローパスフィルターをかけながらdistanceに変換後の値を入れていきます。distance*0.9+ardValue*0.1;}}ここまででArduinoについて分からない場合は田所先生の講義資料を見て勉強してみてください。本当に素晴らしい講義資料ばかりを公開していただいています。開発を進めるにあたり、アドオンのofxSimpleGuiTooを使います。便利で、作品を作るにあたり開発効率が良くなるので早期に取り入れます。先程取得したセンサー値も、簡単に視覚化することが出来ます。筆者はmemoさんのバージョンを使っています。ofxSimpleGuiTooを描画gui.draw();}4.3D空間にofCircleを描くまずは縦横100個のofCircleを画面のセンターに表示させます。ofRotateYとかに適当に値を入れると、3D空間にofCircleが描かれているのが確認出来ます。保持したMatrixに戻すofPopMatrix();}5.PerlinNoiseでゆらゆらofNoiseはパターン化されたランダム値を取得する事が出来ます。ofNoiseからPerlinNoiseを取得するために以下記事を参考にしました。【oF】openFrameworkshttps://sites.google.com/site/ofauckland/examples/noiseこのPerlinNoiseで得たグレースケール値を、ofCircleの奥行きに摘要していきます。先程と同じ箇所を改変します。保持したMatrixに戻すofPopMatrix();}ここまでの様子は以下の様になります。ofxSimpleGuiTooで各パラメーターを操作して遊んでみます。画面収録している分フレームレートが落ちていますが、実際は60fpsで動きます。Vimeo.6.音楽を再生ofSoundPlayerで音楽を取り込みます。openFrameworksで音楽をコントロールする、恐らく最も簡単な方法です。音に併せて揺らめきが変わることが確認出来ます。