Arduinoで純正PS2コンを使う

きっかけ

新入生ロボコンでロボットをPS2のコントローラで動かしたいなぁ~と思った。

有線コントローラを使うにはヴイストンのPS2コン型の無線コントローラ(VS-C1)と比べてもう一手間必要だったのでそのへんも含めて書きます。

 

導入

①ライブラリをインストール

先人が作ったライブラリがあるのでありがたく使わせてもらいます。

上記のページにアクセスし、「Clone or download▼」→「Download ZIP」とクリックしていき、「Arduino-PS2X-master.zip」を好きな場所に保存します。

ライブラリのインストール方法はいくつかあるので、ZIPファイルを解凍して「PS2X_lib」フォルダを「libraries」フォルダにぶち込むなり、ArduinoIDEを起動して「スケッチ」→「ライブラリを使用」→「Add Library...」で先ほどダウンロードしたZIPファイルを選択したり好きなようにやってください。

OSやIDEのバージョンによってやり方が違ったりするので分からなかったらググッてね。

 

Arduinoとコントローラを繋げる

これがPS2コントローラの端子です。

f:id:Tarabakani:20160816173453p:plain

① Data
② Command
③ Vibration
④ GND
⑤ 3.3V
⑥ Attention
⑦ Clock
⑧ Unkown
⑨ Acknowledge

 

家でまだPS2が現役な自分はケーブルぶった切って繋げるのが嫌だったので、ハードオフで初代PSを100円で購入し破壊分解してコントローラの接続部を取り出しました。

今回は①②④⑤⑥⑦の6本の端子を使います。
③の端子に7~9V?くらい流すと振動機能が使えるっぽいですが自分が未検証なので使わない方向で。

サンプルプログラムより、
①ー12番ピン
②ー11番ピン
④ーGNDピン
⑤ー3.3Vピン
⑥ー10番ピン
⑦ー13番ピン
というように接続します。

VS-C1のような無線コントローラの受信部を繋げるだけなら上記のように直接接続するだけで良さ気ですが、有線コントローラの場合、①Dataと⑥Attention端子にプルアップ抵抗を入れる必要があります。

接続した図がこれになります。ゴチャゴチャしてしまって申し訳ない。f:id:Tarabakani:20160816222821p:plain

 

③動かす

 ArduinoIDEを起動させ、「ファイル」→「スケッチの例」→「PS2X_lib」→「Examples」→「PS2X_Example」とクリックしていくとサンプルプログラムが表示されます。
これが見つからなかったらライブラリのインストールがうまく出来ていない可能性が高いです。

 

表示されたサンプルプログラムをArduinoに書き込みます。

うまく書き込みができたら「ツール」→「シリアルモニタ」をクリックし、シリアルモニタを立ち上げます。

右下の数字をクリックし、「57600 baud」を選択します。

「"Found Controller, configured successful"」と出てきたら成功です。
ボタンをポチポチ押したらそれに応じて色々出てくるはずです。

L1かR1を押すとアナログスティックの値が表示できます。

 

これで導入成功です。お疲れ様でした。

 

おわり

なんか会室からVS-C1が発掘されたので結局それ使った