Arduino悪用術入門
麦茶をこっそり麺つゆに入れ替える装置を作る
3D Pad実践
ここでいよいよ3D Padが登場します。ここではデバイスの使用感を分かっていただくために、ちょっと詳しく説明してみたいと思います。(技術的な内容ですので、興味がない方はこのページを読み飛ばしてください)
Arduino用のシールドなので、使用にはArduinoが必要です(写真では3D Padの下にすっぽり隠れてます)。USB電源では動作せず、12V程度のACアダプタでの給電が必要です。
開発元から送られてきた試用機には、テスト用のスケッチ(Arduino用プログラム)が付いていました。動かしてみましょう。
上のキャプチャは、Arduino IDEのシリアルモニタです。ジェスチャーを読み取って、その内容がPCにシリアル通信で転送されているのが分かります。PC上で処理するのであれば、そのまま使えそうなスケッチです。
今回はスタンドアローンで動かしたいので、PCではなくもう一台のArduinoに送信するように工夫しました。
テスト用スケッチを書き換えて、送るメッセージをジェスチャーの長い名前ではなく、数字1文字に変更しました(libraries\ElektorLabs3DPad\SendValueByUART.cppを変更しています)。
再びシリアルモニタで見てみます。PCに数字が送られるようになりました。
別のArduinoに情報を送信する
次に、シリアル通信の送信先を変更します。Arduino同士でシリアル通信をさせるには、以下のような接続をします。
- 送信側のTXピン(Digital 1ピン)と、受信側のRXピン(Digital 0ピン)を接続
- 2台のGnd同士を接続
- 2台のVin同士を接続(※電源を共有したい場合)
今回は片道通信ですが、往復の場合はTX-RXをお互いつなぎ合わせればよいです。
※TXピン、RXピンを接続するとUSB経由でのシリアル通信が遮断されます。そのままスケッチを書き込もうとするとエラーになるので気をつけてください(それぞれピンを抜けばできます)。
3D Pad使用中はシールドでTX/RXピンがふさがってしまうので、こんなふうにArduinoの裏側にピンソケットをはんだ付けしました。すぐ取れるので上からホットボンド等で固めてしまうのがいいと思います。
受信側のスケッチはこんな風に書きました(55、50、51などの数字は、3D Padから送った数字のASCIIコードです)。これで3D Padまわりの作業は完成。
3D Padのジェスチャーの認識についてですが、現時点では、スワイプ(手を上下左右に動かす)は誤検出多め、ローテート(指をクルクル)はかなり正確、プッシュ/プル(手を近づける、遠ざける)は検出されないことが多め、といった感じです。ただ、このあたりはソフトウェア的に処理しているようなので、今後改善されるかもしれません。