基于Arduino制作的激光打靶器

标签:arduino 改装

李守良 发布于 2017-02-11 10:41

结果呈现图.png “激光打靶器”的核心代码.png “激光打靶器”开启程序.png 废弃的遥控笔.png

相信很多人都玩过打靶游戏,尤其是很多男孩子都梦想成为一个神枪手。激光打靶游戏在一些游乐场中也是很火的游戏项目,但是玩别人的游戏总觉得有些被束缚,那么能不能发挥自己的想象力,自己制作一个会逃避的激光打靶器呢?这篇文章就教我们使用Arduino UNO和一直普通废弃的遥控笔结合,自制一个有趣聪明的激光打靶器。

一、原理

要让激光打靶器的靶子感知遥控笔发出的激光,最合适的传感器就是光线传感器了。该光线传感器可以检测环境光线的强度,检测的值在0~1024。

 当激光击中靶心时,即当光线传感器获取的值超过800时,触发靶子随机转动一个角度,引起靶子的转动就需要使用舵机。本案例中使用舵机虽然重量只有9g,但是输出的力矩却达到了1.6kg*cm。为了使游戏更加有趣和刺激,我们可以使用蜂鸣器报警提示玩家。蜂鸣器是最常见的电子发声装置,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中。如下图3所示。当玩家不能在1分钟中内击中靶心超过10次,则蜂鸣器发出警笛般的报警声。为了方便玩家清晰知道已经击中的次数和游戏运行的时间,一般采用两种方式来显示,一种是数码管,另一种是LCD屏。但是由于数码管连接较为复杂,本案例就选择使用LCD屏显示。如下图4所示。

但是在实际的游戏过程中,由于距离较远,玩家不能有效观察到LCD屏上面的数字,这该怎么办呢?我们可以使用LED灯,当激光击中靶心后,LED闪烁提示玩家已经击中靶心。

二、原型

接下来,我们需要对于“激光打靶器”进行编程了。但是在开始之前,我们需要对整个程序流程梳理清楚。

首先按钮开启,让LED闪烁提示玩家,游戏已经开始并倒计时。LCD屏开始工作,LCD屏可以显示两行字符串,我们选择上面一行显示击中的次数,下面一行显示系统运行的时间。接下来当激光击中靶心时,靶心的光线传感器采集到光线值大于800时,舵机随机转动一个角度,另外一个LED闪烁提示你已经击中了。随着时间的进行,当玩家在55s内,不能击中10次以上,蜂鸣器就会发出警笛般的报警。如果程序判断玩家是否在1分钟内击中10次,如果是,那么就恭喜你成功了,如果没有,那么就需要重启,重新开始游戏。

接下来,我们需要选择一款合适的编程软件,主流的Arduino编程软件是Arduino IDE,

但是这款软件对于新手要求较高,目前针对于Arduino的图形化编程软件也越来越多,主流有Mixly等。Mixly以功能强大,操作方便为人们所认可,因此本案例我们选择Mixly这款软件。首先我们设置按钮的管脚和提示游戏开始的LED管脚,在本案例中我们设置为“D4”和“D9”。并且为了显示击中的次数,我们需要定义一个变量,为了方便记忆,我们定义一个变量n为整数并赋值为0。为了控制LED的亮灭,我们也需要定义一个变量,我们定义一个变量x为整数并赋值为0。在实际的操作过程中,也会遇到手的抖动使得按钮的触发不规律状况,我们需要加入防抖的命令。

 接下来就进入本案例的核心程序了,当按钮触发时,程序就开始计时。在Mixly中计时模块常用的是millls()函数,但是millis()让很多人不太容易理解,因此我们可以选择for循环。使用这两个模块结合,就可以实现每秒钟记1次,共记录60次了。

 我们设置光线传感器的管脚为“A0”,提示的LED灯设置管脚为“D7”,蜂鸣器管脚设置为“D5”。当光线传感器接受光线值超过800,可以触发LED闪烁,舵机随机转动一个角度。在这里需要重点强调一下,由于程序运行速度较快,所以我们需要增加一个类似防抖的命令,否则会多次触发舵机和LED灯。为了增加游戏的趣味性,我们让舵机随机转动一个角度,这个程序设置也比较简单。

在设置LCD模块需要特别注意,LCD模块是在Mixly软件的Dfrobot选项中,如果没有这个选项,需要从北师大创客教育实验室下载第三方拓展模块中的Dfrobot导入即可。在设置LCD时,我们让液晶显示屏的第一行显示的击中的数量,第二行设置时间。

当玩家在55s内不能击中10次,则触发蜂鸣器发出警笛的声音。因为不能让蜂鸣器一直发出警报,我们设置响3s后,自动关闭。

综上所述,我们将上面“激光打靶器”的核心命令按照设计思路整合在一起就成为如下图13所示的代码。如果有不明白的地方,可以在https://pan.baidu.com/s/1jHGSNiu中下载程序。

接下来就到了连接硬件的部分了,我们需要程序中对应的管脚和硬件连接部分的管脚保持一致。其中LCD模块与Arduino  UNO连接较为复杂,容易出错,两者的连接。

综上所述,制作本品所需要的材料和说明如表 1所示:

表 1  材料及设置

名称

 数量

说明

管脚设置

Arduino UNO

1个

控制模块

 

Arduino拓展板

1个

方便连接各种传感器

 

I2C LCD1602液晶模块

1个

结果呈现

VCC、GND、A5、A4

7.4V 2200MA 锂电池

1个

提供电源

 

按钮

1个

控制程序的开启

D4

纸盒

1个

封装传感器和Arduino UNO

 

胶枪

1个

固定传感器

 

LED

2个

提示玩家

D7、D9

蜂鸣器

1个

警报提醒

D5

舵机

1个

随机转动靶子

D3

废弃的遥控笔

1个

提供激光

 

光线传感器

1个

监测靶心是否被击中

A0

 

三、产品

接下来我们需要找一个尺寸合适的纸盒子把器材装进去,然后设置一个直杆连接靶子和舵机,把光线传感器的连接线放在直杆后面用胶枪固定即可。如果用普通的吸管代替直杆效果更好,组装起来。

接下来,就触发按钮,发射激光开始有趣的游戏吧。
 
动力老男孩2017-02-12 22:08:50
可以找个玩具枪,把激光头包进去,用扳机来发射激光

作者

2粉丝 1作品 0随笔
  关注 私信

作者的最新作品


阅读数: 13511