diff options
author | Mark Kriegsman <kriegsman@tr.org> | 2015-05-14 03:09:08 +0300 |
---|---|---|
committer | Mark Kriegsman <kriegsman@tr.org> | 2015-05-14 03:09:08 +0300 |
commit | 7e058dcaea741d4705bcfd12bb97df5092282597 (patch) | |
tree | 67bd4dfcddd13c070b6feacec29470049ff9102e /examples/ColorPalette | |
parent | 64a2ea7fea87fa911e52dd88596896269fdd9346 (diff) |
Change BLEND to LINEARBLEND for ColorFromPalette
Diffstat (limited to 'examples/ColorPalette')
-rw-r--r-- | examples/ColorPalette/ColorPalette.ino | 165 |
1 files changed, 82 insertions, 83 deletions
diff --git a/examples/ColorPalette/ColorPalette.ino b/examples/ColorPalette/ColorPalette.ino index 93318998..0fdfb594 100644 --- a/examples/ColorPalette/ColorPalette.ino +++ b/examples/ColorPalette/ColorPalette.ino @@ -12,18 +12,18 @@ CRGB leds[NUM_LEDS]; // This example shows several ways to set up and use 'palettes' of colors // with FastLED. // -// These compact palettes provide an easy way to re-colorize your +// These compact palettes provide an easy way to re-colorize your // animation on the fly, quickly, easily, and with low overhead. // // USING palettes is MUCH simpler in practice than in theory, so first just -// run this sketch, and watch the pretty lights as you then read through +// run this sketch, and watch the pretty lights as you then read through // the code. Although this sketch has eight (or more) different color schemes, // the entire sketch compiles down to about 6.5K on AVR. // // FastLED provides a few pre-configured color palettes, and makes it // extremely easy to make up your own color schemes with palettes. // -// Some notes on the more abstract 'theory and practice' of +// Some notes on the more abstract 'theory and practice' of // FastLED compact palettes are at the bottom of this file. @@ -36,36 +36,36 @@ extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM; void setup() { - delay( 3000 ); // power-up safety delay - FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); - FastLED.setBrightness( BRIGHTNESS ); - - currentPalette = RainbowColors_p; - currentBlending = BLEND; + delay( 3000 ); // power-up safety delay + FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); + FastLED.setBrightness( BRIGHTNESS ); + + currentPalette = RainbowColors_p; + currentBlending = LINEARBLEND; } void loop() { - ChangePalettePeriodically(); - - static uint8_t startIndex = 0; - startIndex = startIndex + 1; /* motion speed */ - - FillLEDsFromPaletteColors( startIndex); - - FastLED.show(); - FastLED.delay(1000 / UPDATES_PER_SECOND); + ChangePalettePeriodically(); + + static uint8_t startIndex = 0; + startIndex = startIndex + 1; /* motion speed */ + + FillLEDsFromPaletteColors( startIndex); + + FastLED.show(); + FastLED.delay(1000 / UPDATES_PER_SECOND); } void FillLEDsFromPaletteColors( uint8_t colorIndex) { - uint8_t brightness = 255; - - for( int i = 0; i < NUM_LEDS; i++) { - leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending); - colorIndex += 3; - } + uint8_t brightness = 255; + + for( int i = 0; i < NUM_LEDS; i++) { + leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending); + colorIndex += 3; + } } @@ -79,31 +79,31 @@ void FillLEDsFromPaletteColors( uint8_t colorIndex) void ChangePalettePeriodically() { - uint8_t secondHand = (millis() / 1000) % 60; - static uint8_t lastSecond = 99; - - if( lastSecond != secondHand) { - lastSecond = secondHand; - if( secondHand == 0) { currentPalette = RainbowColors_p; currentBlending = BLEND; } - if( secondHand == 10) { currentPalette = RainbowStripeColors_p; currentBlending = NOBLEND; } - if( secondHand == 15) { currentPalette = RainbowStripeColors_p; currentBlending = BLEND; } - if( secondHand == 20) { SetupPurpleAndGreenPalette(); currentBlending = BLEND; } - if( secondHand == 25) { SetupTotallyRandomPalette(); currentBlending = BLEND; } - if( secondHand == 30) { SetupBlackAndWhiteStripedPalette(); currentBlending = NOBLEND; } - if( secondHand == 35) { SetupBlackAndWhiteStripedPalette(); currentBlending = BLEND; } - if( secondHand == 40) { currentPalette = CloudColors_p; currentBlending = BLEND; } - if( secondHand == 45) { currentPalette = PartyColors_p; currentBlending = BLEND; } - if( secondHand == 50) { currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND; } - if( secondHand == 55) { currentPalette = myRedWhiteBluePalette_p; currentBlending = BLEND; } - } + uint8_t secondHand = (millis() / 1000) % 60; + static uint8_t lastSecond = 99; + + if( lastSecond != secondHand) { + lastSecond = secondHand; + if( secondHand == 0) { currentPalette = RainbowColors_p; currentBlending = LINEARBLEND; } + if( secondHand == 10) { currentPalette = RainbowStripeColors_p; currentBlending = NOBLEND; } + if( secondHand == 15) { currentPalette = RainbowStripeColors_p; currentBlending = LINEARBLEND; } + if( secondHand == 20) { SetupPurpleAndGreenPalette(); currentBlending = LINEARBLEND; } + if( secondHand == 25) { SetupTotallyRandomPalette(); currentBlending = LINEARBLEND; } + if( secondHand == 30) { SetupBlackAndWhiteStripedPalette(); currentBlending = NOBLEND; } + if( secondHand == 35) { SetupBlackAndWhiteStripedPalette(); currentBlending = LINEARBLEND; } + if( secondHand == 40) { currentPalette = CloudColors_p; currentBlending = LINEARBLEND; } + if( secondHand == 45) { currentPalette = PartyColors_p; currentBlending = LINEARBLEND; } + if( secondHand == 50) { currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND; } + if( secondHand == 55) { currentPalette = myRedWhiteBluePalette_p; currentBlending = LINEARBLEND; } + } } // This function fills the palette with totally random colors. void SetupTotallyRandomPalette() { - for( int i = 0; i < 16; i++) { - currentPalette[i] = CHSV( random8(), 255, random8()); - } + for( int i = 0; i < 16; i++) { + currentPalette[i] = CHSV( random8(), 255, random8()); + } } // This function sets up a palette of black and white stripes, @@ -112,55 +112,55 @@ void SetupTotallyRandomPalette() // to set them up. void SetupBlackAndWhiteStripedPalette() { - // 'black out' all 16 palette entries... - fill_solid( currentPalette, 16, CRGB::Black); - // and set every fourth one to white. - currentPalette[0] = CRGB::White; - currentPalette[4] = CRGB::White; - currentPalette[8] = CRGB::White; - currentPalette[12] = CRGB::White; - + // 'black out' all 16 palette entries... + fill_solid( currentPalette, 16, CRGB::Black); + // and set every fourth one to white. + currentPalette[0] = CRGB::White; + currentPalette[4] = CRGB::White; + currentPalette[8] = CRGB::White; + currentPalette[12] = CRGB::White; + } // This function sets up a palette of purple and green stripes. void SetupPurpleAndGreenPalette() { - CRGB purple = CHSV( HUE_PURPLE, 255, 255); - CRGB green = CHSV( HUE_GREEN, 255, 255); - CRGB black = CRGB::Black; - - currentPalette = CRGBPalette16( - green, green, black, black, - purple, purple, black, black, - green, green, black, black, - purple, purple, black, black ); + CRGB purple = CHSV( HUE_PURPLE, 255, 255); + CRGB green = CHSV( HUE_GREEN, 255, 255); + CRGB black = CRGB::Black; + + currentPalette = CRGBPalette16( + green, green, black, black, + purple, purple, black, black, + green, green, black, black, + purple, purple, black, black ); } // This example shows how to set up a static color palette -// which is stored in PROGMEM (flash), which is almost always more +// which is stored in PROGMEM (flash), which is almost always more // plentiful than RAM. A static PROGMEM palette like this // takes up 64 bytes of flash. const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM = { - CRGB::Red, - CRGB::Gray, // 'white' is too bright compared to red and blue - CRGB::Blue, - CRGB::Black, - - CRGB::Red, - CRGB::Gray, - CRGB::Blue, - CRGB::Black, - - CRGB::Red, - CRGB::Red, - CRGB::Gray, - CRGB::Gray, - CRGB::Blue, - CRGB::Blue, - CRGB::Black, - CRGB::Black + CRGB::Red, + CRGB::Gray, // 'white' is too bright compared to red and blue + CRGB::Blue, + CRGB::Black, + + CRGB::Red, + CRGB::Gray, + CRGB::Blue, + CRGB::Black, + + CRGB::Red, + CRGB::Red, + CRGB::Gray, + CRGB::Gray, + CRGB::Blue, + CRGB::Blue, + CRGB::Black, + CRGB::Black }; @@ -171,7 +171,7 @@ const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM = // has 256 entries, each containing a specific 24-bit RGB color. You can then // index into the color palette using a simple 8-bit (one byte) value. // A 256-entry color palette takes up 768 bytes of RAM, which on Arduino -// is quite possibly "too many" bytes. +// is quite possibly "too many" bytes. // // FastLED does offer traditional 256-element palettes, for setups that // can afford the 768-byte cost in RAM. @@ -179,11 +179,10 @@ const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM = // However, FastLED also offers a compact alternative. FastLED offers // palettes that store 16 distinct entries, but can be accessed AS IF // they actually have 256 entries; this is accomplished by interpolating -// between the 16 explicit entries to create fifteen intermediate palette +// between the 16 explicit entries to create fifteen intermediate palette // entries between each pair. // // So for example, if you set the first two explicit entries of a compact // palette to Green (0,255,0) and Blue (0,0,255), and then retrieved // the first sixteen entries from the virtual palette (of 256), you'd get // Green, followed by a smooth gradient from green-to-blue, and then Blue. - |