HighInBC

Untitled

Oct 15th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. #include <Adafruit_NeoPixel.h>
  2. #define LED_PIN PB2
  3.  
  4. int color1[3];
  5. int color2[3];
  6. int color3[3];
  7. int color4[3];
  8. int fade_length = 300;
  9. int frame_delay = 0;
  10.  
  11. Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, LED_PIN, NEO_GRB + NEO_KHZ800);
  12.  
  13. void setup() {
  14. strip.begin();
  15. strip.show();
  16. randomSeed(analogRead(A0));
  17. random_color( color1 );
  18. random_color( color2 );
  19. random_color( color3 );
  20. random_color( color4 );
  21. }
  22.  
  23. void loop() {
  24. for (int i=0; i <= fade_length; i++) {
  25. int fade_color[3];
  26. color_gradient( fade_color, color1, color2, i, fade_length );
  27. strip.setPixelColor( 0, strip.Color( fade_color[0], fade_color[1], fade_color[2] ) );
  28. color_gradient( fade_color, color2, color3, i, fade_length );
  29. strip.setPixelColor( 1, strip.Color( fade_color[0], fade_color[1], fade_color[2] ) );
  30. color_gradient( fade_color, color3, color4, i, fade_length );
  31. strip.setPixelColor( 2, strip.Color( fade_color[0], fade_color[1], fade_color[2] ) );
  32. strip.show();
  33. delay(frame_delay);
  34. }
  35. for (int i=0; i <= 2; i++){
  36. color1[i] = color2[i];
  37. color2[i] = color3[i];
  38. color3[i] = color4[i];
  39. }
  40. random_color( color4 );
  41. }
  42.  
  43. void random_color( int *color ) {
  44. color[0] = random( 0, 255 );
  45. color[1] = random( 0, 255 );
  46. color[2] = random( 0, 255 );
  47. }
  48.  
  49. void color_gradient( int *out, int *in1, int *in2, int u, int t ) {
  50. float point = float(u) / float(t);
  51. for (int i=0; i <= 2; i++){
  52. if( in1[i] > in2[i] ) {
  53. out[i] = in1[i] - ( ( in1[i] - in2[i] ) * point );
  54. } else if ( in1[i] < in2[i]) {
  55. out[i] = in1[i] + ( ( in2[i] - in1[i] ) * point );
  56. } else {
  57. out[i] = in1[i];
  58. }
  59. }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment