Arduinoでもう1つジョイスティック(ゲームパッド)を作成します

それは普通の金曜日で、トラブルを前兆とするものはありませんでした...



しかし、「何かをする必要がある」ワームはすでにその作業を開始しています。 記事を読んだ後、約15年間、私のジャンクの中に、せいぜいSegovゲームパッドが横たわっていることを思い出しました。 私は、AVRプロセッサでゲームパッドを作成するという固い意図でそれを取りました(arduinoについては聞いていませんでしたが、AVRでいくつかの小さなプロジェクトを行いました)。



MSXに関する記事は私の意図をさらに確認し、金曜日に私は決めました-私はそれをします!





ビンから、分解された状態のSegovゲームパッドが白色光に引き込まれました。 私が驚いたことに、彼は完全なセットにいました(カットトラックと行方不明の元のコントローラーを除いて)、2本のボルトだけが行方不明でした。



画像



コントローラーとしてBeetleを使用することにしました。これは一度注文されたためです。まだ試されておらず、「少数のポート」ではあまり好きではありませんでした。



画像



そして、ここで失望が待っていました-ポート6、ボタン10。私の悲しみは際限がありませんでしたが、脳はまだ解決策を見つけました。最初に2つのボタンのプロトタイプを組み立てることに決めました。 6ピンを使用。 ほとんどインスピレーションを得て、私はチェックするために座った...そして、次のトラブルが起こった-ジョイスティックに10以上のボタンがあります! 一般的に、これはドキュメントを見る必要がある瞬間でしたが、多くのアイデアがありましたが、たとえば、はんだ付け(ええ、チップの片側のほぼすべての足を覆うはんだごてで)、またはインターネットでの啓発を探します。

ドキュメントには、ビートルのポートが実際には6ではなく10であることが明確に記載されており、これによりプロセスが退屈になりました(思ったように)。 (8つの結論を使用すると、必要な2 * 6 = 12のボタンを調べることができます)



元のボードは私にとって便利な方法で離婚されたため、接続スキームは6 x 2マトリックスです。 (ちなみに、前回の変更中に、キーボードコントローラーを接続するためにトラックが切断されたので、復元する必要がありました。



結果のゲームパッドのスキーム:



画像



すぐに例を投げて、私はそれが機能しないことを確認しました...私は理解していませんか?! この例は最も単純です。 考えてみると、デジタルピンにはゴム製の導電性ボタンが与える抵抗がなく、回路がわずかに変更され、アナログ信号が読み取られて最大値の半分と比較されることに気付きました。 私は連絡先をはんだ付けし、プログラムを書き直します...何も機能しません。 コントローラーが検出されず、すべてが失われます。 コードがチェックされ、ダブルチェックされ、すべてが機能するはずです! また、コントローラーはいずれにも表示されません。 モチベーションが低下し、休憩を取る。



しばらくして、ビートルで遊ぶことに失敗しました。まあ、はんだごてでコントローラーを殺しました。残念ながらArduino Microをビンから取り出し、ファームウェアをフラッシュし、再び沈黙させました! コードに何か問題があることが明らかになり、最終的に私は平凡な理由を見つけます-ループ内の無限ループ()、私はそれを修正しますが、私はそれを縫うことができません! コントローラーが表示されない場合、フラッシュ中にrezetをクリックすることで解決されることがわかりました(または、私の場合はピンをロックします)



その結果、私はセゴフのゲームパッドを手に入れ、それがチェックされ、機能し、満足しています。メタルギア、フェリックス・ザ・キャット、スーパーマリオをプレイしました。



画像

画像

画像



ソースはこちら



PS「LEDでトリック」 もちろん、LEDを使用する必要はありません。従来のダイオードの方が適しています。本質は簡単です。2つの結論ではなく、2つのダイオードを介して異なるボタンに接続されたものを使用します:



画像






All Articles