ゲームパッド/ゲームコントローラとしてのArduino Leonardo / Micro(ATMega32u4):8ステップ

ゲームパッド/ゲームコントローラとしてのArduino Leonardo / Micro(ATMega32u4):8ステップ

目次:

Anonim

Arduino Leonardo、MicroまたはPro Microで使用されているチップATMega32u4には、カスタムUSB HIDディスクリプタを使用する機能があります。この機能により、Arduinoを一般的なゲームパッドにすることができます。

このライブラリにはPS2ゲームパッドを「シミュレート」するためのすべてのものが含まれています(2つのサムスティックと16のボタン)。

用品:

ステップ1:ライブラリをインストールする

ライブラリを正しく実行するには、Arduino IDE 1.6.6以降が必要です。

次にライブラリをダウンロードする必要があります。

すべてのデータと文書はGitHubリポジトリに保存されています。

github.com/GAMELASTER/ArduinoGamepad

ダウンロードするには、右側の「Download ZIP」ボタンをクリックしてください。

Documents> Arduino> librariesに「Gamepad」という名前の新しいディレクトリを作成し、ダウンロードしたZIPファイルの「ArduinoGamepad-master」ディレクトリからすべてのファイルをそのディレクトリにコピーします。

次にArduino IDEを起動すると、ライブラリのリストと例のリストにライブラリが表示されます。

ステップ2:テストスケッチを作成して実行する

画像のようにスケッチの例を開き、コンパイルしてArduinoにアップロードするだけです。

ステップ3:図書館の有効性を確認する

コントロールパネル> デバイスとプリンタの順に選択し、デバイスを検索します(私はArduino Leonardoです)>右クリック> ゲームデバイスの設定> プロパティ> テスト。

ボタンを段階的に有効/無効にしても、すべて問題ありません。

ステップ4:つまみとボタンをArduinoに接続する

ハードウェア、ArduinoとPCの間の実際の接続をテストするには、いくつかのボタンまたはつまみが必要です。

私は2つの親指+ 2つのボタン(親指を押すこと)を持っていて、それをPro Microに接続してArduinoスケッチを作ってみましょう。

Left Thumbstickを次の機器に接続しました。

  • XからA2
  • YからA3
  • Z〜4

Right Thumbstickをに接続しました

  • XからA0
  • YからA1
  • Zから3

ステップ5:サムスティックをテストする

tkkrlab.nl/wiki/Arduino_KY-023_XY-axis_joystick_module

シリアルモニタをコンパイル、展開、および開きます。

サムスティックを使って最小 - 最大まで動かしてみてください。クリックしてみてください。

サムスティックは違うことがあります。私には相対的な値があります。

軸の最小値は0、最大値は1000です。論理的には中心は500です。

私のサムスティックが問題になっているとき、中心はまだ(ほとんど)異なる値を持っています、それで我々が図書館との統合をするつもりであるとき、私たちは値の調整、安定化と最終フォーマットをしなければなりません。

そしてZ(押す)iは押されると0、解放されると1になります(これは真実ではなく、その反転、反転はINPUT_PULLUPを行います)。

ステップ6:値をライブラリに統合する

スケッチ:

github.com/GAMELASTER/ArduinoGamepad/blob/master/examples/ThumbsticksTest/ThumbsticksTest.ino

このスケッチでは、前の手順で参照したように、私は自分のサムスティックを統合しました。

それでは説明します。

  1. まずライブラリをインクルードする必要があります(7行目)
  2. 次に、すべての軸の中心値を定義する必要があります。デフォルトの中心になるので、すべて500に設定しました(10 - 13行目)。
  3. 値をフォーマットするための乗数を定義します。最大値は127なので、127を中心で割ると乗数になりますので、500(14行目 - 17行目)
  4. ゲームパッドクラスを初期化する(20行目)
  5. ピンモードを初期化する(23 - 28行目)
  6. サムスティックの調整が始まります(29行目)
    1. 変数を定義します。その他にも(72 - 73行目)
    2. しばらく…これは「サムスティックの軸を確認する」ためのもので、中央にある場合(74行目)
    3. 軸からアナログ入力を読みます(76 - 79行目)。
    4. 軸が "中央の領域"にあるかどうかをチェックする必要があります。私は100の範囲を選択しました(80行目から83行目)
    5. すべてが良いのであれば、8が良いことが再確認されるまでまた行きながら、我々は実際に本物の中心を得ます。 (84〜89行目)
    6. 軸の値をグローバル変数に設定し、すべての軸の乗数を再計算するので、realCenterを127で割った値になります。
  7. ループで、私たちはアナログ入力といくつかのボタンを読みました(33 - 37行と他のいくつかの行)
  8. 今度は値をフォーマットし安定させる必要があります。
    1. したがって、最初に軸の値を取得する必要があります。ここで、0は中心です。軸の値から軸の中心を引いたものです。
    2. それから軸乗数によるこの倍数
    3. そして安定させるために私達はそれを床に張ります
  9. そして最後に、変数をライブラリに「送信」します。

ボタンの数は上の画像で説明されています。

ステップ7:最終結果をテストする

コンパイル、デプロイしてゲームを始めましょう!

Mirrors Edgeを選択しましたが、Mirrors EdgeはXBOX 360ゲームパッドしかサポートしていません。これはX360CEをダウンロードすることで簡単に解決できます。

ステップ8:詳細、バグなど

このライブラリは私がカスタムハンドヘルドRaspberry Pi Retro Consoleを構築する私のプロジェクトの一部です。それが行われるときにここでInstructablesに投稿されるでしょう。今のところ私は私のブログで開発のブログを書いています。

ドキュメント、バグなどはGitHubにあります。

github.com/GAMELASTER/ArduinoGamepad/

それともコメントしてください。