工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

忍者ドル-LCDゲーム

コンポーネントと消耗品

>
Arduino UNO
× 1
Adafruit標準LCD-16x2白地に青
× 1
ブレッドボード(汎用)
スペースを増やすために2つ使用しましたが、使用できるブレッドボードは1つだけです。
× 2
シングルターンポテンショメータ-10kオーム
× 1
LED(汎用)
× 2
抵抗1kオーム
× 4
SparkFunプッシュボタンスイッチ12mm
× 2
RobotGeekブザー
× 1
ジャンパー線(汎用)
× 1

必要なツールとマシン

>
はんだごて(汎用)
LCDのはんだ付け用

このプロジェクトについて

これはシンプルなLCDゲームです。私のインスピレーションはGoogleChromeの恐竜ゲームでしたが、さらにいくつかの変更を加えました。ドルの戦士は絶えず動き、障害物を避けて「スター」ポイントを集めるためにジャンプすることができます。障害物を飛び越えた場合は1ポイント、星をキャッチした場合は5ポイントを獲得します。彼はまた、彼の前にある障害物を撃って取り除くことができます。彼がジャンプするかシュートするかを示すLEDダイオードもあります。彼が10、20、または30ポイントを集めると、彼は以前より速く動き始めます。彼が50ポイントを集めると、あなたが勝ちます。障害物にぶつかると負けます。もちろん、これらの境界はコードで簡単に変更できます。また、戦士がジャンプしたり撃ったりしたときに鳴るパッシブブザーと、負けたり勝ったりしたときに特別なメロディーを追加しました。これはここでの私の最初のプロジェクトであり、あなたがそれを気に入ってくれることを願っています。コメントとレビューをください。

ビデオ

接続

LCD(Liquid Crystal Display)モジュールには、下側に16ピンのオスヘッダーがあります。写真のようにこれをブレッドボードに差し込みます。 LCDに電力を供給して制御するすべての電子信号は、このヘッダーを通過します。

これらのピンは(左から右へ):

  • GND-電源グランド信号
  • VCC-正の電力信号
  • V0-コントラスト調整
  • RS-レジスタ選択
  • R / W-読み取り/書き込み選択
  • E-信号を有効にする
  • D0-データビット0(ここでは使用されません)
  • D1-データビット1(ここでは使用されません)
  • D2-データビット2(ここでは使用されません)
  • D3-データビット3(ここでは使用されません)
  • D4-データビット4
  • D5-データビット5
  • D6-データビット6
  • D7-データビット7
  • A-バックライトLEDポジティブ
  • K-バックライトLEDネガティブ

ジャンパー線を使用して、Arduinoの5V信号をブレッドボードの上部にある赤い列に接続します。

ジャンパー線を使用して、ArduinoのGND信号をブレッドボードの上部にある青い列に接続します。

  • VSSピンをアースに接続します
  • VDDピンを5V信号に接続します
  • V0ピンからポテンショメータ出力ピンへ
  • RSピンからArduinoピン12へ
  • 地面へのRWピン
  • EピンからArduinoピン11へ
  • D4からArudinoピン5
  • D5からarduinoピン4
  • D6からArduinoピン3
  • D7からArduinoピン2へ
  • 5V信号へのピン
  • GND信号へのKピン

残りのポテンショメータピンを5V信号とGND信号に接続します。

3ピンのピエゾブザーがある場合は、SピンをArduino 7ピンに接続し、「-」ピンをGNDに接続し、残りのピンを5V信号に接続します。 2つのピエゾブザーをピン留めしている場合は、1つのピンをGND信号に接続し、もう1つのピンをArduino7ピンに接続します。

回路図に従ってスイッチボタンを接続します。最初のボタン(ジャンプボタン)はArduinoピン1に接続され、2番目(シュートボタン)はArduinoピン6に接続されます。LEDはボタンによってのみ制御され、Arduinoによっては制御されません。アノードはArduinoに接続されているボタンピンに接続され、カソードはアースに接続されています。

