Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.81 KB | None | 0 0
  1. #define R 3
  2. #define G 6
  3. #define B 5
  4.  
  5. //define a max multiplier for brightness, between 0.0-1.0
  6. //usage: 255*brightness constant
  7. double MAX = 1.0;
  8. String colors = "";
  9. String prevCols = "";
  10. int prevR=0,prevG=0,prevB=0;
  11. bool valid = false;
  12. const int STEPS = 55;
  13.  
  14. void setup(){
  15.   pinMode(R,OUTPUT);
  16.   pinMode(G,OUTPUT);
  17.   pinMode(B,OUTPUT);
  18.   Serial.begin(9600);
  19.   setMax(1.0);
  20.   //xoffwhite();
  21. }
  22.  
  23. void loop(){
  24.    //strobe(100);
  25.    // pulse(0.2,0.4, 80);
  26. //  red();
  27. //  pulse2(0.5,1.0,30);
  28. //  orange();
  29.     //pulse(0.45,0.8,20);
  30.     //pulse(0.4,1.0, 15);
  31.     //pulse(0.45,1.0, 10);
  32.  
  33.   //keep it to four beats for 1 second
  34.   //5 beats is usually house music
  35.   //beats(".. . . .");
  36.   //rainbow();
  37.   //lightning();
  38.   warm();
  39.  //disco();
  40. }
  41.  
  42.  
  43. //int val(int col){return (int)((double)col*MAX);}
  44. int val(int col){return col*MAX;}
  45.  
  46. void write(int r, int g, int b){
  47.   //multipliers, 1 or -1
  48.   int rMult=1,gMult=1,bMult=1; //set default as r>prevR
  49.   if (prevR>r) rMult=-1;
  50.   if (prevG>g) gMult=-1;
  51.   if (prevB>b) bMult=-1;
  52.   //differential
  53.   int diffR = abs(prevR-r);
  54.   int diffG = abs(prevG-g);
  55.   int diffB = abs(prevB-b);
  56.   //fade in 10 steps, 250ms total
  57.    for (int i=1;i<=STEPS;i++){
  58.     int tempR=prevR+(rMult*i*diffR/STEPS);
  59.     int tempG=prevG+(gMult*i*diffG/STEPS);
  60.     int tempB=prevB+(bMult*i*diffB/STEPS);
  61.     rawWrite(tempR,tempG,tempB);
  62.     delay(35);
  63.    }
  64.   prevR=r;
  65.   prevG=g;
  66.   prevB=b;
  67.   //delay(1000);
  68. }
  69.  
  70. void printRGB(int r, int g, int b){
  71.   Serial.print("("); Serial.print (r);
  72.   Serial.print(", "); Serial.print (g);
  73.   Serial.print(", "); Serial.print (b);
  74.   Serial.println(")");
  75. }
  76.  
  77. void rawWrite(int r, int g, int b){
  78.   //printRGB(val(r), val(g), val(b));
  79.   analogWrite(R, val(r));
  80.   analogWrite(G, val(g));
  81.   analogWrite(B, val(b));
  82. }
  83.  
  84. void setMax(double n){
  85.   if (n>1.0) MAX = 1.0;
  86.   else if (n<0.0) MAX = 0.1;
  87.   else MAX = n;
  88. }
  89.  
  90. //default colors with fade
  91. void white(){write(255,255,255);}
  92. void dark(){write(0,0,0);}
  93. void red(){write(255,0,0);}
  94. void green(){write(0,255,0);}
  95. void blue(){write(0,0,255);}
  96. void pink(){write(255,20,200);}
  97. void cyan(){write(0,255,255);}
  98. void purple(){write(160,32,240);}
  99. void yellow(){write(255,255,0);}
  100. void orange(){write(255,94,0);}
  101. //calm colors
  102. void offwhite(){write(255,150,80);}
  103. //lightning
  104. void darkblue(){write(20,0,100);}
  105. void darkpurple(){write(50,20,100);}
  106. void darkred(){write(50,0,75);}
  107. void almostdark(){rawWrite(0,0,0);}
  108.  
  109. //colors without fade
  110. //default colors
  111. void xwhite(){rawWrite(255,255,255);}
  112. void xdark(){rawWrite(0,0,0);}
  113. void xred(){rawWrite(255,0,0);}
  114. void xgreen(){rawWrite(0,255,0);}
  115. void xblue(){rawWrite(0,0,255);}
  116. void xpink(){rawWrite(255,20,200);}
  117. void xcyan(){rawWrite(0,255,255);}
  118. void xpurple(){rawWrite(160,32,240);}
  119. void xyellow(){rawWrite(255,255,0);}
  120. void xorange(){rawWrite(255,94,0);}
  121. //calm colors
  122. void xoffwhite(){rawWrite(255,200,100);}
  123.  
  124. void randColor(){
  125.   int r = random(800);
  126.   if (r<100) xwhite();
  127.   else if (r<200) xorange();
  128.   else if (r<300) xyellow();
  129.   else if (r<400) xgreen();
  130.   else if (r<500) xcyan();
  131.   else if (r<600) xblue();
  132.   else if (r<700) xpurple();
  133.   else if (r<800) xpink();
  134. //  switch(random(9)){
  135. //    case 1: xwhite(); break;
  136. //    case 2: xorange(); break;
  137. //    case 3: xyellow(); break;
  138. //    case 4: xgreen(); break;
  139. //    case 5: xcyan(); break;
  140. //    case 6: xblue(); break;
  141. //    case 7: xpurple(); break;
  142. //    case 8: xpink(); break;
  143. //    default: xwhite(); break;
  144. //  }
  145. }
  146.  
  147. //COMBOS
  148. void rainbow(){
  149.   red();
  150.   orange();
  151.   yellow();
  152.   green();
  153.   cyan();
  154.   blue();
  155.   purple();
  156.   pink();
  157. }
  158.  
  159. void warm(){
  160.   red();
  161.   orange();
  162. }
  163.  
  164. void lightning(){
  165.   int loops = random(20);
  166.   for (int i=0;i<loops;i++){
  167.     //float strength = random(10);
  168.     darkblue();
  169.     darkpurple();
  170.     darkred();
  171.     int flash_rate = random(1,5);
  172.     if (i%flash_rate==0){
  173.       //flash
  174.       int flashes = random(2,6);
  175.       for (int n = 0; n < flashes; n++){
  176.       //  float strength = random(4,10);
  177.         //MAX = strength/10;
  178.         xoffwhite();
  179.         delay(50);
  180.         almostdark();
  181.         delay(50);
  182.       }
  183.       MAX = 1.0;
  184.     }
  185.   }
  186. }
  187.  
  188. void pulse(double l, double h, int del){
  189. //  offwhite();
  190. //  dark();
  191.   for (double i=l;i<h;i+=0.01){
  192.     MAX = i;
  193.     xpurple();
  194.     //xorange();
  195.     //xwhite();
  196.     delay(del);
  197.   }
  198.   for (double i=h;i>l;i-=0.01){
  199.     MAX = i;
  200.     xpurple();
  201.     //xorange();
  202.     //xwhite();
  203.     delay(del);
  204.   }
  205. }
  206.  
  207. void pulse2(double l, double h, int del){
  208. //  offwhite();
  209. //  dark();
  210.   for (double i=l;i<h;i+=0.01){
  211.     MAX = i;
  212.     xred();
  213.     //xoffwhite();
  214.     delay(del);
  215.   }
  216.   for (double i=h;i>l;i-=0.01){
  217.     MAX = i;
  218.     xred();
  219.     //xoffwhite();
  220.     delay(del);
  221.   }
  222. }
  223.  
  224. void strobe(int del){
  225.   //randColor();
  226.   xwhite();
  227.   delay(del);
  228.   xdark();
  229.   delay(del);
  230. }
  231.  
  232. void disco(){
  233.   pink();
  234.   delay(100);
  235.   green();
  236.   delay(100);
  237.   blue();
  238.   delay(100);
  239.   red();
  240.   delay(100);
  241.   white();
  242.   delay(100);
  243. }
  244.  
  245.  
  246. void beats(char* beat){
  247.   //from "... ... .. ... .."
  248.   //consisting of 5 beats
  249.   //1 dot is 1/4, i.e 250 ms
  250.   //2 dots: 1/8, i.e. 125 ms
  251.   //3 dots: 1/16 i.e. 63 ms
  252.   //use strobe() for each tick
  253.   int count = 0;
  254.   for (int i=0;i<strlen(beat);i++){
  255.     count=0;
  256.     for (int n=i;n<strlen(beat);n++){
  257.       if (beat[n]==' '){
  258. //        Serial.print("Found space at beat[");
  259. //        Serial.print(n); Serial.print("] = ");
  260. //        Serial.println(beat[n]);
  261.         i=n;
  262.         break;
  263.       }
  264.       else{
  265.         //this is a beat
  266. //        Serial.print("Found BEAT at beat[");
  267. //        Serial.print(n); Serial.print("] = ");
  268. //        Serial.println(beat[n]);
  269.         i=n;
  270.         count++;
  271.       }
  272.     }
  273.  
  274. //    Serial.print("Blinking with delay: ");
  275. //    Serial.println(1000/pow(2,1+count));
  276.     strobe(1000/pow(2,1+count));
  277.   }
  278. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement