#include <FastLED.h> #define LED_PIN_1 3 #define LED_PIN_2 6 #define LED_COUNT_1 53 #define LED_COUNT_2 7 #define BRIGHTNESS 255 #define LED_TYPE WS2812B #define COLOR_ORDER GRB CRGB leds_1[LED_COUNT_1]; CRGB leds_2[LED_COUNT_2]; void setup() { FastLED.addLeds<LED_TYPE, LED_PIN_1, COLOR_ORDER>(leds_1, LED_COUNT_1); FastLED.addLeds<LED_TYPE, LED_PIN_2, COLOR_ORDER>(leds_2, LED_COUNT_2); FastLED.setBrightness(BRIGHTNESS); } void loop() { int brightness_2 = 0; int fadeAmount = 5; for (int i = 0; i < 7680; i++) { int brightness_1 = (exp(sin(i / 50.0 * PI)) - 0.36787944) * 108.0; for (int j = 0; j < LED_COUNT_1; j++) { leds_1[j].setRGB(0, brightness_1, 0); } FastLED.show(); delay(20); } }在呼吸灯之后增加慢速流水效果
时间: 2024-04-03 07:33:10 浏览: 43
linux_s3c2410_gpio.rar_GPIO_GPIO linux _gpio 2410_linux gpio_s3c
可以将呼吸灯和慢速流水灯效果结合起来,实现更加丰富的灯光效果。具体操作步骤如下:
1. 修改呼吸灯的代码,使其呼吸周期较长,呼吸幅度较大,实现慢速呼吸灯效果。
2. 在呼吸灯代码的循环内部,增加一个变量 offset,用于控制流水灯效果的移动速度。
3. 在呼吸灯代码的循环内部,增加一个 for 循环,用于控制流水灯效果的起始位置。
4. 在 for 循环内部,将 LED 数组中的每个灯的颜色设置为相邻灯的颜色,实现流水灯效果。
5. 在循环结束后,将 offset 增加一个较小的值,控制流水灯效果的速度。
修改后的代码如下所示:
#include <FastLED.h>
#define LED_PIN_1 3
#define LED_PIN_2 6
#define LED_COUNT_1 53
#define LED_COUNT_2 7
#define BRIGHTNESS 255
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
CRGB leds_1[LED_COUNT_1];
CRGB leds_2[LED_COUNT_2];
void setup() {
FastLED.addLeds<LED_TYPE, LED_PIN_1, COLOR_ORDER>(leds_1, LED_COUNT_1);
FastLED.addLeds<LED_TYPE, LED_PIN_2, COLOR_ORDER>(leds_2, LED_COUNT_2);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
int brightness_2 = 0;
int fadeAmount = 5;
int offset = 0;
for (int i = 0; i < 3840; i++) {
float breath = (exp(sin(i / 200.0 * PI)) - 0.36787944) * 108.0;
for (int j = 0; j < LED_COUNT_1; j++) {
leds_1[j].setRGB(0, breath, 0);
}
for (int j = 0; j < LED_COUNT_1; j++) {
int index = (j + offset) % LED_COUNT_1;
leds_1[j] = leds_1[index];
}
FastLED.show();
delay(30);
offset++;
}
}
在修改后的代码中,呼吸灯的周期为 4 秒,呼吸幅度较大,流水灯效果每次移动一个灯的距离,延时时间为 30ms,可以根据需要调整延时时间和移动距离。通过调整参数,可以实现更加丰富的灯光效果。
阅读全文