第七课--控制 RGB 彩色 LED 灯的颜色/zh

来自Microduino Wikipedia
Pkj讨论 | 贡献2014年3月2日 (日) 14:41的版本
跳转至: 导航搜索
Language English

目的

前面学习了很多led实验,接下来学习下RGB led,通过一个RGB灯显示不同的颜色,包括呼吸。

设备

RGB

RGB LED,其封装内有三个LED,一个红色,一个绿色的,一个蓝色的。通过控制各个LED的亮度,你可以混合出几乎任何你想要的颜色。

接法

  • 最长的那个引线(正极)将连接到+5V。其他的三个管脚串联220Ω的电阻连接到Microduino的PWM输出引脚,以防止太大的电流流过烧毁。
  • RGB的正极通过220Ω电阻接到Vcc,其他的三个正管脚连接到PWM输出引脚。三个led共用一个电阻,此时亮度会变暗点。

原理图

这里采用第一种接法,用到了D5、D6、D11号管脚。

程序

   int redPin = 11;
   int greenPin = 5;
   int bluePin = 6;
   void setup()
   {
     pinMode(redPin, OUTPUT);
     pinMode(greenPin, OUTPUT);
     pinMode(bluePin, OUTPUT);  
   }
   void loop()
   {
     setColor(255, 0, 0);  // 红色
     delay(1000);
     setColor(0, 255, 0);  // 绿色
     delay(1000);
     setColor(0, 0, 255);  // 蓝色
     delay(1000);
     setColor(255, 255, 0);  // 黄色
     delay(1000);  
     setColor(80, 0, 80);  // 紫色
     delay(1000);
     setColor(255, 255, 255);//白 
     delay(1000);
     setColor(0, 0, 0);  //黑
     delay(1000);
     for(int i=0;i<255;i+=5)//红色渐亮
     {
       setColor(i, 0, 0);  
       delay(30);
     }
     delay(100);
     for(int i=255;i>0;i-=5)//红色渐灭
     {
       setColor(i, 0, 0);  
       delay(30);
     }
     delay(100);
     for(int i=0;i<255;i+=5)//蓝色渐亮
     {
       setColor(0, i, 0); 
       delay(30); 
     }
     delay(100);
     for(int i=255;i>0;i-=5)//蓝色渐灭
     {
       setColor(0, i, 0);  
       delay(30);
     }
     delay(100);
     for(int i=0;i<255;i+=5)//绿色渐亮
     {
       setColor(0, 0, i);  
       delay(30);  
     }
     delay(100);
     for(int i=255;i>0;i-=5)//绿色渐灭
     {
       setColor(0, 0, i);  
       delay(30);
     }
     delay(100);
   }
   void setColor(int red, int green, int blue)//颜色显示子程序
   {
     analogWrite(redPin, 255-red); //共阳RGB,低电平点亮红灯
     analogWrite(greenPin, 255-green);
     analogWrite(bluePin, 255-blue);  
   }

程序自定义子函数,在loop循环函数直接调用就行,这样程序看起来简洁明了。

这里只列举几种颜色,大家可以通过其他颜色取模软件取得颜色值,例如PS。

结果

在一个灯上可以看到红、绿、蓝、黄、紫、黑,白,及呼吸效果。

视频