Page Title

第5课 使用RGB LED与电位器——多彩台灯


2019-08-01 11:12:17

image.png

一般台灯发出的光线大多数是白色的,比较单调。本课我们将使用RGB LED和电位器模块,制作一台可以随心所欲改变颜色的多彩台灯。

image.png 

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

 

RGB LED模块


RGB LED是由红绿蓝三种颜色的发光二极管组成的、可以发出彩色光线的元件(如下图5-1所示)。RGB LED模块由4RGB灯珠组成,每个灯珠边上都有编号,可以使用指令,根据编号控制这些灯珠。

RGB是一种颜色模式,通过设置不同的R(红)G(绿)B(蓝)颜色值,可以显示出人类视力所能感知的几乎所有颜色。

 blob.png                     blob.png

   图5-1 RGB LED模块                            图5-2 电位器模块

电位器模块


WULink-NOVA入门套件中的电位器是一种旋转变阻器(如上图5-2所示),通过调节转轴调整电阻的大小,从而改变输出数值的大小。

电位器模块输出数值的取值范围是(04095)。

 

要制作本课的范例作品,还需要使用以下新的指令:

blob.png

使用这个指令可以读取指定模拟口的输出值。指令默认是模拟口A0”;通过单击下拉列表,可以选择A0A34个模拟端口。

blob.png

使用这个指令用于告诉主控板连接的RGB模块有几个RGB LED,必须在运行RGB LED的其它指令之前至少运行一次LED数量默认是4,端口默认为“S0”;通过单击下拉列表,可以选择S0S34个数字口、A0A34个模拟口。

blob.png 

使用这个指令可以设置RGB LED发出光线的颜色。指令默认是第1RGB LED灯接在S0”端口的RGB LED红色、绿色和蓝色值均为“0”,也就是不发光。通过单击下拉列表,可以选择S0S34个数字端口、A0A34个模拟端口;“红”、“绿”、“蓝”这三个参数可以直接输入,输入值范围为0~255。为避免亮度过高,伤害视力,请在RGB LED模块未做任何遮挡时,输入值不要超过30运行这条指令不能直接点亮RGB LED,需配合RGB显示”指令才行。

blob.png 

使用这个指令可以让RGB LED按照之前设定的颜色进行显示。

image.png 

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

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


首先将1根白色连接线一头插入RGB LED模块的接口,另一头插入主控板的S0”端口;接着用1根红色连接线一头插入数码管模块的接口,另一头插入主控板的“C1”端口;再用1根黑色连接线一头插入电位器模块的接口,另一头插入主控板的“A0”端口;将电池插入电源接口(如下图5-3所示);接着打开电源开关,等待主控板连接网络成功。


blob.png

图5-3 “多彩台灯”范例作品硬件连接图

第二步:在数码管上显示电位器数值                        


打开浏览器,登录“好好搭搭”网站;单击网站上方的“创作”按钮,在“无线编程”网页中选择“WULink-NOVA”模板,进入“WULink-NOVA”编程设计页”。

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

blob.png 

图5-4 “在数码管上显示电位器数值”程序代码

image.png 

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

 

 

image.png

我发现:________________________________________________________________

_______________________________________________________________________

 

第三步: 点亮RGB LED                       


要点亮RGB LED,应该先使用“RGB复位”指令,然后再使用“RGB写入”指令,最后根据实际连接情况设置端口参数、设置“红”、“绿”、“蓝”参数值。具体程序代码如下图56-5所示:

blob.png 

图5-5 “点亮RGB LED”程序代码

注意:由于WULink-NOVA的RGB LED模块外部没有灯罩,因此“RGB写入”指令的三个颜色参数值可以设置的小一些,不要超过30,在使用时也尽量不要直视灯珠。

image.png 

按下表数值分别设置上图65-5程序中“RGB写入”指令的“红”、“绿”、“蓝”参数值,编译后下载到主控板,看看RGB LED发出的是什么颜色的光线。

 

 

image.png

 

第四步:使用“功能块”点亮RGB LED


由于RGB LED模块有4个灯珠,要同时点亮这4个灯珠,需要使用4次“RGB写入”指令,灯号分别为1234

为了使程序更简洁,可以使用“函数”指令类别中的“函数执行”指令,将初始函数名称“PROCEDURE”更改为“RGB_SET”,新建一个名为“RGB_SET”的函数模块,如下图所示。

image.png 

当函数在调用时需要放入不同的参数时,需要给函数添加参数框。操作如下:

image.png

在函数中设置变量后,点开“变量”类目,可以看到RGB三个变量,如下图所示。

image.png 

参数名称可自定义修改,但是不能为中文,将RGB分别作为参数拖进“RGB写入”指令中。RGB显示程序段放入函数如下

image.png 

图5-6 “RGB_SET” 函数模块代码

此时点开“函数”类目,即可找到新建的“RGB_SET”函数模块:

image.png 

新建了RGB_SET”功能块后,就可以在主程序中调用。使用“重复执行”指令,重复执行“RGB_SET函数”模块和“延时”指令,设置“RGB”功能块指令的三个颜色参数值为随机数。每隔1秒种,RGB LED模块随机发出一种颜色的光线。具体程序代码如下图5-7所示:

image.png 

图5-7 “调用‘函数’模块点亮RGB LED”程序代码

image.png 

怎样让RGB LED模块的4个灯珠发出不同颜色的光线?

 

 

第五步: 用电位器控制RGB LED模块                      


要用电位器控制RGB LED模块,可以在上一步骤编写程序的基础上,加上电位器控制的脚本。

电位器数值的取值范围是(04095),“RGB写入”指令的三个颜色参数值是(0255),前一个大约是后一个的16倍,因此应该先将读取的电位器数值除以16,然后使用“向下取整”指令得到一个255以内的整数。

为了使程序更简洁,还可以新建一个名为color”的变量,设置这个变量的值是缩小、取整以后的电位器数值。最后使用如图5-6所示新建的“RGB_SET”函数模块指令,设置这个指令三个颜色参数值都是变量“color”。具体程序代码如下图5-8所示:

image.png 

图5-8 “用电位器控制RGB LED模块”程序代码

 

image.png 

除了电位器模块,能不能使用按键模块控制RGB LED模块?

 

 

image.png 

使用3个电位器模块制作多彩台灯,使得台灯光线的颜色控制更加方便、精确。

我打算这么做:_______________________________________________________

______________________________________________________________________

做的时候需要注意:____________________________________________________

______________________________________________________________________