vvvvとarduinoを連携させてインタラクティブ動画みたいなことをしたい

足りないところは随時書き足します

#何がしたいわけ？
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.png](https://qiita-image-store.s3.amazonaws.com/0/159270/0dac318d-0e93-0b41-2317-923e00de0eff.png)

そのまま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につなげたりするのもありです
###・頑張ってノードをつなげる
ここがめんどくさかったです。賢い人はサブパッチ作ったりして効率化するでしょうが、私には無理でした。簡単な方法があったらこっそり教えてください。
![vvvv003-1.PNG](https://qiita-image-store.s3.amazonaws.com/0/159270/d8d56125-e719-0f9e-88ba-7e511d7494ad.png)
画像2.のIOboxの0-13がデジタルピン、14-19がアナログピンに対応しています。その隣(1.)はピンをどのモードで使用するかを設定しています
- Arduinoのセンサ値を取り出すノード
Arduinoに繋いだセンサの情報を取るときはArduinoサブパッチの1番左下とその右隣のピンから値を取り出します
`getSlice`で任意のピンの値を取り出します
vvvvで使いやすい値に加工するためにmapやdumper,Round,四則演算などを使います
![vvvv005.PNG](https://qiita-image-store.s3.amazonaws.com/0/159270/b7cda2ed-61dc-4c58-9fbe-d44b470d54db.png)

- vvvvで取得できる値をArduinoに送信するノード
vvvvで取得できる値というとmouseX,Yとか、マイクで拾った音の周波数とかだと思います。
Arduinoにvvvvで取得、加工した値を送るときはArduinoサブパッチの1番左上のピンから値をセットします
`setslice`で任意のピンに値を入れます
![vvvv004.PNG](https://qiita-image-store.s3.amazonaws.com/0/159270/b0468b64-4839-1cba-1038-0c587ec1ac04.png)

###センサーの入力値を見やすくする
arduinoの各ピンに入力があるかどうか、ボタン表示を使って直感的に見られるようにしました。意外と役に立ちます
![vvvv002.PNG](https://qiita-image-store.s3.amazonaws.com/0/159270/04f15358-2843-9f30-28b7-e7b53cd5c519.png)
インスペクタの設定↓
![vvvv001.PNG](https://qiita-image-store.s3.amazonaws.com/0/159270/f6f03ec8-9731-10ae-8c14-29f5f468f255.png)

#やっと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](https://www.youtube.com/watch?v=RQ54h88ptmc)
vvvvの公式サイトに載ってたArduino連携に関するページ[https://vvvv.org/contribution/firmata-arduino-and-vvvv-an-introduction](https://vvvv.org/contribution/firmata-arduino-and-vvvv-an-introduction)
firmataプロトコルのwiki[http://firmata.org/wiki/Main_Page](http://firmata.org/wiki/Main_Page)
firmataプロトコル覚え書き　というタイトルのページ。日本語です。[https://gist.github.com/hiroeorz/7868628](https://gist.github.com/hiroeorz/7868628)
 - - - - - - - - - - - 
[ジェネラティブ・アート -Processingによる実践ガイド](https://www.amazon.co.jp/gp/aw/d/4861009634/ref=dp_ob_neva_mobile)
[Arduinoをはじめよう](https://www.amazon.co.jp/Arduinoをはじめよう-第3版-Make-Massimo-Banzi/dp/487311733X)
[vvvvook-プロトタイピングのためのビジュアルプログラミング入門](https://www.amazon.co.jp/gp/aw/d/486100800X/ref=mp_s_a_1_1?__mk_ja_JP=カタカナ&qid=1485179216&sr=8-1&pi=AC_SX236_SY340_QL65&keywords=vvvvook&dpPl=1&dpID=51GIl3XWNsL&ref=plSrch)