Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_NeoPixel.h>
- #define LED_PIN PB2
- int color1[3];
- int color2[3];
- int color3[3];
- int color4[3];
- int fade_length = 300;
- int frame_delay = 0;
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, LED_PIN, NEO_GRB + NEO_KHZ800);
- void setup() {
- strip.begin();
- strip.show();
- randomSeed(analogRead(A0));
- random_color( color1 );
- random_color( color2 );
- random_color( color3 );
- random_color( color4 );
- }
- void loop() {
- for (int i=0; i <= fade_length; i++) {
- int fade_color[3];
- color_gradient( fade_color, color1, color2, i, fade_length );
- strip.setPixelColor( 0, strip.Color( fade_color[0], fade_color[1], fade_color[2] ) );
- color_gradient( fade_color, color2, color3, i, fade_length );
- strip.setPixelColor( 1, strip.Color( fade_color[0], fade_color[1], fade_color[2] ) );
- color_gradient( fade_color, color3, color4, i, fade_length );
- strip.setPixelColor( 2, strip.Color( fade_color[0], fade_color[1], fade_color[2] ) );
- strip.show();
- delay(frame_delay);
- }
- for (int i=0; i <= 2; i++){
- color1[i] = color2[i];
- color2[i] = color3[i];
- color3[i] = color4[i];
- }
- random_color( color4 );
- }
- void random_color( int *color ) {
- color[0] = random( 0, 255 );
- color[1] = random( 0, 255 );
- color[2] = random( 0, 255 );
- }
- void color_gradient( int *out, int *in1, int *in2, int u, int t ) {
- float point = float(u) / float(t);
- for (int i=0; i <= 2; i++){
- if( in1[i] > in2[i] ) {
- out[i] = in1[i] - ( ( in1[i] - in2[i] ) * point );
- } else if ( in1[i] < in2[i]) {
- out[i] = in1[i] + ( ( in2[i] - in1[i] ) * point );
- } else {
- out[i] = in1[i];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment