ws2812b从第一个LED灯和最后一个LED灯同时向中间流水亮起
时间: 2024-03-17 22:41:13 浏览: 60
要实现从第一个LED灯和最后一个LED灯同时向中间流水亮起的效果,可以使用如下代码:
```
#include <FastLED.h>
#define LED_PIN 3
#define LED_COUNT 42
#define BRIGHTNESS 255
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
CRGB leds[LED_COUNT];
void setup() {
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, LED_COUNT);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
int center = LED_COUNT / 2; // 计算中心位置
int brightness = 0;
int fadeAmount = 5;
for (int i = 0; i <= center; i++) {
leds[i].setRGB(255, 0, 0); // 从第一个灯开始向中间亮起,设置红色
leds[LED_COUNT - 1 - i].setRGB(255, 0, 0); // 从最后一个灯开始向中间亮起,设置红色
FastLED.show();
delay(25);
}
for (int i = 0; i <= center; i++) {
leds[i].setRGB(0, 0, 0); // 从第一个灯开始向中间熄灭
leds[LED_COUNT - 1 - i].setRGB(0, 0, 0); // 从最后一个灯开始向中间熄灭
FastLED.show();
delay(25);
}
for (int i = center; i >= 0; i--) {
leds[i].setRGB(255, 0, 0); // 从中心位置开始向两端亮起,设置红色
leds[LED_COUNT - 1 - i].setRGB(255, 0, 0); // 从中心位置开始向两端亮起,设置红色
FastLED.show();
delay(25);
}
for (int i = center; i >= 0; i--) {
leds[i].setRGB(0, 0, 0); // 从中心位置开始向两端熄灭
leds[LED_COUNT - 1 - i].setRGB(0, 0, 0); // 从中心位置开始向两端熄灭
FastLED.show();
delay(25);
}
}
```
这里使用了 `center` 变量来计算中心位置,然后使用了 `for` 循环从第一个灯和最后一个灯开始向中间流水亮起或熄灭。在第一个循环中,从第一个灯和最后一个灯开始向中间亮起,然后在第二个循环中向中间熄灭;在第三个循环中,从中心位置开始向两端亮起,然后在第四个循环中向两端熄灭。注意,这里使用了红色,你可以根据需要将颜色改为其他颜色。
阅读全文