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

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{| style="width: 800px;" |- | ==目的== 前面学习了很多led实验,接下来学习下RGB led,通过一个RGB灯显示不同的颜色,包括呼吸。 ==设备== * ...")
 
 
(未显示1个用户的2个中间版本)
第1行: 第1行:
 +
{{Language|Maple Lesson 07 - Control RGB LED}}
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-
第34行: 第35行:
 
int greenPin = 11;
 
int greenPin = 11;
 
int bluePin = 12;
 
int bluePin = 12;
 
+
 
void setup()
 
void setup()
 
{
 
{
第41行: 第42行:
 
   pinMode(bluePin, PWM);   
 
   pinMode(bluePin, PWM);   
 
}
 
}
 
+
 
 
void loop()
 
void loop()
 
{
 
{
   setColor(255, 0, 0);  // 红色
+
   setColor(65535, 0, 0);  // 红色
 
   delay(1000);
 
   delay(1000);
   setColor(0, 255, 0);  // 绿色
+
   setColor(0, 65535, 0);  // 绿色
 
   delay(1000);
 
   delay(1000);
   setColor(0, 0, 255);  // 蓝色
+
   setColor(0, 0, 65535);  // 蓝色
 
   delay(1000);
 
   delay(1000);
   setColor(255, 255, 0);  // 黄色
+
   setColor(65535, 65535, 0);  // 黄色
 
   delay(1000);   
 
   delay(1000);   
 
   setColor(80, 0, 80);  // 紫色
 
   setColor(80, 0, 80);  // 紫色
 
   delay(1000);
 
   delay(1000);
   setColor(255, 255, 255);//白  
+
   setColor(65535, 65535, 65535);//白  
 
   delay(1000);
 
   delay(1000);
 
   setColor(0, 0, 0);  //黑
 
   setColor(0, 0, 0);  //黑
 
   delay(1000);
 
   delay(1000);
   for(int i=0;i<255;i+=5)//红色渐亮
+
   for(int i=0;i<65535;i+=1285)//红色渐亮
 
   {
 
   {
 
     setColor(i, 0, 0);   
 
     setColor(i, 0, 0);   
第64行: 第65行:
 
   }
 
   }
 
   delay(100);
 
   delay(100);
   for(int i=255;i>0;i-=5)//红色渐灭
+
   for(int i=65535;i>0;i-=1285)//红色渐灭
 
   {
 
   {
 
     setColor(i, 0, 0);   
 
     setColor(i, 0, 0);   
第70行: 第71行:
 
   }
 
   }
 
   delay(100);
 
   delay(100);
   for(int i=0;i<255;i+=5)//蓝色渐亮
+
   for(int i=0;i<65535;i+=1285)//蓝色渐亮
 
   {
 
   {
 
     setColor(0, i, 0);  
 
     setColor(0, i, 0);  
第76行: 第77行:
 
   }
 
   }
 
   delay(100);
 
   delay(100);
   for(int i=255;i>0;i-=5)//蓝色渐灭
+
   for(int i=65535;i>0;i-=1285)//蓝色渐灭
 
   {
 
   {
 
     setColor(0, i, 0);   
 
     setColor(0, i, 0);   
第82行: 第83行:
 
   }
 
   }
 
   delay(100);
 
   delay(100);
   for(int i=0;i<255;i+=5)//绿色渐亮
+
   for(int i=0;i<65535;i+=1285)//绿色渐亮
 
   {
 
   {
 
     setColor(0, 0, i);   
 
     setColor(0, 0, i);   
第88行: 第89行:
 
   }
 
   }
 
   delay(100);
 
   delay(100);
   for(int i=255;i>0;i-=5)//绿色渐灭
+
   for(int i=65535;i>0;i-=1285)//绿色渐灭
 
   {
 
   {
 
     setColor(0, 0, i);   
 
     setColor(0, 0, i);   
第95行: 第96行:
 
   delay(100);
 
   delay(100);
 
}
 
}
 
+
 
void setColor(int red, int green, int blue)//颜色显示子程序
 
void setColor(int red, int green, int blue)//颜色显示子程序
 
{
 
{
   pwmWrite(redPin, 255-red); //共阳RGB,低电平点亮,用255-red
+
   pwmWrite(redPin, 65535-red); //共阳RGB,低电平点亮,用65535-red
   pwmWrite(greenPin, 255-green);
+
   pwmWrite(greenPin, 65535-green);
   pwmWrite(bluePin, 255-blue);   
+
   pwmWrite(bluePin, 65535-blue);   
 
}
 
}
 
</source>
 
</source>
程序自定义子函数,在loop循环函数直接调用就行,这样程序看起来简洁明了。
 
 
这里只列举几种颜色,大家可以通过其他颜色取模软件取得颜色值,例如PS。
 
  
 
==结果==
 
==结果==

2014年11月5日 (三) 07:23的最新版本

Language English

目的

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

设备

Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。

  • 其他硬件设备
    • 面包板跳线 一盒
    • 面包板 一块
    • RGB LED灯 一个
    • 220欧姆电阻 一个
    • USB数据连接线 一根


RGB

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

Lesson7-RGB.jpg

接法

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

原理图

这里采用第一种接法,用到了D4、D11、D12号管脚。你也可以用到PWM:0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7)

程序

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

结果

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

视频