ジョイスティックモジュール

../_images/19_joystick.png

概要

ジョイスティックモジュールは、ノブの動きを水平(X軸)および垂直(Y軸)の二方向で測定する装置です。ゲームやロボット、カメラなど、多種多様なアプリケーションでの操作に使用できます。

原理

ジョイスティックは、通常10キロオームの2つのポテンショメータに基づいて動作します。X軸とY軸の方向で抵抗が変わると、Arduinoはこれをx座標とy座標として解釈するための異なる電圧を受け取ります。プロセッサには、ジョイスティックのアナログ値をデジタル値に変換し、必要な処理を行うためのADCユニットが必要です。

Arduinoボードには10ビットのADCチャネルが6つあります。Arduinoの基準電圧(5V)が1024セグメントに分かれます。ジョイスティックがx軸に沿って動くと、ADCの値は0から1023まで上がり、値512が中央になります。以下の画像は、ジョイスティックの位置に基づいたADCのおおよその値を示しています。

../_images/19_joystick_xy.png

使い方

使用する電子部品

  • Arduino Uno R4またはR3ボード * 1

  • ジョイスティックモジュール * 1

  • ジャンパーワイヤー

回路組み立て

../_images/19_joystick_module_circuit.png

コード



コードの説明

  1. ジョイスティックのピン設定。ここでは、ジョイスティックのX軸とY軸が接続されているアナログピンを定義します。

    const int xPin = A0;
    const int yPin = A1;
    
  2. setup() 関数内での初期化。このセクションでは、シリアル通信を設定し、Arduinoとシリアルモニター間でメッセージの送受信を可能にします。

    void setup() {
      Serial.begin(9600);
    }
    
  3. loop() 関数内でのジョイスティック値の読み取り。Arduinoは継続的にジョイスティックからX値とY値を読み取り、それらをシリアルモニターに出力します。各出力の後に短い遅延があり、これにより読み取りがより読みやすく、シリアルモニターが圧倒されないようにしています。

    void loop() {
      Serial.print("X: ");
      Serial.print(analogRead(xPin));
      Serial.print(" | Y: ");
      Serial.println(analogRead(yPin));
      delay(50);
    }
    

さらに多くのプロジェクト

  • ジョイスティックの値を用いてサーボモーターを制御し、ジョイスティックの動きに応じて動かします。