// 将第二条灯带的所有 LED 设置为黄色 for (int i = 0; i < LED_COUNT_2; i++) { leds_2[i] = CRGB(255, 255, 0); } // 每隔2秒增加亮度 static unsigned long lastUpdateTime = 0; unsigned long currentTime = millis(); if (currentTime - lastUpdateTime >= 2000) { lastUpdateTime = currentTime; brightness2 += 10; if (brightness2 > 255) { brightness2 = 0; } } // 设置第二条灯带的亮度 FastLED.setBrightness(BRIGHTNESS_2); // 更新 LED 灯带 FastLED.show();亮度增加不明显
时间: 2024-03-17 13:45:34 浏览: 92
如果您发现亮度增加不明显,可能是因为每次亮度只增加了10,而且只在每隔2秒时增加一次。您可以尝试增加亮度增加的步长,或者缩短增加亮度的时间间隔,以使亮度变化更明显。
例如,您可以将每次亮度增加的步长从10增加到20,或将时间间隔从2秒缩短到1秒。这样,每次亮度增加的变化就更加明显了。
以下是一个示例代码,其中亮度增加的步长为20,时间间隔为1秒:
```
// 将第二条灯带的所有 LED 设置为黄色
for (int i = 0; i < LED_COUNT_2; i++) {
leds_2[i] = CRGB(255, 255, 0);
}
// 每隔1秒增加亮度
static unsigned long lastUpdateTime = 0;
unsigned long currentTime = millis();
if (currentTime - lastUpdateTime >= 1000) {
lastUpdateTime = currentTime;
brightness2 += 20;
if (brightness2 > 255) {
brightness2 = 0;
}
}
// 设置第二条灯带的亮度
FastLED.setBrightness(BRIGHTNESS_2);
// 更新 LED 灯带
FastLED.show();
```
请注意,增加亮度的步长和时间间隔应根据您的具体需求进行调整。
相关问题
#include <FastLED.h> #define LED_PIN 3 #define LED_PIN_2 6 // 定义第二条灯带的引脚 #define LED_COUNT 42 #define LED_COUNT_2 7 // 定义第二条灯带的 LED 数量 #define BRIGHTNESS 255 #define BRIGHTNESS_2 255 #define LED_TYPE WS2812B #define COLOR_ORDER GRB CRGB leds[LED_COUNT]; CRGB leds_2[LED_COUNT_2]; // 定义第二条灯带的 LED 数组 int brightness2 = 0; // 定义初始亮度为 100 void setup() { FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, LED_COUNT); FastLED.addLeds<LED_TYPE, LED_PIN_2, COLOR_ORDER>(leds_2, LED_COUNT_2); // 添加第二条灯带 FastLED.setBrightness(BRIGHTNESS); FastLED.setBrightness(BRIGHTNESS_2); } void loop() { /太阳灯带**/ // 将第二条灯带的所有 LED 设置为黄色 for (int i = 0; i < LED_COUNT_2; i++) { leds_2[i] = CRGB(255, 255, 0); } // 每隔2秒增加亮度 static unsigned long lastUpdateTime = 0; unsigned long currentTime = millis(); if (currentTime - lastUpdateTime >= 1000) { lastUpdateTime = currentTime; brightness2 -= 10; if (brightness2 > 255) { brightness2 = 0; } } // 设置第二条灯带的亮度 FastLED.setBrightness(BRIGHTNESS_2); // 更新 LED 灯带 FastLED.show(); }为什么第二条灯带亮度没有变化
根据你提供的代码,第二条灯带的亮度没有变化是因为在循环中虽然有修改亮度变量brightness2的代码,但是并没有将修改后的brightness2的值赋给第二条灯带的亮度。
你可以尝试在循环中添加以下代码来将修改后的亮度值赋给第二条灯带:
```
FastLED.setBrightness(brightness2);
```
这样就可以根据brightness2的值来控制第二条灯带的亮度了。
for (int i = 0; i < LED_COUNT_2; i++) { leds_2[i] = CRGB(255, 255, 0); // 将第二条灯带的所有 LED 设置为黄色 } FastLED.setBrightness(brightness2); // 设置第二条灯带的亮度 FastLED.show(); // 更新 LED 灯带 // 每隔一段时间增加或减小亮度 brightness2 = brightness2 + 10; // 增加亮度 if (brightness2 > 255) { brightness2 = 0; // 如果亮度超过 255,则将其设置为最小值 0 } delay(100000); // 延迟一秒钟 这段代码改为每隔5秒增加亮度
可以将代码修改为:
```
void loop() {
// 将第二条灯带的所有 LED 设置为黄色
for (int i = 0; i < LED_COUNT_2; i++) {
leds_2[i] = CRGB(255, 255, 0);
}
// 每隔5秒增加亮度
static unsigned long lastUpdateTime = 0;
unsigned long currentTime = millis();
if (currentTime - lastUpdateTime >= 5000) {
lastUpdateTime = currentTime;
brightness2 += 10;
if (brightness2 > 255) {
brightness2 = 0;
}
}
// 设置第二条灯带的亮度
FastLED.setBrightness(brightness2);
// 更新 LED 灯带
FastLED.show();
delay(100); // 延迟一段时间,避免频繁更新亮度
}
```
这段代码中,我们使用了一个静态变量 `lastUpdateTime` 记录上一次亮度更新的时间,每隔 5 秒钟增加亮度。然后,我们设置第二条灯带的亮度,并更新 LED 灯带。最后,我们添加了一个延迟,避免频繁更新亮度。
阅读全文