#include #include #include #define LED_PIN 4 #define LED_COUNT 12 #define DIMDELAY 1000 #define DIMMAX 50 #define DIMMIN 10 Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); long RGBpos = 0; int delay_count = 0; byte LEDbrightness = 50; int dimdelay_count = 0; CommonBusEncoders encoders(1, 2, 3, 1); void setup() { //Setup APA106 LEDs strip.begin(); strip.show(); strip.setBrightness(LEDbrightness); //Setup encoder encoders.setDebounce(16); encoders.resetChronoAfter(10000); encoders.addEncoder(1, 4, 5, 1, 100, 199); //Start Consumer keyboard Consumer.begin(); //Serial debugging //Serial.begin(9600); } void loop() { dimled(); if (delay_count > 20) { strip.setBrightness(LEDbrightness); rainbow(RGBpos); RGBpos = (RGBpos += 256); if (RGBpos > 5 * 65536) RGBpos = 0; delay_count = 0; } int code = encoders.readAll(); if (code != 0) { //Serial.println(code); LEDbrightness = DIMMAX; strip.setBrightness(LEDbrightness); strip.show(); } if (code == 101) Consumer.write(MEDIA_VOLUME_DOWN); if (code == 100) Consumer.write(MEDIA_VOLUME_UP); if (code == 199) Consumer.write(MEDIA_VOLUME_MUTE); delay(1); delay_count++; } void dimled() { dimdelay_count++; if (dimdelay_count > DIMDELAY) { dimdelay_count = 0; LEDbrightness--; if (LEDbrightness <= DIMMIN) { LEDbrightness = DIMMIN; } //Serial.println(LEDbrightness); strip.setBrightness(LEDbrightness); strip.show(); } } void rainbow(long firstPixelHue) { for (int i = 0; i < strip.numPixels(); i++) { int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels()); strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue))); } strip.show(); }