今回はGroveモジュールのジョイスティックをArduinoで使ってみます。

こちらがGroveのジョイスティックですが、ゲーム機のコントローラーについていそうなジョイスティックですね。

先日ポテンショメータの説明をしましたが、ジョイスティックもポテンショメータと同じく可変抵抗です。スティックの位置によって抵抗値が変化するので、その変化を電圧値としてマイコンで測定するわけです。なので、今回もADコンバーターを使ったプログラムになります。

サンプルプログラム

今回、Arduinoに書き込むプログラムはこちら。

GroveジョイスティックからのケーブルをGroveシールドのA0ポートに接続すると、x軸はA0、y軸はA1に接続されます。「なぜA1にもつながるのだろう?」と不思議に思ってGroveベースシールドの構成を調べたところ、A0ポートは実はA0とA1の両方につながっているんですね。

https://www.switch-science.com/catalog/1293/

ArduinoのADコンバーターは0~1023の値を取りますが、資料によるとGroveのジョイスティックは200~800の範囲に制限されているらしいです。

ItemMinTypicalMaxUnit
Working Voltage4.755.05.25V
Output Analog Value (X coordinate)206516798
Output Analog Value (Y coordinate)203507797
https://wiki.seeedstudio.com/Grove-Thumb_Joystick/

実際に動かした映像はこちら。

映像にあるようにx軸、y軸それぞれ最小値は260前後、最大値は750前後でした。

プログラムの簡単な説明

Grove LCDを使用するので「Wireライブラリ」と「rgb_lcdライブラリ」をインポートしています。詳しくは以前の投稿を参照してください。その後、Grove LCDのオブジェクトを作成しています。

初期化関数setup()ではGrove LCDを使うための処理をしています。これも以前の投稿を参考にしてください。

ループ関数loop()では、まずA0ポートとA1ポートからアナログ値を読み込んでいます。その後、LCDをクリアした後、x軸の値とy軸の値を表示しています。

最後に200ms待ち時間を設けています。

さいごに

ゲーム機のコントローラのようなジョイスティックをマイコンで扱えるようになると、何か面白いものが作れそうな気がしてワクワクしてきます。ジョイスティックを使った何か面白いアイディアがあればコメントを送ってください。