增强现实和虚拟游戏已成为游戏行业的最新趋势。使用键盘/操纵杆和鼠标玩计算机游戏的时代已经过去。现在,每个游戏机都配备了虚拟控制器,该虚拟控制器可帮助我们利用身体的动作和手势来玩游戏,这样,游戏体验就大大增加了,用户会更加参与游戏。
在这个项目中,让我们尝试通过学习项目来获得乐趣。让我们创建一个游戏(是的,您没听错,我们想创建一个游戏),然后用您的手的动作来玩。我们正在使用Arduino和Accelerometer创建经典的乒乓球游戏。
概述:
如今,有大量的开源软件可供使用,这给像我们这样的业余爱好者带来了很多快乐,而Processing是其中之一。使用此基于Java的应用程序,我们可以构建自己的软件(.exe格式),也可以构建android应用程序(.apk文件)。因此,我们将使用该软件来构建我们的游戏,我们之前已使用处理来创建Arduino聊天室。
硬件部分将包括一个Arduino,它将从加速度计获取输入,以将其串行输入到我们的计算机/笔记本电脑中。
因此,我们去购物吧!!!
所需组件:
- Arduino(任何版本或型号)
- 加速度计
- 连接线
- 利息(洛尔兹)
加速度计和Arduino Nano
电路说明:
Arduino乒乓球比赛项目的电路不涉及任何复杂的连接。我使用了带加速度计的Arduino Nano。但是几乎没有什么需要注意的,如下所述:
1.您的加速度计无法处理5V,因此始终将加速度计的Vcc连接到Arduino的3.3V引脚。
2.每个加速度计都会受到重力的影响,在编程时必须处理重力(仅使用过滤器)。
考虑到这一点,让我们研究一下加速度计的工作原理以及如何使用它。
加速度计的工作:
一个加速度计是可在任何方向上的加速度转换到其各自的可变电压的装置。这是通过使用电容器来实现的(参考图),随着Accel移动,其内部存在的电容器也将根据该运动而发生变化(参考图),因为电容变化,因此也可以获得可变电压。
因此,如上所述,每个加速度计都存在重力效应的问题。无论传感器的校准精度如何(甚至Apple手机Accel。),都会受到重力的影响。下面给出了有关此问题的更多技术说明。
现在,在Arduino中,我们可以使用简单滤镜来减少重力的影响。该过滤器将由两个数组组成,一个数组用于存储来自传感器的样本值,另一个数组用于对样本值进行排序,并找到重复次数最多的值。让我们在Arduino中实现该算法并准备好硬件。
编程Arduino:
Arduino程序在下面的代码部分中给出。没有关键数据需要修改。但您可能需要考虑以下因素:
如果您的Accel仍然显示随机值,请增加样本量。
#define Samplesize 13 // filterSample编号
发挥9600波特率,以提高Arduino与Processing之间的通信速度。但是请确保在两个软件(程序)中都进行了更改。
void setup(){Serial.begin(9600); }
我在X轴上的加速度计在最左端提供193,在最右端提供280,为您的Accel测量它们并更新值。
toSend =地图(smoothData1,193,280,0,255);
这些值被映射到单个字节的数据中以进行串行通信。
进一步检查下面给出的代码中的注释以清楚地理解它。
编程处理:
Processing是开放源代码软件,艺术家可以使用它进行图形设计。该软件用于开发软件和Android应用程序。它很容易开发,并且非常类似于Android Development IDE。因此,我简化了解释。
乒乓游戏的处理代码 如下:
- Arduino Ping球类游戏的处理代码
右键单击它,然后单击“将链接另存为..”以下载代码文件。然后在“处理”软件中打开文件,然后单击“运行”按钮以玩游戏。您需要安装“处理”软件来打开*.pde文件。“注释”部分打开以供查询,并检查程序中的注释以更好地理解它。
在下面的代码行中,处理代码的void setup()函数非常重要,因为它决定了从哪个端口发送数据。
port =新的Serial(this,Serial.list(),9600); //以波特率9600读取第四个端口
在这里,我从Arduino的第4个端口读取了数据。
例如,如果您有COM COM COM COM COM
然后上面的代码将从COM读取数据。
测试:
现在,既然我们的处理和Arduino草图已经准备好,只需将以下给定程序上载到Arduino,并通过编程电缆将Arduino连接到用户PC,然后通过运行处理代码文件(.pde)启动游戏。而已!移动您的加速度计并玩乒乓球游戏。该视频将指导您完成整个项目。
一旦您了解了该程序,就可以创建许多类似的游戏并使用Arduino进行游戏。此外,Y轴和Z轴也可能包含在游戏中。