Page Title

第6课 在WULink-UNO中使用亮度与声音传感器——智能声控灯


2019-08-02 14:32:56

图片.png 

普通灯一般使用机械开关控制亮灭,而智能灯使用各种传感器控制亮灭。本课将学习制作一种智能声控灯,它能够在检测到周围光线比较暗、同时声音强度超过指定值时自动点亮。不仅能够给使用者带来方便,还可以节约用电。

图片.png 

要制作本课的范例作品,需要使用以下新的硬件模块:

亮度传感器模块


亮度传感器其实是一个光敏管,能够感知周围光线的强度,通过转化和采集后输出具体数值(如下图6-1所示)。

WULink-UNO套件中亮度传感器输出的光线强度取值范围是(04095)。


图片.png


6-1 亮度传感器模块

声音传感器模块


声音传感器里面有一个对声音敏感的电容式驻极体话筒,声波会使话筒内的驻极体薄膜振动,产生电压变化,通过转化和采集后输出具体数值(如上图6-1所示)。

WULink-UNO套件中的声音传感器输出的声音强度取值范围是(04095)。


图片.png

6-2 声音传感器模块

图片.png 

要制作本课的范例作品,需要使用以下器材:

² UNO主控板和配套的扩展板

² 声音传感器模块:一个

² 亮度传感器模块:一个

² 数码管模块:一个

² RGB LED模块:一个

² 3P连接线:三根

² 4P连接线:一根

第一步:连接硬件、连接网络                       


要搭建本课的范例作品,可以按以下步骤操作:

1. UNO扩展板插入到UNO主控板上。

2. 4P连接线白色插头插入数码管模块的接口中、黑色插头插入扩展板第二排右边的IIC端口,黑色插头插入时要注意连接线每根线的颜色和扩展板插座针脚的颜色相同。

3. 将一根3P连接线白色插头插入亮度传感器模块的接口中、黑色插头插入扩展板中间的“A0”号端口,黑色插头插入时要注意连接线每根线的颜色和扩展板插座针脚的颜色相同。

4. 将另一根3P连接线白色插头插入声音传感器的接口中、黑色插头插入扩展板中间的“A1”号端口,黑色插头插入时要注意连接线每根线的颜色和扩展板插座针脚的颜色相同。

5. 将第三根3P连接线白色插头插入RGB LED的接口中、黑色插头插入扩展板中间的“D2”号端口,黑色插头插入时要注意连接线每根线的颜色和扩展板插座针脚的颜色相同。

具体器材连接方式如下图6-3所示:


图片.png

6-3 “智能声控灯”范例作品硬件连接图

第二步:在数码管上显示亮度传感器的值                        


登录“好好搭搭”网站,选择“创作”栏目中的“WULink-UNO模板”,点击进入WULink-UNO编程设计页”进行编程。

要在数码管上显示亮度传感器的值,可以使用“重复执行”指令,重复执行“数码管消除”、“数码管显示”及“等待”指令,再将“读模拟口”指令作为“数码管显示”指令的显示数值参数。由于亮度传感器连接的是“A0”端口,因此就会在数码管上每隔“0.5”秒刷新显示当前环境的亮度值。具体程序代码如下图6-4所示:


1564727244458278.png

6-4 “在数码管上显示亮度传感器值”程序代码

图片.png 

将上图6-4所示代码后下载到主控板上,然后按下表要求测试不同环境下的亮度值,将数码管上显示的数值记录下来。

 

 

图片.png

我发现:________________________________________________________________

_______________________________________________________________________

 

第三步: 在数码管上显示声音传感器的值                       


与数码管上显示亮度传感器值的程序类似,由于声音传感器连接的是A1”端口,因此在数码管上显示声音传感器值的程序只需要修改“读模拟口”指令的参数为“A1”,这样在数码管上每隔“0.5”秒刷新显示的就是当前环境的声音响度值。具体程序代码如下图7-5所示:


图片.png

6-5 “在数码管上显示声音传感器值”程序代码

图片.png 

将上图6-5所示代码后下载到主控板上,然后按下表要求测试不同环境下的声音情况,将数码管上显示的数值记录下来。

 



 

图片.png

我发现:________________________________________________________________

_______________________________________________________________________

 

第四步:用亮度传感器控制灯光的亮灭                   


要让亮度传感器控制LED亮灭,需要对亮度传感器的值进行判断:如果亮度传感器所连接的A0”模拟口读取的值小于指定值(本例中指定值为50)、也就是周围光线比较暗,那么点亮连接在“2”数字端口的RGB LED;否则熄灭RGB LED。具体的程序代码如下图6-6所示:


图片.png

图片.png

6-6 “用亮度传感器控制RGB LED亮灭”程序代码


注意:如果-执行-否则指令是如果执行指令变形而来的,变形操作如下:

图片.png

图片.png

如何在用亮度传感器控制灯光亮灭的同时,用数码管显示实时的周围环境亮度值?



第五步: 用亮度和声音传感器同时控制灯光亮灭                       


要用声音和亮度传感器同时控制灯光亮灭,也就是周围光线比较暗的同时,声音的响度还要达到一定的值,灯才会亮。这个程序代码的核心是对判断的条件进行设置,可以使用“数字和逻辑运算”类别中的“且”指令。也就是连接亮度传感器“A0”端口的值小于“50”的同时,连接声音传感器“A1”端口的值还必须大于“500”,只有这两个条件都满足的情况下,灯才会亮;否则,设置灯是灭的。具体程序代码如下图6-7所示:


图片.png

6-7 “用亮度和声音传感器同时控制灯光亮灭”程序代码

图片.png 

如下图6-8所示程序脚本,与上图6-7有什么不同?它能否让智能声控灯正常工作?分析这两种程序编写方法有什么区别?你喜欢哪种方法?

 

 

图片.png

6-8 “用亮度和声音传感器同时控制RGB LED亮灭”程序代码2

 

图片.png 

根据实际环境光线及声音响度情况,调整具体数值,使得智能声控灯更有实用性。

 

 

图片.png 

除了使用亮度和声音传感器控制灯光,你还能让灯光控制更智能、使用更方便吗?

我打算这么做:_______________________________________________________

______________________________________________________________________

做的时候需要注意:____________________________________________________

______________________________________________________________________