#include <FastLED.h>
#define LED_PIN 2
#define NUM_LEDS 16
#define LED_TYPE WS2812B // стрічка
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];
CHSV color; // Колір хвильки (початково червоний)
void setup() {
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
}
void loop() {
static float brightness = 0;
static float x = 0;
static int k = 200; // Затримка
static const float increment = PI / 128;
static const int MAX_BRIGHTNESS = 255;
// Обчислення кольору та яскравості для поточного кадру
for (int i = 0; i < NUM_LEDS; i++) {
// Обчислення значення яскравості на основі синусоїди
brightness = MAX_BRIGHTNESS * (sin(x - i * PI / 8) + 1) / 2;
// Встановлення яскравості та кольору для поточного LED
leds[i] = color; // однаковий колір для всіх LED
leds[i].fadeToBlackBy(MAX_BRIGHTNESS - int(brightness)); // Зміна яскравості
// Інкрементуємо x для наступної ітерації
x += increment;
}
// Відображення змін на LED стрічці
FastLED.show();
// Затримка між кадрами
delay(k);
// Зміна кольору після завершення одного періоду зміни яскравості
if (x >= 2 * PI) {
color = CHSV(random8(), 255, 255); // Встановлення нового випадкового кольору
// Скидання значення x
x = 0;
}
}