I'm working on a function to fade RGB LEDs smoothly from one color to the next, so I thought I'd use a for loop to increment each RGB value according with the set value. I've made the for loop as following:
for (redFadeCurrent, greenFadeCurrent, blueFadeCurrent;
((redFadeCurrent != redFadeTarget)&&
(greenFadeCurrent != greenFadeTarget)&&
(blueFadeCurrent != blueFadeTarget));
redFadeCurrent = redFadeCurrent + redStep,
greenFadeCurrent = greenFadeCurrent + greenStep,
blueFadeCurrent = blueFadeCurrent + blueStep) {
analogWrite(ledRedPin, redFadeCurrent);
analogWrite(ledGreenPin, greenFadeCurrent);
analogWrite(ledBluePin, blueFadeCurrent);
Serial.print("Red: ");
Serial.print(redFadeCurrent);
Serial.print(" Green: ");
Serial.print(greenFadeCurrent);
Serial.print(" Blue: ");
Serial.println(blueFadeCurrent);
delay(3000);
if (redFadeCurrent>redFadeTarget) {
redStep = -1;
}
else if (redFadeCurrent<redFadeTarget) {
redStep = +1;
}
else {
redStep = 0;
}
if (greenFadeCurrent>greenFadeTarget) {
greenStep = -1;
}
else if (greenFadeCurrent<greenFadeTarget) {
greenStep = +1;
}
else {
greenStep = 0;
}
if (blueFadeCurrent>blueFadeTarget) {
blueStep = -1;
}
else if (blueFadeCurrent<blueFadeTarget) {
blueStep = +1;
}
else {
blueStep = 0;
}
Problem is, when one of the values hit the target the code leaves the for loop.
I'm guessing the condition ((redFadeCurrent != redFadeTarget)&&(greenFadeCurrent != greenFadeTarget)&&(blueFadeCurrent != blueFadeTarget))
does not work.
Is there any way to work around this?
Thanks is advance.
}
.