arduino环境下使用fastled库驱动ws2812b,灯带分为三个引脚,其中第一条灯带分三个位置,第二个灯带分两个位置,第三个灯带一个位置,实现从中间向两边扩散的代码
时间: 2024-03-21 13:38:15 浏览: 145
以下是基于FastLED库实现从中间向两边扩散效果的代码:
```
#include <FastLED.h>
#define NUM_LEDS_1 3
#define NUM_LEDS_2 2
#define NUM_LEDS_3 1
#define DATA_PIN_1 6
#define DATA_PIN_2 7
#define DATA_PIN_3 8
CRGB leds_1[NUM_LEDS_1];
CRGB leds_2[NUM_LEDS_2];
CRGB leds_3[NUM_LEDS_3];
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN_1, GRB>(leds_1, NUM_LEDS_1);
FastLED.addLeds<WS2812B, DATA_PIN_2, GRB>(leds_2, NUM_LEDS_2);
FastLED.addLeds<WS2812B, DATA_PIN_3, GRB>(leds_3, NUM_LEDS_3);
FastLED.setBrightness(50);
}
void loop() {
// 定义中间位置
int center = (NUM_LEDS_1 + NUM_LEDS_2 + NUM_LEDS_3) / 2;
// 从中间往两边扩散
for (int i = 0; i <= center; i++) {
// 亮灯
leds_1[NUM_LEDS_1 / 2 + i] = CRGB::Red;
leds_1[NUM_LEDS_1 / 2 - i] = CRGB::Red;
leds_2[NUM_LEDS_2 / 2 + i] = CRGB::Red;
leds_2[NUM_LEDS_2 / 2 - i] = CRGB::Red;
leds_3[NUM_LEDS_3 / 2 + i] = CRGB::Red;
leds_3[NUM_LEDS_3 / 2 - i] = CRGB::Red;
// 显示效果
FastLED.show();
delay(50);
// 熄灭灯
leds_1[NUM_LEDS_1 / 2 + i] = CRGB::Black;
leds_1[NUM_LEDS_1 / 2 - i] = CRGB::Black;
leds_2[NUM_LEDS_2 / 2 + i] = CRGB::Black;
leds_2[NUM_LEDS_2 / 2 - i] = CRGB::Black;
leds_3[NUM_LEDS_3 / 2 + i] = CRGB::Black;
leds_3[NUM_LEDS_3 / 2 - i] = CRGB::Black;
}
}
```
在以上代码中,我们首先定义了三个灯带的LED数量和数据引脚编号,然后在`setup()`函数中使用`FastLED.addLeds()`函数将三个灯带与FastLED库连接起来,并设置了亮度为50。
在`loop()`函数中,我们定义了中间位置,并使用`for`循环实现灯光从中间位置向两边扩散的效果。具体实现方式是通过循环控制从中间位置开始逐渐扩散亮灯,然后显示效果并延迟50ms,再熄灭灯光。重复循环的过程,就可以实现灯光从中间向两边扩散的效果。
阅读全文