Arduino教程2.2-RGB-LED灯以及PWM

网友投稿 2018-08-10 12:20

      前面我们介绍了点亮普通单色LED,这一节我们将教大家如何让RGB三色LED发出我们想要的颜色。

先看效果:

一 :光学的一些知识

    RGB分别代表红/绿/蓝,通过这三种颜色的叠加可以得到其他的颜色,比如RGB按照1:1:1的混合会使LED带白色的光。我们常把RGB称为三基色。如果我们把每种颜色分成256份,从0到255分别代表这种光的光强度。我们把不同光强的光进行混合,这时组合有256*256*256= 16777216种。比如红色(255,0,0),白色(255,255,255)。

https://cdn.china-scratch.com/timg/180812/12204GD3-0.jpg

二: RGBLED灯泡

三基色LED灯泡根据公用极的极性可分为两种,如图所示。

https://cdn.china-scratch.com/timg/180812/12204I961-1.jpg

我们用的是公用极为负极的LED:

https://cdn.china-scratch.com/timg/180812/12204TB1-2.jpg

三:所需元器件

  • 三基色LED灯泡

  • Arduino uno开发板一块

  • 面包板一块

  • 220Ω电阻三个

  • 若干杜邦线

四 :连接元器件

如图所示连接元器件

https://cdn.china-scratch.com/timg/180812/12204V241-3.jpg

五:编写程序

简单的点亮LED还是很简单的,但是想让LED发出不同的颜色就稍显复杂了。我们要达到的效果如图所示:

https://cdn.china-scratch.com/timg/180812/12204U030-4.gif

讲解视频:

实现代码如下:

https://cdn.china-scratch.com/timg/180812/12204S212-5.jpg

https://cdn.china-scratch.com/timg/180812/12204WO3-6.jpg

//定义相应的端口

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