He intentado diferentes soluciones pero no logro hacerlo funcionar como necesito.
Tengo 2 leds un botón y un potenciómetro con el que regulo la intensidad de uno de los leds mientras que la intensidad del otro led la regula la secuencia array disparada por el botón, sin embargo el segundo led parpadea tanto antes como después de leer la secuencia aunque el monitor serie no muestra errores.
int count[]= {
0,5,10,25,100,175,225,250,254,250,225,200,175,
150,125,100,75,50,25,15,5,0};
unsigned long tiempo;
int retardo = 50;
int axisVal = 0;
int ledRVal = 0;
int ledVVal = 0;
int i=22;
void setup()
{
pinMode(2, INPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
}
void loop()
{
axisVal = analogRead(A3);
analogWrite(9, ledRVal);
ledRVal = map(axisVal, 0, 1024, 0 ,255);
int button1Val = digitalRead(2);
if (button1Val == HIGH)
i=0;
if(millis() - tiempo >= retardo)
{
tiempo += retardo;
if((i<22);
i++)
{
if (i < 22)
Serial.println(count[i]);
analogWrite(10, count[i]);
tiempo=millis();
}
}
}
const int count[] = {
0, 5, 10, 25, 100, 175, 225, 250, 254, 250, 225, 200, 175,
150, 125, 100, 75, 50, 25, 15, 5, 0
};
const byte BOTON= 2;
const byte LED1 = 9;
const byte LED2 = 10;
unsigned long tiempo;
int retardo = 50;
int axisVal = 0;
int ledRVal = 0;
int ledVVal = 0;
int i = 22;
void setup(){
pinMode(2, INPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
}
void loop(){
axisVal = analogRead(A3);
analogWrite(LED1, ledRVal);
ledRVal = map(axisVal, 0, 1024, 0 , 255);
int button1Val = digitalRead(BOTON);
if (button1Val == HIGH)
i = 0;
if (millis() - tiempo >= retardo) {
if (i < 22)
i++;
else // esto elimínalo si no te sirve
i = 0;
Serial.println(count[i]);
analogWrite(LED2, count[i]);
tiempo = millis();
}
}
Mi código solo corregía tu error.
Y sigue haciéndolo con 2 o 3 cambios que no le hacen.
Cuando llega a 22 tu contador a través del indice i lo pongo a 0.