工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

Arduinoジョイスティックモジュールの製作:仕組みから配線・プログラミングまで徹底ガイド

モーション制御やロボティクス関連のプロジェクトを扱っている方なら、Arduinoジョイスティックモジュールの名前を聞いたことがあるでしょう。しかし、実際にどうやって作るのか、どう動くのか分からないという方も多いはずです。

この記事では、Arduinoジョイスティックモジュールの仕組み、特徴、配線方法、そしてArduinoとのインターフェース方法まで、ステップバイステップで詳しく解説します。自作ジョイスティックでロボットやカメラ制御など、様々なプロジェクトに応用してみましょう。

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

ロボットプロジェクトの多くでジョイスティックは必須ですが、専用コントローラーを入手するのは難しく、高価な場合もあります。ジョイスティックモジュールは、アナログゲームパッドのジョイスティックと同様の機能を、安価に実現できるデバイスです。

主な構成要素は、90度の角度で傾けられた2つのポテンショメータと、バネで中央に戻る短いスティックがこれらに接続されたものです。

動作原理

ジョイスティックが静止している状態では、X軸とY軸から約2.5Vが出力されます。スティックを動かすと、方向に応じて出力電圧が0V〜5Vの範囲で変化します。マイクロコントローラー(10ビットADC)で読み取る場合、静止時の値は約512(1023の半分)となり、スティックの位置に応じて0〜1023の値が得られます。

ピン構成

ピン番号ピン名説明
1GNDモジュールのグランド端子
2+5Vモジュールの正電源端子
3VRxX軸に比例した電圧出力
4VRyY軸に比例した電圧出力
5SWモジュールのスイッチ(スティック押し込み検出)

主な特徴

技術仕様

回路図

ジョイスティックモジュールの完全な回路図を示します。前述の通り、X軸とY軸を制御する2つのポテンショメータ(各10kΩ)が独立して動作します。また、スイッチ(SW)ピンは内部でプッシュボタンに接続されています。

Arduinoとのインターフェース

ジョイスティックモジュールは、Raspberry Pi、Arduinoなど多くのマイクロコントローラーと互換性があり、接続も簡単です。まず、VRxとVRyピンをマイクロコントローラーのADCピンに接続します。スイッチを使用する場合は、デジタルピンに接続してください。

Arduinoへの接続図

以下の接続でArduinoとジョイスティックモジュールを接続し、スティックの動きに応じた出力を得られます。

Arduinoサンプルコード(基本読み取り)

ライブラリ不要で、アナログ入力を読み取りシリアルモニタに表示する基本スケッチです。

#define joyX A0
#define joyY A1

void setup() {
  Serial.begin(9600);
}

void loop() {
  int xValue = analogRead(joyX);
  int yValue = analogRead(joyY);
  
  Serial.print(xValue);
  Serial.print("\t");
  Serial.println(yValue);
  
  delay(100);
}

マッピング機能(8×8 LEDマトリックス表示例)

読み取ったアナログ値を、ディスプレイや他のインターフェースに合わせてマッピングする例です。ここでは8×8 LEDマトリックス上でピクセルをジョイスティックで動かします。

#include "LedControl.h"
#define joyX A0
#define joyY A1

int xMap, yMap, xValue, yValue;
LedControl lc = LedControl(12, 11, 10, 1);

void setup() {
  Serial.begin(115200);
  lc.shutdown(0, false);
  lc.setIntensity(0, 8);
  lc.clearDisplay(0);
}

void loop() {
  xValue = analogRead(joyX);
  yValue = analogRead(joyY);
  xMap = map(xValue, 0, 1023, 0, 7);
  yMap = map(yValue, 0, 1023, 7, 0);
  lc.setLed(0, xMap, yMap, true);
  delay(50);
  lc.clearDisplay(0);
}

ポイント: `map()` 関数を使って、0〜1023の範囲を任意の範囲(ここでは0〜7)に変換しています。この手法でOLEDやグラフィックディスプレイへの応用も容易です。

主な応用例

まとめ

ジョイスティックと聞くとゲームコントローラーを連想しがちですが、DIYエレクトロニクスではロボット制御やモーションアプリケーションなど、実に多様な用途があります。本モジュールは、スティックの水平・垂直移動に応じてアナログ出力を生成し、マイクロコントローラーのアナログ入力に供給する仕組みです。

基本的な接続とコードを理解すれば、アイデア次第で様々なプロジェクトに応用できます。ご質問やご提案があれば、お気軽にお問い合わせください。

産業技術

  1. Arduinoで作るパンチングキーボードボタン:ストレス解消カスタムキー
  2. Arduino MegaとNEO-6M GPSモジュールの接続:ステップバイステップガイド
  3. ゲーム用カスタムArduinoジョイスティックハンドルの製作
  4. Arduinoで楽器演奏:音階生成のステップバイステップガイド
  5. Arduinoと超音波センサーで自動ドアを制御:LCD・ブザー付き完全ガイド
  6. Bluetooth制御Arduinoカー完全自作ガイド – 3Dプリント&Arduino Nanoで作る2輪ロボット
  7. Arduino Nanoで作るDIYミニオシロスコープ – ステップバイステップチュートリアル
  8. Arduino Nanoで作るJARVIS v1 音声制御ホームオートメーション
  9. Arduino Due望遠鏡制御キット「rDUINOScope」 - GPS、RTC、Bluetooth、ジョイスティック搭載のスタンドアロンGOTOシステム
  10. ArduinoとMPU-6050で作るジェスチャー制御ロボット(自作ハンドジェスチャーRCカー)
  11. Arduinoで大型3Dプリンターを自作するステップバイステップガイド