小小云提示:教程作者caterpillar是来自台湾的programmer,所以在一些专有名词的使用上会和我们这边使用的不太一样啦,不过作者也有标注出英文名称,大家自行转换哟(⁎⁍̴̛ᴗ⁍̴̛⁎)
在〈mBlock & Arduino(14)使用人体动作感应器〉中谈过 PIR 动作感应器,Makeblock 提供有 PIR 动作感应器模组,以及光线感应器模组,结合这两个,你就可以轻易地作出一个小夜灯。
Me PIR 动作感应器
Me PIR 动作感应器可以侦测到周围六公尺左右的人体移动,范围可以借由 PIR 上方的可变电阻器来调整,这个动作感应器在 D3 有个 LED,当侦测到人体红外线时,LED 会亮起:
这个动作感应器也可以设定是否可重复触发,仔细看看感应器上可外接的脚位,或者是 RJ25 端口旁的脚位标示,可以发现有个 Mode 脚位,当你给这个 Mode 脚位高电位时,就是可重复触发模式,也就是当感测到红外线变化,在延迟时间内若持续感测到红外线变化,那么“人体红外线感应器方块”就会持续传回 1,直到不再感测到红外线变化后一段延迟时间,才会传回 0,这通常用于判断,人体是否有持续动作(或太久没动静)的场合。
不可重复触发,是当感测到红外线变化而“人体红外感应器方块”传回 1,无论延迟时间内有无感测到红外线变化,时间一到就会先传回 0。
因此,根据你将 RJ25 连接至哪个端口,查出 Mode 脚位是对应至哪个数位脚位,给予高或低电压,就可以设定为可重复触发或不可重复触发模式。
Me 光线感应器
Me 光线感应器可以侦测光线强弱,由于是借由类比脚位得到数值,因此光线强弱变化值由 0 到 1023:
从上面的照片中可以看到,这个感应器还可以侦测灰阶变化,这其实是利用反射光的强弱来达成,为了要能侦测灰阶变化,你必须点亮照片中标示为 D3 的 LED,然后让光线感应器很接近被侦测的平面,但不是接触该平面,由于黑色会吸收光线,因此,越黑的平面,反射光进入光线感应器就会越少,侦侧得到数值就会越低。
侦测灰阶变化的应用,常见于循迹车,在平面上画条黑线,车子上的光线感应器靠近黑线的一侧:
如果黑线是在感应器的右方,当车子越往左偏离黑线,反射光会越大,在大于某个值时可使其偏右接近黑线,如果车子越偏右进入黑线,为避免它整个往右超出黑线,可在反射光小至某个值时,让车子偏左,像这样始终让感应的反射光维持在某个范围内,保持黑线在感应器的右方,就可让车子延着划下的轨道前进。
当然,这样的方式只适合不交叉的黑线,如果轨道有交叉,就要使用两个感应器夹住黑线,如此在两个感应器反射光都小于某个值时,就表示目前处于交叉点。
那么,该怎么点亮标示为 D3 的 LED 呢?这个 LED 是借由标示为 DI 的脚位控制,当高电位时就会点亮 LED,不过光线感应器只能使用于连接埠 6、7、8,查看这些连接埠对应的脚位,都是类比输入脚位,怎么输出高电压?
其实类比脚位也可以用来作为扩充的数位脚位,以 Arduino Uno 为例,A0 到 A5,也可以当作 D14 到 D19 数位脚位来使用,因此,查看你的连接埠,就可以知道要令哪个号码的数位脚位为高电位了,例如,若连接在连接埠 6,其脚位为 A2,那么就是设置数位脚位 15 为高电位,就可以点亮 LED。
如果有兴趣,你也可以使用光线感应器实作个扫瞄器喔!可以参考〈EV3 Tutorial(7)使用颜色感应器实作扫描器〉,道理是相同的!
实作小夜灯
接下来就实作个小夜灯吧!需求是,这个小夜灯只在够暗的时候,才会感应是否有人接近而启用,小夜灯的部份,我们就直接使用光线感应器上的 LED,为了方便调节什么样的光线明亮程度才会感应是否有人接近,我们使用 Me 可变电阻器,并将调整好的数值显示于七段显示器上。
我将 PIR 动作感应器连至端口 3,七段显示器连至端口 4,光线感应器连至端口 6,而可变电阻器连至端口 7。
首先处理侦测人体移动的部份,当侦测到人体靠近时,LED 会点亮:
由于光线感应器连至端口 6,为了控制 LED 明亮,必须使用脚位 A2 充当数位脚位 D16,你可以调整 PIR 动作感应器上的可变电阻,设定好你想要感应的距离范围。
接下来,利用程式设定 PIR 动作感应器为可重复触发模式且先关闭光线应器上的 LED:
程式会每一秒钟将可变电阻器的输入值,设定给七段显示器显示,并作为判断光线门槛值的依据,你可以测试看看小夜灯是否如预期运作。
当然,我们不能老是开着电脑,使用 mBlock 来控制小夜灯,以上测试没有问题的话,可以在“Arduino mode”中,将程式上传至板子上:
记得,上传前要改用“Arduino 主程式”方块,并将自订方块的名称部份改成英文,上传完毕之后,你就可以将小夜灯装在想要的地方,将板子连接上外部电源,板子上的电源开关,就是你要不要启用小夜灯的开关了!
感谢CodeData用户:caterpillar的贡献 著作权归作者所有
整理:宁波家电物联网云平台,中科极动云
CONTACT US: http://www.iot-jd.com/