Advertisement
Guest User

Companion Cube code

a guest
Aug 7th, 2017
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.19 KB | None | 0 0
  1. #include <Adafruit_NeoPixel.h>
  2.  
  3. #define PIN 0 //The data pin for the leds
  4. #define NUMLEDS 4 //The number of leds in the strip
  5.  
  6. Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMLEDS, PIN, NEO_GRB + NEO_KHZ800);
  7.  
  8. struct  RAINBOWSTRUCT {
  9.   unsigned  long  period;
  10.   unsigned  long  last;
  11.   uint16_t  value;
  12.   uint16_t bri; //brightness value
  13.   uint16_t bridir; //brightness direction, 0 decreasing 1 increasing, for breathing effect
  14.   unsigned long briperiod; //brightness period
  15.   unsigned long brilast; //last time brightness process executed
  16. };
  17.  
  18. struct RAINBOWSTRUCT rainbow;
  19.  
  20. void setup() {
  21.   rainbow.period=50;
  22.   rainbow.last=0;
  23.   rainbow.value=240;
  24.   rainbow.bri=255;
  25.   rainbow.bridir=0;
  26.   rainbow.briperiod=15;
  27.   rainbow.brilast=0;
  28.   strip.begin();
  29.   strip.show(); // Initialize all pixels to 'off'
  30. }
  31.  
  32. void loop() {
  33. unsigned long curr_ms = millis ();
  34. loop_bri(curr_ms);
  35. //loop_rainbow(curr_ms);
  36. }
  37.  
  38. void loop_rainbow(unsigned long curr_ms){
  39.   if(curr_ms - rainbow.last >= rainbow.period){
  40.     rainbow.last=curr_ms;//new time
  41.  
  42.    
  43.     for(int i=0; i<strip.numPixels(); i++) {
  44.       strip.setPixelColor(i,Wheel(rainbow.value));
  45.     }
  46.     rainbow.value=(rainbow.value+1)&255;
  47.     strip.show();
  48.   }
  49. }
  50.  
  51. void loop_bri(unsigned long curr_ms){
  52.   if(curr_ms - rainbow.brilast >= rainbow.briperiod){
  53.     rainbow.brilast=curr_ms;//new time
  54.  
  55.     if(rainbow.bridir){
  56.       rainbow.bri=rainbow.bri+1;
  57.     }else{
  58.       rainbow.bri=rainbow.bri-1;
  59.     }
  60.     strip.setBrightness(rainbow.bri);
  61.     for(int i=0; i<strip.numPixels(); i++) {
  62.       strip.setPixelColor(i,Wheel(rainbow.value));
  63.     }
  64.     strip.show();
  65.     if(rainbow.bri==255){
  66.       rainbow.bridir=0;
  67.     }
  68.  
  69.     if(rainbow.bri==30){
  70.       rainbow.bridir=1;
  71.     }
  72.   }
  73. }
  74.  
  75. // Input a value 0 to 255 to get a color value.
  76. // The colours are a transition r - g - b - back to r.
  77. uint32_t Wheel(byte WheelPos) {
  78.   WheelPos = 255 - WheelPos;
  79.   if(WheelPos < 85) {
  80.     return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  81.   }
  82.   if(WheelPos < 170) {
  83.     WheelPos -= 85;
  84.     return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  85.   }
  86.   WheelPos -= 170;
  87.   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement