Guest User

Untitled

a guest
Apr 11th, 2016
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. /*
  2. Under Door Lighting Sketch by PerfectPixel, 2016. Code edited from examples on Tweaking4all.com.
  3. Library provided by Adafruit.
  4.  
  5. Tweaking4all: http://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/
  6. Adafruit: https://www.adafruit.com/
  7. PerfectPixel: http://www.instructables.com/member/perfectpixel
  8.  
  9. all code is public domain.
  10. */
  11. #include <Adafruit_NeoPixel.h>
  12. #define PIN 9
  13. #define NUM_LEDS 27
  14.  
  15. int BUTTON1_A = 11;
  16. int BUTTON1_B = 12;
  17.  
  18. Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
  19.  
  20. void setup() {
  21. pinMode(BUTTON1_A, OUTPUT);
  22. pinMode(BUTTON1_B, INPUT);
  23.  
  24. digitalWrite(BUTTON1_A, HIGH);
  25.  
  26. strip.begin();
  27. strip.show();
  28. }
  29.  
  30. void loop(){
  31. while(digitalRead(BUTTON1_B) == LOW){ //Effects while the door is open
  32. switch(random(11)){ //change these effects to suit your preferences!
  33. case 1:
  34. CylonBounce(0, 255, 150, 7, 35, 100);
  35. break;
  36.  
  37. case 2:
  38. rainbowCycle(5);
  39. break;
  40.  
  41. case 3:
  42. RunningLights(0,0,255, 50);
  43. break;
  44.  
  45. case 4:
  46. CylonBounce(255, 100, 0, 7, 35, 100);
  47. break;
  48.  
  49. case 5:
  50. RunningLights(255,0,0, 50);
  51. break;
  52.  
  53. case 6:
  54. rainbowCycle(2);
  55. break;
  56.  
  57. case 7:
  58. CylonBounce(100, 100, 100, 3, 35, 100);
  59. break;
  60.  
  61. case 8:
  62. RunningLights(0,255,0, 50);
  63. break;
  64.  
  65. case 9:
  66. rainbowCycle(6);
  67. break;
  68.  
  69. case 10:
  70. rainbowCycle(10);
  71. break;
  72. }
  73. }
  74.  
  75. while(digitalRead(BUTTON1_B) == HIGH){ //Effects while the door is closed
  76. setAll(0,0,0);
  77. }
  78. }
  79. /*
  80. *
  81. *
  82. *
  83. *
  84. *
  85. ------------------ */
  86.  
  87. void CylonBounce(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay){
  88.  
  89. for(int i = 0; i < NUM_LEDS-EyeSize-2; i++) {
  90. setAll(0,0,0);
  91. setPixel(i, red/10, green/10, blue/10);
  92. for(int j = 1; j <= EyeSize; j++) {
  93. setPixel(i+j, red, green, blue);
  94. }
  95. setPixel(i+EyeSize+1, red/10, green/10, blue/10);
  96. showStrip();
  97. delay(SpeedDelay);
  98. }
  99.  
  100. delay(ReturnDelay);
  101.  
  102. for(int i = NUM_LEDS-EyeSize-2; i > 0; i--) {
  103. setAll(0,0,0);
  104. setPixel(i, red/10, green/10, blue/10);
  105. for(int j = 1; j <= EyeSize; j++) {
  106. setPixel(i+j, red, green, blue);
  107. }
  108. setPixel(i+EyeSize+1, red/10, green/10, blue/10);
  109. showStrip();
  110. delay(SpeedDelay);
  111. }
  112.  
  113. delay(ReturnDelay);
  114. }
  115.  
  116. void rainbowCycle(int SpeedDelay) {
  117. byte *c;
  118. uint16_t i, j;
  119.  
  120. for(j=0; j<256*2; j++) {
  121. for(i=0; i< NUM_LEDS; i++) {
  122. c=Wheel(((i * 256 / NUM_LEDS) + j) & 255);
  123. setPixel(i, *c, *(c+1), *(c+2));
  124. }
  125. showStrip();
  126. delay(SpeedDelay);
  127. }
  128. }
  129.  
  130. byte * Wheel(byte WheelPos) {
  131. static byte c[3];
  132.  
  133. if(WheelPos < 85) {
  134. c[0]=WheelPos * 3;
  135. c[1]=255 - WheelPos * 3;
  136. c[2]=0;
  137. } else if(WheelPos < 170) {
  138. WheelPos -= 85;
  139. c[0]=255 - WheelPos * 3;
  140. c[1]=0;
  141. c[2]=WheelPos * 3;
  142. } else {
  143. WheelPos -= 170;
  144. c[0]=0;
  145. c[1]=WheelPos * 3;
  146. c[2]=255 - WheelPos * 3;
  147. }
  148.  
  149. return c;
  150. }
  151.  
  152. void RunningLights(byte red, byte green, byte blue, int WaveDelay) {
  153. int Position=0;
  154.  
  155. for(int i=0; i<NUM_LEDS*2; i++)
  156. {
  157. Position++; // = 0; //Position + Rate;
  158. for(int i=0; i<NUM_LEDS; i++) {
  159. // sine wave, 3 offset waves make a rainbow!
  160. //float level = sin(i+Position) * 127 + 128;
  161. //setPixel(i,level,0,0);
  162. //float level = sin(i+Position) * 127 + 128;
  163. setPixel(i,((sin(i+Position) * 127 + 128)/255)*red,
  164. ((sin(i+Position) * 127 + 128)/255)*green,
  165. ((sin(i+Position) * 127 + 128)/255)*blue);
  166. }
  167.  
  168. showStrip();
  169. delay(WaveDelay);
  170. }
  171. }
  172.  
  173. /* ---------------------
  174. *
  175. *
  176. *
  177. *
  178. */
  179. void showStrip() {
  180. strip.show();
  181. }
  182.  
  183. void setPixel(int Pixel, byte red, byte green, byte blue) {
  184. strip.setPixelColor(Pixel, strip.Color(red, green, blue));
  185. }
  186.  
  187. void setAll(byte red, byte green, byte blue) {
  188. for(int i = 0; i < NUM_LEDS; i++ ) {
  189. setPixel(i, red, green, blue);
  190. }
  191. showStrip();
  192. }
Add Comment
Please, Sign In to add comment