“第七课--控制 RGB 彩色 LED 灯的颜色/zh”的版本间的差异
(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- | + | *'''[[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: | + | [[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: | + | [[File:lesson7-schematic.jpg|600px|center|thumb]] |
+ | |||
==程序== | ==程序== | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | + | 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); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
</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灯显示不同的颜色,包括呼吸。 设备
RGBRGB LED,其封装内有三个LED,一个红色,一个绿色的,一个蓝色的。通过控制各个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,低电平点亮,用255-red
analogWrite(greenPin, 255-green);
analogWrite(bluePin, 255-blue);
}
程序自定义子函数,在loop循环函数直接调用就行,这样程序看起来简洁明了。 这里只列举几种颜色,大家可以通过其他颜色取模软件取得颜色值,例如PS。 结果在一个灯上可以看到红、绿、蓝、黄、紫、黑,白,及呼吸效果。 视频 |