首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino淡出细节

Arduino淡出细节
EN

Stack Overflow用户
提问于 2013-06-28 04:52:33
回答 2查看 103关注 0票数 0

我将在下面发布的代码不应该允许我在无限循环中将RGB LED从0衰减到255,然后再变回0,依此类推吗?

目前,它只是逐渐变大,但随后它不会消失,它确实会闪烁一段时间,但随后它又在255的状态下完全供电。

代码语言:javascript
复制
void setup()
{
 Serial.begin(9600);

pinMode(greenPin, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(bluePin, OUTPUT);

fade = 0;

}

void loop()
{

   while(fade < 256)
   {
    analogWrite(redPin, fade);
   delay(30);
   analogWrite(greenPin, fade );
   delay(30);
   analogWrite(bluePin, fade);
   delay(30);
   fade++;
   }
   while(fade > 0)
   {
      analogWrite(redPin, fade);
   delay(30);
   analogWrite(greenPin, fade );
   delay(30);
   analogWrite(bluePin, fade);
   delay(30);
   fade--;
   }
}
EN

回答 2

Stack Overflow用户

发布于 2013-06-28 04:56:41

如果淡入淡出是一个字节:

淡入淡出256 -> 00!因此,第二个循环将是“非常短的”:-)

我建议在第一个循环中只使用:

代码语言:javascript
复制
while(fade < 255) 

然后它在255处停止,例如0xff

第二个while应该可以正确运行。

票数 1
EN

Stack Overflow用户

发布于 2013-06-28 05:30:54

如果是永远的单循环:

代码语言:javascript
复制
fade = 0;
step = 1;
while(1)
   {
   step = fade == 0 ? 1 : (fade == 255 ? -1 : step);
   fade += step;
   analogWrite(redPin, fade);
   delay(30);
   analogWrite(greenPin, fade );
   delay(30);
   analogWrite(bluePin, fade);
   delay(30);
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17352942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档