diff options
author | Mark Kriegsman <1334634+kriegsman@users.noreply.github.com> | 2020-01-30 21:50:54 +0300 |
---|---|---|
committer | Mark Kriegsman <1334634+kriegsman@users.noreply.github.com> | 2020-01-30 21:50:54 +0300 |
commit | ced802e5a418e4b3e5f9f5e7872d9c66e42b5d8d (patch) | |
tree | 7bb8f9b56647c9da9e72710f175e01b3334120f2 /examples/Pride2015 | |
parent | 5608ecf7771274a9724d72bc848c33e0026dad7b (diff) |
Adding Pacifica (ocean waves), Pride2015 (rainbows), and TwinkleFox (holiday lights) to the examples directory.
Diffstat (limited to 'examples/Pride2015')
-rw-r--r-- | examples/Pride2015/Pride2015.ino | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/examples/Pride2015/Pride2015.ino b/examples/Pride2015/Pride2015.ino new file mode 100644 index 00000000..0fbd3a5b --- /dev/null +++ b/examples/Pride2015/Pride2015.ino @@ -0,0 +1,82 @@ +#include "FastLED.h" + +// Pride2015 +// Animated, ever-changing rainbows. +// by Mark Kriegsman + +#if FASTLED_VERSION < 3001000 +#error "Requires FastLED 3.1 or later; check github for latest code." +#endif + +#define DATA_PIN 3 +//#define CLK_PIN 4 +#define LED_TYPE WS2811 +#define COLOR_ORDER GRB +#define NUM_LEDS 200 +#define BRIGHTNESS 255 + +CRGB leds[NUM_LEDS]; + + +void setup() { + delay(3000); // 3 second delay for recovery + + // tell FastLED about the LED strip configuration + FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS) + .setCorrection(TypicalLEDStrip) + .setDither(BRIGHTNESS < 255); + + // set master brightness control + FastLED.setBrightness(BRIGHTNESS); +} + + +void loop() +{ + pride(); + FastLED.show(); +} + + +// This function draws rainbows with an ever-changing, +// widely-varying set of parameters. +void pride() +{ + static uint16_t sPseudotime = 0; + static uint16_t sLastMillis = 0; + static uint16_t sHue16 = 0; + + uint8_t sat8 = beatsin88( 87, 220, 250); + uint8_t brightdepth = beatsin88( 341, 96, 224); + uint16_t brightnessthetainc16 = beatsin88( 203, (25 * 256), (40 * 256)); + uint8_t msmultiplier = beatsin88(147, 23, 60); + + uint16_t hue16 = sHue16;//gHue * 256; + uint16_t hueinc16 = beatsin88(113, 1, 3000); + + uint16_t ms = millis(); + uint16_t deltams = ms - sLastMillis ; + sLastMillis = ms; + sPseudotime += deltams * msmultiplier; + sHue16 += deltams * beatsin88( 400, 5,9); + uint16_t brightnesstheta16 = sPseudotime; + + for( uint16_t i = 0 ; i < NUM_LEDS; i++) { + hue16 += hueinc16; + uint8_t hue8 = hue16 / 256; + + brightnesstheta16 += brightnessthetainc16; + uint16_t b16 = sin16( brightnesstheta16 ) + 32768; + + uint16_t bri16 = (uint32_t)((uint32_t)b16 * (uint32_t)b16) / 65536; + uint8_t bri8 = (uint32_t)(((uint32_t)bri16) * brightdepth) / 65536; + bri8 += (255 - brightdepth); + + CRGB newcolor = CHSV( hue8, sat8, bri8); + + uint16_t pixelnumber = i; + pixelnumber = (NUM_LEDS-1) - pixelnumber; + + nblend( leds[pixelnumber], newcolor, 64); + } +} |