Arduino渐变细节

Arduino fading details

本文关键字:细节 渐变 Arduino      更新时间:2023-10-16

我下面发布的代码不应该允许我在无限循环中将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--;
   }
}

如果淡入是一个字节:

渐变为256->00!所以第二个循环会"非常短":-)

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

while(fade < 255) 

则它在255处停止,例如0xff

第二个while应该正确运行。

永远使用一个循环如何:

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