68 lines
1.7 KiB
C++
68 lines
1.7 KiB
C++
#include <FastLED.h>
|
|
|
|
// Main LED strip setup
|
|
#define LED_PIN 5
|
|
#define NUM_LEDS 100
|
|
#define LED_PART 50
|
|
#define BRIGHTNESS 250
|
|
#define LED_TYPE WS2811
|
|
CRGB leds[NUM_LEDS];
|
|
|
|
CRGB color_red;
|
|
CRGB color_blue;
|
|
CRGB color_green;
|
|
|
|
#define DIAG_PIN 6
|
|
|
|
|
|
void setup() {
|
|
// Calculate colors
|
|
hsv2rgb_spectrum(CHSV(4, 255, 100), color_red);
|
|
hsv2rgb_spectrum(CHSV(170, 255, 100), color_blue);
|
|
hsv2rgb_spectrum(CHSV(90, 255, 100), color_green);
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
pinMode(LED_PIN, OUTPUT);
|
|
pinMode(DIAG_PIN, OUTPUT);
|
|
|
|
// Main LED strip
|
|
FastLED.addLeds<LED_TYPE, LED_PIN, RGB>(leds, NUM_LEDS);
|
|
}
|
|
|
|
void loop() {
|
|
fill_segmented(CRGB::Green, CRGB::Orange);
|
|
delay(500);
|
|
|
|
flash(leds, NUM_LEDS, color_red, 10, 20);
|
|
delay(500);
|
|
flash(leds, NUM_LEDS, color_blue, 10, 20);
|
|
delay(500);
|
|
}
|
|
|
|
void fill_segmented(CRGB c1, CRGB c2)
|
|
{
|
|
//fill_solid(leds, LED_PART, c1);
|
|
fill_gradient_RGB(leds, LED_PART, CRGB::Black ,c1);
|
|
fill_gradient_RGB(leds + LED_PART, NUM_LEDS - LED_PART, CRGB::Black, c2);
|
|
FastLED.show();
|
|
}
|
|
void flash(CRGB *ptr, uint16_t num, CRGB const& lead, int steps, int step_time)
|
|
{
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
|
|
//fill_solid(leds, NUM_LEDS, CRGB::Black);
|
|
for (int i = 0; i < steps; ++i)
|
|
{
|
|
uint8_t factor = 255 * i / steps;
|
|
analogWrite(DIAG_PIN, factor);
|
|
CRGB tail = blend(lead, CRGB::Black, factor);
|
|
uint16_t front = factor * (int) num / 255;
|
|
fill_solid(ptr, front, tail);
|
|
//fill_gradient_RGB(ptr, front, tail, lead);
|
|
//fill_solid(leds + front, NUM_LEDS - front, CRGB::Black);
|
|
FastLED.show();
|
|
delay(step_time);
|
|
}
|
|
fill_gradient_RGB(ptr, num, CRGB::Black, lead);
|
|
FastLED.show();
|
|
analogWrite(DIAG_PIN, LOW);
|
|
} |