それはすべて、「マリオ」と呼ばれる暗黒時代の小さなゲームから始まりました。小さな小さな男がアヒルに飛び乗って私の王女を救うときから、暗黒と戦うペルシャ(プリンスオブペルシャ)で歩き回る男性的なハンサムな王子になるまでです。私は自分の世界を救うためにビデオゲームをプレイするのが大好きで、育ちました。しかし、彼らは時々退屈し、私はそれにあまり関与していないと感じます。今日、高度なゲーム機は仮想ゲームを可能にし、キーボードやマウスよりもはるかにゲームを快適に感じるのに役立ちます。
Arduinoの愛好家である私は、キーボードとマウスを使用して「Angry Birds」と呼ばれる有名なゲームをプレイするのに疲れ、フレックスセンサーとポテンショメーターを使用して独自のゲームコントローラーを作成することにしました。フレックスセンサーを引くと、カタパルト上の鳥も引っ張られ、ポテンショメーターを使用して、発射する方向を設定できます。次に、フレックスセンサーを放すと、鳥が発射されます。私はそれをするのがとても楽しかったので、あなたが非常に似たものを作るつもりなら、このチュートリアルは役に立ちます。このチュートリアルは、ポテンショメータを使用してマウスカーソルを制御する場合にも役立ちます。
ソフトウェアとハードウェアの要件:
ソフトウェア:
- Arduino IDE
- IDEの処理
- コンピューター上のアングリーバードゲーム
ハードウェア:
- Arduino(任意のバージョン)
- ポテンショメータ
- フレックスセンサー
- 47Kオームの抵抗器
- 接続線
- ブレッドボード
背後にある概念:
Arduinoのボードは、ポテンショメータおよびFlexセニョールから値を読み込み、通常のUSB経由でのCOMポートを介して、およびラップトップ/ PCに送信して Serial.write() 関数。次に、Processingを使用してこの情報を読み取り、IDEの処理でサポートされているJavaのRobotクラスを使用してマウスカーソルを制御します。Flexセンサーを引くとマウスクリックが行われ、引く量に基づいてマウスポインターがX方向に移動するように、処理IDEをプログラムしました。次に、ポテンショメータの値に基づいて、マウスカーソルをY方向に移動します。これにより、鳥を発射する方向を設定できます。
回路図:
フレックスセンサーとポテンショメーターを使用してアングリーバードを再生するための回路は簡単です。
ポテンショメータとフレックスセンサーをArduinoのアナログ入力(A0、A1)に簡単に接続しました。Flexセンサーの出力も47Kプルダウン抵抗を使用してプルダウンされます。
ブレッドボードに直接接続するか、パフォーマンスボードにはんだ付けして、手袋などで組み立てて、よりクリエイティブにすることができます。以下に示すように、接続を行うためにブレッドボードを使用しただけです。
Arduinoプログラム:
完全なArduinoコードはチュートリアルの最後にあります。以下に、いくつかの重要な行について説明します。
9600ボーレートで動作するようにプログラムを初期化し、Flexセンサーとポテンショメーターから値の読み取りを開始します。ご存知の とおり、serial.write() 関数は一度に1バイトのデータしか送信できません。1バイトは8ビットで2 ^ 8 = 256なので、0〜256の値を送信できます。したがって、Flexセンサー出力とポテンショメータ出力の値を0〜256に圧縮する必要があります。
これを行うには、Arduinoの map() 関数を使用し ます 。フレックスセンサーからのすべての値は5から100に変換されるため、センサーを曲げると5から増加し、離すと5に戻ります。マウスをクリックすると、値1と0が使用されます。1が送信されるとマウスが押され、0が送信されるとマウスが離されます。
if(FlexValue> = 65 && FlexValue <= 120)//フレックスセンサーが65から120まで変化する場合、異なる可能性があります{FlexValue = map(FlexValue、120,65,0,100); //曲げに基づいて0から100に変換if(FlexValue> = 5)// 1と0がマウスクリックに使用されるため、5から開始{Mclick = true; Serial.write(1); // 1は、マウスを左クリックするために送信されますSerial.write(FlexValue); // Flex値は、マウスをX方向に移動する距離です} else {Mclick = false; Serial.write(0);}}
同様に、ポテンショメータからの値は、 map() 関数を使用して101から200に変換され、以下に示すように、 Serial.write() 関数を使用してラップトップのCOMポートに送信されます。
if(potValue <= 200){potValue = map(potValue、0,200,101,201); //ベースは101から201に変換しますSerial.write(potValue); //ポット値は、マウスをY方向に移動する距離です}
プログラムの残りの部分は、コメントを使用して説明されています。
処理コード:
Processingはオープンソースの開発アプリケーションであり、簡単にダウンロードして、Arduinoやその他のマイクロコントローラーを使用して興味深いプロジェクトを開発するために使用できます。すでにProcessingを使用していくつかのプロジェクトを実行しており、以下のリンクをクリックしてそれらをチェックできます。
- 処理を使用したDIYFMラジオ
- Arduinoを使用したバーチャルリアリティ/ジェスチャーコントロール
- Arduinoを使用したプライベートチャットルーム。
- 処理APPと超音波センサーを使用したArduinoレーダーシステム
- Arduinoを使用したリアルタイムの顔検出と追跡
- ArduinoとProcessingを使用したDIYスピードメーター
- Arduino加速度計を使用したピンポンゲーム
- Arduinoを使用した二足歩行ロボット
- DIYArduino赤外線カメラ
このプロジェクトでは、処理IDEを使用してCOMポート値を読み取り、COMポートを介して受信した値に基づいてマウスポインターを制御しました。このAngryBird Game Controllerの完全な処理コードは、以下のリンクからダウンロードできます。
- このAngryBirdゲームコントローラーのコードを処理しています (右クリックして[名前を付けてリンクを保存])
Arduinoプログラムはこのチュートリアルの最後にあります。処理コードは、yoggyがGitHubページで提供したコードから目的に合うように変更されました。
COMポートからのデータは、Arduinoから送信されたのと同じボーレートで読み取る必要があります。また、デバイスマネージャーを使用して、Arduinoが接続されているCOMポートを確認します。私のArduinoはCOM3に接続されていて、それは私のコンピューターの0番目のポートであり、Arduinoのボーレートは9600だったので、コードは次のとおりです。
ポート=新しいSerial(this、Serial.list()、9600);
値を読み始めると、Arduinoからの送信方法に基づいて値を認識することで区別します。値は再び0〜100にマップされるため、その値に基づいてマウスを制御できます。
if(port.available()> 0){data = port.read(); println(data); // COMポートからデータを読み取り、データに保存します} if(data> = 101 && data <= 201)//値が101から201の場合、ポテンショメータからのものである必要があります{Turn = int(map(data 、101,201,0,100)); //その値を使用してカタパルトを回転させます} if(data> = 5 && data <= 100)//値が5から100の場合、Flex Sensor {Pull = int(map(data、5,100、 0,100));} //その値を使用してカタパルトをプルしますif(data == 1)click = true; //その値を使用してマウスボタンを押しますif(data == 0)click = false; //その値を使用してマウスボタンを離します
データを分類したら、ProcessingのRobotJavaクラスを使用してマウスを制御できます。コマンド robot.mouseMove(crntX-Pull、crntY + Turn); マウスを任意の位置に移動し、 robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); という行を使用でき ます。 および robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); マウスボタンをそれぞれ押すか離すために使用できます。
if(click == false)// FlexSesnorがプルされていない場合{crntX =(int)p.getX(); crntY =(int)p.getY(); if(Pull> 50)robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //マウスボタンを離します} if(click == true)// FlexSesnorがプルされたとき{robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); //マウスボタンを押しますrobot.mouseMove(crntX-Pull、crntY + Turn); // FlexとPOTの値に基づいてマウスを移動します}}
処理IDEを起動すると、以下に示すように、プル、ターン、およびマウスクリックのステータスの値を確認できる小さなダイアログボックスも表示されます。
この詳細を使用して、プログラムをデバッグしたり、必要なデータを修正したりできます。
ワーキング:
提供されたコードを使用してこのAngryBird Projectを機能させるには、回路図に従ってハードウェアを組み立て、指定されたArduinoコードをアップロードします。次に、Arduinoが接続されているCOMポートをメモし、処理コードに必要な変更を加えて、処理スケッチを起動します。
ここで、怒っている鳥のゲームを起動し、カタパルトの近くにカーソルを置き、フレックスセンサーを引いて鳥を引き、電位差計を使用して方向を設定します。方向が設定されたら、Flexセンサーを放します
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!…………..。
あなたの鳥は空中に放り投げられ、ブーム!ピギーについて。完全な動作は、以下のビデオで見つけることができます。
あなたがプロジェクトを楽しんで、似たようなものを作ることができたことを願っています。疑問がある場合は、コメントセクションで私に連絡するか、技術的な質問についてフォーラムに質問を投稿してください。
さあ、それらの貯金箱にぶつかって、鳥の卵を取り戻そう!