Estoy programando efectos para un cubo LED. El cubo y las funciones independientes funcionan correctamente. El problema se produce cuando invoco la función turnon_layer
en un bucle. El contador de bucles no se incrementa.
for(i=0; i<4; i++)
{
Serial.println(i);
turnon_layer(1000,i);
}
El monitor Serial muestra que i
tiene un valor constante de 0 en todo.
Cuando llamo a las funciones con constantes, la salida es la esperada.
turnon_layer(1000,0);
turnon_layer(1000,1);
turnon_layer(1000,2);
turnon_layer(1000,3);
Mi función turnon_layer es:
void turnon_layer(long time, int layer)
{
boolean state = HIGH;
long wait, start = millis();
for(i=0; i<4; i++)
{
if(i!=layer) digitalWrite(levelPin[i], !LOW);
else digitalWrite(levelPin[i], !HIGH);
}
if(time/2<10) wait = time/2;
else wait = 10;
while(millis()-start<time)
{
state = !state;
//Serial.println(state);
//First 8 LEDs
for(i=0;i<2;i++)
for(j=0;j<4;j++)
digitalWrite(ledPin[i][j],state);
//Next 8 LEDs
for(i=2;i<4;i++)
for(j=0;j<4;j++)
digitalWrite(ledPin[i][j],!state);
delay(wait);
}
}
Estoy usando el IDE de Arduino.
¿Qué está mal? ¿Por qué?