Page Title

第6课 在Arduino中使用RGB LED与角度传感器——多彩台灯


2019-07-31 15:27:02

blob.png

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

 

blob.png

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

RGB LED模块

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

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


blob.png

    图6-1 RGB LED模块 

角度传感器模块


Arduino入门套件中的电位器是一种旋转变阻器,通过调节转轴调整电阻的大小,从而改变输出数值的大小。

角度传感器模块输出数值的取值范围是(04095)。


blob.png

6-2角度传感器模块

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

blob.png

使用“读模拟口”指令可以读取指定模拟口的输出值。指令默认是模拟口“A0”;单击下拉列表,会出现A0-A5六个选项,根据扩展板上接口设置,可以选择A0A34个模拟端口。

blob.png

使用“初始化RGB”指令用于告诉主控板连接的RGB模块有几个RGB LED灯,必须放置在“好好搭搭硬件程序”与“重复执行”指令之间。LED数量默认是4,端口默认为“2”;单击下拉列表,选择RGB模块与扩展板相连接的端口号。

blob.png

使用“指定RGB写入”指令可以设置RGB LED发出光线的颜色。指令默认是第1RGB LED灯接在“2”端口的RGB LED红色值为“10”,绿色、蓝色值均为“0”,也就是发红色光。 “红”、“绿”、“蓝”这三个参数既可以单击下拉列表选择预置的数值,也可以直接输入,输入值范围为0~255。为避免亮度过高,伤害视力,请在RGB LED模块未做任何遮挡时,输入值不要超过30。该条指令的端口号设置为RGB模块与扩展板相连接的端口号。

运行这条指令不能直接点亮RGB LED,需配合“RGB显示”指令才行。

blob.png

使用“RGB显示”指令可以让RGB LED按照之前设定的颜色进行显示,注意显示端口为RGB LED模块与扩展板的连接端口。

 

blob.png

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

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

²  RGB LED模块:一个

²  角度传感器模块:一个

²  数码管模块:一个

²  3P连接线:两根

²  4P连接线:一根

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


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

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

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

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

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

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

blob.png

 

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

 

5.      USB线把主控板和计算机连接起来,打开“好好搭搭硬件下载”插件,选择“型号”为“UNO”,确认插件程序左下角的端口和型号显示正确。

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


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

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


blob.png


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

blob.png

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

 

 

1564558428(1).jpg

 

我发现:________________________________________________________________

_______________________________________________________________________

 

第三步: 点亮RGB LED                      


要点亮RGB LED,应该先使用“初始化RGB”指令,然后使用“写入RGB数据”指令,根据实际连接情况设置端口参数、设置“红”、“绿”、“蓝”参数值,再添加“RGB显示”指令,最后加一条“等待”指令,等待时间可设置为“1”秒或者更短的时间。具体程序代码如下图6-5所示:


blob.png


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

注:由于Arduino的RGB LED模块外部没有灯罩,比较刺眼。因此“发送RGB数据”指令的三个颜色参数值可以设置的小一些,不要超过30,在使用时也尽量不要直视灯珠。

blob.png

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

 

 

1564558449(1).jpg

 

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


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

为了使程序更简洁,可以使用“更多模块”指令类别中的“新建功能块”,新建一个名为“RGB_SET”的功能块。具体功能块代码如下图6-6所示:


blob.png


6-6 RGB LED功能块”脚本代码

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


blob.png


6-7 “使用‘功能块’点亮RGB LED”程序代码

 

blob.png

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

 

 

第五步: 用角度传感器控制RGB LED模块                     


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

角度传感器数值的取值范围是(04095),“RGB写入”指令的三个颜色参数值是(0255),前一个大约是后一个的16倍,因此应该先将读取的角度传感器数值除以16,又因为RGB颜色参数值只能是0255之间的整数,故可使用“向下取整”指令得到一个255以内的整数。

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


blob.png


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

 

blob.png

除了角度传感器模块,能不能使用按键模块控制RGB LED模块?

 

 

blob.png

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

我打算这么做:_______________________________________________________

______________________________________________________________________

做的时候需要注意:____________________________________________________

______________________________________________________________________