PhidgetInterfaceKitでLED点滅テスト
ちょっと前に友人と一緒に買ったPhidgetInterfaceKitが届いたので、ちょっといじってみた。とりあえず、LEDを点灯させてみたい!と思い、それを実装したところまでをメモしておきます。(電気的知識に疎いので、なんとなく動けばいい、というレベルでやっています。こうしたほうが良い、安全だ、等、アドバイスがあれば教えてくださいませ。)
準備
今回の環境は、PhidgetInterfaceKit 8/8/8 を、WindowsXP SP2 につなげ、開発は、VC++ 2005を使用します。
Phidgetのダウンロードページ から Phidget.msi をダウンロードしてインストール。
そのあと、USBをつなげてみて、認識すればOK。認識しなければ、一度アンインストールしたり再起動後、もう一度インストールすればOK。(でした。自分の場合・・。)
examples/InterfacekitTest
サンプルコードを元にするので、次にサンプルコードをダウンロードします。
Phidgetのダウンロードページ からExamplesというのをダウンロードして、展開し、適当なディレクトリに配置。
AllExamplesディレクトリ内にあるソリューションファイルAllExamples.slnをダブルクリックで立ち上げ、InterfacekitTestプロジェクトをビルドして動作確認。
入力、出力状態に変化があったとき、その値を1000フレだけ出力するコンソールプログラムが起動し、終了します。
LED接続
次に、出力のためにLEDをつなげます。LEDはPhidgetInterfaceKitについてきてたものを使います。
PhidgetInterfaceKit 8/8/8 の場合、PDFドキュメントによると、デジタルアウトの前に300Ωの抵抗が接続済みらしいので、そのままつなげても大丈夫だと判断して、大胆に直接差し込んで使用します。使用するポートは隣にG(グランド)に近くて使いやすい7番を使うことにします。2本足のLEDは長い足のほう(アノード)が + なので7番に刺し、短い足のほう(カソード)を G に刺します。マイナスドライバで軽くねじを締めて固定し、ハードは完了。
ザクッとね。
コード修正
ハードウェアは完了したので、次にソースの改良。
と言っても簡単。
InterfacekitTestプロジェクトの、InterfacekitTest.cpp の test_interfacekit関数内を以下のように書き換えます。
// Digital Output #7 につなげた LED を点滅させるテスト. while( true ){ SYSTEMTIME aTime; GetLocalTime( &aTime ); // 現在時刻を取得. bool aFlagLed = ((aTime.wSecond % 2) == 0); // 偶数秒は点灯. CPhidgetInterfaceKit_setOutputState(IFK, 7, aFlagLed); // 7番. // スペースバーを押したら終了. if( GetAsyncKeyState(VK_SPACE) & 0x8000 ){ break; } } // 後片付け(つけっぱなしで終了はかっこ悪い). CPhidgetInterfaceKit_setOutputState(IFK, 7, false); /* for (i = 0; i<1000; i++) { CPhidgetInterfaceKit_setOutputState(IFK, 0, true); //Sleep(500); CPhidgetInterfaceKit_setOutputState(IFK, 0, false); //Sleep(500); } */
結果
以上でとりあえずできましたー。
うーん、次はサーボモーターとか制御したくなるなぁ・・。