Icon for package 迷宫攻防战

迷宫攻防战
1


  

  

  

  

Arduino 传感器实验报告  

——“迷宫攻防战”  

  

  

  

  

 

第四组  

2015.11.28  

  

 

 

 

 

  

一、实验要求 

在完成 Arduino 搭建学习和 Mixly 软件使用之后,小组通过头脑风暴设计一

个项目,通过物理搭建和编程完成项目。 

  

二、项目构想 

在结合日常生活观察和小组讨论之后,决定搭建一个可自动判断游戏起始并

自动计时的迷宫。网购剩余的废纸可利用做成纸迷宫,使用倾斜开关作为自动计

时开始判断元件,使用红外开关作为自动计时的结束判断元件,使用四位数码管

显示时间。考虑到这一迷宫可以作为孩子的玩具,我们增加了音乐功能,在走完

迷宫之后有音乐响起。 

  

三、实验材料 

Mixly 软件、Arduino 元件(面包板、主板、四位数码管、蜂鸣器、倾斜开

关、红外开关、连接线、公公线、公母线等)、剪刀、纸板、绝缘胶带等。 

  

四、实验步骤 

1. 迷宫物理搭建 

材料方面,我们准备了三个双 11 购物时储备的中型纸箱(后简称为:A

箱、B 箱、C 箱子)、一把剪刀,和两卷宽胶带。首先,我们使用 A 箱作为迷

宫的底面。将 A 箱展开,按纸箱折叠痕迹用剪刀依次剪开,找出两块面积最

大的纸箱片,将其宽边重合并用胶带紧密粘贴在一起,底面完成。其次,将

B、C 箱展开,并将其用剪刀剪成若干个等宽的纸箱片,并等待粘贴。之

后,上网查找简易的迷宫设计图作为参考,用铅笔在已做好的迷宫底面上粗

略绘制出迷宫的草图。最后,将已剪好的若干等宽纸箱片,按照草图,依次

垂直粘贴在迷宫的地面上,迷宫制作完成。 

  底板制作  

  

 隔板制作  

  

 完成  

  

2. 线路物理搭建 

根据所要实现的功能,需要将数码管、倾斜开关、红外开关和蜂鸣器接

入电路。 

  • 数码管接入 8-13 口,并使用绝缘胶带固定,使显示面朝上。 
  • 倾斜开关接入管脚 3,并通过公母线延长,将开关水平贴在迷宫底面。 
  • 红外开关接入管脚 2,并通过公母线延长,将开关贴在出口附近,感应端朝向与小球出迷宫路线垂直,高度大致在小球球心。 
  • 蜂鸣器接入 7 口,直接固定在面包板上。 

 

线路连接实物图  

  

3. 代码实现 

代码共分为三个部分,即初始化、四位数码管的显示程序和主程序,如

图 1 所示: 

  图 1  

  

首先进行初始化声明:声明变量 state 表示计时开始状态判断,并赋值为

0,管脚 3 控制倾斜开关,当迷宫倾斜时,倾斜开关启动,管脚 3 电压状态

改变,state 赋值为 1;声明变量 gate 表示计时结束状态判断,并赋值为 0,

管脚 2 控制红外接近开关,当乒乓球到达出口时,红外接近开关启动,管脚

2 电压状态改变,gate 赋值为 1;创建蜂鸣器的频率数组,用以确定基准频

率,并创建音乐的音高和时值数组。如图 2 所示: 

 图 2  

动态逻辑  当倾斜开关启动时,state 赋值为 1,计时开始,每隔 20 毫秒

 

i 的值加 1,经过 1 秒(即 1000 毫秒)后,i 的值增加 50,则四位数码管的

 

数字显示为“i÷50”,也即每经过 1 秒,四位数码管显示的数字加 1。当小

球到达迷宫出口时,红外接近开关启动,gate 赋值为 1,跳出上述循环,停止计时,并按照初始化中创建的音高和时值数组播放音乐,与此同时,四位

数码管停留在计时最后显示的数字,即“i÷50”。如图 3 所示: 

 图 3  

  

五、实验反思 

实验过程中小组分工明确,合作顺利,很快完成了任务,达到了预期效果,

但是仍有两点改进想法: 

  • 如何在只能单线程运行的 Mixly 软件中嵌入舵机程序,给迷宫增加障碍,提

高游戏可玩性。 

  • 数码管显示时最后一位过亮,倒数第二位偏暗,这一问题在别组的作品中也

很常见,目前不知如何解决。 


附件