#include /************************************************** * * 5/A0 PB5 reset |1 8| Vcc * 3/A3 PB3 |2 7| sck PB2 2/A1 * 4/A2 PB2 |3 6| miso PB1 1 * GND |4 5| mosi PB0 0 * ATtiny85 * **************************************************/ #include #define LED_PIN 0 #define COLOR_ORDER RGB #define CHIPSET WS2811 #define NUM_LEDS 1 CRGB leds[NUM_LEDS]; CRGBPalette16 currentPalette; TBlendType currentBlending; void setup() { delay(500); // sanity delay PORTB = 0b00000110; // pull-up on PB2 PB1 currentPalette = RainbowColors_p; FastLED.addLeds(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); } uint8_t i=0; void loop() { uint16_t pot1, pot2; uint8_t mode; pot1 = analogRead(3); pot2 = analogRead(2); // switch on PB2 PB1 mode = (PINB & 0b00000110) >> 1; switch (mode) { case 0: // hue and saturation leds[0] = CHSV( pot1/4, pot2/4, 255 ); break; case 1: // sweep intensity leds[0] = CHSV( pot1/4, 255, cubicwave8(i)); break; case 2: // sweep saturation leds[0] = CHSV( pot1/4, cubicwave8(i), 255); break; case 3: switch (pot1/128) { case 0: currentPalette = RainbowColors_p; currentBlending = LINEARBLEND; break; case 1: currentPalette = RainbowStripeColors_p; currentBlending = LINEARBLEND; pot2 = 1024+pot2*8; break; case 2: currentPalette = RainbowStripeColors_p; currentBlending = LINEARBLEND; break; case 3: currentPalette = CloudColors_p; currentBlending = LINEARBLEND; break; case 4: currentPalette = PartyColors_p; currentBlending = LINEARBLEND; break; case 5: currentPalette = OceanColors_p; currentBlending = LINEARBLEND; break; case 6: currentPalette = LavaColors_p; currentBlending = LINEARBLEND; break; case 7: currentPalette = ForestColors_p; currentBlending = LINEARBLEND; break; default: break; } leds[0] = ColorFromPalette( currentPalette, i, 255, currentBlending); break; default: break; } i++; FastLED.show(); // display this frame if (mode != 0) { FastLED.delay(pot2/8); } else { FastLED.delay(50); } }