2018-8-8 17:21:28 [显示全部楼层]
20972浏览
查看: 20972|回复: 15

[项目] 来来来,让我们一起来打地鼠!

[复制链接]
先上视频,大家直接看效果。




       一、创作背景和创意来源

       打地鼠是一款比较经典的敏捷类游戏,我们可以在许多商场门口看到这类游戏机,在电脑和手机上也有许多类似的游戏,由于大型的游戏机携带不方便,而电脑、手机中的游戏玩起来又不如游戏机的体验效果好。于是,我利用Arduino制作了这个打地鼠游戏盒,玩家可以自由携带,玩起来体验效果又非常好(见下图)。
来来来,让我们一起来打地鼠!图1




       二、作品功能

       按开始按钮后游戏开始,数码管会倒计时显示3、2、1、0,然后9只地鼠头上的LED灯随机亮起来,用手去拍打地鼠胸部的光敏传感器,灯就会灭了,而数码管上显示打到地鼠的只数就会增加1,接着又会随机亮起一盏灯,然后接着打。到了一定时间后(可修改时间),游戏结束,数码管上显示最终打到地鼠的只数,整个游戏过程都伴随有提示音。


       三、材料准备

             DFRduino UNO R3         1
             RGB LED                         9
             光敏传感器                      9
             数码管                             1
             蜂鸣器                             1
             按钮                                 1
             杜邦线                           若干
             激光切割盒                      1


       四、制作过程

       打地鼠游戏盒的制作过程如下:
       第一步先利用CorelDRAW软件设计打地鼠游戏盒,并用激光切割机对3MM椴木层板进行切割和雕刻(设计图如下)。

来来来,让我们一起来打地鼠!图2



       第二步,把RGB LED灯分别安装在打地鼠游戏盒的面板上,焊接好各个LED之间的导线,并用热熔胶进行位置的固定。这里要注意各个LED上的GND和5V连在一起,上一颗LED的DO与下一颗的DI连在一起,连接的顺序及方法如下图。
来来来,让我们一起来打地鼠!图3


       第三步,把数码管和光敏传感器安装在面板上,并用热熔胶固定位置。
来来来,让我们一起来打地鼠!图4



       第四步,把蜂鸣器和按钮安装在侧板上,并用热熔胶固定位置,把盒子的侧板与面板连接好并用螺丝固定住。最后把各传感器用杜邦线与Arduino控制板进行连接。
来来来,让我们一起来打地鼠!图6

来来来,让我们一起来打地鼠!图7

       第五步,在程序设计前我们要先对光敏传感器的灵敏度进行调节,因为在游戏中我们是通过用手去拍打地鼠的胸部(遮挡光敏传感器上的光线)来达到打到地鼠的效果。所以我们先接通Arduino控制板的电源,再用手去遮光敏传感器,通过观察传感器上的指示灯来判断DO数字开关量输出1还是0(因为光敏传感器信号输出是接在DO数字输出口),我们再通过调节光敏传感器上的电位器,把所有的光敏传感器调到合适的状态。

       五、程序设计

      
       程序是利用Mixly软件编写的,主要分为三部分:开机初始化程序、倒计时函数和主程序。
        1、开机程序。
         开机时先定义几个整数变量,在主程序中起到控制及统计的作用,然后再定义RGB灯带的连接管脚及RGB灯的盏数。
        2、倒计时函数。
         这个函数的功能是先把RGB灯带上所有的灯都熄灭然后再让数码管依次显示3、2、1、0,期间并伴随有提示音,从而实现倒计时的效果。
        3、主程序。
         当按下接在A0管脚上的按钮时,游戏开始,先把分别把变量m和n赋值为1和0,再执行倒计时函数,倒计时结束后把当前的系统运行时间赋值给变量a,供下面的统计时间使用。
当程序检测到按了开始按钮后,就让管脚13上的RGB灯带随机亮起一盏灯,然后再去比较这盏灯相对应的光敏传感器检测到的值,这里的灯和光敏传感器是通过变量k来建立对应关系的。如果这时光敏传感器检测到的值是0(手没按在传感器上方),就不断得重复执行延时指令,直到光敏传感器检测到的值是1时(手按在传感器上方),就跳出循环执行下面的指令,让灯都熄灭,并伴随响一下提示音表示打到地鼠了,接下来让打到地鼠的总只数n增加1,并在数码管上显示出来。
为了实现在玩游戏时可以随时重新开始,于是在不满足条件执行中增加了当按下开始按钮后跳出循环指令,并把变量m赋值为0,因为跳出循环后还会执行一次下面的n赋值为n+1指令,所以在这里先把变量n赋值为n-1,下面再加回来后才能保证n的值不变。
为了达到限时效果,在不满足条件执行中又增加了一个经过一定的时间就跳出循环的指令块,这个时间是通过两次获取系统运行时间进行比较,如果大于30秒就跳出循环,从而实现每局游戏时间是30秒,如果到达30秒,响起三声提示音,游戏就结束,数码管上显示这局游戏打到地鼠的总数量。
       完整的程序如下:
来来来,让我们一起来打地鼠!图5







  作者其它帖子  

   小尚,别跟丢了!——自动跟随的麦克纳姆轮小车 https://mc.dfrobot.com.cn/thread-296803-1-1.html
   来吧!一起动手制作一台架子鼓 https://mc.dfrobot.com.cn/thread-289948-1-1.html
   钥匙忘带提醒器  https://mc.dfrobot.com.cn/thread-280445-1-1.html
   麦昆智能晾衣架  https://mc.dfrobot.com.cn/thread-280329-1-1.html
   炫彩电子钢琴的设计与制作 https://mc.dfrobot.com.cn/thread-280116-1-1.html
   [micro:bit×OBLOQ物联网挑战赛第三轮] 坐姿矫正仪 https://mc.dfrobot.com.cn/thread-269139-1-1.html
   【挑战2】基于物联网的智能闸道、人数统计与安全预警系统 https://mc.dfrobot.com.cn/thread-268643-1-1.html
   物联网比赛第一关:远程监测温度和亮度 https://mc.dfrobot.com.cn/thread-268162-1-1.html
   来来来,让我们一起来打地鼠!  https://mc.dfrobot.com.cn/thread-268413-1-1.html




狭维失  初级技师

发表于 2018-8-8 17:43:36

这样打地鼠没有灵魂的,要用锤子敲。
回复

使用道具 举报

 中级技匠
 楼主|

发表于 2018-8-8 17:48:29

狭维失 发表于 2018-8-8 17:43
这样打地鼠没有灵魂的,要用锤子敲。

也可配上锤子,但不能太用力哦!:))
回复

使用道具 举报

hnyzcj  版主

发表于 2018-8-8 18:15:36

厉害厉害
回复

使用道具 举报

千年玄木  见习技师

发表于 2018-8-11 15:02:44

超级棒
回复

使用道具 举报

gray6666  初级技神

发表于 2018-8-13 14:49:44

创意转化为实物,棒。。。。。。。。。。。。。。。。。。
回复

使用道具 举报

DFSJ-jwSFrX  学徒

发表于 2018-8-15 12:07:53

为啥子我找不到同款led???
回复

使用道具 举报

gouxf  见习技师

发表于 2018-8-16 15:21:31

学习了,好玩
回复

使用道具 举报

lilei8488  中级技师

发表于 2018-9-4 09:23:29

不错,能教孩子们去做了。好东西,需要分享
回复

使用道具 举报

页里  初级技师

发表于 2018-10-9 16:07:34

这种很有意思啊!等我学了自己做!
回复

使用道具 举报

小元  学徒

发表于 2018-10-10 22:37:54

DFSJ-jwSFrX 发表于 2018-8-15 12:07
为啥子我找不到同款led???

已收藏,谢谢!
回复

使用道具 举报

niefubao  见习技师

发表于 2019-2-3 15:10:15

LED的灯珠  DI DO两根线怎么接啊
回复

使用道具 举报

岑剑伟  初级技师

发表于 2019-9-9 15:11:07

膜拜大神的动手能力
回复

使用道具 举报

20060606  高级技匠

发表于 2020-7-29 05:42:40

视频怎么插入到帖子?
回复

使用道具 举报

yaoyaoqike  学徒

发表于 2020-12-4 00:14:29

testArduino:84:7: error: break statement not within loop or switch
"Adafruit_NeoPixel.h" 对应多个库

大神我按你编译怎么会报这个错,是哪里打错了
回复

使用道具 举报

破风而来  初级技师

发表于 2021-6-10 22:13:26

我的程序仿照您写的,但是写出来有bug 就是 手臂很容易挡住其他的传感器,导致快速刷分。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail