// Definición de los pines de los LEDs
#define LED1 2
#define LED2 4
#define LED3 5
#define LED4 18
#define LED5 19
// Definición de los pines de los pulsadores
#define BUTTON_S1 21 // Pin del pulsador S1 (para aumentar velocidad)
#define BUTTON_S2 22 // Pin del pulsador S2 (para disminuir velocidad)
// Definición de los tiempos de delay
#define INIT_DELAY 500 // Tiempo inicial de 500 ms entre LEDs
#define MIN_DELAY 50 // Tiempo mínimo de 50 ms
#define MAX_DELAY 1000 // Tiempo máximo de 1000 ms
int delayTime = INIT_DELAY; // Variable para el tiempo de espera actual
void setup() {
// Configuración de los pines de los LEDs como salida
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
// Apagar todos los LEDs al inicio
apagarTodosLosLeds();
// Configuración de los pines de los pulsadores como entrada con resistencia pull-up
pinMode(BUTTON_S1, INPUT_PULLUP);
pinMode(BUTTON_S2, INPUT_PULLUP);
Serial.begin(115200);
Serial.println("Juego de desplazamiento de LEDs");
}
void loop() {
// Desplazamiento de los LEDs
encenderLed(LED1);
delay(delayTime);
encenderLed(LED2);
delay(delayTime);
encenderLed(LED3);
delay(delayTime);
encenderLed(LED4);
delay(delayTime);
encenderLed(LED5);
delay(delayTime);
// Verificar si algún pulsador está presionado al final de la secuencia
if (digitalRead(BUTTON_S1) == LOW) { // S1 presionado (aumenta la velocidad)
if (delayTime > MIN_DELAY) {
delayTime -= 50;
Serial.print("Velocidad aumentada, nuevo delay: ");
Serial.println(delayTime);
}
}
if (digitalRead(BUTTON_S2) == LOW) { // S2 presionado (disminuye la velocidad)
if (delayTime < MAX_DELAY) {
delayTime += 50;
Serial.print("Velocidad disminuida, nuevo delay: ");
Serial.println(delayTime);
}
}
}
// Función para encender un LED específico y apagar los demás
void encenderLed(int ledPin) {
// Apaga todos los LEDs
apagarTodosLosLeds();
// Enciende el LED actual
digitalWrite(ledPin, HIGH);
}
// Función para apagar todos los LEDs
void apagarTodosLosLeds() {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}