×

基于Arduino的虚拟网球游戏

消耗积分:0 | 格式:rar | 大小:0.20 MB | 2022-12-14

香香技术员

分享资料个

方案介绍

在 Neopixel 矩阵和带有 Arduino 的加速度计上打网球!

这个项目有 3 个部分:游戏板/显示器、控制器和主路由器(Python 脚本)。

第 1 部分 - 显示
显示器是一个 15x10 新像素矩阵,由 Arduino Nano 运行。它处理游戏逻辑和来自在主机上运行的 Python 脚本的输入。它显示了一个球,该球在矩阵中向下生长并向下移动——给人一种深度的错觉,球向你袭来。如果它检测到球被击中,球将被重新绘制,远离你。

积分
每次击球都会改变球的方向(左或右)。如果你错过了球,COM 得到一分,但如果 COM 错过了(25% 的机会),你得到了分数。这种游戏设计类似于 Wii Sports 版的网球。每当 COM 对玩家得分时,就会显示分数。

高分
有一个运行的高分存储在 I2C EEPROM 的 0x04 地址中。它保留一个保存高分的字节。如果你的得分高于之前的高分,它会覆盖地址。如果 COM 得分为 10,则游戏结束……如果这令人困惑,我制作了一个逻辑图:

FpDj9H7xjFATwEt7wcKoVNdM1oWH

第 2 部分 - 控制器
控制器是另一个 Arduino Nano,它有一个 9DoF 棒(仅限 3v3!)和一个 HC-05 BLE 模块。如果 x 或 y 轴的加速度大于指定的阈值,它会通过串行向主机 PC 发送一个“1”,然后将其中继到显示器。Nano 以设定的时间间隔读取 x 和 y 加速度计的读数,然后检查数值是否高于或低于 1.5 克。为了访问 I2C 9 DoF 棒,您必须安装可以在此处下载的 Sparkfun 库。这里还有一个关于如何连接传感器并使用它运行基本程序的教程。

为了制作球拍,我使用了一个盒子,然后在一块硬纸板上剪出球拍形状。从那里开始很容易 - 只需将一张白纸放在纸板切口上,然后在纸上画一个设计。我使用 9v 电池为设置供电,请务必通过 Nano 上的 Vin 引脚运行电池,否则它将是一个未调节的 9v!这是球拍内部的图片:

Fjsh_lqPfMFamyhld0AaD89HFpVY

通过蓝牙进行通信
所以现在你可能想知道,是什么控制了这个复杂的操作?球拍如何与显示屏对话?这是一个秘密:他们不互相交谈!有一个简单的 Python 脚本,它使用传入的蓝牙 COM 端口和矩阵 COM 端口在它们之间传递信息。它还有助于同步两个系统,因为它们在串行端口初始化时都会重置。球拍通过蓝牙向 Python 脚本发送一个“1”,然后 Python 脚本向矩阵发送一个“1”。有 1 秒的去抖动,因此串行端口的缓冲区不会溢出(它们只有 32 位缓冲区)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !