“第七课--控制 RGB 彩色 LED 灯的颜色/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{| style="width: 800px;" |- | ==目的== 前面学习了很多led实验,接下来学习下RGB led,通过一个RGB灯显示不同的颜色,包括呼吸。 ==设备== *'''...")
 
设备
 
(未显示1个用户的8个中间版本)
第1行: 第1行:
 +
{{Language|Lesson_7--Control_the_color_of_RGB_LED}}
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-
第5行: 第6行:
 
前面学习了很多led实验,接下来学习下RGB led,通过一个RGB灯显示不同的颜色,包括呼吸。
 
前面学习了很多led实验,接下来学习下RGB led,通过一个RGB灯显示不同的颜色,包括呼吸。
 
==设备==
 
==设备==
*'''[[Microduino-Core]]'''
+
*'''[[Microduino-Core/zh]]'''
*'''[[Microduino-FT232R]]'''
+
*'''[[Microduino-USBTTL/zh]]'''
 
*其他硬件设备
 
*其他硬件设备
 
**面包板跳线    一盒   
 
**面包板跳线    一盒   
第13行: 第14行:
 
**220欧姆电阻    一个
 
**220欧姆电阻    一个
 
**USB数据连接线  一根
 
**USB数据连接线  一根
 +
 +
[[File:lesson7All.jpg|600px|center|thumb]]
 +
 +
 
===RGB===
 
===RGB===
 
RGB LED,其封装内有三个LED,一个红色,一个绿色的,一个蓝色的。通过控制各个LED的亮度,你可以混合出几乎任何你想要的颜色。
 
RGB LED,其封装内有三个LED,一个红色,一个绿色的,一个蓝色的。通过控制各个LED的亮度,你可以混合出几乎任何你想要的颜色。
[[File:第七课-RGB.jpg|600px|center|thumb]]
+
[[File:lesson7-RGB.jpg|600px|center|thumb]]
 +
 
 
===接法===
 
===接法===
 
*最长的那个引线(正极)将连接到+5V。其他的三个管脚串联220Ω的电阻连接到Microduino的PWM输出引脚,以防止太大的电流流过烧毁。
 
*最长的那个引线(正极)将连接到+5V。其他的三个管脚串联220Ω的电阻连接到Microduino的PWM输出引脚,以防止太大的电流流过烧毁。
 
*RGB的正极通过220Ω电阻接到Vcc,其他的三个正管脚连接到PWM输出引脚。三个led共用一个电阻,此时亮度会变暗点。
 
*RGB的正极通过220Ω电阻接到Vcc,其他的三个正管脚连接到PWM输出引脚。三个led共用一个电阻,此时亮度会变暗点。
 +
 
==原理图==
 
==原理图==
 
这里采用第一种接法,用到了D5、D6、D11号管脚。
 
这里采用第一种接法,用到了D5、D6、D11号管脚。
[[File:第七课-原理图.jpg|600px|center|thumb]]
+
[[File:lesson7-schematic.jpg|600px|center|thumb]]
 +
 
 
==程序==
 
==程序==
 
<source lang="cpp">
 
<source lang="cpp">
   int redPin = 11;
+
int redPin = 11;
   int greenPin = 5;
+
int greenPin = 5;
   int bluePin = 6;
+
int bluePin = 6;
   void setup()
+
 
   {
+
void setup()
     pinMode(redPin, OUTPUT);
+
{
     pinMode(greenPin, OUTPUT);
+
  pinMode(redPin, OUTPUT);
     pinMode(bluePin, OUTPUT);   
+
  pinMode(greenPin, OUTPUT);
   }
+
  pinMode(bluePin, OUTPUT);   
   void loop()
+
}
   {
+
 
     setColor(255, 0, 0);  // 红色
+
void loop()
     delay(1000);
+
{
     setColor(0, 255, 0);  // 绿色
+
  setColor(255, 0, 0);  // 红色
     delay(1000);
+
  delay(1000);
     setColor(0, 0, 255);  // 蓝色
+
  setColor(0, 255, 0);  // 绿色
     delay(1000);
+
  delay(1000);
     setColor(255, 255, 0);  // 黄色
+
  setColor(0, 0, 255);  // 蓝色
     delay(1000);   
+
  delay(1000);
     setColor(80, 0, 80);  // 紫色
+
  setColor(255, 255, 0);  // 黄色
     delay(1000);
+
  delay(1000);   
     setColor(255, 255, 255);//白  
+
  setColor(80, 0, 80);  // 紫色
     delay(1000);
+
  delay(1000);
     setColor(0, 0, 0);  //黑
+
  setColor(255, 255, 255);//白  
     delay(1000);
+
  delay(1000);
     for(int i=0;i<255;i+=5)//红色渐亮
+
  setColor(0, 0, 0);  //黑
     {
+
  delay(1000);
       setColor(i, 0, 0);   
+
  for(int i=0;i<255;i+=5)//红色渐亮
       delay(30);
+
  {
     }
+
    setColor(i, 0, 0);   
     delay(100);
+
    delay(30);
     for(int i=255;i>0;i-=5)//红色渐灭
+
  }
     {
+
  delay(100);
       setColor(i, 0, 0);   
+
  for(int i=255;i>0;i-=5)//红色渐灭
       delay(30);
+
  {
     }
+
    setColor(i, 0, 0);   
     delay(100);
+
    delay(30);
     for(int i=0;i<255;i+=5)//蓝色渐亮
+
  }
     {
+
  delay(100);
       setColor(0, i, 0);  
+
  for(int i=0;i<255;i+=5)//蓝色渐亮
       delay(30);  
+
  {
     }
+
    setColor(0, i, 0);  
     delay(100);
+
    delay(30);  
     for(int i=255;i>0;i-=5)//蓝色渐灭
+
  }
     {
+
  delay(100);
       setColor(0, i, 0);   
+
  for(int i=255;i>0;i-=5)//蓝色渐灭
       delay(30);
+
  {
     }
+
    setColor(0, i, 0);   
     delay(100);
+
    delay(30);
     for(int i=0;i<255;i+=5)//绿色渐亮
+
  }
     {
+
  delay(100);
       setColor(0, 0, i);   
+
  for(int i=0;i<255;i+=5)//绿色渐亮
       delay(30);   
+
  {
     }
+
    setColor(0, 0, i);   
     delay(100);
+
    delay(30);   
     for(int i=255;i>0;i-=5)//绿色渐灭
+
  }
     {
+
  delay(100);
       setColor(0, 0, i);   
+
  for(int i=255;i>0;i-=5)//绿色渐灭
       delay(30);
+
  {
     }
+
    setColor(0, 0, i);   
     delay(100);
+
    delay(30);
   }
+
  }
   void setColor(int red, int green, int blue)//颜色显示子程序
+
  delay(100);
   {
+
}
     analogWrite(redPin, 255-red); //共阳RGB,低电平点亮红灯
+
 
     analogWrite(greenPin, 255-green);
+
void setColor(int red, int green, int blue)//颜色显示子程序
     analogWrite(bluePin, 255-blue);   
+
{
   }
+
  analogWrite(redPin, 255-red); //共阳RGB,低电平点亮,用255-red
 +
  analogWrite(greenPin, 255-green);
 +
  analogWrite(bluePin, 255-blue);   
 +
}
 +
 
 +
 
 +
 
 
</source>
 
</source>
 
程序自定义子函数,在loop循环函数直接调用就行,这样程序看起来简洁明了。
 
程序自定义子函数,在loop循环函数直接调用就行,这样程序看起来简洁明了。
第99行: 第113行:
 
==结果==
 
==结果==
 
在一个灯上可以看到红、绿、蓝、黄、紫、黑,白,及呼吸效果。
 
在一个灯上可以看到红、绿、蓝、黄、紫、黑,白,及呼吸效果。
 +
 +
[[File:lesson7Result.jpg|600px|center|thumb]]
 +
 
==视频==
 
==视频==
 
|}
 
|}
 +
 +
http://v.youku.com/v_show/id_XNzEwMDA0Njg0.html

2014年10月29日 (三) 03:27的最新版本

Language English

目的

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

设备

Lesson7All.jpg


RGB

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

Lesson7-RGB.jpg

接法

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

原理图

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

Lesson7-schematic.jpg

程序

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,低电平点亮,用255-red
  analogWrite(greenPin, 255-green);
  analogWrite(bluePin, 255-blue);  
}

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

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

结果

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

Lesson7Result.jpg

视频

http://v.youku.com/v_show/id_XNzEwMDA0Njg0.html