それでは送られてきているデータの中身を確認してみます。各ボタンを押したときのデータが分かれば、後はそれとラピロの動作をひも付けることで、ラピロをリモートコントロールできるようになります。

 コントローラーから送られてくる信号を16進数表記で8バイトずつ表示するPythonプログラム「sixad_test1.py」を図1に示しました。

図1●sixad_test1.py
[画像のクリックで拡大表示]
$ sudo python sixad_test1.py 
このマークで改行

のように実行すると、写真1のような文字の羅列が現れます。

写真1●sixad_test1.pyの実行結果
[画像のクリックで拡大表示]
写真2●○ボタンを押したときのsixad_test1.pyの実行結果

 ○ボタンを押してすぐに指を放し、その部分のコードを確認してみると、写真2のようになっていました。DUALSHOCK3は、ボタン、アナログスティック、加速度センサーに変化があると8バイトの信号を送信するようです。○ボタンを押した衝撃で加速度センサーの信号も送られてしまうので、純粋に○ボタンを押した瞬間と指を放した瞬間の信号を抜き出してみると、図2のようになっていました。同様に、×、□、△ボタンを押してみると図3の結果が得られました。

図2● ○ボタンを押した時の信号
[画像のクリックで拡大表示]
図3● ×、□、△ボタンを押した時の信号
[画像のクリックで拡大表示]

 これらの信号を比較してみると、7~8バイト目がボタンの種類を表しているようです。7バイト目が01で、8バイト目が0C、0D、0E、0Fのときが、△、〇、×、□ボタンだと分かります。さらに5バイト目の01でボタンが押された、00でボタンが放されたことを示しています。

この先は会員の登録が必要です。今なら有料会員(月額プラン)が2020年1月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら