(第8回)コントローラー(その3)

作成したコントローラーがちゃんと動いているのか?確認していきます。せっかくですので、どのように通信されているのか?説明したいと思います。 シリアル通信で通信内容を確認しますが、Arduino IDEのシリアルモニタでは表示ができませんので、 別のソフトをインストールする必要があります。

コントローラーの動作確認をする

<使っている部品>

a.(改造済み)アナログコントローラ(DUALSHOCK 2)

b.FTDI USBシリアル変換アダプター Rev.2

c.USBケーブル(micro-B)

d.パソコン(インターネットに接続できる状態)

1.接続

aにbを接続します。GNDとVCCの電源は同じ端子に接続しますが、aの中のマイコンのTXはbのRXとaの中のマイコンのRXはbのTXと 接続します。

(接続図)

2.通信確認用プログラム

BCを接続して、CをDと接続します。(通常のプログラムを書き込むときと同じ感じ)しかし通信を確認するためにプログラムを準備する必要があります。TeraTERMという通信確認用のプログラムをインストールします。

①インストール
インターネットで検索してダウンロード→インストールを実施します。(詳細は説明しないので、検索してください)

②プログラムの設定
通信結果の表示は特殊な方法を使いますので、設定を変更します。
Windowsのプログラムの中からTeraTermを探し、右クリックしてその他→ファイルの場所を開くを押します。
TeraTermのプログラムアイコンを右クリックしてプロパティのウィンドウが開いたら、ファイルの場所を開くのボタンを押します。
「TERATERM.INI」という設定ファイルをメモ帳などで開きます。

設定ファイルを開いたら、「debug mode」を検索すると
「Debug=off」という行があるので
「Debug=on」に書き換えて、上書き保存します。

③プログラムの起動とデータ確認
・プログラムを実行したら「シリアル」を選択して、接続したポートを選んでOKを押します。
・メニュー「設定」→「シリアルポート」を押します
・TeraTermのプログラムアイコンを右クリックしてプロパティのウィンドウが開いたら、ファイルの場所を開くのボタンを押します。
・ボー・レートを「57600」を選んでOKを押します。
・文字が表示されていれば、通信しています。この時に「Shift」+「ESC」を2回押すと「FF」が表示されるようになります。(「Debug=on」必須)
・最後にプログラムのウィンドウの幅を24x20にすると表示がきれいに並びます。(16文字のデータで1組のため)

④データの意味(16進数で表示)
TERATAERMをみると2文字づつ8組並んでいます。2文字=1バイトなっています。スマホやハードディスクのあのバイトです。コントローラーから出力されるのは8組あるので、8バイトとなります。
1バイト目:必ずFFとします。他の7バイトは絶対にFFにならないので、FFがデータの先頭であることがわかります。
2バイト目:左スティックの横方向の角度(0~FE)
3バイト目:左スティックの縦方向の角度(0~FE)
4バイト目:右スティックの横方向の角度(0~FE)
5バイト目:右スティックの縦方向の角度(0~FE)
6バイト目:十字キー4カ所、L1、R1、L3
7バイト目:〇×△□4カ所、L2、R2、R3
8バイト目:セレクト、Start、拡張用(信号)
2から4バイト目は最大FE、5から8バイト目もボタンを7個までとして、FFにならないようにします。

これでPS2のコントローラーからボタンの状態を取得するようにできました。コントローラーとほかのマイコンを接続すれば、コントローラーの ボタンを押したときに、モーターを動作させることができます。メカナムホイールは常に4輪を動作させますが、1つのボタンでも4輪動作できるので、手動のスイッチではコントロールできない動作が可能になります。
また、セレクトボタンを押すとLEDがON-OFFされますが、これは拡張用の信号として 出力されます。ロボコンで親機と子機を操作する場合に有効です。

-------------