#include #define PIN 4 // Pin de datos de los NeoPixels #define NUM_PIXELS 12 // Número total de NeoPixels que estás utilizando #define BUTTON_PIN 5 // Pin del botón bool buttonState = false; bool lastButtonState = false; unsigned long lastDebounceTime = 0; unsigned long debounceDelay = 50; // Inicializa el objeto NeoPixel con el número de píxeles y el pin de datos Adafruit_NeoPixel pixels(NUM_PIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { // Inicializa la comunicación con NeoPixels pixels.begin(); // Establece el brillo de todos los píxeles (0-255) pixels.setBrightness(50); // Enciende todos los NeoPixels con color blanco colorWipe(0xFFFFFF, 50); // blanco con una velocidad de 50ms // Inicializa el pin del botón como entrada pinMode(BUTTON_PIN, INPUT); } void loop() { // Lee el estado del botón int reading = digitalRead(BUTTON_PIN); // Hacer debounce del botón if (reading != lastButtonState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading != buttonState) { buttonState = reading; // Si el botón está presionado, activa el efecto palpitante if (buttonState == HIGH) { pulseRed(); } } } lastButtonState = reading; } // Función para llenar la tira de LED con un solo color void colorWipe(uint32_t color, int wait) { for (int i = 0; i < NUM_PIXELS; i++) { pixels.setPixelColor(i, color); pixels.show(); delay(wait); } } // Función para crear un efecto de palpitación en rojo void pulseRed() { uint8_t intensity = 0; uint8_t direction = 1; while (buttonState == HIGH) { // Ajusta la intensidad del rojo intensity += direction; if (intensity == 0 || intensity == 255) { direction *= -1; } // Establece el color de todos los píxeles for (int i = 0; i < NUM_PIXELS; i++) { pixels.setPixelColor(i, pixels.Color(intensity, 0, 0)); } pixels.show(); delay(10); // Ajusta el tiempo de espera según lo deseado } }