我将在下面发布的代码不应该允许我在无限循环中将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--;
}
}发布于 2013-06-28 04:56:41
如果淡入淡出是一个字节:
淡入淡出256 -> 00!因此,第二个循环将是“非常短的”:-)
我建议在第一个循环中只使用:
while(fade < 255) 然后它在255处停止,例如0xff
第二个while应该可以正确运行。
发布于 2013-06-28 05:30:54
如果是永远的单循环:
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);
}https://stackoverflow.com/questions/17352942
复制相似问题