我们都喜欢那种怀念童年和青春期玩过的游戏的感觉。几个游戏机和电脑游戏标志着这个时代。伟大的游戏之一是 Windows 操作系统的扫雷,如图 1 所示。
在这个游戏中,我们的目标是选择一个没有炸弹的位置。否则,我们输掉了比赛。
因此,我们在考虑这款游戏的概念时,我们创建了这个项目,目的是带回一款众所周知的游戏:雷区。
我们的项目包括一个简单的游戏,具有出色的动态,可以选择由两个人玩。
你的主要目标是选择一个没有炸弹的空方格。如果有炸弹,游戏就结束了。否则,游戏继续。基于此,每个位置将由连接到 Arduino 的按钮表示。
因此,在本文中,您将学习以下概念:
1. 为Arduino开发雷区游戏;
2.学习使用random和randomseed函数。
所以,接下来,我们将开始与Arduino一起开发雷区游戏,让您与朋友一起玩得开心。
基于此工作原理,开发了图 1 中的以下电路。
如我们所见,该电路由负责处理游戏逻辑的 Arduino UNO、模拟位置的按钮以及 LED 和蜂鸣器组成,通过灯光和声音信号指示游戏中的胜负.
从现在开始,我们将介绍电路的操作和电路中实现的逻辑。
游戏的主要目标是找到一个没有炸弹的空地。否则,如果用户按下泵所在的按钮,系统将产生用户输掉游戏的警报信号。
为此,我们将使用按钮来模拟每个正方形。我们将使用编程逻辑来绘制其中一个按钮的数字引脚号。抽奖后,地雷将分配给相应的按钮。
这样,我们现在将展示开发项目的代码。
代码如下所示。
int numero;
int estado;
int buzzer = 2;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
randomSeed(analogRead(A0));
numero = random(8,14);
}
void loop()
{
digitalWrite(3, HIGH);
estado = digitalRead(numero);
while(estado == 1)
{
digitalWrite(4, HIGH);
tone(buzzer,1500);
delay(100);
digitalWrite(3, LOW);
noTone(buzzer);
digitalWrite(4, LOW);
tone(buzzer,1500);
delay(100);
digitalWrite(3, HIGH);
noTone(buzzer);
delay(100);
while(estado == 0)
{
estado = 1;
}
}
}
如您所见,首先为连接到按钮的数字引脚声明了一个变量。此外,我们将创建一个变量来检查这些按钮的状态,即它们是处于高逻辑状态还是低逻辑状态。
最后,我们为蜂鸣器声明一个变量,并为该变量分配一个数字端口。
int numero; // Variável referente aos pinos digitais conectados aos botões //
int estado; // Variável para verificar o estado dos botôes, se estão em nivel lógico alto ou baixo. //
int buzzer = 2; // Váriavel atribuida ao pino digital 7, referente ao buzzer.//
接下来,我们有设置功能。在此函数中,我们将用于连接按钮的 I/O 引脚配置为输入,将 LED 和蜂鸣器引脚配置为输出。
此外,我们使用 randomSeed 函数。此函数使用在断开的模拟输入上读取的值作为参数来生成种子值。因为众所周知,断开的模拟引脚会生成随机值,因此,我们对代码中生成的值产生了真正的随机影响。
除了 randomseed 函数,我们还使用 random 函数。此函数从内部 Arduino 预先建立的列表中返回数字。这是一个巨大的乱码列表,并且总是相同的数字序列,实际上它不是随机数。
当我们重新启动 Arduino 时,它会再次启动此序列。
对于这个项目,我们抽奖了一个 8-14 范围内的数字。选择这些值是因为它们是连接到 Arduino 上的按钮的数字引脚的值。
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
randomSeed(analogRead(A0));
numero = random(8,14);
}
最后,我们有循环功能。开始时,绿色 LED 被激活,表示游戏已经开始,玩家可以开始游戏。然后,用户必须选择一个按键,如下面的电路所示。
When a selected switch does not have the pump in place, the green LED will remain on and the red LED will remain off. 此外,蜂鸣器不会被触发。这可以在下图中看到。
如果用户选择了一个位置并有一个泵,红色 LED 将亮起,绿色 LED 将熄灭,蜂鸣器将继续响起。这可以在下图中看到。
最后,我们包括一个重置按钮,用于在泵启动时重新启动游戏。按下按钮后,游戏重新开始,红色 LED 熄灭,绿色 LED 亮起。
然后绘制另一个随机图钉,您的乐趣将继续。这可以在图 5 中看到。
接下来,我们将为您提供文件,以便在NEXTPCB 印刷电路板上安装此项目。您可以免费使用和购买。
对于这个项目,我们决定为 Arduino UNO 创建一个 Shield 。在此板上,将连接 JST 以连接按钮、LED 和蜂鸣器。
通过这种方式,我们为该项目开发了电子原理图设计。示意图如下图所示。
下图的原理图是从电子原理图中获得的。如您所见,我们放置了 10 个 JST 连接器来连接项目的元素。
您现在可以在 3D 视图中看到印刷电路板项目的结果。
使用您的NEXTPCB 盾牌 Arduino 扫雷器,您可以设置您的项目并与您的朋友一起玩乐。
通过这个游戏的开发,我们学会了如何使用Arduino的几个功能中的一个,以及如何创建一个互动项目,让人们玩得开心。
这个项目很简单,可以在家中与父母和孩子一起设置,也可以在学校设置。
为了让您的乐趣更加完整,我们已经发布了所有文件,您可以通过此链接获得您的 PCB 单元来设置此项目。
我们感谢低成本印刷电路板 - NEXTPCB 公司的支持,并关注我们的个人资料以接收新的有趣项目。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !