#include <Adafruit_NeoPixel.h>
// Pin del Neopixel (PB0 = pin 0 en Digispark)
#define NEOPIXEL_PIN 0
#define NUMPIXELS 1
// Pin del pulsador (PB4 = pin 2 en Digispark)
#define BUTTON_PIN 2
Adafruit_NeoPixel pixel(NUMPIXELS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
int colorIndex = 0;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50;
void setup() {
pixel.begin();
pixel.show(); // Apaga el Neopixel al inicio
pinMode(BUTTON_PIN, INPUT_PULLUP); // Pulsador con resistencia pull-up interna
}
void loop() {
static bool lastButtonState = HIGH;
bool buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW && lastButtonState == HIGH && (millis() - lastDebounceTime) > debounceDelay) {
// Avanza al siguiente color
colorIndex = (colorIndex + 1) % 6;
setColorByIndex(colorIndex);
lastDebounceTime = millis();
}
lastButtonState = buttonState;
}
// Cambia el color del Neopixel según el índice
void setColorByIndex(int index) {
switch (index) {
case 0: pixel.setPixelColor(0, pixel.Color(255, 0, 0)); break; // Rojo
case 1: pixel.setPixelColor(0, pixel.Color(0, 255, 0)); break; // Verde
case 2: pixel.setPixelColor(0, pixel.Color(0, 0, 255)); break; // Azul
case 3: pixel.setPixelColor(0, pixel.Color(255, 255, 0)); break; // Amarillo
case 4: pixel.setPixelColor(0, pixel.Color(0, 255, 255)); break; // Cian
case 5: pixel.setPixelColor(0, pixel.Color(255, 0, 255)); break; // Magenta
}
pixel.show();
}