#include <FastLED.h>
// Установите количество светодиодов в звезде
#define NUM_LEDS 25
// Установите количество лучей в звезде
#define NUM_RAYS 5
// Установите номер пина для подключения данных светодиодной ленты
#define DATA_PIN 5
// Создайте объект CRGB для светодиодной ленты
CRGB leds[NUM_LEDS];
// Функция для создания эффекта "От центра бегут светодиоды к концам лучей"
void runToEdgesEffect() {
// Очистим все светодиоды
FastLED.clear();
// Выберем цвет для заполнения лучей
CRGB color = CRGB(random(255), random(255), random(255));
// Переменные для центрального светодиода и индексов концов лучей
int centerIndex = NUM_LEDS / 2;
int startIndices[NUM_RAYS];
int endIndices[NUM_RAYS];
// Посчитаем индексы начала и конца каждого луча
for (int ray = 0; ray < NUM_RAYS; ray++) {
startIndices[ray] = centerIndex - ray * (NUM_LEDS / (2 * NUM_RAYS)) - 1;
endIndices[ray] = centerIndex + ray * (NUM_LEDS / (2 * NUM_RAYS)) + 1;
}
// Медленно заполним лучи цветом
for (int ray = 0; ray < NUM_RAYS; ray++) {
int startIndex = startIndices[ray];
int endIndex = endIndices[ray];
int currentBrightness = 0;
int fadeIncrement = 255 / ((endIndex - startIndex) / 2);
// Заполним луч цветом, увеличивая яркость
for (int i = startIndex; i <= endIndex; i++) {
leds[i] = color;
FastLED.setBrightness(currentBrightness);
FastLED.show();
delay(15);
currentBrightness += fadeIncrement;
}
FastLED.setBrightness(255); // Установим полную яркость на конце каждого луча
delay(300); // Задержка перед заполнением следующего луча
}
}
void setup() {
// Инициализация светодиодной ленты
FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);
}
void loop() {
// Вызов функции эффекта "От центра бегут светодиоды к концам лучей"
runToEdgesEffect();
delay(1000); // Задержка между эффектами
}