Page Title

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


2019-08-01 15:31:46

blob.png

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

blob.png

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

 

亮度传感器模块


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

Nova套件中亮度传感器的输出信号为模拟量,调用“读模拟口”指令读取,光线强度取值范围是(04095)。

blob.png         blob.png

 图6-1 亮度传感器模块             图6-2 声音传感器模块





声音传感器模块





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

Nova套件中的声音传感器输出信号也为模拟量,调用“读模拟口”指令读取,声音强度取值范围是(04095)。

 

blob.png

要制作本课的范例作品,可以按以下步骤先连接硬件、运行插件程序,然后进入“好好搭搭”网站编写、调试、编译、下载程序。

第一步:连接硬件、运行插件                       


首先将模块与主控板连接起来:亮度传感器模块连接“A0”端口、声音传感器模块连接“A1”端口、RGB LED模块连接“S0”端口、数码管模块连接“C0”端口(如下图6-3所示);接着把主控板和计算机连接起来,最后打开“好好搭搭硬件下载”插件,确认插件程序显示“打开端口成功”。

blob.png

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

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


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

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

 

                  

blob.png

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


blob.png

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

 

 

blob.png

我发现:________________________________________________________________

 

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


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


blob.png

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

blob.png

将上图76-4所示代码编译后下载到主控板上,然后按下表要求手动调节电位器上转轴的位置,将数码管上显示的数值记录下来。

 

 


blob.png


我发现:________________________________________________________________

_______________________________________________________________________

 

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


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


blob.png

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


为了使程序更简洁,上图76-6中的程序使用了名为“RGB_SET”的功能块,具体功能块代码如下图6-7所示。


blob.png

图6-7 RGB功能块”脚本代码


blob.png

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

 

 

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


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


blob.png

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


blob.png

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

 

 


blob.png

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

 

blob.png

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

 

 

blob.png

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

我打算这么做:_______________________________________________________

______________________________________________________________________

做的时候需要注意:____________________________________________________

______________________________________________________________________