Advertisement
Guest User

Untitled

a guest
Jun 19th, 2015
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.27 KB | None | 0 0
  1. #include <FastLED.h>
  2. #define NUM_LEDS_ATAIL 14                  //32 Full Size
  3. #define NUM_LEDS_ABRANCH 8                 //16 Full Size
  4. #define NUM_LEDS_BTAIL 54                  //54 Full Size
  5. #define NUM_LEDS_BBRANCH 18                 //18 Full Size
  6. #define RATE_OF_FILL 30
  7. #define RATE_OF_FADE 40
  8. #define TIME_AFTER_SHOT 200
  9. #define SALUTE_SIZE 2
  10. #define LED_PIN_A 2
  11. #define LED_PIN_B 3
  12. #define LED_PIN_C 4
  13. #define BRIGHTNESS 75
  14. #define LED_TYPE NEOPIXEL
  15. #define COLOR_ORDER RGB
  16. CRGB aTail[NUM_LEDS_ATAIL];
  17. CRGB aBranch[NUM_LEDS_ABRANCH];
  18. CRGB aTotal[NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH)];
  19. CRGB bTail[NUM_LEDS_BTAIL];
  20. CRGB bBranch[NUM_LEDS_BBRANCH];
  21. CRGB bTotal[NUM_LEDS_BTAIL + (5 * NUM_LEDS_BBRANCH)];
  22. CRGB cTail[NUM_LEDS_ATAIL];
  23. CRGB cBranch[NUM_LEDS_ABRANCH];
  24. CRGB cTotal[NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH)];
  25. //CRGBPalette16 currentPalette;
  26. //TBlendType currentBlending;
  27.  
  28. void setup() {
  29.   // put your setup code here, to run once:
  30.   delay(3000);
  31.   FastLED.addLeds<LED_TYPE, LED_PIN_A>(aTotal, NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH));
  32.   FastLED.addLeds<LED_TYPE, LED_PIN_B>(bTotal, NUM_LEDS_BTAIL + (5 * NUM_LEDS_BBRANCH));
  33.   FastLED.addLeds<LED_TYPE, LED_PIN_C>(cTotal, NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH));
  34.   FastLED.setBrightness(BRIGHTNESS);
  35. }
  36.  
  37. void loop() {
  38.   // put your main code here, to run repeatedly:
  39.   Salute();
  40.   delay (TIME_AFTER_SHOT);
  41.   Willow();
  42.   delay (TIME_AFTER_SHOT);
  43.   Shimmer();
  44.   delay (TIME_AFTER_SHOT);
  45.   Peony();
  46.   delay (TIME_AFTER_SHOT);
  47.   //  ChangeABC();                   //Thought this would originally work, don't think it will now
  48. }
  49.  
  50.  
  51. //**********A Shimmer**********
  52.  
  53. void Shimmer() {
  54.   FastLED.setBrightness(255);    //Reset Brightness
  55.   for (int i = 0; i < NUM_LEDS_ATAIL; i++) {
  56.     aTotal[i] = CHSV(64, 255, 255);
  57.     FastLED.show();
  58.     delay(10);
  59.     aTotal[i] = CHSV(0, 0, 0);
  60.     FastLED.show();
  61.     delay(RATE_OF_FILL);
  62.   }
  63.   //Shell Exploding
  64.   for (int j = 0; j < 30; j++) {
  65.     int k = random16(NUM_LEDS_ATAIL, NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH));
  66.     aTotal[k] = CHSV(255, 0, 255);
  67.     FastLED.show();
  68.     delay(j * 3);                        //New Shimmer - 30 different flashes and since J is also delay, time between shots increases each flash
  69.     //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
  70.     //Shell Dissipating
  71.     aTotal[k] = CHSV(0, 0, 0);
  72.     FastLED.show();
  73.     delay(20);
  74.   }
  75. }
  76.  
  77. //**********A Willow**********
  78.  
  79. void Willow() {
  80.   //Launching the shell
  81.   FastLED.setBrightness(255);    //Reset Brightness
  82.   for (int i = 0; i < NUM_LEDS_ATAIL; i++) {
  83.     aTotal[i] = CHSV(255, 255, 255);
  84.     FastLED.show();
  85.     delay(10);
  86.     aTotal[i] = CRGB(0, 0, 0);
  87.     FastLED.show();
  88.     delay(RATE_OF_FILL);
  89.   }
  90.   //Shell Exploding
  91.   for (int i = NUM_LEDS_ATAIL; i < NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH; i++) {
  92.     aTotal[i] = CHSV(160, 255, 255);
  93.     aTotal[i + NUM_LEDS_ABRANCH] = CHSV(160, 255, 255);
  94.     aTotal[i + (2 * NUM_LEDS_ABRANCH)] = CHSV(160, 255, 255);
  95.     aTotal[i + (3 * NUM_LEDS_ABRANCH)] = CHSV(160, 255, 255);
  96.     aTotal[i + (4 * NUM_LEDS_ABRANCH)] = CHSV(160, 255, 255);
  97.     aTotal[(2 * NUM_LEDS_ATAIL) - i - 1] = CHSV(160, 255, 255);
  98.     FastLED.show();  
  99.     delay(RATE_OF_FILL);
  100.   }
  101.   aBranchFillOut(CHSV(0, 0, 0), 0, NUM_LEDS_ATAIL + (5 * NUM_LEDS_ABRANCH));
  102. }
  103.  
  104. //**********A Salute**********
  105.  
  106. void Salute() {
  107.   //Launching the shell
  108.   FastLED.setBrightness(255);    //Reset Brightness
  109.   for (int i = 0; i < NUM_LEDS_ATAIL; i++) {
  110.     cTotal[i] = CHSV(160, 255, 255);
  111.     FastLED.show();
  112.     delay(10);
  113.     cTotal[i] = CHSV(0, 0, 0);
  114.     FastLED.show();
  115.     delay(RATE_OF_FILL);
  116.   }
  117.   //Shell Exploding
  118.   //  FastLED.setBrightness(254);              //For some reason this wasn't turning the exploding LEDs on, so it still has the round fill effect
  119.   cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL, NUM_LEDS_ATAIL + (SALUTE_SIZE));
  120.   cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH, (NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH) + (SALUTE_SIZE));
  121.   cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 2), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 2) + (SALUTE_SIZE)));
  122.   cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 3), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 3) + (SALUTE_SIZE)));
  123.   cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 4), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 4) + (SALUTE_SIZE)));
  124.   cBranchFillOut(CHSV(255, 0, 255), NUM_LEDS_ATAIL - (SALUTE_SIZE + 1), NUM_LEDS_ATAIL);
  125.   FastLED.setBrightness(255);
  126.   delay(300);
  127.   //Shell Dissipating
  128.   FastLED.setBrightness(0);
  129.   cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL, NUM_LEDS_ATAIL + (SALUTE_SIZE));
  130.   cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH, (NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH) + (SALUTE_SIZE));
  131.   cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 2), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 2) + (SALUTE_SIZE)));
  132.   cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 3), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 3) + (SALUTE_SIZE)));
  133.   cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 4), (NUM_LEDS_ATAIL + (NUM_LEDS_ABRANCH * 4) + (SALUTE_SIZE)));
  134.   cBranchFillOut(CHSV(0, 0, 0), NUM_LEDS_ATAIL - (SALUTE_SIZE + 1), NUM_LEDS_ATAIL);
  135. }
  136.  
  137. //**********A Peony**********
  138.  
  139. void Peony() {
  140.   //Launching the shell
  141.   for (int i = 0; i < NUM_LEDS_ATAIL; i++) {
  142.     aTotal[i] = CHSV(255, 0, 255);
  143.     FastLED.show();
  144.     delay(10);
  145.     aTotal[i] = CHSV(0, 0, 0);
  146.     FastLED.show();
  147.     delay(RATE_OF_FILL);
  148.   }
  149.  
  150.   //Shell Exploding
  151.   for (int i = NUM_LEDS_ATAIL; i < NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH; i++) {
  152.  
  153.     aTotal[i] = CHSV(192, 255, 255);
  154.     aTotal[i + NUM_LEDS_ABRANCH] = CHSV(192, 255, 255);
  155.     aTotal[i + (2 * NUM_LEDS_ABRANCH)] = CHSV(192, 255, 255);
  156.     aTotal[i + (3 * NUM_LEDS_ABRANCH)] = CHSV(192, 255, 255);
  157.     aTotal[i + (4 * NUM_LEDS_ABRANCH)] = CHSV(192, 255, 255);
  158.     aTotal[(2 * NUM_LEDS_ATAIL) - i - 1] = CHSV(192, 255, 255);
  159.     FastLED.show();
  160.     delay(RATE_OF_FILL);
  161.   }
  162.   //Shell Dissipating
  163.   for (int i = NUM_LEDS_ATAIL; i < NUM_LEDS_ATAIL + NUM_LEDS_ABRANCH; i++) {
  164.  
  165.     aTotal[i] = CHSV(0, 0, 0);
  166.     aTotal[i + NUM_LEDS_ABRANCH] = CHSV(0, 0, 0);
  167.     aTotal[i + (2 * NUM_LEDS_ABRANCH)] = CHSV(0, 0, 0);
  168.     aTotal[i + (3 * NUM_LEDS_ABRANCH)] = CHSV(0, 0, 0);
  169.     aTotal[i + (4 * NUM_LEDS_ABRANCH)] = CHSV(0, 0, 0);
  170.     aTotal[(2 * NUM_LEDS_ATAIL) - i - 1] = CHSV(0, 0, 0);
  171.     FastLED.show();
  172.     delay(RATE_OF_FILL);
  173.   }
  174. }
  175.  
  176. //**********A Functions**********
  177.  
  178. void aBranchFillOut(CRGB color, uint8_t from, uint8_t to) {
  179.   for (uint8_t i = from; i <= to; i++) {
  180.     cTotal[i] = color;
  181.     FastLED.show();
  182.   }
  183. }
  184.  
  185. void cBranchFillOut(CRGB color, uint8_t from, uint8_t to) {
  186.   for (uint8_t i = from; i <= to; i++) {
  187.     cTotal[i] = color;
  188.     FastLED.show();
  189.   }
  190. }
  191.  
  192. /*void ChangeABC()
  193. {
  194.   uint8_t secondHand = (millis() / 1000) % 60;
  195.   static uint8_t lastSecond = 19;
  196.  
  197.   if( lastSecond != secondHand) {
  198.     lastSecond = secondHand;
  199.     if( secondHand ==  0)  { Salute(); }
  200.     if( secondHand ==  5)  { Willow(); }
  201.     if( secondHand == 10)  { Shimmer(); }
  202.     if( secondHand == 15)  { Peony(); }
  203.   }
  204. } */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement