Make

自作のコントローラーでゲームをプレイしてみよう (4)

Make
スポンサーリンク

夜分遅くにどーも。Reveです。
今度は技術担当です。
昨日の記事に引き続き、自作コントローラーの制作について書いていきます。
ではいよいよ、自作コントローラーの制作に入ります!
お待たせしましたが、今回こそ回路とプログラムを開発してコントローラーを作ります。
(回路の構成)
今から制作するコントローラーは「1ボタンコントローラー」で、
文字通り、ボタンが1個だけのコントローラーを作っていきます。
そのために必要な部品は以下の通りです。
・Arduino Micro
・ブレッドボード
・タクトスイッチ:1個
・ジャンパーコード:2本
それぞれの部品のつなぎ方は、まずArduino Microをブレッドボードの片側中央に寄せる形で挿入します。
次に、タクトスイッチをブレッドボードの空いた場所に固定します。スイッチの足の間隔が広いほうで真ん中の溝をまたぐようにスイッチの足を穴に挿します(図はイメージです)。

そして、タクトスイッチの足が伸びている面の片方に注目して、それぞれの足を、一方はArduinoのグランド、もう一方は4番ピンに接続します。接続するには、ジャンパーコードを使い、それぞれの足が挿されている穴と同じ列にある穴にコードを挿すことで接続できます。

出来上がった回路はこのようになります(スイッチは自作の基板を使っているため、上記の説明と異なる部分があります)。
20150616224553459.jpg
回路について解説すると、
Arduinoがスイッチの入力による電圧の変化を読み取り、特定の状態(今回は電圧がLOW)になるとキーボード入力を行います。
スイッチはどこから電気を与えているのかとお思いの方もいるかもしれませんが、実はArduinoの中で抵抗を介して電源と接続されており、スイッチを押すと電源と入力ピンが接続、または切り離されているかを切り替えることが可能です(内部プルアップ)。
(プログラム)
回路も完成したところで、いよいよプログラムに入ります。
さっそく、ソースコードを見てみましょう。
↓↓↓↓↓↓↓

まずは、全体のコードから。

では、それぞれの処理を解説していきます。
・#define A B
→ 定数を定義するコマンドの一種。プログラム内の”A”を”B”に「文字通り」置き換える(今回は、”SW1″を”4″に置換)。
・setup()
→ 初期設定を行うための関数(初期化関数)。プログラムの開始時に一度だけ呼ばれる。
・pinMode(pin, mode)
→ 指定の番号(pin)の入出力ピンをどう使用するか(入力か出力か)を決定する関数。modeに特定の定数(INPUT, INPUT_PULLUP, OUTPUT)を入れることで使用方法を指定します。
・loop()
→ メインループとなる関数。setup関数の後に、電源を切るまで無限に繰り返される。
・digitalRead(pin)
→ 指定の番号(pin)の入力ピンにかかる電圧を読み取る関数。HIGH(1)かLOW(0)のみで値が返される。
・if(条件文) { }
→ 条件文の内容を満たす場合、中カッコ内の処理を行う。
・Keyboard.write(key)
→ キーボード入力を再現するための関数。指定のキー(key)をPC側へ出力する。
・delay(time)
→ 指定のマイクロ秒(time)だけ、処理を一時的に止める関数。
解説も終わったところで、プログラムをArduinoに書き込みましょう。
まず、Arduino MicroとPCをマイクロUSBケーブルで接続します。
続いて、「ツール」メニューから、それぞれボードを「Arduino Micro」に

ポートをArduinoがつながっているポート番号にします。

上のソースプログラムをコピーしてArduinoソフトウェアに貼り付け、ソフトウェアの左上にある右矢印のボタン(”→”が書かれた丸いボタン)を押してみましょう。
書き込みが成功したら、メモ帳などのキー入力を受け付けるソフトウェアを起動して
回路のボタンを押してみましょう。
ソフトウェア上で文字が現れたら成功です。
(課題)
とはいえ、今のプログラムには課題があります。
既にお気づきかと思いますが、1回押しただけでも文字が何度も書き込まれてしまい不便です。
次回はそれを解決するプログラムを作りたいと思いますが、
もしお時間があれば考えてみてはいかがでしょうか。

コメント

タイトルとURLをコピーしました