Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <FastLED.h>
- #define NUM_LEDS_ATAIL 14 //32 Full Size
- #define NUM_LEDS_ABRANCH 8 //16 Full Size
- #define NUM_LEDS_BTAIL 54 //54 Full Size
- #define NUM_LEDS_BBRANCH 18 //18 Full Size
- #define RATE_OF_FILL 30
- #define RATE_OF_FADE 40
- #define TIME_AFTER_SHOT 200
- #define SALUTE_SIZE 2
- #define LED_PIN_A 2
- #define LED_PIN_B 3
- #define LED_PIN_C 4
- #define BRIGHTNESS 75
- #define LED_TYPE NEOPIXEL
- #define COLOR_ORDER RGB
- CRGB aTail[NUM_LEDS_ATAIL];
- CRGB aBranch[NUM_LEDS_ABRANCH];
- CRGB aTotal[NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH)];
- CRGB bTail[NUM_LEDS_BTAIL];
- CRGB bBranch[NUM_LEDS_BBRANCH];
- CRGB bTotal[NUM_LEDS_BTAIL + (5 * NUM_LEDS_BBRANCH)];
- CRGB cTail[NUM_LEDS_ATAIL];
- CRGB cBranch[NUM_LEDS_ABRANCH];
- CRGB cTotal[NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH)];
- //CRGBPalette16 currentPalette;
- //TBlendType currentBlending;
- void setup() {
- // put your setup code here, to run once:
- delay(3000);
- FastLED.addLeds<LED_TYPE, LED_PIN_A>(aTotal, NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH));
- FastLED.addLeds<LED_TYPE, LED_PIN_B>(bTotal, NUM_LEDS_BTAIL + (5 * NUM_LEDS_BBRANCH));
- FastLED.addLeds<LED_TYPE, LED_PIN_C>(cTotal, NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH));
- FastLED.setBrightness(BRIGHTNESS);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- Salute();
- delay (TIME_AFTER_SHOT);
- Willow();
- delay (TIME_AFTER_SHOT);
- Shimmer();
- delay (TIME_AFTER_SHOT);
- Peony();
- delay (TIME_AFTER_SHOT);
- // ChangeABC(); //Thought this would originally work, don't think it will now
- }
- //**********A Shimmer**********
- void Shimmer() {
- FastLED.setBrightness(255); //Reset Brightness
- for (int i = 0; i < NUM_LEDS_ATAIL; i++) {
- aTotal[i] = CHSV(64, 255, 255);
- FastLED.show();
- delay(10);
- aTotal[i] = CHSV(0, 0, 0);
- FastLED.show();
- delay(RATE_OF_FILL);
- }
- //Shell Exploding
- for (int j = 0; j < 30; j++) {
- int k = random16(NUM_LEDS_ATAIL, NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH));
- aTotal[k] = CHSV(255, 0, 255);
- FastLED.show();
- delay(j * 3); //New Shimmer - 30 different flashes and since J is also delay, time between shots increases each flash
- //delay(random16(20, 100)); //or if we wanted to get fancy, change delay to a random16 between maybe 20 and 100. Not sure which would look better
- //Shell Dissipating
- aTotal[k] = CHSV(0, 0, 0);
- FastLED.show();
- delay(20);
- }
- }
- //**********A Willow**********
- void Willow() {
- //Launching the shell
- FastLED.setBrightness(255); //Reset Brightness
- for (int i = 0; i < NUM_LEDS_ATAIL; i++) {
- aTotal[i] = CHSV(255, 255, 255);
- FastLED.show();
- delay(10);
- aTotal[i] = CRGB(0, 0, 0);
- FastLED.show();
- delay(RATE_OF_FILL);
- }
- //Shell Exploding
- for (int i = NUM_LEDS_ATAIL; i < NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH; i++) {
- aTotal[i] = CHSV(160, 255, 255);
- aTotal[i + NUM_LEDS_ABRANCH] = CHSV(160, 255, 255);
- aTotal[i + (2 * NUM_LEDS_ABRANCH)] = CHSV(160, 255, 255);
- aTotal[i + (3 * NUM_LEDS_ABRANCH)] = CHSV(160, 255, 255);
- aTotal[i + (4 * NUM_LEDS_ABRANCH)] = CHSV(160, 255, 255);
- aTotal[(2 * NUM_LEDS_ATAIL) - i - 1] = CHSV(160, 255, 255);
- FastLED.show();
- delay(RATE_OF_FILL);
- }
- aBranchFillOut(CHSV(0, 0, 0), 0, NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH));
- }
- //**********A Salute**********
- void Salute() {
- //Launching the shell
- FastLED.setBrightness(255); //Reset Brightness
- for (int i = 0; i < NUM_LEDS_ATAIL; i++) {
- cTotal[i] = CHSV(160, 255, 255);
- FastLED.show();
- delay(10);
- cTotal[i] = CHSV(0, 0, 0);
- FastLED.show();
- delay(RATE_OF_FILL);
- }
- //Shell Exploding
- // FastLED.setBrightness(254); //For some reason this wasn't turning the exploding LEDs on, so it still has the round fill effect
- cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL, NUM_LEDS_ATAIL + (SALUTE_SIZE));
- cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH, (NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH) + (SALUTE_SIZE));
- cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 2), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 2) + (SALUTE_SIZE)));
- cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 3), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 3) + (SALUTE_SIZE)));
- cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 4), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 4) + (SALUTE_SIZE)));
- cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL - (SALUTE_SIZE + 1), NUM_LEDS_ATAIL);
- FastLED.setBrightness(255);
- delay(300);
- //Shell Dissipating
- FastLED.setBrightness(0);
- cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL, NUM_LEDS_ATAIL + (SALUTE_SIZE));
- cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH, (NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH) + (SALUTE_SIZE));
- cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 2), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 2) + (SALUTE_SIZE)));
- cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 3), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 3) + (SALUTE_SIZE)));
- cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 4), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 4) + (SALUTE_SIZE)));
- cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL - (SALUTE_SIZE + 1), NUM_LEDS_ATAIL);
- }
- //**********A Peony**********
- void Peony() {
- //Launching the shell
- for (int i = 0; i < NUM_LEDS_ATAIL; i++) {
- aTotal[i] = CHSV(255, 0, 255);
- FastLED.show();
- delay(10);
- aTotal[i] = CHSV(0, 0, 0);
- FastLED.show();
- delay(RATE_OF_FILL);
- }
- //Shell Exploding
- for (int i = NUM_LEDS_ATAIL; i < NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH; i++) {
- aTotal[i] = CHSV(192, 255, 255);
- aTotal[i + NUM_LEDS_ABRANCH] = CHSV(192, 255, 255);
- aTotal[i + (2 * NUM_LEDS_ABRANCH)] = CHSV(192, 255, 255);
- aTotal[i + (3 * NUM_LEDS_ABRANCH)] = CHSV(192, 255, 255);
- aTotal[i + (4 * NUM_LEDS_ABRANCH)] = CHSV(192, 255, 255);
- aTotal[(2 * NUM_LEDS_ATAIL) - i - 1] = CHSV(192, 255, 255);
- FastLED.show();
- delay(RATE_OF_FILL);
- }
- //Shell Dissipating
- for (int i = NUM_LEDS_ATAIL; i < NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH; i++) {
- aTotal[i] = CHSV(0, 0, 0);
- aTotal[i + NUM_LEDS_ABRANCH] = CHSV(0, 0, 0);
- aTotal[i + (2 * NUM_LEDS_ABRANCH)] = CHSV(0, 0, 0);
- aTotal[i + (3 * NUM_LEDS_ABRANCH)] = CHSV(0, 0, 0);
- aTotal[i + (4 * NUM_LEDS_ABRANCH)] = CHSV(0, 0, 0);
- aTotal[(2 * NUM_LEDS_ATAIL) - i - 1] = CHSV(0, 0, 0);
- FastLED.show();
- delay(RATE_OF_FILL);
- }
- }
- //**********A Functions**********
- void aBranchFillOut(CRGB color, uint8_t from, uint8_t to) {
- for (uint8_t i = from; i <= to; i++) {
- cTotal[i] = color;
- FastLED.show();
- }
- }
- void cBranchFillOut(CRGB color, uint8_t from, uint8_t to) {
- for (uint8_t i = from; i <= to; i++) {
- cTotal[i] = color;
- FastLED.show();
- }
- }
- /*void ChangeABC()
- {
- uint8_t secondHand = (millis() / 1000) % 60;
- static uint8_t lastSecond = 19;
- if( lastSecond != secondHand) {
- lastSecond = secondHand;
- if( secondHand == 0) { Salute(); }
- if( secondHand == 5) { Willow(); }
- if( secondHand == 10) { Shimmer(); }
- if( secondHand == 15) { Peony(); }
- }
- } */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement