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

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

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

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

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

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

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

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