背後の話し
フィジカルコンピューティングといえば、Arduinoがもっとも有名かつメジャーだと思います。
USBで接続でき、Cライクな言語でプログラミング(スケッチという)を行い、動作を見ることができます。
しかし、PCとArduinoの連携を考えた場合、この環境は致命的です。
なぜならば、Arduinoの世界からWindowsのサービスを呼び出すというのは、非常に困難だからです。
もちろん、Windowsでの開発ツールでもっともメジャーなMicrosoft Visual Studioや言語Visual BasicはMicrosoftが著作権をもったものです。オープンソースとは対向にあります。
それゆえ、Arduinoを開発している人々にとっては触れたくない領域でしょう。
しかし、PCを単なる開発環境に留めていると、Arduino側でやらねばならないことはとても多くなります。
むしろ非常にシンプルにUSB経由でPCから来る命令に従い、ポートのオン、オフをしてくれる機能だけのほうが、PCとの連携を考えた場合はスッキリしたデザインとなります。
一方で、.NETフレームワークの2.0になってシリアルポートの扱いが簡単になりました。が、つないだArduinoのピンのデータを読み書きすることは、いまだ簡単ではありません。
シリアルポートのプロトコルとして、Firmataは有名です。これを利用してArduinoをホストPCからコントロールできます。
firmataVBでは、3つのライブラリーを用意してくれています。FirmmataVB.dll, DigitalPinControl.dllとAnalogPinControl.dllです。
FirmataVB
FirmataVBは、.netコンポーネントのクラスライブラリーとして実装されています。これはFirmata V2.0プロトコルに基づいて、データの送受をします。
コンポーネントはシリアルポートと接続し、ポートを使って通信するために必要なプロパティやメソッドを提供します。
使い方はふたとおりあります。
ひとつは、ToolBoxのコンポーネントとして追加する方法です。これはフォームに単純にドラッグドロップすればコードを書かなくてもプロジェクト中で有効になります。
もうひとつは、プロジェクトの中でFirmataVB.dllクラスを参照する方法です。そして、インスタンスを作ります。
しばしばある、
Private Arduino AS New Firmata.FirmataVB
Digital Pin Control
DigitalPinControl.dllはToolBoxに加わり、ユーザーコントロール機能を提供します。
フォーム上で必要なデータを扱えます。
ボタンを押したり、スイッチを倒すとArduinoのデジタルピンはFirmata経由でDigital Pin Controlへ送られます。LEDの絵でONかOFFかわかります。
同様にコントロールから指令はArduinoに飛びます。単純なON,OffはボタンやPWMを示すSLIDERバーで送られます。PWMはArduino上でPWMをサポートしているポートのみで有効です。
DigitalPinControl.dllはわかりやすいので、動作テストに最適です。
Analog Pin Control
AnalogPinControl.dllもToolBoxに加えることができます。フォームに置くことで動作させられます。
Analog Pin ControlはArduinoのアナログピンからアナログデータを扱います。
0-1023がプログレスバーで示すことができる値です。オン・オフボタンは特定のピンの動作を指定できます。
Arduino上でアナログピンに関連づけられたボリュームは、動作テストに最適です。