Arduino教程2.2-RGB-LED灯以及PWM
前面我们介绍了点亮普通单色LED,这一节我们将教大家如何让RGB三色LED发出我们想要的颜色。
先看效果:
一 :光学的一些知识
RGB分别代表红/绿/蓝,通过这三种颜色的叠加可以得到其他的颜色,比如RGB按照1:1:1的混合会使LED带白色的光。我们常把RGB称为三基色。如果我们把每种颜色分成256份,从0到255分别代表这种光的光强度。我们把不同光强的光进行混合,这时组合有256*256*256= 16777216种。比如红色(255,0,0),白色(255,255,255)。
二: RGBLED灯泡
三基色LED灯泡根据公用极的极性可分为两种,如图所示。
我们用的是公用极为负极的LED:
三:所需元器件
-
三基色LED灯泡
-
Arduino uno开发板一块
-
面包板一块
-
220Ω电阻三个
-
若干杜邦线
四 :连接元器件
如图所示连接元器件
五:编写程序
简单的点亮LED还是很简单的,但是想让LED发出不同的颜色就稍显复杂了。我们要达到的效果如图所示:
讲解视频:
实现代码如下:
//定义相应的端口
int Rpin = 9;
int Gpin = 5;
int Bpin = 3;
int RV=0,GV=255,BV=0;
//设置端口的模式
void setup()
{
Serial.begin(9600);
pinMode(Rpin, OUTPUT);
pinMode(Gpin, OUTPUT);
pinMode(Bpin, OUTPUT);
}
void setAllColor(int R,int G,int B)
{
analogWrite(Rpin, R);
analogWrite(Gpin, G);
analogWrite(Bpin, B);
}
void setColor(int colorPin,int *colorV,int time)
{
int change = 1;
for (int i = 0; i < 256; ++i)
{
if(*colorV==0){
change = 1;
}
else if(*colorV ==255){
change = -1;
}
*colorV = *colorV+change;
analogWrite(colorPin, *colorV);
delay(time);
}
}
void loop()
{
setAllColor(RV,GV,BV);
setColor(Rpin,&RV,5);
setColor(Gpin,&GV,5);
setColor(Bpin,&BV,5);
setColor(Gpin,&GV,5);
setColor(Rpin,&RV,5);
setColor(Bpin,&BV,5);
setColor(Rpin,&RV,5);
setColor(Gpin,&GV,5);
setColor(Bpin,&BV,5);
setColor(Gpin,&GV,5);
setColor(Rpin,&RV,5);
setColor(Bpin,&BV,5);
}
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com