PhidgetInterfaceKitのデジタルアウトプット

PhidgetInterfaceKitにいろいろつなげたいなー、と思うのですが、出力ポートはデジタルポートが8個のみ。で、そこへ出力するには、Cライブラリの場合、CPhidgetInterfaceKit_setOutputState という関数を使う。C_API_ManualというPDFマニュアルによると、以下のような説明になっています。

CPhidgetInterfaceKit_setOutputState (CPhidgetInterfaceKitHandle, int Index, int newVal);
Sets the state of the designated output to True or False. Depending on the type of output available the specified output goes to a high value or completes a connection. Please see the hardware description for details on different outputs.

この関数についてちょっと調べてみました。

CPhidgetInterfaceKit_setOutputStateの引数

newValに0, 1以外の値を与えたらどうなるかなー、と思って調べてみたら、どうやら、0かそれ以外、という感じで処理しているみたいです。
つまり、newValに1を与え関数を実行したあとに、2を与えて関数を実行しても、IFK_OutputChangeHandlerは呼ばれません。

実際の電圧を確認

PhidgetInterfaceKit 8/8/8の場合、このドキュメントを読むと、5Vがほぼそのまま来ているような印象を受けますが、本当かどうか検証してみます。
コードはこの前のコードをちょっと修正し、0番ポートも同じように切り替えるようにしてみます。

CPhidgetInterfaceKit_setOutputState(IFK, 0, aFlagLed);
CPhidgetInterfaceKit_setOutputState(IFK, 7, aFlagLed);

こんな感じで。

結果


うん、なるほど、電圧が落ちるまでの時間とかあるけど、やっぱり newVal に非ゼロを与えて関数を実行したら、5V がかかり、ゼロを与えて関数を実行したら 0V になるのですね。
さて、何つなげよっか・・。