// Pines para LEDs
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
// Pines para los pulsadores
const int button1Pin = 10;
const int button2Pin = 11;
const int button3Pin = 12;
const int stopButtonPin = 13;
// Pin para el potenciómetro
const int potPin = A0;
// Variables para almacenar el estado de los botones
int button1State = 0;
int button2State = 0;
int button3State = 0;
int stopButtonState = 0;
bool stopSequence = false;
void setup() {
// Configurar los pines de los LEDs como salida
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Configurar los pines de los botones como entrada
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
pinMode(button3Pin, INPUT);
pinMode(stopButtonPin, INPUT);
}
void loop() {
// Leer el valor del potenciómetro para regular la intensidad de los LEDs
int potValue = analogRead(potPin);
int brightness = map(potValue, 0, 1023, 0, 255); // Mapear el valor del potenciómetro de 0 a 255
// Leer el estado de los botones
button1State = digitalRead(button1Pin);
button2State = digitalRead(button2Pin);
button3State = digitalRead(button3Pin);
stopButtonState = digitalRead(stopButtonPin);
// Si se presiona el botón de parar secuencia, detener todas las secuencias
if (stopButtonState == HIGH) {
stopSequence = true;
apagarLeds();
}
// Si se presiona el botón 1, ejecutar la primera secuencia
if (button1State == HIGH && !stopSequence) {
secuencia1(brightness);
}
// Si se presiona el botón 2, ejecutar la segunda secuencia
if (button2State == HIGH && !stopSequence) {
secuencia2(brightness);
}
// Si se presiona el botón 3, ejecutar la tercera secuencia
if (button3State == HIGH && !stopSequence) {
secuencia3(brightness);
}
// Si se presiona el botón de detener, apagar los LEDs
if (stopButtonState == HIGH) {
stopSequence = true;
apagarLeds();
}
}
// Función para la primera secuencia: desde los extremos hacia el centro
void secuencia1(int brightness) {
apagarLeds();
for (int i = 0; i < 4; i++) {
analogWrite(ledPins[i], brightness);
analogWrite(ledPins[7 - i], brightness);
delay(200);
}
}
// Función para la segunda secuencia: encender solo los LEDs pares
void secuencia2(int brightness) {
apagarLeds();
for (int i = 1; i < 8; i += 2) {
analogWrite(ledPins[i], brightness);
delay(200);
}
}
// Función para la tercera secuencia: encender los LEDs en orden del 1 al 8
void secuencia3(int brightness) {
apagarLeds();
for (int i = 0; i < 8; i++) {
analogWrite(ledPins[i], brightness);
delay(200);
}
}
// Función para apagar todos los LEDs
void apagarLeds() {
for (int i = 0; i < 8; i++) {
analogWrite(ledPins[i], 0);
}
}