通过RGB三个引脚的PWM电压输入可以调节三种基色(红/蓝/绿)的强度从而实现全彩的混色效果。用Arduino程序控制可实现酷炫的灯光效果。

# 部署

  1. RGB发光二极管的R端子连接到OSEPP UNO的3号引脚。
  2. RGB发光二极管的G端子连接到OSEPP UNO的5号引脚
  3. RGB发光二极管的B端子连接到OSEPP UNO的6号引脚。

# 程序搭建

  • oseppBlock 积木知识

RGB发光二极管的定义积木。
定义名称和连接引脚。

设置RGB发光二极管的颜色积木。通过滑块调节,可以设置颜色,饱和度和亮度。

设置RGB发光二极管颜色积木。通过输入三种颜色的的数值来调节改变颜色,数值范围是0-255。此积木要放入上面积木颜色框里面。

  • oseppBlock程序

拖动滑块RGB发光二极管就会显示和积木里面一致的颜色。

下面有一个颜色显示数据表,可以在程序里面输入数字来控制颜色。利用Arduino来控制输出需要的颜色。

把RGB颜色积木换成自定义数值的积木

  • oseppBlock程序

  • Arduino程序
void setup()
{
    //rgb1
    pinMode(3, OUTPUT); //定义3号引脚为输出模式
    pinMode(5, OUTPUT); //定义5号引脚为输出模式
    pinMode(6, OUTPUT); //定义6号引脚为输出模式
}

void loop()
{
    analogWrite(3, 255); //3号引脚输出红色全亮
    analogWrite(5, 0);   //5号引脚输出绿色0
    analogWrite(6, 0);   //6号引脚输出蓝色0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

表格里面给了RGB三个通道的数值,我们只要照着填上去,就可以能看RGB发光二极管显示出表格里的颜色。

只要给RGB三个颜色输入不同的数值,RGB发光二极管就能显示不同的颜色。那我们把这个数值改成随机数,RGB发光二极管就能随机显示颜色。

  • oseppBlock程序

  • Arduino程序
int R = 0; //定义整型变量R
int G = 0; //定义整型变量G
int B = 0; //定义整型变量B

void setup()
{
    //rgb1
    pinMode(3, OUTPUT); //定义3号引脚为输出模式
    pinMode(5, OUTPUT); //定义5号引脚为输出模式
    pinMode(6, OUTPUT); //定义6号引脚为输出模式
}

void loop()
{
    R = random(0, 256); //R等于0-256之间的随机数
    G = random(0, 256); //G等于0-256之间的随机数
    B = random(0, 256); //B等于0-256之间的随机数
    analogWrite(3, R);  //3号引脚输出R的随机数
    analogWrite(5, G);  //3号引脚输出G的随机数
    analogWrite(6, B);  //3号引脚输出B的随机数
    delay(500);         //延时500毫秒
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 运行结果

把程序传上osepp UNO后,RGB发光二极管就会随机变换颜色。每隔0.5秒换一次颜色,你可以更改这个延时数值,数值越小变化越快。

# 解析

  • 整型变量: int

整型变量(int)是变量里的一种,它可以用来存储-32768~+32767之间的数字。在Arduino中,整型(int)是最常用的变量类型。变量就是告诉程序,这个值类型的和范围。

定义变量的类型名称和初始值积木。有整型变量,长整型变量,无符号整型变量,无符号长整型变量,字符变量,字节变量和浮点变量。

变量名称为 i 的值的积木。

改变变量值的积木,可以进行数学运算。

  • 随机函数: random()

随机函数 random(min, max) ,就是生成一个随机的数值。
参数
min: 产生随机数的下限(包含此数值)
max: 产生随机数的上限(不包含此数值)
返回值
在最小值min和最大值max-1之间的随机数值