3-4 RGB LED(智能应用篇)
3-4 RGB LED
Led的灯珠和灯带,相当于点和线(可以画出丰富否画面)
主要介绍led灯珠
RGB-LED及电路
RGB-LED可以发出红、绿、蓝色的光芒(并通过各个通道的数值不同发出其余各种颜色)
发光二极管,
这里有四个引脚
传统的发光二极管只有一个正极一个负极
最长的引脚为其负极
上面为RGB-LED的简化过程(三个负极链接在一起接地,另外三个灯放在一个灯里)
正极独立,负极链接在一起,为共阴极RGB-LED
也有共阳极LED,这里不介绍了
最长引脚为负极链接arduino的接地线
其余的三个RGB引脚分别连接在6,5,3号引脚(~)
示例程序
主要将实际制作了,程序不会太细讲
/*
* Serial-RGB-LED
*
* 通过串口输入信息调整LED的颜色
* 指令示例: r128g100b20
* 以上指令将LED的RGB数值调整为(128,100,20)
*
* by 太极创客
* www.taichi-maker.com
*/
const int rLedPin = 6; //引脚R
const int gLedPin = 5; //引脚G
const int bLedPin = 3; //引脚B
int ledR = 0; //R Led 亮度
int ledG = 0; //G Led 亮度
int ledB = 0; //B Led 亮度
void setup() {
pinMode(rLedPin, OUTPUT);
pinMode(gLedPin, OUTPUT);
pinMode(bLedPin, OUTPUT);
Serial.begin(9600);
Serial.println("Welcome to Taichi-Maker RGB Led Tutorial.");
Serial.println("Please Input RGB value(eg. r128g100b20).");
}
void loop() {
if (Serial.available()>0) {
char serialCmdChar = Serial.read();
serialCmd(serialCmdChar);
}
delay(50); //延时让程序更加流畅稳定
}
void serialCmd(char serialCmdChar) { //r128g100b20
switch (serialCmdChar){
case 'r':
ledR = Serial.parseInt();
break;
case 'g':
ledG = Serial.parseInt();
break;
case 'b':
ledB = Serial.parseInt();
break;
//使用‘C’字符将RGB置为0
case 'c':
ledR = 0;
ledG = 0;
ledB = 0;
}
//将数值输出到引脚上
analogWrite(rLedPin, ledR);
delay(100);
analogWrite(gLedPin, ledG);
delay(100);
analogWrite(bLedPin, ledB);
delay(100);
//输出当前的RGB各通道数值
Serial.print ("Red Value = ");
Serial.println (ledR);
Serial.print ("Green Value = ");
Serial.println (ledG);
Serial.print ("Blue Value = ");
Serial.println (ledB);
Serial.println ("-------------");
}
效果演示
先尝试单独打开红色、绿色、蓝色led
r255g0b0
发送
r0g255b0
回车发送变成绿色
发送r0g0b255
发送r100g0b100得到紫色
RGB-LED,三原色可以进行调和得到不同的颜色
发送r100g10b0得到黄色
RGB可以显示出16777216种颜色(真彩led)
下方的发出多种颜色的led灯珠并不是RGB-LED,而是只有两个引脚
并不是能改变颜色的led都是RGB-led