发表于 2018-8-8 17:21:28

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

先上视频,大家直接看效果。
https://v.qq.com/x/page/v0749fo9zlk.html


       一、创作背景和创意来源

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




       二、作品功能

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


       三、材料准备

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


       四、制作过程

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




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


       第三步,把数码管和光敏传感器安装在面板上,并用热熔胶固定位置。



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


       第五步,在程序设计前我们要先对光敏传感器的灵敏度进行调节,因为在游戏中我们是通过用手去拍打地鼠的胸部(遮挡光敏传感器上的光线)来达到打到地鼠的效果。所以我们先接通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秒,响起三声提示音,游戏就结束,数码管上显示这局游戏打到地鼠的总数量。
       完整的程序如下:







作者其它帖子

◆ 小尚,别跟丢了!——自动跟随的麦克纳姆轮小车 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-280471-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◆ 萌宠机器人的设计与制作 https://mc.dfrobot.com.cn/thread-275978-1-1.html◆ DIY留声机 https://mc.dfrobot.com.cn/thread-272320-1-1.html◆ 智能马桶https://mc.dfrobot.com.cn/thread-271881-1-1.html◆ 坐姿矫正仪 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◆ 变色龙https://mc.dfrobot.com.cn/thread-267573-1-1.html◆ 龙舟https://mc.dfrobot.com.cn/thread-90232-1-1.html◆ 多脚怪https://mc.dfrobot.com.cn/thread-37031-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 就是 手臂很容易挡住其他的传感器,导致快速刷分。
页: [1]
查看完整版本: 来来来,让我们一起来打地鼠!