0

我将在下面发布的代码不应该允许我将 RGB LED 从 0 淡化到 255,然后在无限循环中回到 0 等等吗?

目前它只是逐渐变大,但它并没有消失,它确实闪烁了一下,但随后又在 255 处完全供电。

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--;
   }
}
4

2 回答 2

1

如果 fade 是一个字节:

淡入淡出到 256 -> 00!所以第二个循环将“非常短”:-)

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

while(fade < 255) 

然后它停在 255 例如 0xff

第二个 while 应该正确运行。

于 2013-06-27T20:56:41.047 回答
0

永远单循环怎么样:

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);
   }
于 2013-06-27T21:30:54.470 回答