嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

【转载】来来来,让我们一起来打地鼠!

原作者:章

转载自:http://mc.dfrobot.com.cn/thread-268413-1-1.html

先看看视频来了解作品的效果。

 

视频链接:http://v.qq.com/x/page/v0749fo9zlk.html

 一、创作背景和创意来源

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

192831qvfm4lmxbzxvtq8f_ad104d48bc01982b5a47d67139c14d8fd1551f40.jpg





       二、作品功能

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

 
 

       三、材料准备

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


       四、制作过程

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

192831des89bbjwhsz67j7_5c4d4782d1a5635ef438bedb709db114b7c695a3.jpg




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

192832mpp11dcp9m3cdwi1_e54759de2aaa93d137fe98b5f520bfd3b89a5278.jpg



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

192832pbkecp0zzeskpzum_cc3cb56a4995ae49142e80116c9b1a1f616ead87.jpg




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

161212lw3r42j5mhjj0zjz_f9e3cabf3f19bc87d9c81a9330203ba6d11d692e.png

 

161615jpd2boypttyzp8vb_68c6a456b2b07c8af8b649fce14217a9870b438e.png

 

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

194224ds9j1jqk2l107fjs_7faaf42ce1bdcdaef743f2317c93e52ab15f04a7.jpg
PuaChengLin 还没写个人简介...