资料介绍
描述
大家好!!!欢迎来到基于 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山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多