資料介紹
描述
大家好!!!歡迎來到基于 Arduino 的新項目。我們一生中都玩過飛揚的小鳥游戲。如果我們在我們的 PC 上播放它并使用我們的 Arduino 控制它怎么辦?按照下面給出的所有步驟操作,到本教程結束時,您將使用微控制器控制游戲。
項目工作簡介:
我們在這里使用超聲波傳感器的原因是為了獲取我們的手和傳感器之間的距離數據,并使用這些值來調整移動的鳥的高度。游戲在 Processing 中創建,Arduino 使用串行端口與其通信。我已經鏈接了上面游戲的幾張圖片,所以請看一下它們以便對這個項目有所了解。
贊助商鏈接 - UTSource.net。
讓我們做連接:
首先將 SR-04 傳感器連接到 Arduino 板上。由于只有一個傳感器接口,我不會為這個項目添加電路圖。連接如下 -
SR-04 >> Arduino Uno
電源 >> 5V
接地 >> 接地
觸發針 >> 數字針 11
Echo Pin >> 數字引腳 10
就是這樣,連接就完成了。
上傳 Arduino 代碼:
現在是時候將代碼上傳到您的 Arduino 開發板了。
從下面復制代碼。
在上傳代碼之前,請確保選擇正確的 com 端口和波特率,因為我們將使用它向游戲發送數據。
const int trigPin=11; //DECLARE TRIG PIN AT D11
int echoPin=10; //DECLARE ECHO PIN AT D10
int safezone=10;
void setup()
{
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
Serial.begin(9600);
}
void loop()
{
long duration,cm; //DECLARE VARIABLES TO STORE SENSOR O/P
digitalWrite(trigPin,LOW); //MAKE THE TRIG PIN LOW
delayMicroseconds(2); //WAIT FOR FEW MICROSECONDS
digitalWrite(trigPin,HIGH); //NOW SET THE TRIG PIN
delayMicroseconds(5); //WAIT FOR FEW MICROSECONDS UNTIL THE TRIG PULSE IS SENT
digitalWrite(trigPin,LOW); //MAKE THE TRIG PIN LOW AGAIN
duration=pulseIn(echoPin,HIGH); //MAKE ECHO PIN HIGH AND STORE THE BOUNCED PULSE IN VARIABLE DURATION
cm=microsecondsToCentimeters(duration);
long inch= cm/2.54;
Serial.println(cm);
}
long microsecondsToCentimeters(long microseconds) //SPEED OF SOUND IS 29 uSEC PER CM
{
return microseconds/29/2; //THE PULSE TRAVELS FROM THE SENSOR AND AGAIN COMES BACK SO WE DIVIDE IT BY 2 TO TAKE ONLY HALF OF THE TOTAL DISTANCE
}
打開處理程序:
上傳 Arduino 代碼后,下載并打開處理代碼。再次
設置與之前相同的波特率并提及正確的 com 端口。
import processing.serial.*;
int DistanceUltra;
int IncomingDistance;
Serial myPort;
String DataIn;
Pipe p1 = new Pipe();
Pipe p2 = new Pipe();
Pipe p3 = new Pipe();
//bird height and width location
float birdy = 46;
float birdx = 56;
float gravity = 5;
//the speed of the pipes
int speed;
//score and game state
boolean gameOver = false;
int score = 0;
int highscore = 0;
int point = 1;
color birdColor = color(255, 204, 0);
void setup(){
size(400,600);
p1.x = width + 50;
p2.x = width + 220;
p3.x = width + 370;
myPort = new Serial(this, "COM3", 9600);
myPort.bufferUntil(10);
}
void serialEvent (Serial myPort){
DataIn = myPort.readString();
println(DataIn);
IncomingDistance = int(trim(DataIn));
println("incoming distance="+IncomingDistance);
if (IncomingDistance>1 && IncomingDistance<100 ) { DistanceUltra = IncomingDistance; //save the value only if its in the range 1 to 100 } }
}
}
void draw(){
background(0);
p1.pipe();
p2.pipe();
p3.pipe();
fill(birdColor);
ellipse(birdx, birdy, 55,55);
// birdy += gravity;
play();
success(p1);
success(p2);
success(p3);
if (IncomingDistance>10)
{
//birdy -= jumpForce;
birdy -= gravity;
}
else
{
birdy += gravity;
}
}
void play(){
if(gameOver == false)
{
speed = 2;
p1.x -= speed;
p2.x -= speed;
p3.x -= speed;
textSize(24);
fill(255,255,255);
text(score, width/2, 30);
}
if(gameOver == true)
{
speed = 0;
p1.x -= speed;
p2.x -= speed;
p3.x -= speed;
if( highscore < score)
{
highscore = score;
}
textSize(16);
fill(0, 102, 153);
textAlign(CENTER);
text("Click : Play Again", width/2, height/2);
text("Score: " + score, width/2, height/2 - 20);
text("High-Score: " + highscore, width/2, height/2 - 40);
if (mousePressed)
{
delay(900);
score = 0;
gameOver = false;
birdy = 100;
birdx = 56;
p1.x = width + 50;
p2.x = width + 220;
p3.x = width + 370;
p1.top = random(height/2);
p1.bottom = random(height/2);
p2.top = random(height/2);
p2.bottom = random(height/2);
p3.top = random(height/2);
p3.bottom = random(height/2);
}
}
}
void success(Pipe test){
if(birdy < test.top || birdy > height - test.bottom)
{
if(birdx > test.x && birdx < test.x + test.w)
{
gameOver = true;
}
}
}
class Pipe
{
float top = random(height/3 + 200);
float bottom = random(height/3 +200);
float x = width + 150;
float w = 70;
color pipeColor = color(0, 255, 0);
void pipe()
{
fill(pipeColor);
rect(x, 0, w, top);
rect(x, height-bottom, w, bottom);
if(x < -100)
{
score += point;
x = width;
top = random(height/2);
bottom = random(height/2);
}
}
}
現在讓我們來試試這個游戲。只需單擊處理IDE中的運行按鈕,然后
你已準備好出發。小鳥會根據你手之間的距離移動
和傳感器。如果您對此項目有任何疑問,請隨時發表評論
以下。
- 基于Arduino的3D打印手表 0次下載
- 使用Arduino和處理的音樂燈
- 開源軟件-1w-flappy flappy克隆版 0次下載
- Oneflow 實現強化學習玩 Flappy Bird 小游戲
- 基于Arduino硬件光控燈制作資料 6次下載
- Arduino Uno國內改版電路原理圖下載 0次下載
- Arduino Uno Rev.3開發板意大利原版電路圖 0次下載
- 采用USB接口的核心電路板Arduino Mega2560 0次下載
- Arduino編程基礎(一)——Arduino語言資料下載
- Arduino開發機器人經典書籍推薦Arduino開發實戰指南:機器人卷
- 如何使用ProtoThreads實現Arduino多線程處理
- Bird 2.0空中機器人開源系統 2次下載
- flappy_bird_MATLAB版本 0次下載
- flappy_bird_MATLAB版本 0次下載
- Arduino教程_Arduino圖形化編程教程_ArduBlock 0次下載
- 如何使用Python和PinPong庫控制Arduino 718次閱讀
- 基于Arduino的機器學習開發 1.7w次閱讀
- Arduino I/O函數詳解 2342次閱讀
- 如何從網頁控制arduino? 3836次閱讀
- Arduino Ethernet擴展板產品介紹(意大利原裝正版) 5122次閱讀
- arduino如何控制舵機及詳細步驟 16.3w次閱讀
- arduino連接顯示屏方法詳解 4.7w次閱讀
- 基于具有Arduino Leonardo的樹莓派擴展板的介紹 9804次閱讀
- Arduino如何安裝驅動_Arduino安裝驅動步驟 5.8w次閱讀
- 淺談Arduino和樹莓派的區別 2.1w次閱讀
- arduino串口通信 2.1w次閱讀
- arduino用什么語言編程 6.9w次閱讀
- arduino是什么以及arduino能干什么 4.4w次閱讀
- arduino開發板有什么用 2w次閱讀
- arduino ide編譯過程 3203次閱讀
下載排行
本周
- 1開關電源設計原理手冊
- 1.83 MB | 4次下載 | 免費
- 2PL4807單節鋰離子電池充電器中文手冊
- 1.36 MB | 2次下載 | 免費
- 3智能小車proteus仿真+C源程序
- 0.02 MB | 1次下載 | 免費
- 4FS5080E 5V升壓充電兩串鋰電池充電管理IC中文手冊
- 8.45 MB | 1次下載 | 免費
- 5HT2120兩節鋰電池保護板電路
- 0.22 MB | 1次下載 | 免費
- 6TMR技術在電流傳感器中的應用
- 616.47 KB | 1次下載 | 免費
- 7OPAx320x精密CMOS運算放大器
- 2.22MB | 1次下載 | 免費
- 8BQ77207EVM用戶指南
- 865.23KB | 1次下載 | 免費
本月
- 1XL4015+LM358恒壓恒流電路圖
- 0.38 MB | 155次下載 | 1 積分
- 2PCB布線和布局電路設計規則
- 0.40 MB | 46次下載 | 免費
- 3GB/T4706.1-2024 家用和類似用途電器的安全第1部分:通用要求
- 7.43 MB | 14次下載 | 1 積分
- 4智能門鎖原理圖
- 0.39 MB | 13次下載 | 免費
- 5JESD79-5C_v1.30-2024 內存技術規范
- 2.71 MB | 10次下載 | 免費
- 6elmo直線電機驅動調試細則
- 4.76 MB | 9次下載 | 6 積分
- 7WIFI智能音箱原理圖完整版
- 0.09 MB | 7次下載 | 10 積分
- 8PC1013三合一快充數據線充電芯片介紹
- 1.03 MB | 7次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935115次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183333次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73806次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65985次下載 | 10 積分
評論
查看更多