Advertisement
UnaClocker

Christmas Lights December 4th

Dec 4th, 2015
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.93 KB | None | 0 0
  1. #include <Adafruit_NeoPixel.h>
  2. #ifdef __AVR__
  3.   #include <avr/power.h>
  4. #endif
  5.  
  6. #define PIN 16
  7.  
  8. // Parameter 1 = number of pixels in strip
  9. // Parameter 2 = Arduino pin number (most are valid)
  10. // Parameter 3 = pixel type flags, add together as needed:
  11. //   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
  12. //   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
  13. //   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
  14. //   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
  15. Adafruit_NeoPixel strip = Adafruit_NeoPixel(300, PIN, NEO_GRB + NEO_KHZ800);
  16. long randNumber;
  17. uint32_t currentColor;
  18.  
  19. // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
  20. // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
  21. // and minimize distance between Arduino and first pixel.  Avoid connecting
  22. // on a live circuit...if you must, connect GND first.
  23.  
  24. void setup() {
  25.  
  26.   randomSeed(analogRead(2));
  27.   strip.begin();
  28.   strip.show(); // Initialize all pixels to 'off'
  29. }
  30.  
  31. void loop() {
  32.   switch(random(81)/9) {
  33.     case 0:
  34.       policeStrobe();
  35.       break;
  36.     case 1:
  37.       christmasLights(); // I wrote this pattern.
  38.       break;
  39.     case 2:
  40.       up(strip.Color(255, 0, 0), 2); // Red
  41.       down(2); // I wrote this unwipe routine.
  42.       up(strip.Color(0, 255, 0), 2); // Green
  43.       down(2);
  44.       up(strip.Color(0, 0, 255), 2); // Blue
  45.       down(2);
  46.       break;
  47.     case 3:
  48.       colorBricks(strip.Color(random(255), random(255), random(255)),strip.Color(random(255), random(255), random(255)));
  49.       colorBricks(strip.Color(random(255), random(255), random(255)),strip.Color(random(255), random(255), random(255)));
  50.       colorBricks(strip.Color(random(255), random(255), random(255)),strip.Color(random(255), random(255), random(255)));
  51.       colorBricks(strip.Color(random(255), random(255), random(255)),strip.Color(random(255), random(255), random(255)));
  52.       break;
  53.     case 4:
  54.       theaterChase(strip.Color(127, 127, 127), 75); // White
  55.       theaterChase(strip.Color(127, 0, 0), 75); // Red
  56.       theaterChase(strip.Color(0, 127, 0), 75); // Blue
  57.       break;
  58.     case 5:
  59.       rainbow(15);
  60.       break;
  61.     case 6:
  62.       rainbowCycle(5);
  63.       break;
  64.     case 7:
  65.       theaterChaseRainbow(60);
  66.       break;
  67.     case 8:
  68.       waterFall();
  69.       break;
  70.     case 9:
  71.       for (int repeats=0; repeats<20; repeats++) stripes();
  72.       break;
  73.   }
  74.   delay(100);
  75. }
  76.  
  77. void policeStrobe() {
  78.   for (int loopC=0; loopC<50; loopC++) {
  79.   for (int loopB=0; loopB<5; loopB++) {
  80.   for (int loopA=0; loopA<300; loopA++) {
  81.     strip.setPixelColor(loopA,strip.Color(255,0,0));
  82.   }
  83.   strip.show();
  84.   delay(30);
  85.   for (int loopA=0; loopA<300; loopA++) {
  86.     strip.setPixelColor(loopA,0);
  87.   }
  88.   strip.show();
  89.   delay(55);
  90.   }
  91.   delay(75);
  92.   for (int loopB=0; loopB<5; loopB++) {
  93.   for (int loopA=0; loopA<300; loopA++) {
  94.     strip.setPixelColor(loopA,strip.Color(0,0,255));
  95.   }  
  96.   strip.show();
  97.   delay(30);
  98.   for (int loopA=0; loopA<300; loopA++) {
  99.     strip.setPixelColor(loopA,0);
  100.   }
  101.   strip.show();
  102.   delay(55);
  103.   }
  104.   delay(75);
  105.   }
  106. }
  107.  
  108. void stripes() {
  109.   int loopA=-12;
  110.   int loopB=-9;
  111.   int loopC=-6;
  112.   int loopD=-3;
  113.   for (int goForward=0; goForward<15; goForward++) {
  114.   strip.setPixelColor(19+loopA,strip.Color(200,200,0));
  115.   strip.setPixelColor(20+loopA,strip.Color(200,200,0));
  116.   strip.setPixelColor(21+loopA,strip.Color(200,200,0));
  117.   strip.setPixelColor(22+loopA,strip.Color(200,200,0));
  118.   strip.setPixelColor(125+loopB,strip.Color(200,200,0));
  119.   strip.setPixelColor(126+loopB,strip.Color(200,200,0));
  120.   strip.setPixelColor(127+loopB,strip.Color(200,200,0));
  121.   strip.setPixelColor(217+loopC,strip.Color(200,200,0));
  122.   strip.setPixelColor(218+loopC,strip.Color(200,200,0));
  123.   strip.setPixelColor(273+loopD,strip.Color(200,200,0));
  124.   strip.show();
  125.   delay(50);
  126.   strip.setPixelColor(19+loopA,0);
  127.   strip.setPixelColor(20+loopA,0);
  128.   strip.setPixelColor(21+loopA,0);
  129.   strip.setPixelColor(22+loopA,0);
  130.   strip.setPixelColor(125+loopB,0);
  131.   strip.setPixelColor(126+loopB,0);
  132.   strip.setPixelColor(127+loopB,0);
  133.   strip.setPixelColor(217+loopC,0);
  134.   strip.setPixelColor(218+loopC,0);
  135.   strip.setPixelColor(273+loopD,0);
  136.   loopA+=4;
  137.   loopB+=3;
  138.   loopC+=2;
  139.   loopD++;
  140.   }
  141.   for (int goBack; goBack <15; goBack++) {
  142.   strip.setPixelColor(19+loopA,0);
  143.   strip.setPixelColor(20+loopA,0);
  144.   strip.setPixelColor(21+loopA,0);
  145.   strip.setPixelColor(22+loopA,0);
  146.   strip.setPixelColor(125+loopB,0);
  147.   strip.setPixelColor(126+loopB,0);
  148.   strip.setPixelColor(127+loopB,0);
  149.   strip.setPixelColor(217+loopC,0);
  150.   strip.setPixelColor(218+loopC,0);
  151.   strip.setPixelColor(273+loopD,0);
  152.   loopA-=4;
  153.   loopB-=3;
  154.   loopC-=2;
  155.   loopD--;
  156.   strip.setPixelColor(19+loopA,strip.Color(200,200,0));
  157.   strip.setPixelColor(20+loopA,strip.Color(200,200,0));
  158.   strip.setPixelColor(21+loopA,strip.Color(200,200,0));
  159.   strip.setPixelColor(22+loopA,strip.Color(200,200,0));
  160.   strip.setPixelColor(125+loopB,strip.Color(200,200,0));
  161.   strip.setPixelColor(126+loopB,strip.Color(200,200,0));
  162.   strip.setPixelColor(127+loopB,strip.Color(200,200,0));
  163.   strip.setPixelColor(217+loopC,strip.Color(200,200,0));
  164.   strip.setPixelColor(218+loopC,strip.Color(200,200,0));
  165.   strip.setPixelColor(273+loopD,strip.Color(200,200,0));
  166.   strip.show();
  167.   delay(50);
  168.  
  169.   }
  170.  
  171.   for (int pixelCount=0; pixelCount < 300; pixelCount++) {
  172.     strip.setPixelColor(pixelCount,0);
  173.   }
  174.  
  175. }
  176.  
  177. void christmasLights() {
  178. for (uint16_t loopy=0; loopy<26; loopy++) {
  179.   for (uint16_t i=0; i<strip.numPixels(); i+=5) {
  180.     strip.setPixelColor(i,strip.Color(255,0,0)); // Red
  181.   }
  182.   for (uint16_t i=1; i<strip.numPixels(); i+=5) {
  183.     strip.setPixelColor(i,strip.Color(0,255,0)); // Green
  184.   }
  185.   for (uint16_t i=2; i<strip.numPixels(); i+=5) {
  186.     strip.setPixelColor(i,strip.Color(0,0,255)); // Blue
  187.   }
  188.   for (uint16_t i=3; i<strip.numPixels(); i+=5) {
  189.     strip.setPixelColor(i,strip.Color(200,100,0)); // Orange
  190.   }
  191.   for (uint16_t i=4; i<strip.numPixels(); i+=5) {
  192.     strip.setPixelColor(i,strip.Color(128,0,128)); // Red
  193.   }
  194.   strip.show();
  195.   delay(500);
  196.   for (uint16_t i=0; i<strip.numPixels(); i++) {
  197.     strip.setPixelColor(i,strip.Color(0,0,0)); // Blank
  198.   }
  199.   strip.show();
  200.   delay(500);
  201. }
  202. }
  203.  
  204.  
  205. // Fill the dots one after the other with a color
  206. void up(uint32_t c, uint8_t wait) {
  207.   for(uint16_t i=0; i<strip.numPixels(); i++) {
  208.     strip.setPixelColor(i, c);
  209.     strip.show();
  210.     delay(wait);
  211.   }
  212. }
  213.  
  214. void colorBricks(uint32_t c1, uint32_t c2) {
  215.   uint16_t backwards=strip.numPixels();
  216.   for(uint16_t forwards=0; forwards<strip.numPixels(); forwards++) {
  217.     if (backwards<299) strip.setPixelColor(backwards+1, 0);
  218.     if (forwards>0) strip.setPixelColor(forwards-1, 0);
  219.     strip.setPixelColor(forwards, c1);
  220.     strip.setPixelColor(backwards, c2);
  221.     strip.setPixelColor(forwards+1, c1);
  222.     strip.setPixelColor(backwards-1, c2);
  223.     strip.setPixelColor(forwards+2, c1);
  224.     strip.setPixelColor(backwards-2, c2);
  225.     strip.setPixelColor(forwards+3, c1);
  226.     strip.setPixelColor(backwards-3, c2);
  227.     strip.setPixelColor(backwards-4, c2);
  228.     strip.setPixelColor(forwards+4, c1);
  229.     strip.show();
  230.     backwards--;
  231.     delay(2);
  232.   }
  233.   strip.setPixelColor(299,0);
  234. }
  235.  
  236. void down(uint8_t wait) {
  237.   for(uint16_t i=strip.numPixels(); i>0; i--) {
  238.     strip.setPixelColor(i, 0);
  239.     strip.show();
  240.     delay(wait);
  241.   }
  242. }
  243. void rainbow(uint8_t wait) {
  244.   uint16_t i, j;
  245.  
  246.   for(j=0; j<256; j++) {
  247.     for(i=0; i<strip.numPixels(); i++) {
  248.       strip.setPixelColor(i, Wheel((i+j) & 255));
  249.     }
  250.     strip.show();
  251.     delay(wait);
  252.   }
  253. }
  254.  
  255. // Slightly different, this makes the rainbow equally distributed throughout
  256. void rainbowCycle(uint8_t wait) {
  257.   uint16_t i, j;
  258.  
  259.   for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
  260.     for(i=0; i< strip.numPixels(); i++) {
  261.       strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
  262.     }
  263.     strip.show();
  264.     delay(wait);
  265.   }
  266. }
  267.  
  268. //Theatre-style crawling lights.
  269. void theaterChase(uint32_t c, uint8_t wait) {
  270.   for (int j=0; j<30; j++) {  //do 10 cycles of chasing
  271.     for (int q=0; q < 5; q++) {
  272.       for (int i=0; i < strip.numPixels(); i=i+5) {
  273.         strip.setPixelColor(i+q, c);    //turn every third pixel on
  274.       }
  275.       strip.show();
  276.  
  277.       delay(wait);
  278.  
  279.       for (int i=0; i < strip.numPixels(); i=i+5) {
  280.         strip.setPixelColor(i+q, 0);        //turn every third pixel off
  281.       }
  282.     }
  283.   }
  284. }
  285.  
  286. //Theatre-style crawling lights with rainbow effect
  287. void theaterChaseRainbow(uint8_t wait) {
  288.   for (int j=0; j < 256; j++) {     // cycle all 256 colors in the wheel
  289.     for (int q=0; q < 5; q++) {
  290.       for (int i=0; i < strip.numPixels(); i=i+5) {
  291.         strip.setPixelColor(i+q, Wheel( (i+j) % 255));    //turn every third pixel on
  292.       }
  293.       strip.show();
  294.  
  295.       delay(wait);
  296.  
  297.       for (int i=0; i < strip.numPixels(); i=i+5) {
  298.         strip.setPixelColor(i+q, 0);        //turn every third pixel off
  299.       }
  300.     }
  301.   }
  302. }
  303.  
  304.  
  305. void waterFall() {
  306.   for (int pixelCount=0; pixelCount < 300; pixelCount++) {
  307.     currentColor=strip.Color(random(255), random(255), random(255));
  308.     for (int currentPixel=300; currentPixel > pixelCount; currentPixel--) {
  309.       strip.setPixelColor(currentPixel+1,0);
  310.       strip.setPixelColor(currentPixel,currentColor);
  311.       strip.show();
  312.     }
  313.   }
  314.   for (int pixelCount=0; pixelCount < 300; pixelCount++) {
  315.     strip.setPixelColor(pixelCount,0);
  316.   }
  317. }
  318.  
  319. // Input a value 0 to 255 to get a color value.
  320. // The colours are a transition r - g - b - back to r.
  321. uint32_t Wheel(byte WheelPos) {
  322.   WheelPos = 255 - WheelPos;
  323.   if(WheelPos < 85) {
  324.     return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  325.   }
  326.   if(WheelPos < 170) {
  327.     WheelPos -= 85;
  328.     return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  329.   }
  330.   WheelPos -= 170;
  331.   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  332. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement