74 lines
1.9 KiB
Arduino
74 lines
1.9 KiB
Arduino
|
#include <FastLED.h>
|
||
|
|
||
|
#define kMatrixWidth 16
|
||
|
#define kMatrixHeight 16
|
||
|
|
||
|
#define NUM_LEDS (kMatrixWidth * kMatrixHeight)
|
||
|
// Param for different pixel layouts
|
||
|
#define kMatrixSerpentineLayout true
|
||
|
|
||
|
// led array
|
||
|
CRGB leds[kMatrixWidth * kMatrixHeight];
|
||
|
|
||
|
// x,y, & time values
|
||
|
uint32_t x,y,v_time,hue_time,hxy;
|
||
|
|
||
|
// Play with the values of the variables below and see what kinds of effects they
|
||
|
// have! More octaves will make things slower.
|
||
|
|
||
|
// how many octaves to use for the brightness and hue functions
|
||
|
uint8_t octaves=1;
|
||
|
uint8_t hue_octaves=3;
|
||
|
|
||
|
// the 'distance' between points on the x and y axis
|
||
|
int xscale=57771;
|
||
|
int yscale=57771;
|
||
|
|
||
|
// the 'distance' between x/y points for the hue noise
|
||
|
int hue_scale=1;
|
||
|
|
||
|
// how fast we move through time & hue noise
|
||
|
int time_speed=1111;
|
||
|
int hue_speed=31;
|
||
|
|
||
|
// adjust these values to move along the x or y axis between frames
|
||
|
int x_speed=331;
|
||
|
int y_speed=1111;
|
||
|
|
||
|
void loop() {
|
||
|
// fill the led array 2/16-bit noise values
|
||
|
fill_2dnoise16(LEDS.leds(), kMatrixWidth, kMatrixHeight, kMatrixSerpentineLayout,
|
||
|
octaves,x,xscale,y,yscale,v_time,
|
||
|
hue_octaves,hxy,hue_scale,hxy,hue_scale,hue_time, false);
|
||
|
|
||
|
LEDS.show();
|
||
|
|
||
|
// adjust the intra-frame time values
|
||
|
x += x_speed;
|
||
|
y += y_speed;
|
||
|
v_time += time_speed;
|
||
|
hue_time += hue_speed;
|
||
|
// delay(50);
|
||
|
}
|
||
|
|
||
|
|
||
|
void setup() {
|
||
|
// initialize the x/y and time values
|
||
|
random16_set_seed(8934);
|
||
|
random16_add_entropy(analogRead(3));
|
||
|
|
||
|
Serial.begin(57600);
|
||
|
Serial.println("resetting!");
|
||
|
|
||
|
delay(3000);
|
||
|
LEDS.addLeds<WS2811,6,GRB>(leds,NUM_LEDS);
|
||
|
LEDS.setBrightness(96);
|
||
|
|
||
|
hxy = (uint32_t)((uint32_t)random16() << 16) + (uint32_t)random16();
|
||
|
x = (uint32_t)((uint32_t)random16() << 16) + (uint32_t)random16();
|
||
|
y = (uint32_t)((uint32_t)random16() << 16) + (uint32_t)random16();
|
||
|
v_time = (uint32_t)((uint32_t)random16() << 16) + (uint32_t)random16();
|
||
|
hue_time = (uint32_t)((uint32_t)random16() << 16) + (uint32_t)random16();
|
||
|
|
||
|
}
|