Guest User

Untitled

a guest
Nov 27th, 2017
4,240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 92.80 KB | None | 0 0
  1. // Author: Mike Katchmar
  2. // E-mail: [email protected]
  3. //
  4. // OK to use for non-commercial use. If you do re-use or use as basis for your own
  5. // project please share video with Mike! Maybe we can all learn something. :)
  6. //
  7. // Rev5 = first display in public - 11/23/2017 code complete
  8.  
  9.  
  10. #include "FastLED.h"
  11.  
  12. #define DATA_PIN 10 // was 10 for "non production" units
  13. #define BRIGHTNESS_PIN A1
  14. #define COLOR_ORDER RGB
  15. #define LED_TYPE WS2812
  16. #define NUM_LEDS 174
  17.  
  18. #define FRAMES_PER_SECOND 120
  19.  
  20.  
  21.  
  22. // brightness control added 3/6/2016
  23. // original limits:
  24. //#define MASTER_BRIGHTNESS 30
  25. #define MASTER_BRIGHTNESS 128 // Set the master brigtness value [should be greater then min_brightness value].
  26. //#define MASTER_BRIGHTNESS 192 // Set the master brigtness value [should be greater then min_brightness value].
  27. //#define MIN_BRIGHTNESS 30 // Set a minimum brightness level.
  28. #define MIN_BRIGHTNESS 10 // Set a minimum brightness level.
  29. int potValA; // Variable to store potentiometer A value (for brightness A)
  30. uint8_t brightnessa; // Mapped master brightness for color A based on potentiometer reading.
  31.  
  32. #define NUM_VIRTUAL_LEDS NUM_LEDS+1
  33. #define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0]))
  34. CRGB leds[NUM_VIRTUAL_LEDS];
  35.  
  36.  
  37.  
  38. // Snowflake Structures
  39. const uint8_t snowInnerRingCount = 18;
  40.  
  41. static const uint8_t snowInnerRingArray[] PROGMEM =
  42. { 0, 1, 2, 3, 4, 5 , 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 };
  43.  
  44.  
  45. const uint8_t snowOuterRingCount = 24;
  46.  
  47. static const uint8_t snowOuterRingArray[] PROGMEM =
  48. { 173, 18, 19, 20,
  49. 43, 44, 45, 46,
  50. 69, 70, 71, 72,
  51. 95, 96, 97, 98,
  52. 121, 122, 123, 124,
  53. 147, 148, 149, 150};
  54.  
  55. const uint8_t flakeBranch1Count = 26;
  56. const uint8_t flakeBranch2Count = 26;
  57. const uint8_t flakeBranch3Count = 26;
  58. const uint8_t flakeBranch4Count = 26;
  59. const uint8_t flakeBranch5Count = 26;
  60. const uint8_t flakeBranch6Count = 26;
  61.  
  62. // Full Sized Branch
  63. static const uint8_t flakeBranch1Array[] PROGMEM =
  64. { 0, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 1};
  65. static const uint8_t flakeBranch2Array[] PROGMEM =
  66. { 3, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 4};
  67. static const uint8_t flakeBranch3Array[] PROGMEM =
  68. { 6, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 7};
  69. static const uint8_t flakeBranch4Array[] PROGMEM =
  70. { 9, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 10};
  71. static const uint8_t flakeBranch5Array[] PROGMEM =
  72. { 12, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 13};
  73. static const uint8_t flakeBranch6Array[] PROGMEM =
  74. { 15, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 16};
  75.  
  76.  
  77. const uint8_t flakeChervon1Count = 16;
  78. const uint8_t flakeChervon2Count = 16;
  79. const uint8_t flakeChervon3Count = 16;
  80. const uint8_t flakeChervon4Count = 16;
  81. const uint8_t flakeChervon5Count = 16;
  82. const uint8_t flakeChervon6Count = 16;
  83.  
  84. // Just the "chevron" part of the branch
  85. static const uint8_t flakeChervon1Array[] PROGMEM =
  86. { 22, 23, 24, 25, 26, 27, 28, 29, 34, 35, 36, 37, 38, 39, 40, 41};
  87. static const uint8_t flakeChervon2Array[] PROGMEM =
  88. { 48, 49, 50, 51, 52, 53, 54, 55, 60, 61, 62, 63, 64, 65, 66, 67};
  89. static const uint8_t flakeChervon3Array[] PROGMEM =
  90. { 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93};
  91. static const uint8_t flakeChervon4Array[] PROGMEM =
  92. { 100, 101, 102, 103, 104, 105, 106, 107, 112, 113, 114, 115, 116, 117, 118, 119};
  93. static const uint8_t flakeChervon5Array[] PROGMEM =
  94. { 126, 127, 128, 129, 130, 131, 132, 133, 138, 139, 140, 141, 142, 143, 144, 145};
  95. static const uint8_t flakeChervon6Array[] PROGMEM =
  96. { 152, 153, 154, 155, 156, 157, 158, 159, 164, 165, 166, 167, 168, 169, 170, 171};
  97.  
  98.  
  99.  
  100.  
  101. /* Are these still used?
  102. *
  103. */
  104. uint16_t holdTime = 60; // Milliseconds to hold position before advancing.
  105. uint8_t spacing = 20; // Sets pixel spacing. [Use 2 or greater]
  106. int8_t delta = 1; // Sets forward or backwards direction amount. (Can be negative.)
  107. uint8_t width = 3; // Can increase the number of pixels (width) of the chase. [1 or greater]
  108.  
  109. uint8_t hue = 60; // Starting color (marque_v3)
  110.  
  111. boolean fadingTail = 1; // Add fading tail? [1=true, 0=falue]
  112. //uint8_t fadeRate = 150; // How fast to fade out tail. [0-255]
  113. uint8_t fadeRate = 70; // How fast to fade out tail. [0-255]
  114.  
  115. uint8_t hue2_shift = 60; // Hue shift for secondary color. Use 0 for no shift. [0-255]
  116. boolean DEBUG = 1; // Print some info to serial monitor. [1=true, 0=falue]
  117.  
  118. int16_t pos; // Pixel position.
  119. int8_t advance; // Stores the advance amount.
  120. uint8_t color; // Stores a hue color.
  121.  
  122.  
  123.  
  124. // =============================================================================
  125. // setup routine
  126. // =============================================================================
  127. // put your setup code here, to run once:
  128. void setup() {
  129. delay(1500); // 3 second delay for recovery
  130. Serial.begin(57600);
  131.  
  132. // tell FastLED about the LED strip configuration
  133. FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  134. }
  135.  
  136.  
  137. // List of patterns to cycle through. Each is defined as a separate function below.
  138. typedef void (*SimplePatternList[])();
  139. //SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
  140. //SimplePatternList gPatterns = { rainbow, sinelon, juggle, bpm }; // These are 4 patterns are very energetic, they should be used intermittenly within the whole solution, maybe 1 per 2 above?
  141. //SimplePatternList gPatterns = { twinklefox };
  142.  
  143. // 9/4/2017 -- marque_v3 is failing with Snowflake.... look at hardcoded variables or change some other variable value?
  144.  
  145. // this list of patterns is good :) 9/27/2017
  146. // consider using "bpm"
  147. // SimplePatternList gPatterns = { wipe_top_to_bottom, branch_fade, wipe_left_to_right, confetti, center_ying_yang, TestGlitter, center_rainbow, snowflake_solid_shape_in_out_flip, gradient_fill_allbranches_snowflake, grow_allbranches_snowflake, trace_flake_allbranches_snowflake, fulldisplay_w_flash };
  148. SimplePatternList gPatterns = { grow_allbranches_snowflake, center_ying_yang, wipe_left_to_right, TestGlitter, center_rainbow, trace_flake_allbranches_snowflake, snowflake_solid_shape_in_out_flip, confetti, branch_fade, wipe_top_to_bottom, gradient_fill_allbranches_snowflake, fulldisplay_w_flash };
  149.  
  150.  
  151. uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current
  152. uint8_t gHue = 0; // rotating "base color" used by many of the patterns
  153.  
  154.  
  155.  
  156. // =============================================================================
  157. // loop routine
  158. // =============================================================================
  159. // put your main code here, to run repeatedly:
  160. void loop() {
  161.  
  162. // brightness control
  163. // potValA = analogRead(BRIGHTNESS_PIN); // Read potentiometer B (for brightness).
  164. //Serial.println (potValA);
  165. // brightnessa = map(potValA, 0, 1023, MIN_BRIGHTNESS, MASTER_BRIGHTNESS);
  166. // Map value between min_brightness and MASTER brightness values.
  167. // Note: We are limiting the lowest possible brightness value to the
  168. // min_brightness value assigned up top.
  169. FastLED.setBrightness(MASTER_BRIGHTNESS);
  170. //Serial.println (brightnessa);
  171.  
  172.  
  173. // Call the current pattern function once, updating the 'leds' array
  174. gPatterns[gCurrentPatternNumber]();
  175.  
  176.  
  177. // send the 'leds' array out to the actual LED strip
  178. FastLED.show();
  179. // insert a delay to keep the framerate modest
  180. FastLED.delay(1000/FRAMES_PER_SECOND);
  181.  
  182.  
  183. // do some periodic updates
  184. EVERY_N_MILLISECONDS( 20 ) { gHue++; } // slowly cycle the "base color" through the rainbow
  185. EVERY_N_SECONDS( 12 ) { nextPattern(); } // change patterns periodically
  186.  
  187. EVERY_N_SECONDS(10){ // Demo: Change the hue every N seconds.
  188. hue = hue + random8(30,61); // Shift the hue to something new.
  189. }
  190.  
  191. }
  192.  
  193.  
  194.  
  195. // =============================================================================
  196. // Sub-Routines
  197. // =============================================================================
  198.  
  199.  
  200. void nextPattern()
  201. {
  202. // add one to the current pattern number, and wrap around at the end
  203. gCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns);
  204. }
  205.  
  206.  
  207.  
  208.  
  209. // ========================================
  210. // Routines for Pattern Display
  211. // ========================================
  212.  
  213. void trace_inner_ring_snowflake() {
  214.  
  215. uint8_t hue1 = random8(255);
  216. uint8_t offset2;
  217.  
  218. for (int i=0; i<snowInnerRingCount; i++) {
  219. uint8_t offset = pgm_read_byte(&snowInnerRingArray[i]);
  220. /*
  221. Serial.print ("i=");
  222. Serial.print (i);
  223. Serial.print (" array location = ");
  224. Serial.println (offset);
  225. */
  226. leds[offset] = CHSV(hue1, 255, 255);
  227.  
  228. if ( (i+1)<snowInnerRingCount ) {
  229. offset2 = pgm_read_byte(&snowInnerRingArray[i+1]);
  230. }
  231. else {
  232. offset2 = pgm_read_byte(&snowInnerRingArray[i+1-snowInnerRingCount]);
  233. }
  234. leds[offset2] = CHSV(hue1, 255, 255);
  235.  
  236. FastLED.show();
  237. leds[offset] = CRGB::Black;
  238. //delay(35);
  239. delay(65);
  240. }
  241. }
  242.  
  243. void trace_outer_ring_snowflake() {
  244.  
  245. uint8_t hue1 = random8(255);
  246. uint8_t offset2;
  247.  
  248. for (int i=0; i<snowOuterRingCount; i++) {
  249. uint8_t offset = pgm_read_byte(&snowOuterRingArray[i]);
  250. /*
  251. Serial.print ("i=");
  252. Serial.print (i);
  253. Serial.print (" array location = ");
  254. Serial.println (offset);
  255. */
  256. leds[offset] = CHSV(hue1, 255, 255);
  257.  
  258. if ( (i+1)<snowOuterRingCount ) {
  259. offset2 = pgm_read_byte(&snowOuterRingArray[i+1]);
  260. }
  261. else {
  262. offset2 = pgm_read_byte(&snowOuterRingArray[i+1-snowOuterRingCount]);
  263. }
  264. leds[offset2] = CHSV(hue1, 255, 255);
  265.  
  266. FastLED.show();
  267. leds[offset] = CRGB::Black;
  268. //delay(35);
  269. delay(265);
  270. }
  271. }
  272.  
  273.  
  274. void trace_flake_branch1_snowflake() {
  275.  
  276. uint8_t hue1 = random8(255);
  277. uint8_t offset2;
  278.  
  279. for (int i=0; i<flakeBranch1Count; i++) {
  280. uint8_t offset = pgm_read_byte(&flakeBranch1Array[i]);
  281. leds[offset] = CHSV(hue1, 255, 255);
  282.  
  283. if ( (i+1)<flakeBranch1Count ) {
  284. offset2 = pgm_read_byte(&flakeBranch1Array[i+1]);
  285. }
  286. else {
  287. offset2 = pgm_read_byte(&flakeBranch1Array[i+1-flakeBranch1Count]);
  288. }
  289. leds[offset2] = CHSV(hue1, 255, 255);
  290.  
  291. FastLED.show();
  292. leds[offset] = CRGB::Black;
  293. delay(35);
  294. }
  295. }
  296.  
  297.  
  298. void trace_flake_branch2_snowflake() {
  299.  
  300. uint8_t hue1 = random8(255);
  301. uint8_t offset2;
  302.  
  303. for (int i=0; i<flakeBranch2Count; i++) {
  304. uint8_t offset = pgm_read_byte(&flakeBranch2Array[i]);
  305. leds[offset] = CHSV(hue1, 255, 255);
  306.  
  307. if ( (i+1)<flakeBranch2Count ) {
  308. offset2 = pgm_read_byte(&flakeBranch2Array[i+1]);
  309. }
  310. else {
  311. offset2 = pgm_read_byte(&flakeBranch2Array[i+1-flakeBranch2Count]);
  312. }
  313. leds[offset2] = CHSV(hue1, 255, 255);
  314.  
  315. FastLED.show();
  316. leds[offset] = CRGB::Black;
  317. delay(35);
  318. }
  319. }
  320.  
  321. void trace_flake_branch3_snowflake() {
  322.  
  323. uint8_t hue1 = random8(255);
  324. uint8_t offset2;
  325.  
  326. for (int i=0; i<flakeBranch3Count; i++) {
  327. uint8_t offset = pgm_read_byte(&flakeBranch3Array[i]);
  328. leds[offset] = CHSV(hue1, 255, 255);
  329.  
  330. if ( (i+1)<flakeBranch3Count ) {
  331. offset2 = pgm_read_byte(&flakeBranch3Array[i+1]);
  332. }
  333. else {
  334. offset2 = pgm_read_byte(&flakeBranch3Array[i+1-flakeBranch3Count]);
  335. }
  336. leds[offset2] = CHSV(hue1, 255, 255);
  337.  
  338. FastLED.show();
  339. leds[offset] = CRGB::Black;
  340. delay(35);
  341. }
  342. }
  343.  
  344. void trace_flake_branch4_snowflake() {
  345.  
  346. uint8_t hue1 = random8(255);
  347. uint8_t offset2;
  348.  
  349. for (int i=0; i<flakeBranch4Count; i++) {
  350. uint8_t offset = pgm_read_byte(&flakeBranch4Array[i]);
  351. leds[offset] = CHSV(hue1, 255, 255);
  352.  
  353. if ( (i+1)<flakeBranch4Count ) {
  354. offset2 = pgm_read_byte(&flakeBranch4Array[i+1]);
  355. }
  356. else {
  357. offset2 = pgm_read_byte(&flakeBranch4Array[i+1-flakeBranch4Count]);
  358. }
  359. leds[offset2] = CHSV(hue1, 255, 255);
  360.  
  361. FastLED.show();
  362. leds[offset] = CRGB::Black;
  363. delay(35);
  364. }
  365. }
  366.  
  367. void trace_flake_branch5_snowflake() {
  368.  
  369. uint8_t hue1 = random8(255);
  370. uint8_t offset2;
  371.  
  372. for (int i=0; i<flakeBranch5Count; i++) {
  373. uint8_t offset = pgm_read_byte(&flakeBranch5Array[i]);
  374. leds[offset] = CHSV(hue1, 255, 255);
  375.  
  376. if ( (i+1)<flakeBranch5Count ) {
  377. offset2 = pgm_read_byte(&flakeBranch5Array[i+1]);
  378. }
  379. else {
  380. offset2 = pgm_read_byte(&flakeBranch5Array[i+1-flakeBranch5Count]);
  381. }
  382. leds[offset2] = CHSV(hue1, 255, 255);
  383.  
  384. FastLED.show();
  385. leds[offset] = CRGB::Black;
  386. delay(35);
  387. }
  388. }
  389.  
  390. void trace_flake_branch6_snowflake() {
  391.  
  392. uint8_t hue1 = random8(255);
  393. uint8_t offset2;
  394.  
  395. for (int i=0; i<flakeBranch6Count; i++) {
  396. uint8_t offset = pgm_read_byte(&flakeBranch6Array[i]);
  397. leds[offset] = CHSV(hue1, 255, 255);
  398.  
  399. if ( (i+1)<flakeBranch6Count ) {
  400. offset2 = pgm_read_byte(&flakeBranch6Array[i+1]);
  401. }
  402. else {
  403. offset2 = pgm_read_byte(&flakeBranch6Array[i+1-flakeBranch6Count]);
  404. }
  405. leds[offset2] = CHSV(hue1, 255, 255);
  406.  
  407. FastLED.show();
  408. leds[offset] = CRGB::Black;
  409. delay(35);
  410. }
  411. }
  412.  
  413.  
  414. // 2 pixel wide trace
  415. void trace_flake_allbranches_snowflake() {
  416.  
  417. uint8_t hue1 = random8(255);
  418. uint8_t offset2_br1;
  419. uint8_t offset2_br2;
  420. uint8_t offset2_br3;
  421. uint8_t offset2_br4;
  422. uint8_t offset2_br5;
  423. uint8_t offset2_br6;
  424.  
  425. FastLED.clear();
  426.  
  427. for (int i=0; i<flakeBranch1Count; i++) {
  428. uint8_t offset_br1 = pgm_read_byte(&flakeBranch1Array[i]);
  429. uint8_t offset_br2 = pgm_read_byte(&flakeBranch2Array[i]);
  430. uint8_t offset_br3 = pgm_read_byte(&flakeBranch3Array[i]);
  431. uint8_t offset_br4 = pgm_read_byte(&flakeBranch4Array[i]);
  432. uint8_t offset_br5 = pgm_read_byte(&flakeBranch5Array[i]);
  433. uint8_t offset_br6 = pgm_read_byte(&flakeBranch6Array[i]);
  434.  
  435. // set one LED per branch
  436. leds[offset_br1] = CHSV(hue1, 255, 255);
  437. leds[offset_br2] = CHSV(hue1, 255, 255);
  438. leds[offset_br3] = CHSV(hue1, 255, 255);
  439. leds[offset_br4] = CHSV(hue1, 255, 255);
  440. leds[offset_br5] = CHSV(hue1, 255, 255);
  441. leds[offset_br6] = CHSV(hue1, 255, 255);
  442.  
  443. // now set one LED as a look-ahead per branch
  444. if ( (i+1)<flakeBranch1Count ) {
  445. offset2_br1 = pgm_read_byte(&flakeBranch1Array[i+1]);
  446. offset2_br2 = pgm_read_byte(&flakeBranch2Array[i+1]);
  447. offset2_br3 = pgm_read_byte(&flakeBranch3Array[i+1]);
  448. offset2_br4 = pgm_read_byte(&flakeBranch4Array[i+1]);
  449. offset2_br5 = pgm_read_byte(&flakeBranch5Array[i+1]);
  450. offset2_br6 = pgm_read_byte(&flakeBranch6Array[i+1]);
  451. }
  452. else {
  453. offset2_br1 = pgm_read_byte(&flakeBranch1Array[i+1-flakeBranch1Count]);
  454. offset2_br2 = pgm_read_byte(&flakeBranch2Array[i+1-flakeBranch2Count]);
  455. offset2_br3 = pgm_read_byte(&flakeBranch3Array[i+1-flakeBranch3Count]);
  456. offset2_br4 = pgm_read_byte(&flakeBranch4Array[i+1-flakeBranch4Count]);
  457. offset2_br5 = pgm_read_byte(&flakeBranch5Array[i+1-flakeBranch5Count]);
  458. offset2_br6 = pgm_read_byte(&flakeBranch6Array[i+1-flakeBranch6Count]);
  459. }
  460. leds[offset2_br1] = CHSV(hue1, 255, 255);
  461. leds[offset2_br2] = CHSV(hue1, 255, 255);
  462. leds[offset2_br3] = CHSV(hue1, 255, 255);
  463. leds[offset2_br4] = CHSV(hue1, 255, 255);
  464. leds[offset2_br5] = CHSV(hue1, 255, 255);
  465. leds[offset2_br6] = CHSV(hue1, 255, 255);
  466.  
  467. FastLED.show();
  468. leds[offset_br1] = CRGB::Black;
  469. leds[offset_br2] = CRGB::Black;
  470. leds[offset_br3] = CRGB::Black;
  471. leds[offset_br4] = CRGB::Black;
  472. leds[offset_br5] = CRGB::Black;
  473. leds[offset_br6] = CRGB::Black;
  474. delay(40);
  475. }
  476. }
  477.  
  478. void gradient_fill_allbranches_snowflake() {
  479.  
  480. uint8_t offset_br1;
  481. uint8_t offset_br2;
  482. uint8_t offset_br3;
  483. uint8_t offset_br4;
  484. uint8_t offset_br5;
  485. uint8_t offset_br6;
  486.  
  487. uint8_t hue1 = random8(255);
  488. uint8_t hue2 = hue1 + random8(30,61);
  489. uint8_t offset2;
  490.  
  491. // this is where the magic happens -- define temp array to hold values
  492. CRGB grad[flakeBranch1Count]; // A place to save the gradient colors. (Don't edit this)
  493. // fill "holder array - grad" then copy values to each branch in the array below
  494. fill_gradient (grad, 0, CHSV(hue1, 255, 255), flakeBranch1Count, CHSV(hue2, 255, 255), SHORTEST_HUES);
  495.  
  496.  
  497. // display each pixel one at a time
  498. for( int i = 0; i < flakeBranch1Count; i++){
  499.  
  500. offset_br1 = pgm_read_byte(&flakeBranch1Array[i]);
  501. offset_br2 = pgm_read_byte(&flakeBranch2Array[i]);
  502. offset_br3 = pgm_read_byte(&flakeBranch3Array[i]);
  503. offset_br4 = pgm_read_byte(&flakeBranch4Array[i]);
  504. offset_br5 = pgm_read_byte(&flakeBranch5Array[i]);
  505. offset_br6 = pgm_read_byte(&flakeBranch6Array[i]);
  506.  
  507. leds[offset_br1] = grad[i];
  508. leds[offset_br2] = grad[i];
  509. leds[offset_br3] = grad[i];
  510. leds[offset_br4] = grad[i];
  511. leds[offset_br5] = grad[i];
  512. leds[offset_br6] = grad[i];
  513.  
  514. delay(18);
  515. FastLED.show();
  516. }
  517. //FastLED.clear();
  518. }
  519.  
  520.  
  521. void snowflake_solid_shape_in_out_flip() {
  522.  
  523. const uint8_t COUNT_RING = 42;
  524. uint8_t offset_ring_inner;
  525. uint8_t offset_ring_outer;
  526. uint8_t offset_chevron1;
  527. uint8_t offset_chevron2;
  528. uint8_t offset_chevron3;
  529. uint8_t offset_chevron4;
  530. uint8_t offset_chevron5;
  531. uint8_t offset_chevron6;
  532.  
  533. CRGB color_code1;
  534. CRGB color_code2;
  535.  
  536.  
  537. for( int run_number = 0; run_number < 10; run_number++){
  538.  
  539. // change the color every cycle through
  540. // color options:
  541. // https://github.com/FastLED/FastLED/blob/03d12093a92ee2b64fabb03412aa0c3e4f6384dd/pixeltypes.h
  542. switch (run_number) {
  543. case 0:
  544. color_code1 = CRGB::Blue;
  545. color_code2 = CRGB::FireBrick;
  546. break;
  547. case 1:
  548. color_code1 = CRGB::Yellow;
  549. color_code2 = CRGB::DeepPink;
  550. break;
  551. case 2:
  552. color_code1 = CRGB::SpringGreen;
  553. color_code2 = CRGB::Silver;
  554. break;
  555. case 3:
  556. color_code1 = CRGB::Green;
  557. color_code2 = CRGB::Fuchsia;
  558. break;
  559. case 4:
  560. color_code1 = CRGB::Tomato;
  561. color_code2 = CRGB::DarkSlateGray;
  562. break;
  563. case 5:
  564. color_code1 = CRGB::DarkRed;
  565. color_code2 = CRGB::Goldenrod; // white
  566. break;
  567. case 6:
  568. color_code1 = CRGB::Honeydew; // MistyRose; // white
  569. color_code2 = CRGB::DarkOrange;
  570. break;
  571. case 7:
  572. color_code1 = CRGB::DeepPink;
  573. color_code2 = CRGB::Red;
  574. break;
  575. case 8:
  576. color_code1 = CRGB::Cyan;
  577. color_code2 = CRGB::Crimson;
  578. break;
  579. case 9:
  580. color_code1 = CRGB::Amethyst;
  581. color_code2 = CRGB::Yellow;
  582. break;
  583. default:
  584. // keep other color
  585. break;
  586. }
  587.  
  588. // STEP 1:
  589. // Build Inner Ring
  590. for( int i = 0; i < snowInnerRingCount; i++){
  591. offset_ring_inner = pgm_read_byte(&snowInnerRingArray[i]);
  592. leds[offset_ring_inner] = color_code1;
  593. }
  594. for( int i = 0; i < snowOuterRingCount; i++){
  595. offset_ring_outer = pgm_read_byte(&snowOuterRingArray[i]);
  596. leds[offset_ring_outer] = color_code1;
  597. }
  598. // Build 6 Chervons
  599. for( int j = 0; j < flakeChervon1Count; j++){
  600. offset_chevron1 = pgm_read_byte(&flakeChervon1Array[j]);
  601. offset_chevron2 = pgm_read_byte(&flakeChervon2Array[j]);
  602. offset_chevron3 = pgm_read_byte(&flakeChervon3Array[j]);
  603. offset_chevron4 = pgm_read_byte(&flakeChervon4Array[j]);
  604. offset_chevron5 = pgm_read_byte(&flakeChervon5Array[j]);
  605. offset_chevron6 = pgm_read_byte(&flakeChervon6Array[j]);
  606. leds[offset_chevron1] = color_code1;
  607. leds[offset_chevron2] = color_code1;
  608. leds[offset_chevron3] = color_code1;
  609. leds[offset_chevron4] = color_code1;
  610. leds[offset_chevron5] = color_code1;
  611. leds[offset_chevron6] = color_code1;
  612. }
  613.  
  614. FastLED.show();
  615. delay(700);
  616. FastLED.clear();
  617.  
  618. // STEP2 2:
  619. // Wipe & Show Other View
  620. // Build 6 Branches
  621. for( int j = 0; j < flakeBranch1Count; j++){
  622. offset_chevron1 = pgm_read_byte(&flakeBranch1Array[j]);
  623. offset_chevron2 = pgm_read_byte(&flakeBranch2Array[j]);
  624. offset_chevron3 = pgm_read_byte(&flakeBranch3Array[j]);
  625. offset_chevron4 = pgm_read_byte(&flakeBranch4Array[j]);
  626. offset_chevron5 = pgm_read_byte(&flakeBranch5Array[j]);
  627. offset_chevron6 = pgm_read_byte(&flakeBranch6Array[j]);
  628. leds[offset_chevron1] = color_code2;
  629. leds[offset_chevron2] = color_code2;
  630. leds[offset_chevron3] = color_code2;
  631. leds[offset_chevron4] = color_code2;
  632. leds[offset_chevron5] = color_code2;
  633. leds[offset_chevron6] = color_code2;
  634. }
  635.  
  636. FastLED.show();
  637. delay(700);
  638. FastLED.clear();
  639. }
  640.  
  641. }
  642.  
  643.  
  644.  
  645. void grow_allbranches_snowflake() {
  646.  
  647. const uint8_t NUM_PHASES = 35;
  648.  
  649. uint8_t offset_br1_led1, offset_br1_led2, offset_br1_led3, offset_br1_led4;
  650. uint8_t offset_br2_led1, offset_br2_led2, offset_br2_led3, offset_br2_led4;
  651. uint8_t offset_br3_led1, offset_br3_led2, offset_br3_led3, offset_br3_led4;
  652. uint8_t offset_br4_led1, offset_br4_led2, offset_br4_led3, offset_br4_led4;
  653. uint8_t offset_br5_led1, offset_br5_led2, offset_br5_led3, offset_br5_led4;
  654. uint8_t offset_br6_led1, offset_br6_led2, offset_br6_led3, offset_br6_led4;
  655.  
  656. // pick a random color
  657. uint8_t hue1 = random8(255);
  658.  
  659.  
  660. for (int i=0; i<NUM_PHASES; i++) {
  661.  
  662. switch (i) {
  663. case 0:
  664. // turn all LEDs off??
  665. break;
  666.  
  667. case 1:
  668. // build the flake (2 wide, 1 tall)
  669. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[0]);
  670. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[25]);
  671. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  672. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  673.  
  674. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[0]);
  675. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[25]);
  676. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  677. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  678.  
  679. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[0]);
  680. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[25]);
  681. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  682. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  683.  
  684. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[0]);
  685. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[25]);
  686. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  687. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  688.  
  689. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[0]);
  690. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[25]);
  691. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  692. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  693.  
  694. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[0]);
  695. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[25]);
  696. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  697. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  698.  
  699. break;
  700.  
  701. case 2:
  702. // build the flake (2 wide, 2 tall)
  703. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[1]);
  704. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[24]);
  705. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  706. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  707.  
  708. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[1]);
  709. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[24]);
  710. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  711. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  712.  
  713. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[1]);
  714. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[24]);
  715. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  716. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  717.  
  718. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[1]);
  719. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[24]);
  720. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  721. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  722.  
  723. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[1]);
  724. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[24]);
  725. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  726. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  727.  
  728. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[1]);
  729. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[24]);
  730. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  731. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  732.  
  733. break;
  734.  
  735. case 3:
  736. // build the flake (2 wide, 3 tall)
  737. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[2]);
  738. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[23]);
  739. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  740. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  741.  
  742. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[2]);
  743. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[23]);
  744. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  745. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  746.  
  747. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[2]);
  748. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[23]);
  749. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  750. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  751.  
  752. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[2]);
  753. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[23]);
  754. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  755. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  756.  
  757. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[2]);
  758. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[23]);
  759. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  760. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  761.  
  762. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[2]);
  763. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[23]);
  764. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  765. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  766.  
  767. break;
  768.  
  769. case 4:
  770. // build the flake (2 wide, 4 tall)
  771. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[3]);
  772. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[22]);
  773. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  774. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  775.  
  776. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[3]);
  777. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[22]);
  778. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  779. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  780.  
  781. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[3]);
  782. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[22]);
  783. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  784. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  785.  
  786. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[3]);
  787. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[22]);
  788. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  789. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  790.  
  791. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[3]);
  792. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[22]);
  793. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  794. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  795.  
  796. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[3]);
  797. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[22]);
  798. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  799. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  800.  
  801. break;
  802.  
  803. case 5:
  804. // build the flake (2 wide, 5 tall)
  805. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[10]);
  806. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[15]);
  807. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  808. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  809.  
  810. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[10]);
  811. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[15]);
  812. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  813. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  814.  
  815. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[10]);
  816. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[15]);
  817. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  818. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  819.  
  820. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[10]);
  821. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[15]);
  822. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  823. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  824.  
  825. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[10]);
  826. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[15]);
  827. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  828. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  829.  
  830. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[10]);
  831. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[15]);
  832. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  833. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  834.  
  835. break;
  836.  
  837. case 6:
  838. // build the flake (2 wide, 5 tall, 1 high each side branch)
  839. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[4]);
  840. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[9]);
  841. offset_br1_led3 = pgm_read_byte(&flakeBranch1Array[16]);
  842. offset_br1_led4 = pgm_read_byte(&flakeBranch1Array[21]);
  843. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  844. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  845. leds[offset_br1_led3] = CHSV(hue1+10*i, 255, 255);
  846. leds[offset_br1_led4] = CHSV(hue1+10*i, 255, 255);
  847.  
  848. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[4]);
  849. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[9]);
  850. offset_br2_led3 = pgm_read_byte(&flakeBranch2Array[16]);
  851. offset_br2_led4 = pgm_read_byte(&flakeBranch2Array[21]);
  852. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  853. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  854. leds[offset_br2_led3] = CHSV(hue1+10*i, 255, 255);
  855. leds[offset_br2_led4] = CHSV(hue1+10*i, 255, 255);
  856.  
  857. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[4]);
  858. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[9]);
  859. offset_br3_led3 = pgm_read_byte(&flakeBranch3Array[16]);
  860. offset_br3_led4 = pgm_read_byte(&flakeBranch3Array[21]);
  861. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  862. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  863. leds[offset_br3_led3] = CHSV(hue1+10*i, 255, 255);
  864. leds[offset_br3_led4] = CHSV(hue1+10*i, 255, 255);
  865.  
  866. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[4]);
  867. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[9]);
  868. offset_br4_led3 = pgm_read_byte(&flakeBranch4Array[16]);
  869. offset_br4_led4 = pgm_read_byte(&flakeBranch4Array[21]);
  870. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  871. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  872. leds[offset_br4_led3] = CHSV(hue1+10*i, 255, 255);
  873. leds[offset_br4_led4] = CHSV(hue1+10*i, 255, 255);
  874.  
  875. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[4]);
  876. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[9]);
  877. offset_br5_led3 = pgm_read_byte(&flakeBranch5Array[16]);
  878. offset_br5_led4 = pgm_read_byte(&flakeBranch5Array[21]);
  879. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  880. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  881. leds[offset_br5_led3] = CHSV(hue1+10*i, 255, 255);
  882. leds[offset_br5_led4] = CHSV(hue1+10*i, 255, 255);
  883.  
  884. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[4]);
  885. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[9]);
  886. offset_br6_led3 = pgm_read_byte(&flakeBranch6Array[16]);
  887. offset_br6_led4 = pgm_read_byte(&flakeBranch6Array[21]);
  888. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  889. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  890. leds[offset_br6_led3] = CHSV(hue1+10*i, 255, 255);
  891. leds[offset_br6_led4] = CHSV(hue1+10*i, 255, 255);
  892.  
  893. break;
  894.  
  895. case 7:
  896. // build the flake (2 wide, 6 tall, 1 high each side branch)
  897. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[11]);
  898. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[14]);
  899. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  900. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  901.  
  902. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[11]);
  903. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[14]);
  904. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  905. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  906.  
  907. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[11]);
  908. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[14]);
  909. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  910. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  911.  
  912. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[11]);
  913. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[14]);
  914. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  915. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  916.  
  917. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[11]);
  918. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[14]);
  919. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  920. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  921.  
  922. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[11]);
  923. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[14]);
  924. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  925. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  926.  
  927. break;
  928.  
  929. case 8:
  930. // build the flake (2 wide, 6 tall, 2 high pix each side branch)
  931. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[5]);
  932. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[8]);
  933. offset_br1_led3 = pgm_read_byte(&flakeBranch1Array[17]);
  934. offset_br1_led4 = pgm_read_byte(&flakeBranch1Array[20]);
  935. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  936. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  937. leds[offset_br1_led3] = CHSV(hue1+10*i, 255, 255);
  938. leds[offset_br1_led4] = CHSV(hue1+10*i, 255, 255);
  939.  
  940. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[5]);
  941. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[8]);
  942. offset_br2_led3 = pgm_read_byte(&flakeBranch2Array[17]);
  943. offset_br2_led4 = pgm_read_byte(&flakeBranch2Array[20]);
  944. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  945. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  946. leds[offset_br2_led3] = CHSV(hue1+10*i, 255, 255);
  947. leds[offset_br2_led4] = CHSV(hue1+10*i, 255, 255);
  948.  
  949. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[5]);
  950. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[8]);
  951. offset_br3_led3 = pgm_read_byte(&flakeBranch3Array[17]);
  952. offset_br3_led4 = pgm_read_byte(&flakeBranch3Array[20]);
  953. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  954. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  955. leds[offset_br3_led3] = CHSV(hue1+10*i, 255, 255);
  956. leds[offset_br3_led4] = CHSV(hue1+10*i, 255, 255);
  957.  
  958. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[5]);
  959. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[8]);
  960. offset_br4_led3 = pgm_read_byte(&flakeBranch4Array[17]);
  961. offset_br4_led4 = pgm_read_byte(&flakeBranch4Array[20]);
  962. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  963. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  964. leds[offset_br4_led3] = CHSV(hue1+10*i, 255, 255);
  965. leds[offset_br4_led4] = CHSV(hue1+10*i, 255, 255);
  966.  
  967. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[5]);
  968. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[8]);
  969. offset_br5_led3 = pgm_read_byte(&flakeBranch5Array[17]);
  970. offset_br5_led4 = pgm_read_byte(&flakeBranch5Array[20]);
  971. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  972. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  973. leds[offset_br5_led3] = CHSV(hue1+10*i, 255, 255);
  974. leds[offset_br5_led4] = CHSV(hue1+10*i, 255, 255);
  975.  
  976. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[5]);
  977. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[8]);
  978. offset_br6_led3 = pgm_read_byte(&flakeBranch6Array[17]);
  979. offset_br6_led4 = pgm_read_byte(&flakeBranch6Array[20]);
  980. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  981. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  982. leds[offset_br6_led3] = CHSV(hue1+10*i, 255, 255);
  983. leds[offset_br6_led4] = CHSV(hue1+10*i, 255, 255);
  984.  
  985. break;
  986.  
  987. case 9:
  988. // build the flake (2 wide, 7 tall, 2 high each side branch)
  989. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[12]);
  990. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[13]);
  991. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  992. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  993.  
  994. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[12]);
  995. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[13]);
  996. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  997. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  998.  
  999. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[12]);
  1000. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[13]);
  1001. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  1002. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  1003.  
  1004. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[12]);
  1005. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[13]);
  1006. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  1007. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  1008.  
  1009. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[12]);
  1010. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[13]);
  1011. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  1012. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  1013.  
  1014. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[12]);
  1015. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[13]);
  1016. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  1017. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  1018.  
  1019. break;
  1020.  
  1021. case 10:
  1022. // build the flake (2 wide, 6 tall, 3 high pix each side branch)
  1023. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[6]);
  1024. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[7]);
  1025. offset_br1_led3 = pgm_read_byte(&flakeBranch1Array[18]);
  1026. offset_br1_led4 = pgm_read_byte(&flakeBranch1Array[19]);
  1027. leds[offset_br1_led1] = CHSV(hue1+10*i, 255, 255);
  1028. leds[offset_br1_led2] = CHSV(hue1+10*i, 255, 255);
  1029. leds[offset_br1_led3] = CHSV(hue1+10*i, 255, 255);
  1030. leds[offset_br1_led4] = CHSV(hue1+10*i, 255, 255);
  1031.  
  1032. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[6]);
  1033. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[7]);
  1034. offset_br2_led3 = pgm_read_byte(&flakeBranch2Array[18]);
  1035. offset_br2_led4 = pgm_read_byte(&flakeBranch2Array[19]);
  1036. leds[offset_br2_led1] = CHSV(hue1+10*i, 255, 255);
  1037. leds[offset_br2_led2] = CHSV(hue1+10*i, 255, 255);
  1038. leds[offset_br2_led3] = CHSV(hue1+10*i, 255, 255);
  1039. leds[offset_br2_led4] = CHSV(hue1+10*i, 255, 255);
  1040.  
  1041. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[6]);
  1042. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[7]);
  1043. offset_br3_led3 = pgm_read_byte(&flakeBranch3Array[18]);
  1044. offset_br3_led4 = pgm_read_byte(&flakeBranch3Array[19]);
  1045. leds[offset_br3_led1] = CHSV(hue1+10*i, 255, 255);
  1046. leds[offset_br3_led2] = CHSV(hue1+10*i, 255, 255);
  1047. leds[offset_br3_led3] = CHSV(hue1+10*i, 255, 255);
  1048. leds[offset_br3_led4] = CHSV(hue1+10*i, 255, 255);
  1049.  
  1050. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[6]);
  1051. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[7]);
  1052. offset_br4_led3 = pgm_read_byte(&flakeBranch4Array[18]);
  1053. offset_br4_led4 = pgm_read_byte(&flakeBranch4Array[19]);
  1054. leds[offset_br4_led1] = CHSV(hue1+10*i, 255, 255);
  1055. leds[offset_br4_led2] = CHSV(hue1+10*i, 255, 255);
  1056. leds[offset_br4_led3] = CHSV(hue1+10*i, 255, 255);
  1057. leds[offset_br4_led4] = CHSV(hue1+10*i, 255, 255);
  1058.  
  1059. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[6]);
  1060. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[7]);
  1061. offset_br5_led3 = pgm_read_byte(&flakeBranch5Array[18]);
  1062. offset_br5_led4 = pgm_read_byte(&flakeBranch5Array[19]);
  1063. leds[offset_br5_led1] = CHSV(hue1+10*i, 255, 255);
  1064. leds[offset_br5_led2] = CHSV(hue1+10*i, 255, 255);
  1065. leds[offset_br5_led3] = CHSV(hue1+10*i, 255, 255);
  1066. leds[offset_br5_led4] = CHSV(hue1+10*i, 255, 255);
  1067.  
  1068. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[6]);
  1069. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[7]);
  1070. offset_br6_led3 = pgm_read_byte(&flakeBranch6Array[18]);
  1071. offset_br6_led4 = pgm_read_byte(&flakeBranch6Array[19]);
  1072. leds[offset_br6_led1] = CHSV(hue1+10*i, 255, 255);
  1073. leds[offset_br6_led2] = CHSV(hue1+10*i, 255, 255);
  1074. leds[offset_br6_led3] = CHSV(hue1+10*i, 255, 255);
  1075. leds[offset_br6_led4] = CHSV(hue1+10*i, 255, 255);
  1076.  
  1077. break;
  1078.  
  1079. /* Desconstruct it */
  1080. case 21:
  1081. // de-build the flake (2 wide, 6 tall, 2 high pix each side branch)
  1082. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[6]);
  1083. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[7]);
  1084. offset_br1_led3 = pgm_read_byte(&flakeBranch1Array[18]);
  1085. offset_br1_led4 = pgm_read_byte(&flakeBranch1Array[19]);
  1086. leds[offset_br1_led1] = CRGB::Black;
  1087. leds[offset_br1_led2] = CRGB::Black;
  1088. leds[offset_br1_led3] = CRGB::Black;
  1089. leds[offset_br1_led4] = CRGB::Black;
  1090.  
  1091. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[6]);
  1092. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[7]);
  1093. offset_br2_led3 = pgm_read_byte(&flakeBranch2Array[18]);
  1094. offset_br2_led4 = pgm_read_byte(&flakeBranch2Array[19]);
  1095. leds[offset_br2_led1] = CRGB::Black;
  1096. leds[offset_br2_led2] = CRGB::Black;
  1097. leds[offset_br2_led3] = CRGB::Black;
  1098. leds[offset_br2_led4] = CRGB::Black;
  1099.  
  1100. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[6]);
  1101. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[7]);
  1102. offset_br3_led3 = pgm_read_byte(&flakeBranch3Array[18]);
  1103. offset_br3_led4 = pgm_read_byte(&flakeBranch3Array[19]);
  1104. leds[offset_br3_led1] = CRGB::Black;
  1105. leds[offset_br3_led2] = CRGB::Black;
  1106. leds[offset_br3_led3] = CRGB::Black;
  1107. leds[offset_br3_led4] = CRGB::Black;
  1108.  
  1109. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[6]);
  1110. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[7]);
  1111. offset_br4_led3 = pgm_read_byte(&flakeBranch4Array[18]);
  1112. offset_br4_led4 = pgm_read_byte(&flakeBranch4Array[19]);
  1113. leds[offset_br4_led1] = CRGB::Black;
  1114. leds[offset_br4_led2] = CRGB::Black;
  1115. leds[offset_br4_led3] = CRGB::Black;
  1116. leds[offset_br4_led4] = CRGB::Black;
  1117.  
  1118. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[6]);
  1119. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[7]);
  1120. offset_br5_led3 = pgm_read_byte(&flakeBranch5Array[18]);
  1121. offset_br5_led4 = pgm_read_byte(&flakeBranch5Array[19]);
  1122. leds[offset_br5_led1] = CRGB::Black;
  1123. leds[offset_br5_led2] = CRGB::Black;
  1124. leds[offset_br5_led3] = CRGB::Black;
  1125. leds[offset_br5_led4] = CRGB::Black;
  1126.  
  1127. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[6]);
  1128. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[7]);
  1129. offset_br6_led3 = pgm_read_byte(&flakeBranch6Array[18]);
  1130. offset_br6_led4 = pgm_read_byte(&flakeBranch6Array[19]);
  1131. leds[offset_br6_led1] = CRGB::Black;
  1132. leds[offset_br6_led2] = CRGB::Black;
  1133. leds[offset_br6_led3] = CRGB::Black;
  1134. leds[offset_br6_led4] = CRGB::Black;
  1135.  
  1136. break;
  1137.  
  1138. case 22:
  1139. // de-build the flake (2 wide, 6 tall, 2 high each side branch)
  1140. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[12]);
  1141. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[13]);
  1142. leds[offset_br1_led1] = CRGB::Black;
  1143. leds[offset_br1_led2] = CRGB::Black;
  1144.  
  1145. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[12]);
  1146. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[13]);
  1147. leds[offset_br2_led1] = CRGB::Black;
  1148. leds[offset_br2_led2] = CRGB::Black;
  1149.  
  1150. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[12]);
  1151. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[13]);
  1152. leds[offset_br3_led1] = CRGB::Black;
  1153. leds[offset_br3_led2] = CRGB::Black;
  1154.  
  1155. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[12]);
  1156. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[13]);
  1157. leds[offset_br4_led1] = CRGB::Black;
  1158. leds[offset_br4_led2] = CRGB::Black;
  1159.  
  1160. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[12]);
  1161. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[13]);
  1162. leds[offset_br5_led1] = CRGB::Black;
  1163. leds[offset_br5_led2] = CRGB::Black;
  1164.  
  1165. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[12]);
  1166. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[13]);
  1167. leds[offset_br6_led1] = CRGB::Black;
  1168. leds[offset_br6_led2] = CRGB::Black;
  1169.  
  1170. break;
  1171.  
  1172. case 23:
  1173. // de-build the flake (2 wide, 6 tall, 1 high each side branch)
  1174. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[5]);
  1175. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[8]);
  1176. offset_br1_led3 = pgm_read_byte(&flakeBranch1Array[17]);
  1177. offset_br1_led4 = pgm_read_byte(&flakeBranch1Array[20]);
  1178. leds[offset_br1_led1] = CRGB::Black;
  1179. leds[offset_br1_led2] = CRGB::Black;
  1180. leds[offset_br1_led3] = CRGB::Black;
  1181. leds[offset_br1_led4] = CRGB::Black;
  1182.  
  1183. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[5]);
  1184. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[8]);
  1185. offset_br2_led3 = pgm_read_byte(&flakeBranch2Array[17]);
  1186. offset_br2_led4 = pgm_read_byte(&flakeBranch2Array[20]);
  1187. leds[offset_br2_led1] = CRGB::Black;
  1188. leds[offset_br2_led2] = CRGB::Black;
  1189. leds[offset_br2_led3] = CRGB::Black;
  1190. leds[offset_br2_led4] = CRGB::Black;
  1191.  
  1192. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[5]);
  1193. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[8]);
  1194. offset_br3_led3 = pgm_read_byte(&flakeBranch3Array[17]);
  1195. offset_br3_led4 = pgm_read_byte(&flakeBranch3Array[20]);
  1196. leds[offset_br3_led1] = CRGB::Black;
  1197. leds[offset_br3_led2] = CRGB::Black;
  1198. leds[offset_br3_led3] = CRGB::Black;
  1199. leds[offset_br3_led4] = CRGB::Black;
  1200.  
  1201. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[5]);
  1202. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[8]);
  1203. offset_br4_led3 = pgm_read_byte(&flakeBranch4Array[17]);
  1204. offset_br4_led4 = pgm_read_byte(&flakeBranch4Array[20]);
  1205. leds[offset_br4_led1] = CRGB::Black;
  1206. leds[offset_br4_led2] = CRGB::Black;
  1207. leds[offset_br4_led3] = CRGB::Black;
  1208. leds[offset_br4_led4] = CRGB::Black;
  1209.  
  1210. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[5]);
  1211. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[8]);
  1212. offset_br5_led3 = pgm_read_byte(&flakeBranch5Array[17]);
  1213. offset_br5_led4 = pgm_read_byte(&flakeBranch5Array[20]);
  1214. leds[offset_br5_led1] = CRGB::Black;
  1215. leds[offset_br5_led2] = CRGB::Black;
  1216. leds[offset_br5_led3] = CRGB::Black;
  1217. leds[offset_br5_led4] = CRGB::Black;
  1218.  
  1219. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[5]);
  1220. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[8]);
  1221. offset_br6_led3 = pgm_read_byte(&flakeBranch6Array[17]);
  1222. offset_br6_led4 = pgm_read_byte(&flakeBranch6Array[20]);
  1223. leds[offset_br6_led1] = CRGB::Black;
  1224. leds[offset_br6_led2] = CRGB::Black;
  1225. leds[offset_br6_led3] = CRGB::Black;
  1226. leds[offset_br6_led4] = CRGB::Black;
  1227.  
  1228. break;
  1229.  
  1230. case 24:
  1231. // de-build the flake (2 wide, 5 tall, 1 high each side branch)
  1232. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[11]);
  1233. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[14]);
  1234. leds[offset_br1_led1] = CRGB::Black;
  1235. leds[offset_br1_led2] = CRGB::Black;
  1236.  
  1237. // de-build the flake (2 wide, 5 tall, 1 high each side branch)
  1238. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[11]);
  1239. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[14]);
  1240. leds[offset_br2_led1] = CRGB::Black;
  1241. leds[offset_br2_led2] = CRGB::Black;
  1242.  
  1243. // de-build the flake (2 wide, 5 tall, 1 high each side branch)
  1244. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[11]);
  1245. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[14]);
  1246. leds[offset_br3_led1] = CRGB::Black;
  1247. leds[offset_br3_led2] = CRGB::Black;
  1248.  
  1249. // de-build the flake (2 wide, 5 tall, 1 high each side branch)
  1250. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[11]);
  1251. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[14]);
  1252. leds[offset_br4_led1] = CRGB::Black;
  1253. leds[offset_br4_led2] = CRGB::Black;
  1254.  
  1255. // de-build the flake (2 wide, 5 tall, 1 high each side branch)
  1256. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[11]);
  1257. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[14]);
  1258. leds[offset_br5_led1] = CRGB::Black;
  1259. leds[offset_br5_led2] = CRGB::Black;
  1260.  
  1261. // de-build the flake (2 wide, 5 tall, 1 high each side branch)
  1262. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[11]);
  1263. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[14]);
  1264. leds[offset_br6_led1] = CRGB::Black;
  1265. leds[offset_br6_led2] = CRGB::Black;
  1266.  
  1267. break;
  1268.  
  1269. case 25:
  1270. // de-build the flake (2 wide, 5 tall)
  1271. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[4]);
  1272. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[9]);
  1273. offset_br1_led3 = pgm_read_byte(&flakeBranch1Array[16]);
  1274. offset_br1_led4 = pgm_read_byte(&flakeBranch1Array[21]);
  1275. leds[offset_br1_led1] = CRGB::Black;
  1276. leds[offset_br1_led2] = CRGB::Black;
  1277. leds[offset_br1_led3] = CRGB::Black;
  1278. leds[offset_br1_led4] = CRGB::Black;
  1279.  
  1280. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[4]);
  1281. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[9]);
  1282. offset_br2_led3 = pgm_read_byte(&flakeBranch2Array[16]);
  1283. offset_br2_led4 = pgm_read_byte(&flakeBranch2Array[21]);
  1284. leds[offset_br2_led1] = CRGB::Black;
  1285. leds[offset_br2_led2] = CRGB::Black;
  1286. leds[offset_br2_led3] = CRGB::Black;
  1287. leds[offset_br2_led4] = CRGB::Black;
  1288.  
  1289. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[4]);
  1290. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[9]);
  1291. offset_br3_led3 = pgm_read_byte(&flakeBranch3Array[16]);
  1292. offset_br3_led4 = pgm_read_byte(&flakeBranch3Array[21]);
  1293. leds[offset_br3_led1] = CRGB::Black;
  1294. leds[offset_br3_led2] = CRGB::Black;
  1295. leds[offset_br3_led3] = CRGB::Black;
  1296. leds[offset_br3_led4] = CRGB::Black;
  1297.  
  1298. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[4]);
  1299. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[9]);
  1300. offset_br4_led3 = pgm_read_byte(&flakeBranch4Array[16]);
  1301. offset_br4_led4 = pgm_read_byte(&flakeBranch4Array[21]);
  1302. leds[offset_br4_led1] = CRGB::Black;
  1303. leds[offset_br4_led2] = CRGB::Black;
  1304. leds[offset_br4_led3] = CRGB::Black;
  1305. leds[offset_br4_led4] = CRGB::Black;
  1306.  
  1307. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[4]);
  1308. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[9]);
  1309. offset_br5_led3 = pgm_read_byte(&flakeBranch5Array[16]);
  1310. offset_br5_led4 = pgm_read_byte(&flakeBranch5Array[21]);
  1311. leds[offset_br5_led1] = CRGB::Black;
  1312. leds[offset_br5_led2] = CRGB::Black;
  1313. leds[offset_br5_led3] = CRGB::Black;
  1314. leds[offset_br5_led4] = CRGB::Black;
  1315.  
  1316. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[4]);
  1317. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[9]);
  1318. offset_br6_led3 = pgm_read_byte(&flakeBranch6Array[16]);
  1319. offset_br6_led4 = pgm_read_byte(&flakeBranch6Array[21]);
  1320. leds[offset_br6_led1] = CRGB::Black;
  1321. leds[offset_br6_led2] = CRGB::Black;
  1322. leds[offset_br6_led3] = CRGB::Black;
  1323. leds[offset_br6_led4] = CRGB::Black;
  1324.  
  1325. break;
  1326.  
  1327. case 26:
  1328. // de-build the flake (2 wide, 4 tall)
  1329. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[10]);
  1330. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[15]);
  1331. leds[offset_br1_led1] = CRGB::Black;
  1332. leds[offset_br1_led2] = CRGB::Black;
  1333.  
  1334. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[10]);
  1335. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[15]);
  1336. leds[offset_br2_led1] = CRGB::Black;
  1337. leds[offset_br2_led2] = CRGB::Black;
  1338.  
  1339. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[10]);
  1340. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[15]);
  1341. leds[offset_br3_led1] = CRGB::Black;
  1342. leds[offset_br3_led2] = CRGB::Black;
  1343.  
  1344. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[10]);
  1345. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[15]);
  1346. leds[offset_br4_led1] = CRGB::Black;
  1347. leds[offset_br4_led2] = CRGB::Black;
  1348.  
  1349. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[10]);
  1350. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[15]);
  1351. leds[offset_br5_led1] = CRGB::Black;
  1352. leds[offset_br5_led2] = CRGB::Black;
  1353.  
  1354. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[10]);
  1355. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[15]);
  1356. leds[offset_br6_led1] = CRGB::Black;
  1357. leds[offset_br6_led2] = CRGB::Black;
  1358.  
  1359. break;
  1360.  
  1361. case 27:
  1362. // de-build the flake (2 wide, 3 tall)
  1363. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[3]);
  1364. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[22]);
  1365. leds[offset_br1_led1] = CRGB::Black;
  1366. leds[offset_br1_led2] = CRGB::Black;
  1367.  
  1368. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[3]);
  1369. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[22]);
  1370. leds[offset_br2_led1] = CRGB::Black;
  1371. leds[offset_br2_led2] = CRGB::Black;
  1372.  
  1373. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[3]);
  1374. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[22]);
  1375. leds[offset_br3_led1] = CRGB::Black;
  1376. leds[offset_br3_led2] = CRGB::Black;
  1377.  
  1378. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[3]);
  1379. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[22]);
  1380. leds[offset_br4_led1] = CRGB::Black;
  1381. leds[offset_br4_led2] = CRGB::Black;
  1382.  
  1383. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[3]);
  1384. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[22]);
  1385. leds[offset_br5_led1] = CRGB::Black;
  1386. leds[offset_br5_led2] = CRGB::Black;
  1387.  
  1388. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[3]);
  1389. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[22]);
  1390. leds[offset_br6_led1] = CRGB::Black;
  1391. leds[offset_br6_led2] = CRGB::Black;
  1392.  
  1393. break;
  1394.  
  1395. case 28:
  1396. // de-build the flake (2 wide, 2 tall)
  1397. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[2]);
  1398. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[23]);
  1399. leds[offset_br1_led1] = CRGB::Black;
  1400. leds[offset_br1_led2] = CRGB::Black;
  1401.  
  1402. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[2]);
  1403. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[23]);
  1404. leds[offset_br2_led1] = CRGB::Black;
  1405. leds[offset_br2_led2] = CRGB::Black;
  1406.  
  1407. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[2]);
  1408. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[23]);
  1409. leds[offset_br3_led1] = CRGB::Black;
  1410. leds[offset_br3_led2] = CRGB::Black;
  1411.  
  1412. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[2]);
  1413. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[23]);
  1414. leds[offset_br4_led1] = CRGB::Black;
  1415. leds[offset_br4_led2] = CRGB::Black;
  1416.  
  1417. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[2]);
  1418. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[23]);
  1419. leds[offset_br5_led1] = CRGB::Black;
  1420. leds[offset_br5_led2] = CRGB::Black;
  1421.  
  1422. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[2]);
  1423. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[23]);
  1424. leds[offset_br6_led1] = CRGB::Black;
  1425. leds[offset_br6_led2] = CRGB::Black;
  1426.  
  1427. break;
  1428.  
  1429. case 29:
  1430. // de-build the flake (2 wide, 1 tall)
  1431. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[1]);
  1432. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[24]);
  1433. leds[offset_br1_led1] = CRGB::Black;
  1434. leds[offset_br1_led2] = CRGB::Black;
  1435.  
  1436. offset_br2_led1 = pgm_read_byte(&flakeBranch2Array[1]);
  1437. offset_br2_led2 = pgm_read_byte(&flakeBranch2Array[24]);
  1438. leds[offset_br2_led1] = CRGB::Black;
  1439. leds[offset_br2_led2] = CRGB::Black;
  1440.  
  1441. offset_br3_led1 = pgm_read_byte(&flakeBranch3Array[1]);
  1442. offset_br3_led2 = pgm_read_byte(&flakeBranch3Array[24]);
  1443. leds[offset_br3_led1] = CRGB::Black;
  1444. leds[offset_br3_led2] = CRGB::Black;
  1445.  
  1446. offset_br4_led1 = pgm_read_byte(&flakeBranch4Array[1]);
  1447. offset_br4_led2 = pgm_read_byte(&flakeBranch4Array[24]);
  1448. leds[offset_br4_led1] = CRGB::Black;
  1449. leds[offset_br4_led2] = CRGB::Black;
  1450.  
  1451. offset_br5_led1 = pgm_read_byte(&flakeBranch5Array[1]);
  1452. offset_br5_led2 = pgm_read_byte(&flakeBranch5Array[24]);
  1453. leds[offset_br5_led1] = CRGB::Black;
  1454. leds[offset_br5_led2] = CRGB::Black;
  1455.  
  1456. offset_br6_led1 = pgm_read_byte(&flakeBranch6Array[1]);
  1457. offset_br6_led2 = pgm_read_byte(&flakeBranch6Array[24]);
  1458. leds[offset_br6_led1] = CRGB::Black;
  1459. leds[offset_br6_led2] = CRGB::Black;
  1460.  
  1461. break;
  1462.  
  1463. case 30:
  1464. // de-build the flake (2 wide, 0 tall)
  1465. FastLED.clear();
  1466.  
  1467. /* ORIGINAL WAY -->
  1468. offset_br1_led1 = pgm_read_byte(&flakeBranch1Array[0]);
  1469. offset_br1_led2 = pgm_read_byte(&flakeBranch1Array[25]);
  1470. leds[offset_br1_led1] = CRGB::Black;
  1471. leds[offset_br1_led2] = CRGB::Black;
  1472. */
  1473. break;
  1474.  
  1475. default:
  1476. // if nothing else matches, do the default
  1477. // HOLD it solid for a few cycles... maybe later we can add some animation.
  1478. // Now we'll hold it solid for cycles 11-20
  1479. break;
  1480. }
  1481.  
  1482. FastLED.show();
  1483. delay (60);
  1484. }
  1485.  
  1486. }
  1487.  
  1488. void center_ying_yang() {
  1489. const uint8_t NUM_PHASES = 19;
  1490.  
  1491. // pick a random color
  1492. CRGB color_code1;
  1493. CRGB color_code2;
  1494.  
  1495. // clear the slate
  1496. FastLED.clear();
  1497.  
  1498. for (int j=0; j<20; j++) {
  1499.  
  1500. // change the color every cycle through
  1501. // color options:
  1502. // https://github.com/FastLED/FastLED/blob/03d12093a92ee2b64fabb03412aa0c3e4f6384dd/pixeltypes.h
  1503. switch (j) {
  1504. case 0:
  1505. case 1:
  1506. case 2:
  1507. case 3:
  1508. case 4:
  1509. color_code1 = CRGB::Aqua;
  1510. color_code2 = CRGB::FireBrick;
  1511. break;
  1512. case 5:
  1513. case 6:
  1514. case 7:
  1515. case 8:
  1516. case 9:
  1517. color_code1 = CRGB::Yellow;
  1518. color_code2 = CRGB::DeepPink;
  1519. break;
  1520. case 10:
  1521. case 11:
  1522. case 12:
  1523. case 13:
  1524. case 14:
  1525. color_code1 = CRGB::Red;
  1526. color_code2 = CRGB::Green;
  1527. break;
  1528. case 15:
  1529. case 16:
  1530. case 17:
  1531. case 18:
  1532. case 19:
  1533. color_code1 = CRGB::White;
  1534. color_code2 = CRGB::Black;
  1535. break;
  1536. default:
  1537. break;
  1538. }
  1539.  
  1540. for (int i=0; i<NUM_PHASES; i++) {
  1541.  
  1542. switch (i) {
  1543. case 0:
  1544. // turn all LEDs off
  1545. //FastLED.clear();
  1546. break;
  1547.  
  1548. case 1:
  1549. leds[0] = color_code1;
  1550. leds[20] = color_code1;
  1551.  
  1552. leds[9] = color_code2;
  1553. leds[98] = color_code2;
  1554. break;
  1555.  
  1556. case 2:
  1557. leds[1] = color_code1;
  1558. leds[43] = color_code1;
  1559.  
  1560. leds[10] = color_code2;
  1561. leds[121] = color_code2;
  1562. break;
  1563.  
  1564. case 3:
  1565. leds[2] = color_code1;
  1566. leds[44] = color_code1;
  1567. leds[45] = color_code1;
  1568.  
  1569. leds[11] = color_code2;
  1570. leds[122] = color_code2;
  1571. leds[123] = color_code2;
  1572. break;
  1573.  
  1574. case 4:
  1575. leds[3] = color_code1;
  1576. leds[46] = color_code1;
  1577.  
  1578. leds[12] = color_code2;
  1579. leds[124] = color_code2;
  1580. break;
  1581.  
  1582. case 5:
  1583. leds[4] = color_code1;
  1584. leds[69] = color_code1;
  1585.  
  1586. leds[13] = color_code2;
  1587. leds[147] = color_code2;
  1588. break;
  1589.  
  1590. case 6:
  1591. leds[5] = color_code1;
  1592. leds[70] = color_code1;
  1593. leds[71] = color_code1;
  1594.  
  1595. leds[14] = color_code2;
  1596. leds[148] = color_code2;
  1597. leds[149] = color_code2;
  1598. break;
  1599.  
  1600. case 7:
  1601. leds[6] = color_code1;
  1602. leds[72] = color_code1;
  1603.  
  1604. leds[15] = color_code2;
  1605. leds[150] = color_code2;
  1606. break;
  1607.  
  1608. case 8:
  1609. leds[7] = color_code1;
  1610. leds[95] = color_code1;
  1611.  
  1612. leds[16] = color_code2;
  1613. leds[173] = color_code2;
  1614. break;
  1615.  
  1616. case 9:
  1617. leds[8] = color_code1;
  1618. leds[96] = color_code1;
  1619. leds[97] = color_code1;
  1620.  
  1621. leds[17] = color_code2;
  1622. leds[18] = color_code2;
  1623. leds[19] = color_code2;
  1624. break;
  1625.  
  1626. case 10:
  1627. leds[0] = color_code2;
  1628. leds[20] = color_code2;
  1629.  
  1630. leds[9] = color_code1;
  1631. leds[98] = color_code1;
  1632. break;
  1633.  
  1634. case 11:
  1635. leds[1] = color_code2;
  1636. leds[43] = color_code2;
  1637.  
  1638. leds[10] = color_code1;
  1639. leds[121] = color_code1;
  1640. break;
  1641.  
  1642. case 12:
  1643. leds[2] = color_code2;
  1644. leds[44] = color_code2;
  1645. leds[45] = color_code2;
  1646.  
  1647. leds[11] = color_code1;
  1648. leds[122] = color_code1;
  1649. leds[123] = color_code1;
  1650. break;
  1651.  
  1652. case 13:
  1653. leds[3] = color_code2;
  1654. leds[46] = color_code2;
  1655.  
  1656. leds[12] = color_code1;
  1657. leds[124] = color_code1;
  1658. break;
  1659.  
  1660. case 14:
  1661. leds[4] = color_code2;
  1662. leds[69] = color_code2;
  1663.  
  1664. leds[13] = color_code1;
  1665. leds[147] = color_code1;
  1666. break;
  1667.  
  1668. case 15:
  1669. leds[5] = color_code2;
  1670. leds[70] = color_code2;
  1671. leds[71] = color_code2;
  1672.  
  1673. leds[14] = color_code1;
  1674. leds[148] = color_code1;
  1675. leds[149] = color_code1;
  1676. break;
  1677.  
  1678. case 16:
  1679. leds[6] = color_code2;
  1680. leds[72] = color_code2;
  1681.  
  1682. leds[15] = color_code1;
  1683. leds[150] = color_code1;
  1684. break;
  1685.  
  1686. case 17:
  1687. leds[7] = color_code2;
  1688. leds[95] = color_code2;
  1689.  
  1690. leds[16] = color_code1;
  1691. leds[173] = color_code1;
  1692. break;
  1693.  
  1694. case 18:
  1695. leds[8] = color_code2;
  1696. leds[96] = color_code2;
  1697. leds[97] = color_code2;
  1698.  
  1699. leds[17] = color_code1;
  1700. leds[18] = color_code1;
  1701. leds[19] = color_code1;
  1702. break;
  1703.  
  1704. default:
  1705. // if nothing else matches, do the default
  1706. break;
  1707. }
  1708.  
  1709. FastLED.show();
  1710. delay (30);
  1711. fadeToBlackBy( leds, NUM_LEDS, 55);
  1712. }
  1713. // end display loop
  1714. }
  1715. // end loop for number of displays loop
  1716. }
  1717.  
  1718.  
  1719. void center_rainbow() {
  1720.  
  1721. const uint8_t NUM_PHASES = 18;
  1722.  
  1723. // pick a random color
  1724. uint8_t hue1 = random8(255);
  1725.  
  1726. // clear the slate
  1727. FastLED.clear();
  1728.  
  1729. for (int j=0; j<25; j++) {
  1730.  
  1731. for (int i=1; i<NUM_PHASES+1; i++) {
  1732.  
  1733. // always update the color during each iteration
  1734. hue1+=3;
  1735.  
  1736. switch (i) {
  1737. case 0:
  1738. // turn all LEDs off
  1739. //FastLED.clear();
  1740. break;
  1741.  
  1742. case 1:
  1743. leds[0] = CHSV(hue1, 255, 255);
  1744. leds[20] = CHSV(hue1, 255, 255);
  1745. break;
  1746.  
  1747. case 2:
  1748. leds[1] = CHSV(hue1, 255, 255);
  1749. leds[43] = CHSV(hue1, 255, 255);
  1750. break;
  1751.  
  1752. case 3:
  1753. leds[2] = CHSV(hue1, 255, 255);
  1754. leds[44] = CHSV(hue1, 255, 255);
  1755. leds[45] = CHSV(hue1, 255, 255);
  1756. break;
  1757.  
  1758. case 4:
  1759. leds[3] = CHSV(hue1, 255, 255);
  1760. leds[46] = CHSV(hue1, 255, 255);
  1761. break;
  1762.  
  1763. case 5:
  1764. leds[4] = CHSV(hue1, 255, 255);
  1765. leds[69] = CHSV(hue1, 255, 255);
  1766. break;
  1767.  
  1768. case 6:
  1769. leds[5] = CHSV(hue1, 255, 255);
  1770. leds[70] = CHSV(hue1, 255, 255);
  1771. leds[71] = CHSV(hue1, 255, 255);
  1772. break;
  1773.  
  1774. case 7:
  1775. leds[6] = CHSV(hue1, 255, 255);
  1776. leds[72] = CHSV(hue1, 255, 255);
  1777. break;
  1778.  
  1779. case 8:
  1780. leds[7] = CHSV(hue1, 255, 255);
  1781. leds[95] = CHSV(hue1, 255, 255);
  1782. break;
  1783.  
  1784. case 9:
  1785. leds[8] = CHSV(hue1, 255, 255);
  1786. leds[96] = CHSV(hue1, 255, 255);
  1787. leds[97] = CHSV(hue1, 255, 255);
  1788. break;
  1789.  
  1790. case 10:
  1791. leds[9] = CHSV(hue1, 255, 255);
  1792. leds[98] = CHSV(hue1, 255, 255);
  1793. break;
  1794.  
  1795. case 11:
  1796. leds[10] = CHSV(hue1, 255, 255);
  1797. leds[121] = CHSV(hue1, 255, 255);
  1798. break;
  1799.  
  1800. case 12:
  1801. leds[11] = CHSV(hue1, 255, 255);
  1802. leds[122] = CHSV(hue1, 255, 255);
  1803. leds[123] = CHSV(hue1, 255, 255);
  1804. break;
  1805.  
  1806. case 13:
  1807. leds[12] = CHSV(hue1, 255, 255);
  1808. leds[124] = CHSV(hue1, 255, 255);
  1809. break;
  1810.  
  1811. case 14:
  1812. leds[13] = CHSV(hue1, 255, 255);
  1813. leds[147] = CHSV(hue1, 255, 255);
  1814. break;
  1815.  
  1816. case 15:
  1817. leds[14] = CHSV(hue1, 255, 255);
  1818. leds[148] = CHSV(hue1, 255, 255);
  1819. leds[149] = CHSV(hue1, 255, 255);
  1820. break;
  1821.  
  1822. case 16:
  1823. leds[15] = CHSV(hue1, 255, 255);
  1824. leds[150] = CHSV(hue1, 255, 255);
  1825. break;
  1826.  
  1827. case 17:
  1828. leds[16] = CHSV(hue1, 255, 255);
  1829. leds[173] = CHSV(hue1, 255, 255);
  1830. break;
  1831.  
  1832. case 18:
  1833. leds[17] = CHSV(hue1, 255, 255);
  1834. leds[18] = CHSV(hue1, 255, 255);
  1835. leds[19] = CHSV(hue1, 255, 255);
  1836. break;
  1837.  
  1838.  
  1839. default:
  1840. // if nothing else matches, do the default
  1841. // HOLD it solid for a few cycles... maybe later we can add some animation.
  1842. // Now we'll hold it solid for cycles 11-20
  1843. break;
  1844. }
  1845.  
  1846. FastLED.show();
  1847. delay (20);
  1848. }
  1849. // end display loop
  1850. }
  1851. // end loop for number of displays loop
  1852. }
  1853.  
  1854.  
  1855. void wipe_left_to_right() {
  1856.  
  1857. const uint8_t NUM_PHASES = 40;
  1858.  
  1859.  
  1860. // pick a random color
  1861. uint8_t hue1 = random8(255);
  1862.  
  1863. // clear the slate
  1864. FastLED.clear();
  1865.  
  1866. for (int j=0; j<8; j++) {
  1867.  
  1868. for (int i=1; i<NUM_PHASES+1; i++) {
  1869.  
  1870. // always update the color during each iteration
  1871. //hue1+=3; // significant color change start to end
  1872. hue1+=1;
  1873.  
  1874. switch (i) {
  1875. case 0:
  1876. // turn all LEDs off
  1877. //FastLED.clear();
  1878. break;
  1879.  
  1880. case 1:
  1881. leds[57] = CHSV(hue1, 255, 255);
  1882. leds[58] = CHSV(hue1, 255, 255);
  1883. break;
  1884.  
  1885. case 2:
  1886. leds[52] = CHSV(hue1, 255, 255);
  1887. leds[63] = CHSV(hue1, 255, 255);
  1888. break;
  1889.  
  1890. case 3:
  1891. leds[51] = CHSV(hue1, 255, 255);
  1892. leds[53] = CHSV(hue1, 255, 255);
  1893. leds[56] = CHSV(hue1, 255, 255);
  1894. leds[59] = CHSV(hue1, 255, 255);
  1895. leds[62] = CHSV(hue1, 255, 255);
  1896. leds[64] = CHSV(hue1, 255, 255);
  1897. break;
  1898.  
  1899. case 4:
  1900. leds[50] = CHSV(hue1, 255, 255);
  1901. leds[54] = CHSV(hue1, 255, 255);
  1902. leds[61] = CHSV(hue1, 255, 255);
  1903. leds[65] = CHSV(hue1, 255, 255);
  1904. break;
  1905.  
  1906. case 5:
  1907. leds[37] = CHSV(hue1, 255, 255);
  1908. leds[38] = CHSV(hue1, 255, 255);
  1909. leds[55] = CHSV(hue1, 255, 255);
  1910. leds[60] = CHSV(hue1, 255, 255);
  1911. leds[77] = CHSV(hue1, 255, 255);
  1912. leds[78] = CHSV(hue1, 255, 255);
  1913. break;
  1914.  
  1915. case 6:
  1916. leds[49] = CHSV(hue1, 255, 255);
  1917. leds[66] = CHSV(hue1, 255, 255);
  1918. break;
  1919.  
  1920. case 7:
  1921. leds[36] = CHSV(hue1, 255, 255);
  1922. leds[39] = CHSV(hue1, 255, 255);
  1923. leds[48] = CHSV(hue1, 255, 255);
  1924. leds[67] = CHSV(hue1, 255, 255);
  1925. leds[76] = CHSV(hue1, 255, 255);
  1926. leds[79] = CHSV(hue1, 255, 255);
  1927. break;
  1928.  
  1929. case 8:
  1930. leds[32] = CHSV(hue1, 255, 255);
  1931. leds[35] = CHSV(hue1, 255, 255);
  1932. leds[80] = CHSV(hue1, 255, 255);
  1933. leds[83] = CHSV(hue1, 255, 255);
  1934. break;
  1935.  
  1936. case 9:
  1937. leds[31] = CHSV(hue1, 255, 255);
  1938. leds[33] = CHSV(hue1, 255, 255);
  1939. leds[40] = CHSV(hue1, 255, 255);
  1940. leds[47] = CHSV(hue1, 255, 255);
  1941. leds[68] = CHSV(hue1, 255, 255);
  1942. leds[75] = CHSV(hue1, 255, 255);
  1943. leds[82] = CHSV(hue1, 255, 255);
  1944. leds[84] = CHSV(hue1, 255, 255);
  1945. break;
  1946.  
  1947. case 10:
  1948. leds[30] = CHSV(hue1, 255, 255);
  1949. leds[34] = CHSV(hue1, 255, 255);
  1950. leds[45] = CHSV(hue1, 255, 255);
  1951. leds[70] = CHSV(hue1, 255, 255);
  1952. leds[81] = CHSV(hue1, 255, 255);
  1953. leds[85] = CHSV(hue1, 255, 255);
  1954. break;
  1955.  
  1956. case 11:
  1957. leds[41] = CHSV(hue1, 255, 255);
  1958. leds[44] = CHSV(hue1, 255, 255);
  1959. leds[46] = CHSV(hue1, 255, 255);
  1960. leds[69] = CHSV(hue1, 255, 255);
  1961. leds[71] = CHSV(hue1, 255, 255);
  1962. leds[74] = CHSV(hue1, 255, 255);
  1963. break;
  1964.  
  1965. case 12:
  1966. leds[29] = CHSV(hue1, 255, 255);
  1967. leds[2] = CHSV(hue1, 255, 255);
  1968. leds[5] = CHSV(hue1, 255, 255);
  1969. leds[86] = CHSV(hue1, 255, 255);
  1970. break;
  1971.  
  1972. case 13:
  1973. leds[28] = CHSV(hue1, 255, 255);
  1974. leds[22] = CHSV(hue1, 255, 255);
  1975. leds[42] = CHSV(hue1, 255, 255);
  1976. leds[3] = CHSV(hue1, 255, 255);
  1977. leds[4] = CHSV(hue1, 255, 255);
  1978. leds[73] = CHSV(hue1, 255, 255);
  1979. leds[93] = CHSV(hue1, 255, 255);
  1980. leds[87] = CHSV(hue1, 255, 255);
  1981. break;
  1982.  
  1983. case 14:
  1984. leds[27] = CHSV(hue1, 255, 255);
  1985. leds[23] = CHSV(hue1, 255, 255);
  1986. leds[21] = CHSV(hue1, 255, 255);
  1987. leds[43] = CHSV(hue1, 255, 255);
  1988. leds[72] = CHSV(hue1, 255, 255);
  1989. leds[94] = CHSV(hue1, 255, 255);
  1990. leds[92] = CHSV(hue1, 255, 255);
  1991. leds[88] = CHSV(hue1, 255, 255);
  1992. break;
  1993.  
  1994. case 15:
  1995. leds[26] = CHSV(hue1, 255, 255);
  1996. leds[24] = CHSV(hue1, 255, 255);
  1997. leds[20] = CHSV(hue1, 255, 255);
  1998. leds[1] = CHSV(hue1, 255, 255);
  1999. leds[6] = CHSV(hue1, 255, 255);
  2000. leds[95] = CHSV(hue1, 255, 255);
  2001. leds[91] = CHSV(hue1, 255, 255);
  2002. leds[89] = CHSV(hue1, 255, 255);
  2003. break;
  2004.  
  2005. case 16:
  2006. leds[25] = CHSV(hue1, 255, 255);
  2007. leds[19] = CHSV(hue1, 255, 255);
  2008. leds[0] = CHSV(hue1, 255, 255);
  2009. leds[7] = CHSV(hue1, 255, 255);
  2010. leds[96] = CHSV(hue1, 255, 255);
  2011. leds[90] = CHSV(hue1, 255, 255);
  2012. break;
  2013.  
  2014. /* Center Position */
  2015. case 17:
  2016. leds[17] = CHSV(hue1, 255, 255);
  2017. leds[8] = CHSV(hue1, 255, 255);
  2018. break;
  2019.  
  2020. case 18:
  2021. leds[168] = CHSV(hue1, 255, 255);
  2022. leds[18] = CHSV(hue1, 255, 255);
  2023. leds[16] = CHSV(hue1, 255, 255);
  2024. leds[9] = CHSV(hue1, 255, 255);
  2025. leds[97] = CHSV(hue1, 255, 255);
  2026. leds[103] = CHSV(hue1, 255, 255);
  2027. break;
  2028.  
  2029. case 19:
  2030. leds[167] = CHSV(hue1, 255, 255);
  2031. leds[169] = CHSV(hue1, 255, 255);
  2032. leds[173] = CHSV(hue1, 255, 255);
  2033. leds[15] = CHSV(hue1, 255, 255);
  2034. leds[10] = CHSV(hue1, 255, 255);
  2035. leds[98] = CHSV(hue1, 255, 255);
  2036. leds[102] = CHSV(hue1, 255, 255);
  2037. leds[104] = CHSV(hue1, 255, 255);
  2038. break;
  2039.  
  2040. case 20:
  2041. leds[166] = CHSV(hue1, 255, 255);
  2042. leds[170] = CHSV(hue1, 255, 255);
  2043. leds[172] = CHSV(hue1, 255, 255);
  2044. leds[150] = CHSV(hue1, 255, 255);
  2045. leds[121] = CHSV(hue1, 255, 255);
  2046. leds[99] = CHSV(hue1, 255, 255);
  2047. leds[101] = CHSV(hue1, 255, 255);
  2048. leds[105] = CHSV(hue1, 255, 255);
  2049. break;
  2050.  
  2051. case 21:
  2052. leds[165] = CHSV(hue1, 255, 255);
  2053. leds[171] = CHSV(hue1, 255, 255);
  2054. leds[151] = CHSV(hue1, 255, 255);
  2055. leds[13] = CHSV(hue1, 255, 255);
  2056. leds[12] = CHSV(hue1, 255, 255);
  2057. leds[120] = CHSV(hue1, 255, 255);
  2058. leds[100] = CHSV(hue1, 255, 255);
  2059. leds[106] = CHSV(hue1, 255, 255);
  2060. break;
  2061.  
  2062. case 22:
  2063. leds[164] = CHSV(hue1, 255, 255);
  2064. leds[14] = CHSV(hue1, 255, 255);
  2065. leds[11] = CHSV(hue1, 255, 255);
  2066. leds[107] = CHSV(hue1, 255, 255);
  2067. break;
  2068.  
  2069. case 23:
  2070. leds[152] = CHSV(hue1, 255, 255);
  2071. leds[149] = CHSV(hue1, 255, 255);
  2072. leds[147] = CHSV(hue1, 255, 255);
  2073. leds[124] = CHSV(hue1, 255, 255);
  2074. leds[122] = CHSV(hue1, 255, 255);
  2075. leds[119] = CHSV(hue1, 255, 255);
  2076. break;
  2077.  
  2078. case 24:
  2079. leds[163] = CHSV(hue1, 255, 255);
  2080. leds[159] = CHSV(hue1, 255, 255);
  2081. leds[148] = CHSV(hue1, 255, 255);
  2082. leds[123] = CHSV(hue1, 255, 255);
  2083. leds[112] = CHSV(hue1, 255, 255);
  2084. leds[108] = CHSV(hue1, 255, 255);
  2085. break;
  2086.  
  2087. case 25:
  2088. leds[162] = CHSV(hue1, 255, 255);
  2089. leds[160] = CHSV(hue1, 255, 255);
  2090. leds[153] = CHSV(hue1, 255, 255);
  2091. leds[146] = CHSV(hue1, 255, 255);
  2092. leds[125] = CHSV(hue1, 255, 255);
  2093. leds[118] = CHSV(hue1, 255, 255);
  2094. leds[111] = CHSV(hue1, 255, 255);
  2095. leds[109] = CHSV(hue1, 255, 255);
  2096. break;
  2097.  
  2098. case 26:
  2099. leds[161] = CHSV(hue1, 255, 255);
  2100. leds[158] = CHSV(hue1, 255, 255);
  2101. leds[113] = CHSV(hue1, 255, 255);
  2102. leds[110] = CHSV(hue1, 255, 255);
  2103. break;
  2104.  
  2105. case 27:
  2106. leds[157] = CHSV(hue1, 255, 255);
  2107. leds[154] = CHSV(hue1, 255, 255);
  2108. leds[145] = CHSV(hue1, 255, 255);
  2109. leds[126] = CHSV(hue1, 255, 255);
  2110. leds[117] = CHSV(hue1, 255, 255);
  2111. leds[114] = CHSV(hue1, 255, 255);
  2112. break;
  2113.  
  2114. case 28:
  2115. leds[144] = CHSV(hue1, 255, 255);
  2116. leds[127] = CHSV(hue1, 255, 255);
  2117. break;
  2118.  
  2119. case 29:
  2120. leds[156] = CHSV(hue1, 255, 255);
  2121. leds[155] = CHSV(hue1, 255, 255);
  2122. leds[138] = CHSV(hue1, 255, 255);
  2123. leds[133] = CHSV(hue1, 255, 255);
  2124. leds[116] = CHSV(hue1, 255, 255);
  2125. leds[115] = CHSV(hue1, 255, 255);
  2126. break;
  2127.  
  2128. case 30:
  2129. leds[143] = CHSV(hue1, 255, 255);
  2130. leds[139] = CHSV(hue1, 255, 255);
  2131. leds[132] = CHSV(hue1, 255, 255);
  2132. leds[128] = CHSV(hue1, 255, 255);
  2133. break;
  2134.  
  2135. case 31:
  2136. leds[142] = CHSV(hue1, 255, 255);
  2137. leds[140] = CHSV(hue1, 255, 255);
  2138. leds[137] = CHSV(hue1, 255, 255);
  2139. leds[134] = CHSV(hue1, 255, 255);
  2140. leds[131] = CHSV(hue1, 255, 255);
  2141. leds[129] = CHSV(hue1, 255, 255);
  2142. break;
  2143.  
  2144. case 32:
  2145. leds[141] = CHSV(hue1, 255, 255);
  2146. leds[130] = CHSV(hue1, 255, 255);
  2147. break;
  2148.  
  2149. case 33:
  2150. leds[136] = CHSV(hue1, 255, 255);
  2151. leds[135] = CHSV(hue1, 255, 255);
  2152. break;
  2153.  
  2154.  
  2155. default:
  2156. // if nothing else matches, do the default
  2157. // HOLD it solid for a few cycles... maybe later we can add some animation.
  2158. // Now we'll hold it solid for cycles 11-20
  2159. break;
  2160. }
  2161.  
  2162. FastLED.show();
  2163. delay (20);
  2164. }
  2165. // end display loop
  2166. }
  2167. // end loop for number of displays loop
  2168. }
  2169.  
  2170.  
  2171.  
  2172. void wipe_top_to_bottom() {
  2173.  
  2174. const uint8_t NUM_PHASES = 40;
  2175.  
  2176.  
  2177. // pick a random color
  2178. uint8_t hue1 = random8(255);
  2179.  
  2180. // clear the slate
  2181. FastLED.clear();
  2182.  
  2183. for (int j=0; j<8; j++) {
  2184.  
  2185. for (int i=1; i<NUM_PHASES+1; i++) {
  2186.  
  2187. // always update the color during each iteration
  2188. //hue1+=3; // significant color change start to end
  2189. hue1+=1;
  2190.  
  2191. switch (i) {
  2192. case 0:
  2193. // turn all LEDs off
  2194. //FastLED.clear();
  2195. break;
  2196.  
  2197. case 1:
  2198. leds[26] = CHSV(hue1, 255, 255);
  2199. leds[167] = CHSV(hue1, 255, 255);
  2200. break;
  2201.  
  2202. case 2:
  2203. leds[31] = CHSV(hue1, 255, 255);
  2204. leds[25] = CHSV(hue1, 255, 255);
  2205. leds[168] = CHSV(hue1, 255, 255);
  2206. leds[162] = CHSV(hue1, 255, 255);
  2207. break;
  2208.  
  2209. case 3:
  2210. leds[32] = CHSV(hue1, 255, 255);
  2211. leds[27] = CHSV(hue1, 255, 255);
  2212. leds[166] = CHSV(hue1, 255, 255);
  2213. leds[161] = CHSV(hue1, 255, 255);
  2214. break;
  2215.  
  2216. case 4:
  2217. leds[33] = CHSV(hue1, 255, 255);
  2218. leds[30] = CHSV(hue1, 255, 255);
  2219. leds[28] = CHSV(hue1, 255, 255);
  2220. leds[24] = CHSV(hue1, 255, 255);
  2221. leds[169] = CHSV(hue1, 255, 255);
  2222. leds[165] = CHSV(hue1, 255, 255);
  2223. leds[163] = CHSV(hue1, 255, 255);
  2224. leds[160] = CHSV(hue1, 255, 255);
  2225. break;
  2226.  
  2227. case 5:
  2228. leds[29] = CHSV(hue1, 255, 255);
  2229. leds[23] = CHSV(hue1, 255, 255);
  2230. leds[170] = CHSV(hue1, 255, 255);
  2231. leds[164] = CHSV(hue1, 255, 255);
  2232. break;
  2233.  
  2234. case 6:
  2235. leds[37] = CHSV(hue1, 255, 255);
  2236. leds[36] = CHSV(hue1, 255, 255);
  2237. leds[35] = CHSV(hue1, 255, 255);
  2238. leds[34] = CHSV(hue1, 255, 255);
  2239. leds[159] = CHSV(hue1, 255, 255);
  2240. leds[158] = CHSV(hue1, 255, 255);
  2241. leds[157] = CHSV(hue1, 255, 255);
  2242. leds[156] = CHSV(hue1, 255, 255);
  2243. break;
  2244.  
  2245. case 7:
  2246. leds[38] = CHSV(hue1, 255, 255);
  2247. leds[39] = CHSV(hue1, 255, 255);
  2248. leds[40] = CHSV(hue1, 255, 255);
  2249. leds[41] = CHSV(hue1, 255, 255);
  2250. leds[22] = CHSV(hue1, 255, 255);
  2251. leds[171] = CHSV(hue1, 255, 255);
  2252. leds[152] = CHSV(hue1, 255, 255);
  2253. leds[153] = CHSV(hue1, 255, 255);
  2254. leds[154] = CHSV(hue1, 255, 255);
  2255. leds[155] = CHSV(hue1, 255, 255);
  2256. break;
  2257.  
  2258. case 8:
  2259. leds[51] = CHSV(hue1, 255, 255);
  2260. leds[42] = CHSV(hue1, 255, 255);
  2261. leds[21] = CHSV(hue1, 255, 255);
  2262. leds[19] = CHSV(hue1, 255, 255);
  2263. leds[18] = CHSV(hue1, 255, 255);
  2264. leds[172] = CHSV(hue1, 255, 255);
  2265. leds[151] = CHSV(hue1, 255, 255);
  2266. leds[142] = CHSV(hue1, 255, 255);
  2267. break;
  2268.  
  2269. case 9:
  2270. leds[52] = CHSV(hue1, 255, 255);
  2271. leds[20] = CHSV(hue1, 255, 255);
  2272. leds[17] = CHSV(hue1, 255, 255);
  2273. leds[173] = CHSV(hue1, 255, 255);
  2274. leds[141] = CHSV(hue1, 255, 255);
  2275. break;
  2276.  
  2277. case 10:
  2278. leds[53] = CHSV(hue1, 255, 255);
  2279. leds[50] = CHSV(hue1, 255, 255);
  2280. leds[44] = CHSV(hue1, 255, 255);
  2281. leds[43] = CHSV(hue1, 255, 255);
  2282. leds[150] = CHSV(hue1, 255, 255);
  2283. leds[149] = CHSV(hue1, 255, 255);
  2284. leds[143] = CHSV(hue1, 255, 255);
  2285. leds[140] = CHSV(hue1, 255, 255);
  2286. break;
  2287.  
  2288. case 11:
  2289. leds[1] = CHSV(hue1, 255, 255);
  2290. leds[0] = CHSV(hue1, 255, 255);
  2291. leds[16] = CHSV(hue1, 255, 255);
  2292. leds[15] = CHSV(hue1, 255, 255);
  2293. break;
  2294.  
  2295. case 12:
  2296. leds[54] = CHSV(hue1, 255, 255);
  2297. leds[49] = CHSV(hue1, 255, 255);
  2298. leds[45] = CHSV(hue1, 255, 255);
  2299. leds[2] = CHSV(hue1, 255, 255);
  2300. leds[14] = CHSV(hue1, 255, 255);
  2301. leds[148] = CHSV(hue1, 255, 255);
  2302. leds[144] = CHSV(hue1, 255, 255);
  2303. leds[139] = CHSV(hue1, 255, 255);
  2304. break;
  2305.  
  2306. // TOp Center Row
  2307. case 13:
  2308. leds[57] = CHSV(hue1, 255, 255);
  2309. leds[56] = CHSV(hue1, 255, 255);
  2310. leds[55] = CHSV(hue1, 255, 255);
  2311. leds[48] = CHSV(hue1, 255, 255);
  2312. leds[47] = CHSV(hue1, 255, 255);
  2313. leds[46] = CHSV(hue1, 255, 255);
  2314. leds[3] = CHSV(hue1, 255, 255);
  2315. leds[13] = CHSV(hue1, 255, 255);
  2316. leds[147] = CHSV(hue1, 255, 255);
  2317. leds[146] = CHSV(hue1, 255, 255);
  2318. leds[145] = CHSV(hue1, 255, 255);
  2319. leds[138] = CHSV(hue1, 255, 255);
  2320. leds[137] = CHSV(hue1, 255, 255);
  2321. leds[136] = CHSV(hue1, 255, 255);
  2322.  
  2323. break;
  2324.  
  2325. // Bottom Center Row
  2326. case 14:
  2327. leds[58] = CHSV(hue1, 255, 255);
  2328. leds[59] = CHSV(hue1, 255, 255);
  2329. leds[60] = CHSV(hue1, 255, 255);
  2330. leds[67] = CHSV(hue1, 255, 255);
  2331. leds[68] = CHSV(hue1, 255, 255);
  2332. leds[69] = CHSV(hue1, 255, 255);
  2333. leds[4] = CHSV(hue1, 255, 255);
  2334. leds[12] = CHSV(hue1, 255, 255);
  2335. leds[124] = CHSV(hue1, 255, 255);
  2336. leds[125] = CHSV(hue1, 255, 255);
  2337. leds[126] = CHSV(hue1, 255, 255);
  2338. leds[133] = CHSV(hue1, 255, 255);
  2339. leds[134] = CHSV(hue1, 255, 255);
  2340. leds[135] = CHSV(hue1, 255, 255);
  2341. break;
  2342.  
  2343. case 15:
  2344. leds[61] = CHSV(hue1, 255, 255);
  2345. leds[66] = CHSV(hue1, 255, 255);
  2346. leds[70] = CHSV(hue1, 255, 255);
  2347. leds[5] = CHSV(hue1, 255, 255);
  2348. leds[11] = CHSV(hue1, 255, 255);
  2349. leds[123] = CHSV(hue1, 255, 255);
  2350. leds[127] = CHSV(hue1, 255, 255);
  2351. leds[132] = CHSV(hue1, 255, 255);
  2352. break;
  2353.  
  2354. case 16:
  2355. leds[6] = CHSV(hue1, 255, 255);
  2356. leds[7] = CHSV(hue1, 255, 255);
  2357. leds[9] = CHSV(hue1, 255, 255);
  2358. leds[10] = CHSV(hue1, 255, 255);
  2359. break;
  2360.  
  2361. case 17:
  2362. leds[62] = CHSV(hue1, 255, 255);
  2363. leds[65] = CHSV(hue1, 255, 255);
  2364. leds[71] = CHSV(hue1, 255, 255);
  2365. leds[72] = CHSV(hue1, 255, 255);
  2366. leds[121] = CHSV(hue1, 255, 255);
  2367. leds[122] = CHSV(hue1, 255, 255);
  2368. leds[128] = CHSV(hue1, 255, 255);
  2369. leds[131] = CHSV(hue1, 255, 255);
  2370. break;
  2371.  
  2372. case 18:
  2373. leds[63] = CHSV(hue1, 255, 255);
  2374. leds[95] = CHSV(hue1, 255, 255);
  2375. leds[8] = CHSV(hue1, 255, 255);
  2376. leds[98] = CHSV(hue1, 255, 255);
  2377. leds[130] = CHSV(hue1, 255, 255);
  2378. break;
  2379.  
  2380. case 19:
  2381. leds[64] = CHSV(hue1, 255, 255);
  2382. leds[73] = CHSV(hue1, 255, 255);
  2383. leds[94] = CHSV(hue1, 255, 255);
  2384. leds[96] = CHSV(hue1, 255, 255);
  2385. leds[97] = CHSV(hue1, 255, 255);
  2386. leds[99] = CHSV(hue1, 255, 255);
  2387. leds[120] = CHSV(hue1, 255, 255);
  2388. leds[129] = CHSV(hue1, 255, 255);
  2389. break;
  2390.  
  2391. case 20:
  2392. leds[77] = CHSV(hue1, 255, 255);
  2393. leds[76] = CHSV(hue1, 255, 255);
  2394. leds[75] = CHSV(hue1, 255, 255);
  2395. leds[74] = CHSV(hue1, 255, 255);
  2396. leds[93] = CHSV(hue1, 255, 255);
  2397. leds[100] = CHSV(hue1, 255, 255);
  2398. leds[119] = CHSV(hue1, 255, 255);
  2399. leds[118] = CHSV(hue1, 255, 255);
  2400. leds[117] = CHSV(hue1, 255, 255);
  2401. leds[116] = CHSV(hue1, 255, 255);
  2402. break;
  2403.  
  2404. case 21:
  2405. leds[78] = CHSV(hue1, 255, 255);
  2406. leds[79] = CHSV(hue1, 255, 255);
  2407. leds[80] = CHSV(hue1, 255, 255);
  2408. leds[81] = CHSV(hue1, 255, 255);
  2409. leds[112] = CHSV(hue1, 255, 255);
  2410. leds[113] = CHSV(hue1, 255, 255);
  2411. leds[114] = CHSV(hue1, 255, 255);
  2412. leds[115] = CHSV(hue1, 255, 255);
  2413. break;
  2414.  
  2415. case 22:
  2416. leds[86] = CHSV(hue1, 255, 255);
  2417. leds[92] = CHSV(hue1, 255, 255);
  2418. leds[101] = CHSV(hue1, 255, 255);
  2419. leds[107] = CHSV(hue1, 255, 255);
  2420. break;
  2421.  
  2422. case 23:
  2423. leds[82] = CHSV(hue1, 255, 255);
  2424. leds[85] = CHSV(hue1, 255, 255);
  2425. leds[87] = CHSV(hue1, 255, 255);
  2426. leds[91] = CHSV(hue1, 255, 255);
  2427. leds[102] = CHSV(hue1, 255, 255);
  2428. leds[106] = CHSV(hue1, 255, 255);
  2429. leds[108] = CHSV(hue1, 255, 255);
  2430. leds[111] = CHSV(hue1, 255, 255);
  2431. break;
  2432.  
  2433. case 24:
  2434. leds[83] = CHSV(hue1, 255, 255);
  2435. leds[88] = CHSV(hue1, 255, 255);
  2436. leds[105] = CHSV(hue1, 255, 255);
  2437. leds[110] = CHSV(hue1, 255, 255);
  2438. break;
  2439.  
  2440. case 25:
  2441. leds[84] = CHSV(hue1, 255, 255);
  2442. leds[90] = CHSV(hue1, 255, 255);
  2443. leds[103] = CHSV(hue1, 255, 255);
  2444. leds[109] = CHSV(hue1, 255, 255);
  2445. break;
  2446.  
  2447. case 26:
  2448. leds[89] = CHSV(hue1, 255, 255);
  2449. leds[104] = CHSV(hue1, 255, 255);
  2450. break;
  2451.  
  2452. default:
  2453. // if nothing else matches, do the default
  2454. // HOLD it solid for a few cycles... maybe later we can add some animation.
  2455. // Now we'll hold it solid for cycles 11-20
  2456. break;
  2457. }
  2458.  
  2459. FastLED.show();
  2460. //delay (20);
  2461. delay (30);
  2462.  
  2463. //fadeToBlackBy( leds, NUM_LEDS, 25);
  2464. fadeToBlackBy( leds, NUM_LEDS, 50);
  2465. }
  2466. // end display loop
  2467. }
  2468. // end loop for number of displays loop
  2469. }
  2470.  
  2471.  
  2472.  
  2473. void branch_fade()
  2474. {
  2475. uint8_t branch_id = 1;
  2476. uint8_t TOTAL_CYCLES = 60;
  2477.  
  2478. uint8_t offset_br1;
  2479. uint8_t offset_br2;
  2480. uint8_t offset_br3;
  2481. uint8_t offset_br4;
  2482. uint8_t offset_br5;
  2483. uint8_t offset_br6;
  2484.  
  2485. // random color
  2486. uint8_t hue1 = random8(255);
  2487.  
  2488. for (int j=0; j<5; j++) {
  2489. for (int current_cycle=0; current_cycle < TOTAL_CYCLES; current_cycle++) {
  2490.  
  2491. int branch_id;
  2492. branch_id = current_cycle % 10;
  2493.  
  2494. // I changed the order to 50, 40, 30, .. 0 so that this goes in reverse. All other
  2495. // effects go clockwise. I wanted something that went the other direction!
  2496. if (current_cycle == 50) {
  2497. for (int i=0; i<26; i++) {
  2498. uint8_t offset_br1 = pgm_read_byte(&flakeBranch1Array[i]);
  2499. leds[offset_br1] = CHSV(hue1, 255, 255);
  2500. }
  2501. }
  2502.  
  2503. if (current_cycle == 40) {
  2504. for (int i=0; i<26; i++) {
  2505. uint8_t offset_br2 = pgm_read_byte(&flakeBranch2Array[i]);
  2506. leds[offset_br2] = CHSV(hue1, 255, 255);
  2507. }
  2508. }
  2509.  
  2510. if (current_cycle == 30) {
  2511. for (int i=0; i<26; i++) {
  2512. uint8_t offset_br3 = pgm_read_byte(&flakeBranch3Array[i]);
  2513. leds[offset_br3] = CHSV(hue1, 255, 255);
  2514. }
  2515. }
  2516.  
  2517. if (current_cycle == 20) {
  2518. for (int i=0; i<26; i++) {
  2519. uint8_t offset_br4 = pgm_read_byte(&flakeBranch4Array[i]);
  2520. leds[offset_br4] = CHSV(hue1, 255, 255);
  2521. }
  2522. }
  2523.  
  2524. if (current_cycle == 10) {
  2525. for (int i=0; i<26; i++) {
  2526. uint8_t offset_br5 = pgm_read_byte(&flakeBranch5Array[i]);
  2527. leds[offset_br5] = CHSV(hue1, 255, 255);
  2528. }
  2529. }
  2530.  
  2531. if (current_cycle == 0) {
  2532. for (int i=0; i<26; i++) {
  2533. uint8_t offset_br6 = pgm_read_byte(&flakeBranch6Array[i]);
  2534. leds[offset_br6] = CHSV(hue1, 255, 255);
  2535. }
  2536. }
  2537.  
  2538. FastLED.show();
  2539. delay(30);
  2540. fadeToBlackBy( leds, NUM_LEDS, 25);
  2541. }
  2542. // end of display control
  2543. }
  2544. // end of total cycles loop
  2545.  
  2546. }
  2547.  
  2548.  
  2549.  
  2550. // turn on all LEDs are differnt colors - flash them to get attention, then fade out
  2551. void fulldisplay_w_flash()
  2552. {
  2553.  
  2554. // start with 3 different colors - if more or less required, adjust the if statement below
  2555. // 300 ms on, 100 ms off seems pretty striking
  2556. for (int color_id=0; color_id<3; color_id++) {
  2557.  
  2558. for (int i=0; i<6; i++) {
  2559. FastLED.clear();
  2560. FastLED.show();
  2561. delay (150);
  2562.  
  2563. // pick a color based on color ID
  2564. if (color_id == 0) { fill_solid( leds, NUM_LEDS, CRGB::White ); }
  2565. if (color_id == 1) { fill_solid( leds, NUM_LEDS, CRGB::Red ); }
  2566. if (color_id == 2) { fill_solid( leds, NUM_LEDS, CRGB::Green); }
  2567.  
  2568. FastLED.show();
  2569. delay (300);
  2570. }
  2571.  
  2572. // all LEDs are now on, fade to black
  2573. for (int j=0; j<20; j++) {
  2574. fadeToBlackBy( leds, NUM_LEDS, 75);
  2575. FastLED.show();
  2576. delay(35);
  2577. }
  2578.  
  2579. }
  2580. // end of color loops
  2581. }
  2582.  
  2583.  
  2584. void fill_solid_color()
  2585. {
  2586.  
  2587. uint8_t hue1 = random8(255);
  2588. uint8_t hue2 = random8(255);
  2589.  
  2590. for (int i=0; i<NUM_LEDS; i++) {
  2591. Serial.println (i);
  2592.  
  2593. leds[i] = CHSV( hue1, 255, 255);
  2594. leds[i-1] = CHSV( hue2, 255, 255);
  2595. FastLED.show();
  2596. leds[i] = CRGB::Black;
  2597.  
  2598. //delay(30);
  2599. delay(20);
  2600. }
  2601. }
  2602.  
  2603. void fill_black()
  2604. {
  2605. FastLED.clear();
  2606. //fill_solid(leds, NUM_LEDS, CRGB::Black);
  2607. }
  2608.  
  2609.  
  2610. void rainbow()
  2611. {
  2612. // FastLED's built-in rainbow generator
  2613. fill_rainbow( leds, NUM_LEDS, gHue, 7);
  2614. }
  2615.  
  2616.  
  2617. void sinelon()
  2618. {
  2619. // a colored dot sweeping back and forth, with fading trails
  2620. fadeToBlackBy( leds, NUM_LEDS, 20);
  2621. int pos = beatsin16(13,0,NUM_LEDS);
  2622. leds[pos] += CHSV( gHue, 255, 192);
  2623. }
  2624.  
  2625. void bpm()
  2626. {
  2627. // colored stripes pulsing at a defined Beats-Per-Minute (BPM)
  2628. uint8_t BeatsPerMinute = 62;
  2629. CRGBPalette16 palette = PartyColors_p;
  2630. uint8_t beat = beatsin8( BeatsPerMinute, 64, 255);
  2631. for( int i = 0; i < NUM_LEDS; i++) { //9948
  2632. leds[i] = ColorFromPalette(palette, gHue+(i*2), beat-gHue+(i*10));
  2633. }
  2634. }
  2635.  
  2636.  
  2637. void juggle() {
  2638. // eight colored dots, weaving in and out of sync with each other
  2639. fadeToBlackBy( leds, NUM_LEDS, 20);
  2640. byte dothue = 0;
  2641. for( int i = 0; i < 8; i++) {
  2642. leds[beatsin16(i+7,0,NUM_LEDS)] |= CHSV(dothue, 200, 255);
  2643. dothue += 32;
  2644. }
  2645. }
  2646.  
  2647.  
  2648. // draws a line that fades between 2 random colors
  2649. // TODO: Add logic to rotate the starting point
  2650. void gradient_fill() {
  2651.  
  2652. // uint8_t hue1 = 60;
  2653. // uint8_t hue2 = random8(255);
  2654. uint8_t hue1 = random8(255);
  2655. uint8_t hue2 = hue1 + random8(30,61);
  2656.  
  2657. for( int i = 0; i < NUM_LEDS; i++){
  2658. //fill_gradient (leds, 0, CHSV(0, 255, 255), i, CHSV(96, 255, 255), SHORTEST_HUES);
  2659. fill_gradient (leds, 0, CHSV(hue1, 255, 255), i, CHSV(hue2, 255, 255), SHORTEST_HUES);
  2660. delay(25);
  2661. FastLED.show();
  2662. //FastLED.clear();
  2663. }
  2664. }
  2665.  
  2666. // draws a line that fades between 2 random colors
  2667. // Added logic to rotate the starting corner
  2668. /*
  2669. void gradient_fill_2() {
  2670.  
  2671. uint8_t hue1 = random8(255);
  2672. uint8_t hue2 = hue1 + random8(30,61);
  2673. uint8_t offset2;
  2674. CRGB grad[NUM_LEDS]; // A place to save the gradient colors. (Don't edit this)
  2675. fill_gradient (grad, 0, CHSV(hue1, 255, 255), NUM_LEDS, CHSV(hue2, 255, 255), SHORTEST_HUES);
  2676.  
  2677. // display each pixel one at a time
  2678. for( int i = 0; i < NUM_LEDS; i++){
  2679.  
  2680. if ( (i+offset_for_star_rotation) < NUM_LEDS ) {
  2681. offset2 = i+offset_for_star_rotation;
  2682. }
  2683. else {
  2684. offset2 = i+offset_for_star_rotation-NUM_LEDS;
  2685. }
  2686.  
  2687. leds[offset2] = grad[i];
  2688. //delay(25);
  2689. delay(12);
  2690. FastLED.show();
  2691. }
  2692.  
  2693. // rotate star starting point for next loop
  2694. offset_for_star_rotation += 20;
  2695. if (offset_for_star_rotation >= 100) {
  2696. offset_for_star_rotation = 0;
  2697. }
  2698. FastLED.clear();
  2699. }
  2700. */
  2701.  
  2702.  
  2703.  
  2704. // Adapted from code by Marc Miller. Original Header:
  2705. //
  2706. //***************************************************************
  2707. // Marquee fun (v3)
  2708. // Pixel position down the strip comes from this formula:
  2709. // pos = spacing * (i-1) + spacing
  2710. // i starts at 0 and is incremented by +1 up to NUM_LEDS/spacing.
  2711. //
  2712. // Marc Miller, May 2016
  2713. //***************************************************************
  2714. void marque_v3() {
  2715.  
  2716.  
  2717. for (uint8_t i=0; i<(NUM_LEDS/spacing); i++){
  2718. for (uint8_t w = 0; w<width; w++){
  2719. pos = (spacing * (i-1) + spacing + advance + w) % NUM_LEDS;
  2720. if ( w % 2== 0 ){ // Is w even or odd?
  2721. color = hue;
  2722. } else {
  2723. color = hue + hue2_shift;
  2724. }
  2725.  
  2726. leds[pos] = CHSV(color,255,255);
  2727. }
  2728.  
  2729. if (DEBUG==1) { // Print out lit pixels if DEBUG is true.
  2730. Serial.print(" "); Serial.print(pos);
  2731. }
  2732. delay(10);
  2733. }
  2734. if (DEBUG==1) { Serial.println(" "); }
  2735. FastLED.show();
  2736.  
  2737. // Fade out tail or set back to black for next loop around.
  2738. if (fadingTail == 1) {
  2739. fadeToBlackBy(leds, NUM_LEDS,fadeRate);
  2740. } else {
  2741. for (uint8_t i=0; i<(NUM_LEDS/spacing); i++){
  2742. for (uint8_t w = 0; w<width; w++){
  2743. pos = (spacing * (i-1) + spacing + advance + w) % NUM_LEDS;
  2744. leds[pos] = CRGB::Black;
  2745. }
  2746. }
  2747. }
  2748.  
  2749. // Advance pixel postion down strip, and rollover if needed.
  2750. advance = (advance + delta + NUM_LEDS) % NUM_LEDS;
  2751. }
  2752.  
  2753.  
  2754. void TestGlitter()
  2755. {
  2756. FastLED.clear();
  2757. addGlitter(95);
  2758. delay(25);
  2759. }
  2760.  
  2761.  
  2762. // add several random white spots/stars/glitters
  2763. void addGlitter( fract8 chanceOfGlitter)
  2764. {
  2765. for (int i=0; i<20; i++) {
  2766. if( random8() < chanceOfGlitter) {
  2767. leds[ random16(NUM_LEDS) ] += CRGB::White;
  2768. }
  2769. }
  2770. }
  2771.  
  2772. void confetti()
  2773. {
  2774. // random colored speckles that blink in and fade smoothly
  2775. fadeToBlackBy( leds, NUM_LEDS, 10);
  2776. int pos = random16(NUM_LEDS);
  2777. leds[pos] += CHSV( gHue + random8(64), 200, 255);
  2778. }
  2779.  
  2780.  
  2781. // END
Advertisement
Add Comment
Please, Sign In to add comment