ヘビゲームは携帯電話の登場以来非常に人気があります。当初は白黒の携帯電話で登場し、すぐに非常に有名になりました。その後、携帯電話の進歩に伴い、このゲームも大きく変化し、このゲームの多くのグラフィカルでカラフルなバージョンが利用可能になりました。
ヘビゲームは、エレクトロニクス愛好家や学生にとって非常に人気のあるDIYプロジェクトにもなっています。そこで本日は、Arduino Snake Gameとそのすべての基本機能を、同時にシンプルに保ちながらデモンストレーションします。
使用されるコンポーネント:
- Arduino UNO
- 8x8LEDドットマトリックスディスプレイ
- シフトレジスタ74HC595
- 16x2 LCD
- ポット1K
- ボタンを押す
- 接続線
- ブレッドボード
- 電源
作業説明:
これは構築するのが少し複雑なゲームです。しかし、このチュートリアルでは、それを簡単にしました。このプロジェクトを作成するために、ヘビとそのフードドットを表示するための8x8の赤色のドットマトリックスディスプレイ、ポイントまたはスコアを表示するためのLCD、指示を与えてゲームを開始するための5つのプッシュボタン、そして最後に制御するためのArduinoUNOを使用しましたプロセス全体。元の画像を含む8x8LEDドットマトリックスディスプレイのピンダイアグラムを以下に示します。
回路の電源を入れると、最初にウェルカムメッセージが表示され、次にLCDに「PressStartToPlay」のヒントが表示されます。この後、LCDはスコアをゼロとして表示し、ドットマトリックスディスプレイはヘビとして2つのドットを表示し、食べ物として1つのドットを表示します。
これで、ユーザーは真ん中のボタンを押してゲームを開始する必要があり、デフォルトではヘビが上方向に動き始めます。次に、ユーザーは中央のボタンの周りの「方向キー」を押して、ヘビに方向を与える必要があります。ここでは、左キー、右キー、上キー、下キー、開始キーの5つのキー(プッシュボタン)を使用しました。ヘビがフードドットに到達するか、食べ物を食べるたびに、スコアは毎回5ポイント増加し、ヘビの長さは毎回1ドット(LED)増加し、ヘビの速度も以前より速くなります。そして、ヘビが壁にぶつかったり、LEDマトリックスの端に到達したりすると、ゲームは終了します(「ゲームオーバー」)。次に、ユーザーはスタートキーを押してゲームを再開する必要があります。
回路の説明:
このスネークゲームプロジェクトの回路は少し複雑です。ここでは、シフトレジスタ74HC595を使用してドットマトリックスディスプレイを接続しました。ここでは、2つのシフトレジスタが使用されています。1つは列を駆動するためのもので、もう1つは行を駆動するためのものです。列シフトレジスタと行シフトレジスタ(SH、ST)の両方のレジスタの制御ピン、Arduinoのピン番号14と16にそれぞれ直接接続されています。また、列シフトレジスタと行シフトレジスタのDSピンはArduinoのピン番号15と17に直接接続されています。ゲームを開始するためのスタートボタンはピン番号3に接続され、左方向ボタンはピン4に、右方向ボタンはピン6に、上方向ボタンはピン2に、下方向ボタンはピン5に接続されています。LCDもハードウェアに接続されています。スコアを表示します。RSピンとENピンはピン13と12で直接接続されています。RWピンは直接接地されています。また、データピンd4〜d7はArduinoのピン11、10、9、8に接続されています。残りの接続は回路図に示されています。
プログラミングの説明:
このArduinoスネークゲームコードを作成するには、まずヘッダーファイルをインクルードし、LCDのピンを定義します。次に、方向ボタン用のいくつかのピンとシフトレジスタ用のデータピンを定義します。
#include
次に、プログラムで使用したすべてのものを初期化します。 セットアップ 機能我々は、入出力端子に方向を与えるプルアップビットとLCDにウェルカムメッセージを示す、LCDを初期化します。
void setup(){lcd.begin(16,2); pinMode(ds_col、OUTPUT); pinMode(sh_col、OUTPUT); pinMode(st_col、OUTPUT); pinMode(ds_row、OUTPUT); pinMode(start、INPUT);…………..。
そして、ゲームイン ループ 機能を開始し ます 。
void show_snake(int temp){for(int n = 0; n
ここでは、プッシュボタンから入力方向を読み取るために以下の関数を使用しました。
void read_button(){if(!digitalRead(left)){move_r = 0; move_c!=-1?move_c = -1:move_c = 1; while(!digitalRead(left));…………..。
以下のスネークゲームの完全なCコードを確認してください。