前提介绍:
RGB是一种色彩模式,它基于红色(Red)、绿色(Green)和蓝色(Blue)三种基本颜色的不同组合来产生各种颜色。在计算机图形学中,RGB 是一种非常重要的颜色系统,因为大多数显示器、投影仪和其他视觉输出设备都是基于 RGB 颜色空间来工作的。
在 RGB 系统中,每种颜色(红、绿、蓝)都有一个从 0(无该颜色)到 255(完全该颜色)的数值范围(在 8 位系统中)。这意味着 RGB 颜色空间可以表示超过 1600 万种不同的颜色(因为 256 x 256 x 256 = 16,777,216)。
一、目标实现:
使用Arduino编程,使能根据RGB灯能够依次缓慢变换出红蓝绿黄青紫六种颜色。
二、前期准备:
软件准备:Arduino 18.8
硬件准备:Arduino开发板,面包板,杜邦线,1kΩ电阻,RGB灯。
三、接线:
如下图:
四、编写程序:
#define TIME 1000
int RedPin = 11;
int BluePin = 10;
int GreenPin = 9;
int i = 0;
static void rgb_init(bool state);
static void color(unsigned char red, unsigned char blue, unsigned char green);
void setup() {
rgb_init(true);
}
void loop() {
for (i = 0; i <= 255; i++)
{
color(i, 0, 0);
delay(1);
}
for (i = 255; i >= 0; i--)
{
color(i, 0, 0);
delay(1);
}
for (i = 0; i <= 255; i++)
{
color(0, i, 0);
delay(1);
}
for (i = 255; i >= 0; i--)
{
color(0, i, 0);
delay(1);
}
for (i = 0; i <= 255; i++)
{
color(0, 0, i);
delay(1);
}
for (i = 255; i >= 0; i--)
{
color(0, 0, i);
delay(1);
}
for (i = 0; i <= 255; i++)
{
color(i, 0, i);
delay(1);
}
for (i = 255; i >= 0; i--)
{
color(i, 0, i);
delay(1);
}
for (i = 0; i <= 255; i++)
{
color(0, i, i);
delay(1);
}
for (i = 255; i >= 0; i--)
{
color(0, i, i);
delay(1);
}
for (i = 0; i <= 255; i++)
{
color(i, i, 0);
delay(1);
}
for (i = 255; i >= 0; i--)
{
color(i, i, 0);
delay(1);
}
}
static void color(unsigned char red, unsigned char blue, unsigned char green)
{
analogWrite(RedPin, 255 - red);
analogWrite(BluePin, 255 - blue);
analogWrite(GreenPin, 255 - green);
}
static void rgb_init(bool state)
{
if (state == true)
{
pinMode(RedPin, OUTPUT);
pinMode(BluePin, OUTPUT);
pinMode(GreenPin, OUTPUT);
}
}
五、成果展示: