diff --git a/firmware/GyverLamp_v1.2/effects.ino b/firmware/GyverLamp_v1.2/effects.ino index 6df9923..a536e6f 100644 --- a/firmware/GyverLamp_v1.2/effects.ino +++ b/firmware/GyverLamp_v1.2/effects.ino @@ -235,6 +235,10 @@ int8_t lightersSpeed[2][LIGHTERS_AM]; CHSV lightersColor[LIGHTERS_AM]; byte loopCounter; +int angle[LIGHTERS_AM]; +int speedV[LIGHTERS_AM]; +int8_t angleSpeed[LIGHTERS_AM]; + void lightersRoutine() { if (loadingFlag) { loadingFlag = false; @@ -248,7 +252,7 @@ void lightersRoutine() { } } FastLED.clear(); - if (++loopCounter > 70) loopCounter = 0; + if (++loopCounter > 20) loopCounter = 0; for (byte i = 0; i < modes[17].scale; i++) { if (loopCounter == 0) { // меняем скорость каждые 255 отрисовок lightersSpeed[0][i] += random(-3, 4); @@ -256,6 +260,7 @@ void lightersRoutine() { lightersSpeed[0][i] = constrain(lightersSpeed[0][i], -20, 20); lightersSpeed[1][i] = constrain(lightersSpeed[1][i], -20, 20); } + lightersPos[0][i] += lightersSpeed[0][i]; lightersPos[1][i] += lightersSpeed[1][i]; @@ -273,3 +278,56 @@ void lightersRoutine() { drawPixelXY(lightersPos[0][i] / 10, lightersPos[1][i] / 10, lightersColor[i]); } } + +/* + void lightersRoutine() { + if (loadingFlag) { + loadingFlag = false; + randomSeed(millis()); + for (byte i = 0; i < LIGHTERS_AM; i++) { + lightersPos[0][i] = random(0, WIDTH * 10); + lightersPos[1][i] = random(0, HEIGHT * 10); + + lightersColor[i] = CHSV(random(0, 255), 255, 255); + + speedV[i] = random(5, 10); + angle[i] = random(0, 360); + angleSpeed[i] = random(-10, 10); + } + } + FastLED.clear(); + if (++loopCounter > 20) loopCounter = 0; + + for (byte i = 0; i < modes[17].scale; i++) { + if (loopCounter == 0) { // меняем скорость каждые 255 отрисовок + angleSpeed[i] += random(-3, 4); + angleSpeed[i] = constrain(angleSpeed[i], -15, 15); + } + + lightersPos[0][i] += speedV[i] * cos(radians(angle[i])); + lightersPos[1][i] += speedV[i] * sin(radians(angle[i])); + + if (lightersPos[0][i] < 0) lightersPos[0][i] = (WIDTH - 1) * 10; + if (lightersPos[0][i] >= WIDTH * 10) lightersPos[0][i] = 0; + + if (lightersPos[1][i] < 0) { + lightersPos[1][i] = 0; + angle[i] = 360 - angle[i]; + } else { + angle[i] += angleSpeed[i]; + } + + if (lightersPos[1][i] >= (HEIGHT - 1) * 10) { + lightersPos[1][i] = (HEIGHT - 1) * 10; + angle[i] = 360 - angle[i]; + } else { + angle[i] += angleSpeed[i]; + } + + if (angle[i] > 360) angle[i] = 360 - angle[i]; + if (angle[i] < 0) angle[i] = 360 + angle[i]; + + drawPixelXY(lightersPos[0][i] / 10, lightersPos[1][i] / 10, lightersColor[i]); + } + } +*/