用手势来控制的小灯

网友投稿 2019-01-09 11:58

最初的构想源自于自己的懒惰,有人说懒惰能够促使我们进行更多的开发和创造。这一点虽然我不完全赞同,但是对于一个有想法的小组来说,这可能是对的。

冬天到了,在被窝里很舒服。可是我们该如何开灯和关灯呢?睡觉的时候是应该关灯,这样才能让我们睡得更香。于是我们有了一个关灯的计划。

看了看手边的电子电路套件,我们能用什么方法来实现呢?最初我们是用按钮来构思,可是按钮拖了很长的线连接到Arduino主控板上。稍不留意,又把电源线碰掉了,整个电路失去了控制功能。其实促使我们最终放弃这个方案的原因是我们这个通过Arduino主控板来控制的按钮开关和现在墙面上已经有的开关,没有什么区别。

学习电路基础知识过程中,我们在测量电阻数值

可是这一次的失败并没有使我们退缩。我们知道要想创新,必须要知道创新的原理是什么,更加需要知道无法创新的原因是什么?经过学习TINKERCAD网站上提供的电路学习资料,我们在了解了传统电路的基础上,开始使用和测试了大量传感器,目的就是为了通过使用不同传感器的功能,来构思我们可能的创新。

这次我们选择了超声波模块,用于检测障碍物的距离,而根据这个距离来使我们的Arduino主控板感知并采取下一步行为,而这个时候我们发现,使用TINKERCAD的模拟功能,并没有达到我们想要的效果。于是我们开始思考我们的设计原理是否出了问题,下面就让我们一起来看看吧。

我们的学习历程

我们一共使用了两个超声波传感模块。第一个接在11号引脚上,第二个接在10号引脚上。而被我们控制的小灯接在9号引脚上。那么如何让我们的Arduino主控板,明确的知道我们是怎么想的呢?

我们的思路是这样的:如果10号引脚先检测到障碍物,稍等片刻(程序设定为100毫秒)后11号引脚也检测到障碍物,说明我们的障碍物是从右边移到左边(如图所示)。这时我们用状态变量i,来保存障碍物移动的状态。如果11号引脚检测到障碍物,稍等片刻(程序设定为100毫秒)后10号引脚也检测到障碍物,说明我们的障碍物是从左边移动到右边。同样我们用状态变量i,来保存障碍物的状态。最终我们根据状态变量i的数值来设置引脚9的高低电平值以达到来控制灯的开关的目的。

好了,我们用超声波模块来做一次检测吧。根据串口监控显示,我们发现,我们的思维和主控板arduino是不一样的。(后来我们想到了一个解决的办法,但是发现程序代码太长了,而且效果并不理想,不知道哪位大神可以给个解决的办法呢?如果使用超声波模块的话。)经过了多次的尝试和失败后,我们决定更换一个传感器。我们选择了两个PIP传感器,来完成我们现有的创新构思。

https://cdn.china-scratch.com/timg/190111/115U4L29-0.jpg

我们制作的超声波模块电路实验

这一次,我们经过测试,实际上效果也并不理想,我们调试了不同的延时时长,在功能上实现了我们想要的效果。然而为了能够更好的达到用手势来控制开关灯的效果,我们使用红外数字避障传感器。其在DFrobot的官网首页(http://mc.dfrobot.com.cn/portal.php)的产品资料库中的编号是(SKU:SEN0019),根据之前的设计思路和编程的经验,我们设计了如下的程序,最终较好的实现了我们的设想。

https://cdn.china-scratch.com/timg/190111/115U4CN-1.jpg

程序和代码块截图

我们的小组成员有:苏新雨,潘雁南,徐奕晓,陈子涵。具体分工如下:

苏新雨:提出创意设计。

潘雁南:设计电路,完成不同电路测试。

徐奕晓:电路理论可行性分析,测试传感器。

陈子涵:完成电路图绘制,动手建立实验模型。

从零开始,尽可能利用每天中午午休时间,我们坚持了近3个月时间,感谢几位同学的辛苦付出。

说明:TINKERCAD为AUTODESK公司的注册商标。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com