|
@@ -1,64 +1,93 @@
|
|
|
-void animation_rainbow() {
|
|
|
|
|
- fill_rainbow(leds, NUM_LEDS, animation_i, animation_var_1);
|
|
|
|
|
|
|
+//0: animation_number
|
|
|
|
|
+//1: NUM_LEDS
|
|
|
|
|
+//2: led_offset
|
|
|
|
|
+//3: speed
|
|
|
|
|
+//4: table
|
|
|
|
|
+//5: var_1
|
|
|
|
|
+//6: i
|
|
|
|
|
+//7: lastAnimationMillis
|
|
|
|
|
+
|
|
|
|
|
+int getVariables(int stripDiv) {
|
|
|
|
|
+ return current_animation_table[stripDiv][1], current_animation_table[stripDiv][2], current_animation_table[stripDiv][6], current_animation_table[stripDiv][5];
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void saveAnimI(int animI, int stripDiv) {
|
|
|
|
|
+ current_animation_table[stripDiv][6] = animI;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void animation_rainbow(int stripDiv) {
|
|
|
|
|
+ int numLeds, offset, animI, animVar1 = getVariables(stripDiv);
|
|
|
|
|
+ int h = animI;
|
|
|
|
|
+ for (int i = 0; i < numLeds; i++) {
|
|
|
|
|
+ h = (h + animVar1) % 256;
|
|
|
|
|
+ leds[i + offset] = CHSV(h, 255, 255);
|
|
|
|
|
+ }
|
|
|
|
|
+ //fill_rainbow(leds, NUM_LEDS, animation_i, animation_var_1);
|
|
|
FastLED.show();
|
|
FastLED.show();
|
|
|
- animation_i++;
|
|
|
|
|
- animation_i %= 256;
|
|
|
|
|
|
|
+ animI++;
|
|
|
|
|
+ animI %= 256;
|
|
|
|
|
+ saveAnimI(animI, stripDiv);
|
|
|
//Serial.println(animation_i);
|
|
//Serial.println(animation_i);
|
|
|
//Serial.println("Animation 1 step");
|
|
//Serial.println("Animation 1 step");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void animation_running() {
|
|
|
|
|
|
|
+void animation_running(int stripDiv) {
|
|
|
//Serial.println("Animation 2 step");
|
|
//Serial.println("Animation 2 step");
|
|
|
- leds[animation_i] = CRGB(100, 255, 200);
|
|
|
|
|
|
|
+ int numLeds, offset, animI, animVar1 = getVariables(stripDiv);
|
|
|
|
|
+ leds[animI] = CRGB(100, 255, 200);
|
|
|
FastLED.show();
|
|
FastLED.show();
|
|
|
- animation_i++;
|
|
|
|
|
- if (animation_i >= NUMBER_OF_LEDS) {
|
|
|
|
|
- animation_i = 0;
|
|
|
|
|
- clear_strip();
|
|
|
|
|
|
|
+ animI++;
|
|
|
|
|
+ if (animation_i >= numLeds) {
|
|
|
|
|
+ animI = 0;
|
|
|
|
|
+ clear_strip(stripDiv);
|
|
|
}
|
|
}
|
|
|
|
|
+ saveAnimI(animI, stripDiv);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void animation_chasing() {
|
|
|
|
|
|
|
+void animation_chasing(int stripDiv) {
|
|
|
//Serial.println("Animation 2 step");
|
|
//Serial.println("Animation 2 step");
|
|
|
- clear_strip();
|
|
|
|
|
- leds[animation_i] = CRGB(100, 255, 200);
|
|
|
|
|
- leds[(animation_i + 10) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
- leds[(animation_i + 20) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
- leds[((NUMBER_OF_LEDS) - animation_i) - 1] = CRGB(0, 255, 255);
|
|
|
|
|
-
|
|
|
|
|
- leds[animation_i * 3 + 1] = CRGB(100, 255, 200);
|
|
|
|
|
- leds[(animation_i * 3 + 1 + 10 * 3) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
- leds[(animation_i * 3 + 1 + 20 * 3) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
- leds[((NUMBER_OF_LEDS) - animation_i * 3 + 1) - 1 * 3] = CRGB(0, 255, 255);
|
|
|
|
|
-
|
|
|
|
|
- leds[animation_i * 3 + 2] = CRGB(100, 255, 200);
|
|
|
|
|
- leds[(animation_i * 3 + 2 + 10 * 3) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
- leds[(animation_i * 3 + 2 + 20 * 3) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
- leds[((NUMBER_OF_LEDS) - animation_i * 3 + 2) - 1 * 3] = CRGB(0, 255, 255);
|
|
|
|
|
- leds[(50 - animation_i - 10)] = CRGB(0, 255, 255);
|
|
|
|
|
- leds[(50 - animation_i)] = CRGB(0, 255, 255);
|
|
|
|
|
|
|
+ int numLeds, offset, animI, animVar1 = getVariables(stripDiv);
|
|
|
|
|
+ clear_strip(stripDiv);
|
|
|
|
|
+ leds[animI] = CRGB(100, 255, 200);
|
|
|
|
|
+ leds[((animI + 10) % numLeds) + offset] = CRGB(100, 255, 200);
|
|
|
|
|
+ leds[((animI + 20) % numLeds) + offset] = CRGB(100, 255, 200);
|
|
|
|
|
+ leds[((numLeds) - animI) - 1 + offset] = CRGB(0, 255, 255);
|
|
|
|
|
+
|
|
|
|
|
+// leds[animation_i * 3 + 1] = CRGB(100, 255, 200);
|
|
|
|
|
+// leds[(animation_i * 3 + 1 + 10 * 3) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
+// leds[(animation_i * 3 + 1 + 20 * 3) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
+// leds[((NUMBER_OF_LEDS) - animation_i * 3 + 1) - 1 * 3] = CRGB(0, 255, 255);
|
|
|
|
|
+//
|
|
|
|
|
+// leds[animation_i * 3 + 2] = CRGB(100, 255, 200);
|
|
|
|
|
+// leds[(animation_i * 3 + 2 + 10 * 3) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
+// leds[(animation_i * 3 + 2 + 20 * 3) % (NUMBER_OF_LEDS)] = CRGB(100, 255, 200);
|
|
|
|
|
+// leds[((NUMBER_OF_LEDS) - animation_i * 3 + 2) - 1 * 3] = CRGB(0, 255, 255);
|
|
|
|
|
+// leds[(50 - animation_i - 10)] = CRGB(0, 255, 255);
|
|
|
|
|
+// leds[(50 - animation_i)] = CRGB(0, 255, 255);
|
|
|
FastLED.show();
|
|
FastLED.show();
|
|
|
- animation_i++;
|
|
|
|
|
- animation_i %= NUMBER_OF_LEDS;
|
|
|
|
|
|
|
+ animI++;
|
|
|
|
|
+ animI %= numLeds;
|
|
|
|
|
+ saveAnimI(animI, stripDiv);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void animation_off() {
|
|
|
|
|
- clear_strip();
|
|
|
|
|
- animation_step_time = 10000;
|
|
|
|
|
|
|
+void animation_off(int stripDiv) {
|
|
|
|
|
+ clear_strip(stripDiv);
|
|
|
|
|
+ current_animation_table[stripDiv][3] = 10000;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void animation_random1() {
|
|
|
|
|
- int difference = NUM_LEDS / animation_var_1;
|
|
|
|
|
-
|
|
|
|
|
- for (int i = 0; i < animation_var_1; i++) {
|
|
|
|
|
- int howManyCycles = animation_table_1[i][7];
|
|
|
|
|
- int currentStep = animation_table_1[i][6];
|
|
|
|
|
- uint8_t startRed = animation_table_1[i][0];
|
|
|
|
|
- uint8_t startGreen = animation_table_1[i][1];
|
|
|
|
|
- uint8_t startBlue = animation_table_1[i][2];
|
|
|
|
|
- uint8_t goalRed = animation_table_1[i][3];
|
|
|
|
|
- uint8_t goalGreen = animation_table_1[i][4];
|
|
|
|
|
- uint8_t goalBlue = animation_table_1[i][5];
|
|
|
|
|
|
|
+void animation_random1(int stripDiv) {
|
|
|
|
|
+ int numLeds, offset, animI, animVar1 = getVariables(stripDiv);
|
|
|
|
|
+ int difference = numLeds / animVar1;
|
|
|
|
|
+
|
|
|
|
|
+ for (int i = 0; i < animVar1; i++) {
|
|
|
|
|
+ int howManyCycles = animation_table_1[stripDiv][i][7];
|
|
|
|
|
+ int currentStep = animation_table_1[stripDiv][i][6];
|
|
|
|
|
+ uint8_t startRed = animation_table_1[stripDiv][i][0];
|
|
|
|
|
+ uint8_t startGreen = animation_table_1[stripDiv][i][1];
|
|
|
|
|
+ uint8_t startBlue = animation_table_1[stripDiv][i][2];
|
|
|
|
|
+ uint8_t goalRed = animation_table_1[stripDiv][i][3];
|
|
|
|
|
+ uint8_t goalGreen = animation_table_1[stripDiv][i][4];
|
|
|
|
|
+ uint8_t goalBlue = animation_table_1[stripDiv][i][5];
|
|
|
uint8_t r = (goalRed - startRed) * currentStep / howManyCycles + startRed;
|
|
uint8_t r = (goalRed - startRed) * currentStep / howManyCycles + startRed;
|
|
|
uint8_t g = (goalGreen - startGreen) * currentStep / howManyCycles + startGreen;
|
|
uint8_t g = (goalGreen - startGreen) * currentStep / howManyCycles + startGreen;
|
|
|
uint8_t b = (goalBlue - startBlue) * currentStep / howManyCycles + startBlue;
|
|
uint8_t b = (goalBlue - startBlue) * currentStep / howManyCycles + startBlue;
|
|
@@ -66,9 +95,9 @@ void animation_random1() {
|
|
|
// for (int led = 0; led < 10; led++) {
|
|
// for (int led = 0; led < 10; led++) {
|
|
|
// leds[led + i * 10] = CRGB(r, b, g);
|
|
// leds[led + i * 10] = CRGB(r, b, g);
|
|
|
// }
|
|
// }
|
|
|
- leds[i * difference] = CRGB(r, b, g);
|
|
|
|
|
|
|
+ leds[i * difference + offset] = CRGB(r, b, g);
|
|
|
|
|
|
|
|
- animation_table_1[i][6] += 1;
|
|
|
|
|
|
|
+ animation_table_1[stripDiv][i][6] += 1;
|
|
|
|
|
|
|
|
if (currentStep >= howManyCycles) {
|
|
if (currentStep >= howManyCycles) {
|
|
|
// uint8_t newR = (uint8_t) random(0, 255);
|
|
// uint8_t newR = (uint8_t) random(0, 255);
|
|
@@ -80,42 +109,43 @@ void animation_random1() {
|
|
|
CRGB newColor = CRGB(0, 0, 0);
|
|
CRGB newColor = CRGB(0, 0, 0);
|
|
|
newColor.setHSV(newH, newS, 255);
|
|
newColor.setHSV(newH, newS, 255);
|
|
|
|
|
|
|
|
- animation_table_1[i][3] = newColor.r;
|
|
|
|
|
- animation_table_1[i][4] = newColor.g;
|
|
|
|
|
- animation_table_1[i][5] = newColor.b;
|
|
|
|
|
|
|
+ animation_table_1[stripDiv][i][3] = newColor.r;
|
|
|
|
|
+ animation_table_1[stripDiv][i][4] = newColor.g;
|
|
|
|
|
+ animation_table_1[stripDiv][i][5] = newColor.b;
|
|
|
|
|
|
|
|
uint8_t steps = (uint8_t) random(50, 255);
|
|
uint8_t steps = (uint8_t) random(50, 255);
|
|
|
- animation_table_1[i][0] = r;
|
|
|
|
|
- animation_table_1[i][1] = g;
|
|
|
|
|
- animation_table_1[i][2] = b;
|
|
|
|
|
- animation_table_1[i][7] = steps;
|
|
|
|
|
- animation_table_1[i][6] = 0;
|
|
|
|
|
|
|
+ animation_table_1[stripDiv][i][0] = r;
|
|
|
|
|
+ animation_table_1[stripDiv][i][1] = g;
|
|
|
|
|
+ animation_table_1[stripDiv][i][2] = b;
|
|
|
|
|
+ animation_table_1[stripDiv][i][7] = steps;
|
|
|
|
|
+ animation_table_1[stripDiv][i][6] = 0;
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- for (int i = 0; i < animation_var_1; i++) {
|
|
|
|
|
- uint8_t startRed = leds[i * difference].r;
|
|
|
|
|
- uint8_t startGreen = leds[i * difference].g;
|
|
|
|
|
- uint8_t startBlue = leds[i * difference].b;
|
|
|
|
|
- uint8_t goalRed = leds[((i + 1) * difference) % NUM_LEDS].r;
|
|
|
|
|
- uint8_t goalGreen = leds[((i + 1) * difference) % NUM_LEDS].g;
|
|
|
|
|
- uint8_t goalBlue = leds[((i + 1) * difference) % NUM_LEDS].b;
|
|
|
|
|
|
|
+ for (int i = 0; i < animVar1; i++) {
|
|
|
|
|
+ uint8_t startRed = leds[i * difference + offset].r;
|
|
|
|
|
+ uint8_t startGreen = leds[i * difference + offset].g;
|
|
|
|
|
+ uint8_t startBlue = leds[i * difference + offset].b;
|
|
|
|
|
+ uint8_t goalRed = leds[((i + 1) * difference) % numLeds + offset].r;
|
|
|
|
|
+ uint8_t goalGreen = leds[((i + 1) * difference) % numLeds + offset].g;
|
|
|
|
|
+ uint8_t goalBlue = leds[((i + 1) * difference) % numLeds + offset].b;
|
|
|
for (int currentStep = 1; currentStep < difference; currentStep++) {
|
|
for (int currentStep = 1; currentStep < difference; currentStep++) {
|
|
|
uint8_t r = (goalRed - startRed) * currentStep / difference + startRed;
|
|
uint8_t r = (goalRed - startRed) * currentStep / difference + startRed;
|
|
|
uint8_t g = (goalGreen - startGreen) * currentStep / difference + startGreen;
|
|
uint8_t g = (goalGreen - startGreen) * currentStep / difference + startGreen;
|
|
|
uint8_t b = (goalBlue - startBlue) * currentStep / difference + startBlue;
|
|
uint8_t b = (goalBlue - startBlue) * currentStep / difference + startBlue;
|
|
|
- leds[currentStep + i * difference] = CRGB(r, g, b);
|
|
|
|
|
|
|
+ leds[currentStep + i * difference + offset] = CRGB(r, g, b);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
FastLED.show();
|
|
FastLED.show();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void animation_rgb_light() {
|
|
|
|
|
- FastLED.clear();
|
|
|
|
|
- for (int i = 0; i < NUM_LEDS / 6; i++) {
|
|
|
|
|
- leds[(i + animation_i) % NUM_LEDS] = CRGB(255, 0, 0);
|
|
|
|
|
- leds[(i + animation_i + NUM_LEDS / 3) % NUM_LEDS] = CRGB(0, 255, 0);
|
|
|
|
|
- leds[(i + animation_i + (NUM_LEDS / 3) * 2) % NUM_LEDS] = CRGB(0, 0, 255);
|
|
|
|
|
|
|
+void animation_rgb_light(int stripDiv) {
|
|
|
|
|
+ int numLeds, offset, animI, animVar1 = getVariables(stripDiv);
|
|
|
|
|
+ clear_strip(stripDiv);
|
|
|
|
|
+ for (int i = offset; i < (numLeds + offset) / 6; i++) {
|
|
|
|
|
+ leds[(i + animation_i) % numLeds] = CRGB(255, 0, 0);
|
|
|
|
|
+ leds[(i + animation_i + numLeds / 3) % numLeds] = CRGB(0, 255, 0);
|
|
|
|
|
+ leds[(i + animation_i + (numLeds / 3) * 2) % numLeds] = CRGB(0, 0, 255);
|
|
|
}
|
|
}
|
|
|
// for (int i = 1; i < NUM_LEDS/6; i++) { // Made an animation that already exists, but more complicated (animation_rainbow)
|
|
// for (int i = 1; i < NUM_LEDS/6; i++) { // Made an animation that already exists, but more complicated (animation_rainbow)
|
|
|
// uint8_t r = (0 - 255) * i / 25 + 255;
|
|
// uint8_t r = (0 - 255) * i / 25 + 255;
|
|
@@ -132,28 +162,30 @@ void animation_rgb_light() {
|
|
|
// leds[(i + animation_i + 25 + 100) % NUM_LEDS] = CRGB(r, g, b);
|
|
// leds[(i + animation_i + 25 + 100) % NUM_LEDS] = CRGB(r, g, b);
|
|
|
// }
|
|
// }
|
|
|
FastLED.show();
|
|
FastLED.show();
|
|
|
- animation_i++;
|
|
|
|
|
- animation_i %= NUM_LEDS;
|
|
|
|
|
|
|
+ animI++;
|
|
|
|
|
+ animI %= numLeds;
|
|
|
|
|
+ saveAnimI(animI, stripDiv);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void animation_random2() {
|
|
|
|
|
- if (random(0, animation_var_1) == 0) {
|
|
|
|
|
|
|
+void animation_random2(int stripDiv) {
|
|
|
|
|
+ int numLeds, offset, animI, animVar1 = getVariables(stripDiv);
|
|
|
|
|
+ if (random(0, animVar1) == 0) {
|
|
|
//Serial.println("Stage 1");
|
|
//Serial.println("Stage 1");
|
|
|
for (int i = 0; i < 10; i++) {
|
|
for (int i = 0; i < 10; i++) {
|
|
|
//Serial.println("Stage 2");
|
|
//Serial.println("Stage 2");
|
|
|
//Serial.println(animation_table_1[i][1]);
|
|
//Serial.println(animation_table_1[i][1]);
|
|
|
- if (animation_table_1[i][1] == 0) {
|
|
|
|
|
|
|
+ if (animation_table_1[stripDiv][i][1] == 0) {
|
|
|
//Serial.println("Stage 3");
|
|
//Serial.println("Stage 3");
|
|
|
- int randomDot = random(0, NUMBER_OF_LEDS);
|
|
|
|
|
|
|
+ int randomDot = random(0, numLeds);
|
|
|
//Serial.println(randomDot);
|
|
//Serial.println(randomDot);
|
|
|
if (!leds[randomDot]) {
|
|
if (!leds[randomDot]) {
|
|
|
//Serial.println("Stage 4");
|
|
//Serial.println("Stage 4");
|
|
|
- animation_table_1[i][0] = random(0, 255);
|
|
|
|
|
- animation_table_1[i][1] = 255;
|
|
|
|
|
- animation_table_1[i][2] = randomDot;
|
|
|
|
|
- animation_table_1[i][3] = 1;
|
|
|
|
|
|
|
+ animation_table_1[stripDiv][i][0] = random(0, 255);
|
|
|
|
|
+ animation_table_1[stripDiv][i][1] = 255;
|
|
|
|
|
+ animation_table_1[stripDiv][i][2] = randomDot;
|
|
|
|
|
+ animation_table_1[stripDiv][i][3] = 1;
|
|
|
//Serial.println(animation_table_1[i][0]);
|
|
//Serial.println(animation_table_1[i][0]);
|
|
|
- leds[randomDot] = CHSV(animation_table_1[i][0], 255, 126);
|
|
|
|
|
|
|
+ leds[randomDot + offset] = CHSV(animation_table_1[stripDiv][i][0], 255, 126);
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -161,15 +193,15 @@ void animation_random2() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) {
|
|
for (int i = 0; i < 10; i++) {
|
|
|
- if (animation_table_1[i][3] == 1) {
|
|
|
|
|
- leds[animation_table_1[i][2]] = CHSV(animation_table_1[i][0], 255, 126);
|
|
|
|
|
- animation_table_1[i][3] = 2;
|
|
|
|
|
- } else if (animation_table_1[i][3] == 2) {
|
|
|
|
|
- leds[animation_table_1[i][2]] = CHSV(animation_table_1[i][0], 255, 255);
|
|
|
|
|
- animation_table_1[i][3] = 0;
|
|
|
|
|
|
|
+ if (animation_table_1[stripDiv][i][3] == 1) {
|
|
|
|
|
+ leds[animation_table_1[stripDiv][i][2] + offset] = CHSV(animation_table_1[stripDiv][i][0], 255, 126);
|
|
|
|
|
+ animation_table_1[stripDiv][i][3] = 2;
|
|
|
|
|
+ } else if (animation_table_1[stripDiv][i][3] == 2) {
|
|
|
|
|
+ leds[animation_table_1[stripDiv][i][2] + offset] = CHSV(animation_table_1[stripDiv][i][0], 255, 255);
|
|
|
|
|
+ animation_table_1[stripDiv][i][3] = 0;
|
|
|
} else {
|
|
} else {
|
|
|
- animation_table_1[i][1] = max(animation_table_1[i][1] - 10, 0);
|
|
|
|
|
- leds[animation_table_1[i][2]] = CHSV(animation_table_1[i][0], 255, animation_table_1[i][1]);
|
|
|
|
|
|
|
+ animation_table_1[stripDiv][i][1] = max(animation_table_1[stripDiv][i][1] - 10, 0);
|
|
|
|
|
+ leds[animation_table_1[stripDiv][i][2] + offset] = CHSV(animation_table_1[stripDiv][i][0], 255, animation_table_1[stripDiv][i][1]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|