#include #define SOUND_SENSOR_PIN A0 // Pin analógico para el sensor de sonido #define SWITCH_PIN 2 // Pin del interruptor #define NEOPIXEL_PIN 6 // Pin para los LEDs NeoPixel #define NUM_PIXELS 60 // Número de LEDs en la tira #define SOUND_THRESHOLD 78 // Umbral de detección de sonido Adafruit_NeoPixel strip(NUM_PIXELS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800); unsigned long lastChangeTime = 0; int colorIndex = 0; // Colores que se pueden usar (en formato RGB) uint32_t colorList[] = { strip.Color(255, 0, 0), // Rojo strip.Color(0, 255, 0), // Verde strip.Color(0, 0, 255), // Azul strip.Color(255, 255, 0), // Amarillo strip.Color(0, 255, 255), // Cian strip.Color(255, 0, 255), // Magenta strip.Color(255, 255, 255) // Blanco }; void setup() { pinMode(SWITCH_PIN, INPUT_PULLUP); // Configura el switch como entrada con pullup strip.begin(); // Inicializa la tira de LEDs strip.clear(); // Apaga todos los LEDs strip.show(); Serial.begin(9600); // Inicia la comunicación serial para debug } void loop() { bool switchOn = digitalRead(SWITCH_PIN) == LOW; // Verifica si el switch está encendido int soundLevel = analogRead(SOUND_SENSOR_PIN); // Lee el valor del sensor de sonido // Imprime los valores para verificar el funcionamiento en el Monitor Serial Serial.print("Sound: "); Serial.print(soundLevel); Serial.print(" | Switch: "); Serial.println(switchOn ? "ON" : "OFF"); // Si el switch está encendido y el sonido supera el umbral if (switchOn && soundLevel > SOUND_THRESHOLD && (millis() - lastChangeTime > 200)) { lastChangeTime = millis(); // Actualiza el tiempo de la última vez que se cambió el color // Cambia al siguiente color aleatorio colorIndex = (colorIndex + 1) % (sizeof(colorList) / sizeof(colorList[0])); // Enciende todos los LEDs con el color seleccionado for (int i = 0; i < NUM_PIXELS; i++) { strip.setPixelColor(i, colorList[colorIndex]); } strip.show(); // Muestra los cambios en los LEDs } else if (!switchOn || soundLevel <= SOUND_THRESHOLD) { // Si no hay sonido o el switch está apagado, apaga los LEDs strip.clear(); strip.show(); } delay(20); // Pequeña demora para suavizar la lectura }