(Updated )

mbedでVS-C3を使ってみた

mbedでvstoneのコントローラVS-C3を使ってみました。その使い方をメモ。 このコントローラはPS2のコントローラ(DUALSHOCK2)と(信号の)互換性があるのでDUALSHOK2でも同様にmbedで扱えると思います。

利用するライブラリはSugaKoubouさんのPS_PADです。 https://developer.mbed.org/users/okini3939/code/PS_PAD/

サンプルプログラムはこちら。 https://developer.mbed.org/users/ds074704261/code/PSController_Sample/

接続方法はサンプルプログラムにコメントとして書いておきました。このエントリにも抜粋します。

/*
* ======================
* VS-C3/VS-RCV3 PIN
* ======================
* 1:NC 2:NC
* 3:DAT 4:CMD
* 5:SEL 6:CLK
* 7:+5~7V 8:NC
* 9:+3V 10:GND
*
*/

この中で必要なのは

  • DAT
  • CMD
  • SEL
  • CLK
  • +3V
  • GND

以上6ピンです。

main.cppでは以下のようにして接続するピンを定義します。SPIを利用しているので、mbed(LPC1768/LPC1769)では利用できるピンはp5-p7またはp11-p13です。今回はp5-p7を利用しています。

mbed_pin

main.cpp
PS_PAD vsc3(p5, p6, p7, p21);

PS_PAD.cppでは以下の順番で関数が定義されているので順番に気をつけてください。

PS_PAD.cpp
PS_PAD::PS_PAD (PinName mosi, PinName miso, PinName sck, PinName cs) : _spi(mosi, miso, sck), _cs(cs) {
_spi.format(8, 3);
_spi.frequency(250000);
_cs = 1;
_vib1 = 0;
_vib2 = 0;
_connected = false;
}

名称については以下の通りです。

信号名SPIの信号名
DATMISO
CMDMOSI
SELSS/CS
CLKSCK

あとはサンプルの通り、vsc3.poll();したあと、 vsc3.read(PS_PAD::PAD_CIRCLE)などでボタンの状態を取得できます。 ボタンは以下の通りです。

  • PAD_LEFT
  • PAD_BOTTOM
  • PAD_RIGHT
  • PAD_TOP
  • PAD_START
  • ANALOG_LEFT
  • ANALOG_RIGHT
  • PAD_SELECT
  • PAD_SQUARE
  • PAD_X
  • PAD_CIRCLE
  • PAD_TRIANGLE
  • PAD_R1
  • PAD_L1
  • PAD_R2
  • PAD_L2

アナログスティックの状態は以下の4つに分けられますが、PS_PAD.cppの中で現在値-0x80して128引かれているので注意が必要です。

  • ANALOG_RX
  • ANALOG_RY
  • ANALOG_LX
  • ANALOG_LY

ループのなかにwait()を入れるのを忘れないように注意してください。サンプルでは0.05sec確保しています。

VS-C3

V-controller3取扱説明書

ただ単に動かすだけならばインポートし、編集するだけで十分だとは思いますが、詳しく理解するためには以下のサイトが便利です。

プレイステーション用コントローラDUALSHOCK2でロボを動かす http://homepage3.nifty.com/nisokuda-yahhoi/dualshock2.htm

【【【【【 デュアルショック2(SCPH-10010)の新機能使用方法 】】】】】 http://applause.elfmimi.jp/dualshock/millar/NT/dualshock_2.txt

【【【【【 デュアルショック(SCPH-1200)の解析 】】】】】 https://applause.elfmimi.jp/dualshock.txt

プレイステーション・PAD/メモリ・インターフェースの解析 http://kaele.com/~kashima/games/ps_jpn.txt

電子工作:DualShock2(PS2コントローラ)の信号解析サイトとコントローラ考察 | Scratchpad http://www.usagi1975.com/20140731610/

ちなみにAVRで扱う場合はこちらのページが参考になるかと思います。 AVRでPS2コントローラーを使ってみた - 夕天の技術書 http://sekiten42.hatenablog.com/entry/2015/01/05/225304

Share — X · Bluesky · はてブ ·