PS2コントローラの使用法

Last-modified: 2015-08-31 (月) 00:40:58
 
 

概要

PSoC3でPS2コントローラを使用する方法を説明します。

設定

必要なソースコードの入手

  • ソースコードの入手方法は2つあります。
  • ひとつはロボ部サーバから入手する方法です。
    /プログラム/Library/PS2_Controller/にあるPS2_Controller.cとPS2_Controller.hをプロジェクトのフォルダにある、プロジェクト名.cydsnの中にコピーしてください。
  • もうひとつはgithubから入手する方法です。ロボット倶楽部のgithubにPSoC3_Libraryというリポジトリがあるのでこれをローカルにクローンしてください。クローンができたら、PSoC3_Library/PS2_Controllerの下にあるふたつのファイルをプロジェクト名.cydsnの中にコピーしてください。

目的のプロジェクトにソースを追加

次に入手したソースコードをプロジェクトに追加します。

  • 目的のプロジェクトを開いてください。
  • デフォルトでは左にあるWorkspace ExplorerにHeader Filesという項目があります。そこで右クリック、Add、Existing Item...を選択します。
    ps2_headerfile.png
  • 先にコピーしたPS2_Controller.hを選択して開くをクリックします。
  • Source Filesからも同じようにしてPS2_Controller.cを追加します。
  • 成功すればWorkspace Explorerにこのように表示されます。
    ps2_headersave_0.png

必要モジュールの追加、設定

次にPS2コントローラを使うために必要なモジュールを設定します。

  • Workspace ExplorerからTopDesign.cyschを開いてください。
  • 空のページを追加します。
    ps2_addpage.png
  • 追加したページの名前をPS2に変更します。ここにPS2コントローラに関するモジュールを配置します。
  • まずUARTモジュールを追加します。Component CatalogでUARTを検索し、でてきたUARTモジュールをTopDesignにドラッグアンドドロップしてください。
    ps2_adduart.png
  • UARTモジュールを設定します。追加したUARTモジュールをダブルクリックするとConfigure'UART'が表示されます。これを以下のように設定してください。
    ps2_uartconfig1.png
    ps2_uartconfig2.png
    ps2_uartconfig3.png
    設定が終わったらOKボタンをクリックして設定を有効にしてください。
  • TX_1がUARTモジュールから切り離されるのでTX_1を削除します。
  • RX_1に接続されているcy_pinsモジュールの名前を'PS2_IN'に変更してください。
  • PS2_INのピン設定を行ってください。
  • logic lowを追加します。Component Catalogでlogic lowと検索し、でてきたLogic Lowモジュールを先に追加したUARTモジュールのresetに接続するように配置してください。
    ps2_logiclow.png
  • Logic Lowモジュールの名前を'ZeroTerminal_3'に変更してください。
  • Interruptモジュールを追加します。Component Catalogでisrと検索し、でてきた'Interrupt'モジュールを先に追加したUARTモジュールのrx_interruptに接続するように配置してください。
    ps2_interrupt.png
  • 追加したInterruptモジュールの名前を'ISR_PS2'に変更してください。
    ps2_module.png

使い方

構造体変数宣言

  • PS2コントローラを使用するために必要な構造体PS2Controllerの変数を宣言します。
    PS2Controller psData;

初期化処理

  • 初期化のため下のコードを書きます。
    PS2_Start();

値の取得方法

  • PS2コントローラの最新の状態を取得するためにはPS2_Controller_get関数を使用します。PS2_Controller_get関数は以下のように定義されています。
    PS2Controller PS2_Controller_get(void);
  • 下のコードを書いたとき、psDataにはPS2コントローラの最新の状態が保存されます。
    PS2Controller psData;
    psData = PS2_Controller_get();
  • ボタンが押されているかどうか確認するためにはPS2_Controller_getで取得した値を見ます。
    例えば○ボタンが押されているか確認するためには上のコードに加え下のようなコードを書きます。
    if(psData.CIRCLE){
    	//○ボタンが押されている場合の処理
    }else{
    	//○ボタンが押されていない場合の処理
    }
    PS2Controller構造体の詳細についてはPS2_Controller.hを確認してください。
    #include
    #include
    int main()
    {
        PS2Controller psData;
        PS2_Start();
        while(1)
        {
            psData = PS2_Controller_get();
            if(psData.CIRCLE){
                //○ボタンが押されているときの処理
            }else{
                //○ボタンが押されていないときの処理
            }
        }
    }