const int ledPins[] = {2, 3, 4, 5}; // Pines de los LEDs
const int incButtonPin = 7; // Pin del botón de incremento
const int decButtonPin = 8; // Pin del botón de decremento
int delayTime = 500; // Tiempo de retardo inicial (en milisegundos)
int incButtonState = 0; // Estado actual del botón de incremento
int lastIncButtonState = 0; // Estado anterior del botón de incremento
int decButtonState = 0; // Estado actual del botón de decremento
int lastDecButtonState = 0; // Estado anterior del botón de decremento
unsigned long lastDebounceTime = 0; // Último tiempo de rebote de los botones
unsigned long debounceDelay = 50; // Tiempo de rebote de los botones (en milisegundos)
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT); // Configurar pines de los LEDs como salida
}
pinMode(incButtonPin, INPUT); // Configurar pin del botón de incremento como entrada
pinMode(decButtonPin, INPUT); // Configurar pin del botón de decremento como entrada
}
void loop() {
int incButtonReading = digitalRead(incButtonPin); // Leer el estado del botón de incremento
int decButtonReading = digitalRead(decButtonPin); // Leer el estado del botón de decremento
if (incButtonReading != lastIncButtonState || decButtonReading != lastDecButtonState) {
lastDebounceTime = millis(); // Actualizar el tiempo de rebote
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (incButtonReading != incButtonState) {
incButtonState = incButtonReading;
if (incButtonState == HIGH) { // Si el botón de incremento está presionado
delayTime += 100; // Incrementar el tiempo de retardo
if (delayTime > 1000) {
delayTime = 100; // Restablecer el tiempo máximo
}
}
}
if (decButtonReading != decButtonState) {
decButtonState = decButtonReading;
if (decButtonState == HIGH) { // Si el botón de decremento está presionado
delayTime -= 100; // Decrementar el tiempo de retardo
if (delayTime < 100) {
delayTime = 100; // Restablecer el tiempo mínimo
}
}
}
}
lastIncButtonState = incButtonReading;
lastDecButtonState = decButtonReading;
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[i], HIGH); // Encender el LED actual
delay(delayTime); // Esperar el tiempo de retardo
digitalWrite(ledPins[i], LOW); // Apagar el LED actual
}
}