足りないところは随時書き足します
#何がしたいわけ?
arduinoに繋いだセンサーの値をvvvvに送信して、rendererのグラフィックがセンサーで変化するようにしたりできます。反対にvvvvで得られた値をArduinoの出力ピンに送信することも可能です。
vvvvとArduinoの連携について断片的な英語の記事しかなくて苦労したので遺しておきます。
#使ったもの
- Arduino Uno Rev3
- 好きなセンサーや入力装置
- Arduino IDE (1.6.9)
- vvvv (45beta34.2)
()内は自分が使ったバージョンです
#Arduinoにスケッチを書き込む
vvvvとArduino間で通信をするためにfirmataプロトコルと言うものを使いました。
ArduinoIDEのメニューからファイル>スケッチの例>firmata>StandardFirmata
を選んでスケッチを開く。
そのままArduinoに書き込みましょう。
これでArduino側の設定は終わりです。はやい。
#vvvvのパッチを組む
vvvvにはもともとArduinoと通信するためのノードがあるんですが、もうちょっと楽に通信できるパッチを見つけたのでそれを使いました。とはいえ手間がかかります
###・Arduinoと通信できるパッチの在り処
vvvvのフォルダからvvvv_(vvvvのバージョン)>girlpower>IO>Arduino
フォルダの0_Arduino_UsingFirmata.v4pを開きます。真ん中にあるのが目当てのノード群です。コピペして任意のパッチに組み込みましょう
###センサに反応するグラフィックを用意する
明るいと大きく、暗いと小さくなる四角をレンダラに表示させることにします。
Renderer(DX9) - quad(DX9) - transform(2D)
と繋げます
transformノードのwidthとheightにセンサの値をあてがうことにしました
角度や色、位置でもいいと思います。linearSpreadにつなげたりするのもありです
###・頑張ってノードをつなげる
ここがめんどくさかったです。賢い人はサブパッチ作ったりして効率化するでしょうが、私には無理でした。簡単な方法があったらこっそり教えてください。
画像2.のIOboxの0-13がデジタルピン、14-19がアナログピンに対応しています。その隣(1.)はピンをどのモードで使用するかを設定しています
-
Arduinoのセンサ値を取り出すノード
Arduinoに繋いだセンサの情報を取るときはArduinoサブパッチの1番左下とその右隣のピンから値を取り出します
getSlice
で任意のピンの値を取り出します
vvvvで使いやすい値に加工するためにmapやdumper,Round,四則演算などを使います
-
vvvvで取得できる値をArduinoに送信するノード
vvvvで取得できる値というとmouseX,Yとか、マイクで拾った音の周波数とかだと思います。
Arduinoにvvvvで取得、加工した値を送るときはArduinoサブパッチの1番左上のピンから値をセットします
setslice
で任意のピンに値を入れます
###センサーの入力値を見やすくする
arduinoの各ピンに入力があるかどうか、ボタン表示を使って直感的に見られるようにしました。意外と役に立ちます
インスペクタの設定↓
#やっとvvvvとArduinoを連携させる
###・とりあえず動かす
standardFirmataを書き込んだArduinoをPCに接続して、vvvvのパッチを開きます。
arduinoサブパッチの右上にあるenableピンを1(有効)にします
センサーとレンダラのグラフィックがうまく連動していたら成功です。やったね
###・うまくいかないとき
+ Arduinoにスケッチを書き込めない
arduinoと連携するノードが含まれたvvvvのスケッチを閉じてみましょう
+ vvvvのパッチが動かない。Arduinoを接続したのにノードが赤い
Arduino IDE のシリアルモニタを閉じましょう
vvvvの他のパッチでArduinoと通信するノードを使ってませんか?使わないパッチは閉じましょう
#参考にしたもの
一番役に立った動画です。vvvvとarduinoのfirmata設定方法が説明されてます。全編英語https://www.youtube.com/watch?v=RQ54h88ptmc
vvvvの公式サイトに載ってたArduino連携に関するページhttps://vvvv.org/contribution/firmata-arduino-and-vvvv-an-introduction
firmataプロトコルのwikihttp://firmata.org/wiki/Main_Page
firmataプロトコル覚え書き というタイトルのページ。日本語です。https://gist.github.com/hiroeorz/7868628
ジェネラティブ・アート -Processingによる実践ガイド
Arduinoをはじめよう
vvvvook-プロトタイピングのためのビジュアルプログラミング入門