“第七课--控制 RGB 彩色 LED 灯/zh”的版本间的差异
(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( | + | setColor(65535, 0, 0); // 红色 |
delay(1000); | delay(1000); | ||
− | setColor(0, | + | setColor(0, 65535, 0); // 绿色 |
delay(1000); | delay(1000); | ||
− | setColor(0, 0, | + | setColor(0, 0, 65535); // 蓝色 |
delay(1000); | delay(1000); | ||
− | setColor( | + | setColor(65535, 65535, 0); // 黄色 |
delay(1000); | delay(1000); | ||
setColor(80, 0, 80); // 紫色 | setColor(80, 0, 80); // 紫色 | ||
delay(1000); | delay(1000); | ||
− | setColor( | + | 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< | + | 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= | + | 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< | + | 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= | + | 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< | + | 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= | + | 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, | + | pwmWrite(redPin, 65535-red); //共阳RGB,低电平点亮,用65535-red |
− | pwmWrite(greenPin, | + | pwmWrite(greenPin, 65535-green); |
− | pwmWrite(bluePin, | + | pwmWrite(bluePin, 65535-blue); |
} | } | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
==结果== | ==结果== |
2014年11月5日 (三) 07:23的最新版本
Language | English |
---|
目的前面学习了很多led实验,接下来学习下RGB led,通过一个RGB灯显示不同的颜色,包括呼吸。 设备Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。
RGBRGB LED,其封装内有三个LED,一个红色,一个绿色的,一个蓝色的。通过控制各个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);
}
结果在一个灯上可以看到红、绿、蓝、黄、紫、黑,白,及呼吸效果。 视频 |