#include // Configuración de pines #define PIN_POT 29 #define PIN_NEOPIXEL 3 #define NUM_PIXELS 75 // Número total de NeoPixels #define GROUP_SIZE 3 // Tamaño del grupo de LEDs encendidos simultáneamente // Definición de arcos #define ARC1_START 0 #define ARC1_END 24 #define ARC2_START 25 #define ARC2_END 48 #define ARC3_START 49 #define ARC3_END 74 Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_PIXELS, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800); void setup() { pinMode(PIN_POT, INPUT); strip.begin(); strip.show(); // Inicializa todos los LEDs apagados } void loop() { // Leer el valor del potenciómetro int potValue = analogRead(PIN_POT); // Devuelve un valor entre 0 y 1023 // Verificar si el potenciómetro está en la posición inicial if (potValue < 10) { // Un umbral bajo para considerar como posición inicial // Apagar todos los LEDs for (int i = 0; i < NUM_PIXELS; i++) { strip.setPixelColor(i, 0, 0, 0); } strip.show(); } else { // Convertir el valor del potenciómetro a una posición en el rango total de LEDs int position = map(potValue, 0, 1023, 0, NUM_PIXELS - 1); // Determinar el arco en el que se encuentra la posición y actualizar LEDs if (position <= ARC1_END) { updateLeds(position, ARC1_START, ARC1_END); } else if (position <= ARC2_END) { position = ARC2_START + (position - ARC1_END - 1); updateLeds(position, ARC2_START, ARC2_END); } else { position = ARC3_START + (position - ARC2_END - 1); updateLeds(position, ARC3_START, ARC3_END); } } // Pausa para no saturar el bucle delay(100); } void updateLeds(int position, int arcStart, int arcEnd) { // Apagar todos los LEDs for (int i = 0; i < NUM_PIXELS; i++) { strip.setPixelColor(i, 0, 0, 0); } // Asegurarse de que el grupo de LEDs esté dentro del arco int limitedPosition = max(arcStart, min(position, arcEnd - GROUP_SIZE + 1)); // Encender el grupo de 3 LEDs con el color blanco al máximo brillo for (int i = 0; i < GROUP_SIZE; i++) { if (limitedPosition + i <= arcEnd) { strip.setPixelColor(limitedPosition + i, strip.Color(255, 255, 255)); // Blanco al máximo brillo } } strip.show(); }