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

ArduinoLCDビデオゲーム

コンポーネントと消耗品

>
ブレッドボード(汎用)
× 1
ジャンパー線(汎用)
× 1
Arduino UNO
× 1
USB-AからBへのケーブル
× 1
ロータリーポテンショメータ(汎用)
× 1
アナログジョイスティック(汎用)
× 1
ブザー
× 1
Adafruit標準LCD-16x2白地に青
× 1

アプリとオンラインサービス

>
Arduino IDE

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

これは私がインターネットで見つけたビデオゲームに基づいたプロジェクトです。このプロジェクトには、キャラクターが障害物に衝突したり飛び越えたりしたときにビープ音を鳴らすブザーなど、多くの機能があります。また、ビデオゲームの感覚を与えるために、ジョイスティックのボタンを押すだけでジャンプできるため、ジョイスティック(ボタンが必要)があります。このビデオゲームはあなたがそれを推測したことについてです! (走って障害物を飛び越えて回避する男性。)このゲームの目的は、できるだけ多くのポイントを獲得することです(コース上で毎秒1ポイントを取得し、障害物を回避します)。

コード

  • コード
コード Arduino
 #include  #define PIN_BUTTON 2#define PIN_AUTOPLAY 1#define PIN_BUZZER 8#define PIN_READWRITE 10#define PIN_CONTRAST 12#define SPRITE_RUN1 1#define SPRITE_RUN2 2#define SPRITE_JUMP 3#define SPRITE_JUMP // 使用 '。'頭の文字#defineSPRITE_JUMP_LOWER4#define SPRITE_TERRAIN_EMPTY '' //ユーザー ''文字#defineSPRITE_TERRAIN_SOLID 5#define SPRITE_TERRAIN_SOLID_RIGHT 6#define SPRITE_TERRAIN_SOLID_LEFT 7#define SPRITE_TERRAIN_SOLID_LEFT 7#define HERO_HORIZ TERRAIN_EMPTY 0#define TERRAIN_LOWER_BLOCK 1#define TERRAIN_UPPER_BLOCK 2#define HERO_POSITION_OFF 0 //ヒーローは見えない#defineHERO_POSITION_RUN_LOWER_1 1 //ヒーローは下の行で実行されています(ポーズ1)#define HERO_POSITION_RUN_LOWER_2 2 //(ポーズ/ジャンプの開始#define HERO_POSITION_JUMP_2 4 //途中まで#defineHERO_POSITION_JUMP_3 5 //ジャンプは上段にあります#defineHERO_POSITION_JUMP_4 6 //ジャンプは上段にあります#defineHERO_POSITION_JUMP_5 7 //ジャンプは上段にあります#defineHERO_POSITION_JUMP_6 8 //ジャンプは上段にあります#defineHERO_POSITION_JUMP_7 9 // Half-wa y down#define HERO_POSITION_JUMP_8 10 //着陸しようとしています#defineHERO_POSITION_RUN_UPPER_1 11 //ヒーローは上段で走っています(ポーズ1)#define HERO_POSITION_RUN_UPPER_2 12 //(ポーズ2)LiquidCrystal lcd(11、9、6、5、4 3); static char terrainUpper [TERRAIN_WIDTH + 1]; static char terrainLower [TERRAIN_WIDTH + 1]; static bool buttonPushed =false; void initializeGraphics(){static byte graphics [] ={//実行位置1B01100、B01100、B00000、 B01110、B11100、B01100、B11010、B10011、//実行位置2 B01100、B01100、B00000、B01100、B01100、B01100、B01100、B01110、//ジャンプB01100、B01100、B00000、B11110、B01101、B11111、B10000、B00000、 //下にジャンプB11110、B01101、B11111、B10000、B00000、B00000、B00000、B00000、//グラウンドB11111、B11111、B11111、B11111、B11111、B11111、B11111、B11111、//グラウンド右B00011、B00011、B00011 B00011、B00011、B00011、B00011、B00011、//左グラウンドB11000、B11000、B11000、B11000、B11000、B11000、B11000、B11000、}; int i; //文字0の使用をスキップします。これにより、lcd.print()を使用して//(i =0; i <7; ++ i){lcd.createChar(i + 1、&graphics [i * 8]); } for(i =0; i  9999)? 5 :(スコア> 999)? 4 :(スコア> 99)? 3 :(スコア> 9)? 2:1; //シーンを描画しますterrainUpper [TERRAIN_WIDTH] ='\ 0'; terrainLower [TERRAIN_WIDTH] ='\ 0'; char temp =terrainUpper [16桁]; terrainUpper [16桁] ='\ 0'; lcd.setCursor(0,0); lcd.print(terrainUpper); terrainUpper [16桁] =temp; lcd.setCursor(0,1); lcd.print(terrainLower); lcd.setCursor(16-数字、0); lcd.print(score); terrainUpper [HERO_HORIZONTAL_POSITION] =upperSave; terrainLower [HERO_HORIZONTAL_POSITION] =lowerSave; return collide;} //ボタンプッシュを割り込みとして処理しますvoidbuttonPush(){buttonPushed =true;} void setup(){pinMode(PIN_READWRITE、OUTPUT); digitalWrite(PIN_READWRITE、LOW); pinMode(PIN_CONTRAST、OUTPUT); digitalWrite(PIN_CONTRAST、LOW); pinMode(PIN_BUTTON、INPUT); digitalWrite(PIN_BUTTON、HIGH); pinMode(PIN_AUTOPLAY、OUTPUT); digitalWrite(PIN_AUTOPLAY、HIGH); pinMode(PIN_BUZZER、OUTPUT); //ブザーピンを出力として初期化しますdigitalWrite(PIN_BUZZER、LOW); //デジタルピン2は割り込み0にマップされますattachInterrupt(0 / * PIN_BUTTON * /、buttonPush、FALLING); initializeGraphics(); lcd.begin(16、2);} void loop(){static byte heroPos =HERO_POSITION_RUN_LOWER_1;静的バイトnewTerrainType =TERRAIN_EMPTY;静的バイトnewTerrainDuration =1; static bool playing =false;静的ブール点滅=false; static unsigned int distance =0; if(!playing){drawHero((blink)?HERO_POSITION_OFF:heroPos、terrainUpper、terrainLower、distance>> 3); if(blink){lcd.setCursor(0,0); lcd.print( "プレススタート"); } delay(250);点滅=!点滅; if(buttonPushed){initializeGraphics(); heroPos =HERO_POSITION_RUN_LOWER_1;再生=true; buttonPushed =false;距離=0; } 戻る; } //地形を左にシフトadvanceTerrain(terrainLower、newTerrainType ==TERRAIN_LOWER_BLOCK?SPRITE_TERRAIN_SOLID:SPRITE_TERRAIN_EMPTY); AdvanceTerrain(terrainUpper、newTerrainType ==TERRAIN_UPPER_BLOCK?SPRITE_TERRAIN_SOLID:SPRITE_TERRAIN_EMPTY); //右側に入る新しい地形を作成しますif(-newTerrainDuration ==0){if(newTerrainType ==TERRAIN_EMPTY){newTerrainType =(random(3)==0)? TERRAIN_UPPER_BLOCK:TERRAIN_LOWER_BLOCK; newTerrainDuration =2 + random(10); } else {newTerrainType =TERRAIN_EMPTY; newTerrainDuration =10 + random(10); }} if(buttonPushed){if(heroPos <=HERO_POSITION_RUN_LOWER_2)heroPos =HERO_POSITION_JUMP_1; buttonPushed =false; digitalWrite(PIN_BUZZER、HIGH); } if(drawHero(heroPos、terrainUpper、terrainLower、distance>> 3)){playing =false; //主人公が何かと衝突しました。残念な。 for(int i =0; i <=2; i ++){digitalWrite(PIN_BUZZER、HIGH); delay(100); digitalWrite(PIN_BUZZER、LOW); delay(100); }} else {if(heroPos ==HERO_POSITION_RUN_LOWER_2 || heroPos ==HERO_POSITION_JUMP_8){heroPos =HERO_POSITION_RUN_LOWER_1; } else if((heroPos> =HERO_POSITION_JUMP_3 &&heroPos <=HERO_POSITION_JUMP_5)&&terrainLower [HERO_HORIZONTAL_POSITION]!=SPRITE_TERRAIN_EMPTY){heroPos =HERO_POSITION_RUN_UPPER_1; } else if(heroPos> =HERO_POSITION_RUN_UPPER_1 &&terrainLower [HERO_HORIZONTAL_POSITION] ==SPRITE_TERRAIN_EMPTY){heroPos =HERO_POSITION_JUMP_5; } else if(heroPos ==HERO_POSITION_RUN_UPPER_2){heroPos =HERO_POSITION_RUN_UPPER_1; } else {++ heroPos; } ++距離; digitalWrite(PIN_AUTOPLAY、terrainLower [HERO_HORIZONTAL_POSITION + 2] ==SPRITE_TERRAIN_EMPTY?HIGH:LOW); } delay(100); digitalWrite(PIN_BUZZER、LOW);} 

回路図

表紙の画像にすべての配線が表示されているわけではないため、すべての部品を接続する方法を示します。

製造プロセス

  1. TinyML-言語検出器-エッジインパルスとArduinoに基づく
  2. MPU-6050を搭載したArduinoジャイロスコープゲーム
  3. Arduino Digital Dice
  4. DIY 37LEDルーレットゲーム
  5. Arduinoゲームコントローラー
  6. ジョイスティックゲーム
  7. Find Me
  8. ピクセルチェイサーゲーム
  9. 128x64LCDディスプレイ上のDIY10Hz-50kHzオシロスコープ
  10. Arduinoオーディオリアクティブデスクライト
  11. NeoMatrix Arduino Pong