实验现象:
控制三基色LED中的红绿蓝三种颜色分别慢慢变亮,再慢慢变暗。
理论学习:
熟练运用PWM原理,实验颜色渐变效果
程序代码:
#define LED_R 3
#define LED_G 5
#define LED_B 6
int PWMValue = 0;
void setup()
{
analogWrite(LED_R,255); //高电平255 = 占空比是100%,IO相当于输出高电平,红色LED熄灭
analogWrite(LED_G,255); //高电平255 = 占空比是100%,IO相当于输出高电平,绿色LED熄灭
analogWrite(LED_B,255); //高电平255 = 占空比是100%,IO相当于输出高电平,蓝色LED熄灭
}
void loop()
{
int i = 0;
PWMValue = 255;
for(i = 0 ; i < 255 ; i++) //红色逐渐变亮
{
analogWrite(LED_R,PWMValue--);
analogWrite(LED_G,255);
analogWrite(LED_B,255);
delay(10);
}
PWMValue = 0;
for(i = 0 ; i < 255 ; i++) //逐渐变暗
{
analogWrite(LED_R,PWMValue++);
analogWrite(LED_G,255);
analogWrite(LED_B,255);
delay(10);
}
PWMValue = 255;
for(i = 0 ; i < 255 ; i++) //绿色逐渐变亮
{
analogWrite(LED_R,255);
analogWrite(LED_G,PWMValue--);
analogWrite(LED_B,255);
delay(10);
}
PWMValue = 0;
for(i = 0 ; i < 255 ; i++) //逐渐变暗
{
analogWrite(LED_R,255);
analogWrite(LED_G,PWMValue++);
analogWrite(LED_B,255);
delay(10);
}
PWMValue = 255;
for(i = 0 ; i < 255 ; i++) //蓝色逐渐变亮
{
analogWrite(LED_R,255);
analogWrite(LED_G,255);
analogWrite(LED_B,PWMValue--);
delay(10);
}
PWMValue = 0;
for(i = 0 ; i < 255 ; i++) //逐渐变暗
{
analogWrite(LED_R,255);
analogWrite(LED_G,255);
analogWrite(LED_B,PWMValue++);
delay(10);
}
}