コード

  • dollar_warrior
dollar_warrior Arduino
 #include  const int rs =12、en =11、d4 =5、d5 =4、d6 =3、d7 =2; const int buttonPin1 =1; const int buttonPin2 =6; const int buzzer =7; unsigned long pts =0; // set buttonstatesbool buttonState1 =0; bool buttonState2 =0; //障害物の位置のランダム数intrandomNums [6]; //障害物の数のランダム数intrandomNum =0; // ptsintの位置のランダム数randomNums1 [3]; // ptsintの数のランダム数randomNum1 =0; //開始遅延時間。徐々に減少しますunsignedint myDelay =500; //このブール値を作成して、button2が押されているかどうかを確認します。最初のforループで1回押され、itbool temp =0の終わりまで障害物が書き込まれないようにします; //この変数は、射撃中の戦士の位置を格納します。戦士には16の位置があるため、16の位置が存在する可能性があります。inttempI[16]; // iこのブール値を使用して、ポイントがキャッチされているかどうかを確認しますbool temp1 =0; //この変数を使用して、キャッチされたポイントの位置を格納します。最初のforループの1回の反復ですべてのポイントの位置を格納するには、配列である必要があります。 1つの位置だけを格納した場合、「古い」ポイントは新しい反復で戻ってきますint tempI1 [3]; //この変数を使用して、戦士のショット数を取得します。これは、配列の長さでもありますtempIint button2IsPressed =0; LiquidCrystal lcd(rs、en、d4、d5、d6、d7); void setup(){/ / LCDの列と行の数を設定します:lcd.begin(16、2); //ボタンピンモードを設定しますpinMode(buttonPin1、INPUT); pinMode(buttonPin2、INPUT); pinMode(ブザー、出力); lcd.setCursor(4,0); lcd.print( "THE GAME"); lcd.setCursor(2,1); lcd.print( "STARTS IN"); lcd.print( "5"); delay(1000); lcd.setCursor(12,1); lcd.print( "4"); delay(1000); lcd.setCursor(12,1); lcd.print( "3"); delay(1000); lcd.setCursor(12,1); lcd.print( "2"); delay(1000); lcd.setCursor(12,1); lcd.print( "1"); delay(1000); lcd.clear();} void loop(){ここで:randomNum =random(5); for(int i =0; i  9 &&pts <20){lcd.setCursor(14,0); myDelay =400; } else if(pts> 19 &&pts <30){lcd.setCursor(14,0); myDelay =300; } else if(pts> 29 &&pts <50){myDelay =200; lcd.setCursor(14,0); } else if(pts> =50){pts =0; myDelay =500; lcd.clear(); lcd.setCursor(5,0); lcd.print( "VICTORY");トーン(ブザー、262); delay(200);トーン(ブザー、330); delay(200);トーン(ブザー、392); delay(100);トーン(ブザー、330); delay(100);トーン(ブザー、392); delay(100);トーン(ブザー、523); delay(200); noTone(ブザー); delay(3000); lcd.clear();ここに移動します。 } else lcd.setCursor(15,0); lcd.print(pts); buttonState1 =digitalRead(buttonPin1); buttonState2 =digitalRead(buttonPin2); //戦士が撃たなかった、または撃ったがジャンプした場合に障害物を設定するif(!temp){for(int j =0; j  randomNums [j]){lcd.setCursor(randomNums [j]、1); lcd.print( "#"); }}} //設定ptsif(!temp1){for(int j =0; j  

回路図

game_aUIjA6VZxX.fzz

製造プロセス

  1. チェス
  2. ピンボール
  3. フットボール
  4. MPU-6050を搭載したArduinoジャイロスコープゲーム
  5. DIY 37LEDルーレットゲーム
  6. 3D RGB Arduclock
  7. MyRiver
  8. ジョイスティックゲーム
  9. Find Me
  10. 128x64LCDディスプレイ上のDIY10Hz-50kHzオシロスコープ
  11. リトルローバー