Algún consejo para simplificar el loop de este código. Es de una versión de luces del coche fantástico en la que se produce una estela de luz en las que se produce un apagado y encendido progresivo de las luces. Aparentemente creo que me funciona este código pues lo he probado.
El tema es si se puede anidar el fade en otro for para simplificar el código.
int ledPins[] = {2, 11, 10, 9, 6, 5, 3, 13}; // Creo un array con los leds
int ledCnt = 8; // Numero de pines
int inicio = 0;
int timeDelay = 1;
void setup()
{
// initialize the digital pins as an output
int count = 0; // Inicializamos la variable count como un entero
for (count = 0; count < ledCnt; count++) // Configuramos todos los PINs de salida
pinMode( ledPins[count], OUTPUT);
digitalWrite(ledPins[count], LOW);
}
void loop() {
// Este primer bucle recorre el array de izquierda a derecha
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPins[1], fadeValue);
// wait for n milliseconds to see the dimming effect
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[2], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[3], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[4], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[5], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[6], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[7], fadeValue);
delay(timeDelay);
}
// fade out from max to min in increments of 5 points:
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[1], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[2], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[3], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[4], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[5], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[6], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[7], fadeValue);
delay(timeDelay);
}
// digitalWrite(ledPins[7], LOW);
// Recorremos el array en sentido inverso de derecha a izquierda
// fade in from min to max in increments of 5 points:
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[6], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[5], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[4], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[3], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[2], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[1], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
analogWrite(ledPins[0], fadeValue);
delay(timeDelay);
}
// fade out from max to min in increments of 5 points:
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[6], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[5], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[4], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[3], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[2], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[1], fadeValue);
delay(timeDelay);
}
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
analogWrite(ledPins[0], fadeValue);
delay(timeDelay);
}
}