以前、ジョイスティックをArduino UNOと接続して、ジョイスティックがどのように機能するかを理解し、左右、上下の動きで4つのLEDを制御しました。このプロジェクトでは、ゲームパッドまたはゲームコントローラーと同じジョイスティックを使用して、左右、上下の動きが必要なコンピューターゲームをプレイします。より多くの制御オプションを必要とするゲームをプレイするには、2つ以上のジョイスティックを使用できます。ここでは、Arduino Leonardoを使用して、ジョイスティックをゲームコントローラーとしてインターフェイスします。Arduino Leonardoは、USBドライバーをインストールでき、接続時にコンピューターでマウス、キーボード、またはジョイスティックとして検出できるというUnoよりも優れています。
必要なコンポーネント
- Arduino Leonardo
- 二軸XYジョイスティックモジュール
- Arduino IDE
- 接続線
Arduino Leonardo
このプロジェクトでは、Arduino Leonardoを使用しています。これは、ATmega32u4をベースにしたマイクロコントローラーボードです。20個のデジタル入力/出力ピン(うち7個はPWM出力として、12個はアナログ入力として使用可能)、16 MHz水晶発振器、マイクロUSB接続、電源ジャック、ICSPヘッダー、およびリセットボタンがあります。マイクロコントローラをサポートするために必要なすべてが含まれています。USBケーブルでコンピューターに接続するか、AC-DCアダプターまたはバッテリーで電源を入れてください。
Leonardoは、ATmega32u4にUSB通信が組み込まれているという点で、これまでのすべてのボードとは異なり、セカンダリプロセッサが不要です。これにより、Leonardoは、仮想(CDC)シリアル/ COMポートに加えて、接続されたコンピューターにマウスとキーボードとして表示されます。
技術仕様
マイクロコントローラー | ATmega32u4 |
動作電圧 | 5V |
入力電圧(推奨) | 7〜12V |
入力電圧(制限) | 6-20V |
デジタルI / Oピン | 20 |
PWMチャネル | 7 |
アナログ入力チャンネル | 12 |
I / OピンあたりのDC電流 | 40 mA |
3.3VピンのDC電流 | 50 mA |
フラッシュメモリー | 32 KB(ATmega32u4)のうち4KBがブートローダーによって使用されます |
SRAM | 2.5 KB(ATmega32u4) |
EEPROM | 1 KB(ATmega32u4) |
クロック速度 | 16 MHz |
長さ | 68.6 mm |
幅 | 53.3 mm |
重量 | 20g |
PIN出力リファレンス
二軸XYジョイスティックモジュール
ジョイスティックに はさまざまな形状とサイズがあります。典型的な ジョイスティックモジュール を次の図に示します。このジョイスティックモジュールは通常、アナログ出力を提供し、このモジュールによって提供される出力電圧は、移動する方向に応じて変化し続けます。そして、いくつかのマイクロコントローラーを使用してこれらの電圧変化を解釈することにより、移動の方向を取得できます。以前は、ジョイスティックをさまざまなマイクロコントローラーとインターフェースしていました。
- ジョイスティックとArduinoのインターフェース
- ジョイスティックとラズベリーパイのインターフェース
- ジョイスティックとPICマイクロコントローラーのインターフェース
- AVRマイクロコントローラーとインターフェースするジョイスティック
ご覧のとおり、このジョイスティックモジュールには2つの軸があります。X軸とY軸です。ジョイスティックの各軸は、ポテンショメータまたはポットに取り付けられています。これらのポットの中間点は、RxとRyとして追い出されます。したがって、RxとRyはこれらのポットへの可変ポイントです。ジョイスティックがスタンバイ状態のとき、RxとRyは分圧器として機能します。
ジョイスティックを横軸に沿って動かすと、Rxピンの電圧が変化します。同様に、縦軸に沿って動かすと、Ryピンの電圧が変化します。したがって 、2つのADC出力に4方向のジョイスティックがあります。スティックを動かすと、各ピンの電圧が方向に応じてハイまたはローになります。
回路図
このArduinoジョイスティックゲームコントローラーには、次のようにArduinoとジョイスティックを接続する必要があります。
コードと動作の説明
最後に、デモビデオを含む完全なコードを示します。ここでは、その重要な部分について説明します。
まず、キーボードライブラリを初期化する必要があります
#include
次のコードでは、アナログピンA0とA1のジョイスティックモジュールのX軸とY軸をそれぞれ初期化しました。
const intX_pinとconstintY_pinそれぞれ
VRXピンのアナログ値が読み取られ、値が1023の場合は「上」のコマンドが与えられ、値が0の場合は「下」のコマンドが与えられます。
同様に、VRYピンのアナログ値が読み取られ、値が1023の場合は「右」のコマンドが与えられ、値が0の場合は「左」のコマンドが与えられます。
ジョイスティックの上部にもプッシュボタンがあるため、このボタン(SW)も読み取られ、ボタンを押すと値が0になり、「Enter」のコマンドが実行されます。
最後に、コードをArduinoに書き込み、Arduinoをコンピューターに接続します。
次に、コントロールパネルの[デバイスとプリンター] を確認すると、下の画像に示すように、デバイスセクションの下に「ArduinoLeonardo」が表示されます。これで、ジョイスティックで遊ぶ準備ができました。
このジョイスティックを使用して、任意のゲームコントロールを制御できます。ジョイスティックの内部には2つのポテンショメータがあります。1つはX軸の動き用で、もう1つはY軸の動き用です。各ポテンショメータはArduinoから5vを取得します。したがって、ジョイスティックを動かすと、電圧値が変化し、アナログピンA0とA1のアナログ値も変化します。したがって、ジョイスティックはゲームパッドとして機能します。
つまり、これは、通常のジョイスティックをArduino Leonardoを使用してゲームコントローラーに変換し、左右、上下に移動するすべてのコントロールを備えたゲームをプレイするために使用できる方法です。先に述べたように、これらの基本的な4つの機能以外のより多くのコントロールを取得するために、複数のジョイスティックをインターフェースすることができます。