基于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

结果呈现

VCCGNDA5A4

7.4V 2200MA 锂电池

1

提供电源

 

按钮

1

控制程序的开启

D4

纸盒

1

封装传感器和Arduino UNO

 

胶枪

1

固定传感器

 

LED

2

提示玩家

D7D9

蜂鸣器

1

警报提醒

D5

舵机

1

随机转动靶子

D3

废弃的遥控笔

1

提供激光

 

光线传感器

1

监测靶心是否被击中

A0

 

三、产品

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

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

作者

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

作者的最新作品


阅读数: 10095