ws2812呼吸灯,fastled函数实现
时间: 2023-06-13 09:07:14 浏览: 456
可调速率的呼吸灯
呼吸灯效果可以通过使用FastLED库中的fadeToBlackBy()函数和scale8()函数来实现。以下是一个简单的示例代码:
```c++
#include <FastLED.h>
#define LED_PIN 5
#define LED_COUNT 10
CRGB leds[LED_COUNT];
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, LED_COUNT);
}
void loop() {
static uint8_t brightness = 0;
static bool increasing = true;
if (increasing) {
brightness++;
if (brightness >= 255) {
increasing = false;
}
} else {
brightness--;
if (brightness == 0) {
increasing = true;
}
}
// 在每个LED上设置当前亮度
for (int i = 0; i < LED_COUNT; i++) {
leds[i].setHSV(0, 255, brightness);
}
// 调用fadeToBlackBy函数将所有LED的亮度减少10%
fadeToBlackBy(leds, LED_COUNT, 10);
// 将所有LED的亮度乘以2
for (int i = 0; i < LED_COUNT; i++) {
leds[i].nscale8(2);
}
FastLED.show();
delay(30);
}
```
在这个代码中,我们使用一个循环变量 `brightness` 来表示当前亮度,同时使用一个布尔变量 `increasing` 来表示当前是否正在递增亮度。在每次循环中,我们根据 `increasing` 的值来递增或递减 `brightness`,并调用 `setHSV()` 函数在每个LED上设置当前亮度。
接下来,我们调用 `fadeToBlackBy()` 函数将所有LED的亮度减少10%。`fadeToBlackBy()` 函数的第一个参数是一个LED数组,第二个参数是LED数量,第三个参数是要减少的亮度百分比。
最后,我们使用 `nscale8()` 函数将所有LED的亮度乘以2,以突出呼吸灯效果。`nscale8()` 函数的参数是一个8位整数,表示要乘以的倍数。
最后,我们调用 `FastLED.show()` 函数来更新所有LED的状态,并使用 `delay()` 函数来控制呼吸灯的速度。
阅读全文