本课程中,将使用 PWM 来控制 RGB LED灯并使其显示不同的颜色。变色灯是由红(R)、绿(G)、蓝(B)三基色 LED 组成的。双色 LED 是我们十分熟悉的。一般由红光 LED 及绿光 LED 组成。它可以单独发出红光或绿光。若红光及绿光同时亮点时,红绿两种光混合成橙黄色。RGB 分为共阴和共阳两种,长引脚是公共端,其他引脚如下:
硬件连接:
Keywish Arduino UNO R3 主板
面包板
USB 数据线
1个共阳 RGB LED
3个电阻 (220Ω)
若干跳线
实验原理:
RGB 代表红色,绿色和蓝色通道,是行业颜色标准。RGB 通过改变三个通道并叠加它们来显示各种新颜色,根据统计,它可以创建 16777216 种不同的颜色。如果你说显示的颜色与自然颜色不完全匹配,那么它几乎无法用肉眼区分 。红色,绿色和蓝色的三个颜色通道中的每一个具有 255 级亮度。 当三原色全部为 0时,“LED灯”最暗,即关闭。当三原色全部为 255 时,“LED灯”是最亮的。当叠加三原色发出的光时,颜色将混合。但是,亮度等于所有亮度的总和,混合得越多,LED就越亮。 该过程称为添加剂混合。在这个实验中,我们也将使用 PWM,如果你已经学过目前的课程,你肯定已经有了基本的了解。在这里,我们在 RGB LED的三个引脚之间输入 0到 255 之间的值,使其显示不同的颜色。
接线:
Arduino Uno | RGB |
---|---|
IO口11 | 1 阴极R |
IO口10 | 3 阴极G |
IO口9 | 4 阴极B |
5V | 2 共阳极 |
软件代码:
#define RGB_RED 11
#define RGB_GREEN 10
#define RGB_BLUE 9
void setup()
{
pinMode(RGB_RED,OUTPUT);
pinMode(RGB_GREEN,OUTPUT);
pinMode(RGB_BLUE,OUTPUT);
}
void setColor(int red,int green,int blue)
{
analogWrite(RGB_RED,red);
analogWrite(RGB_GREEN,green);
analogWrite(RGB_BLUE,blue);
}
void loop()
{
int i;
for(i=0;i<256;i++)
{
setColor(i,0,0);
delay(4);
}
delay(500); //turn the RGB LED red smoth
for(i=0;i<256;i++)
{
setColor(0,i,0);
delay(4);
}
delay(500); //turn the RGB LED green smoth
for(i=0;i<256;i++)
{
setColor(0,0,i);
delay(4);
}
delay(100); //turn the RGB LED blue smoth
}
实验连接图: