volatile int velocidad = 20;
const int maxima = 1000;
const int minima = 20;
const int aumenta = 2;
int leds[5] = {8, 9, 10, 11, 12};
void setup()
{
for (int i = 0; i < 5; i++)
{
pinMode(leds[i], OUTPUT);
digitalWrite(leds[i], LOW);
}
velocidad = minima;
attachInterrupt(digitalPinToInterrupt(2), velocidadMenos, RISING);
attachInterrupt(digitalPinToInterrupt(3), velocidadMas, RISING);
}
void loop()
{
for (int i = 0; i < 5; i++)
{
if (i > 0)
{
digitalWrite(leds[i - 1], LOW);
}
digitalWrite(leds[i], HIGH);
delay(velocidad);
}
for (int i = 4; i >= 0; i--)
{
if (i < 4)
{
digitalWrite(leds[i + 1], LOW);
}
digitalWrite(leds[i], HIGH);
delay(velocidad);
}
}
void velocidadMenos()
{
velocidad = velocidad - aumenta;
if (velocidad < minima)
{
velocidad = minima;
}
}
void velocidadMas()
{
velocidad = velocidad + aumenta;
if (velocidad > maxima)
{
velocidad = maxima;
}
}