50 lines
1.3 KiB
C++
50 lines
1.3 KiB
C++
/* ---------------------------------
|
|
* LED 控制模块实现
|
|
------------------------------------- */
|
|
#include "RGBController.h"
|
|
|
|
// LED 全局变量定义(与主文件解耦)
|
|
CRGB leds[NUM_LEDS];
|
|
unsigned long previousBlinkMillis = 0;
|
|
int blinkState = 0;
|
|
int blinkCount = 0;
|
|
bool isBlinking = false;
|
|
CRGB blinkColors[6] = {CRGB::Red, CRGB::Red, CRGB::Yellow, CRGB::Yellow, CRGB::Green, CRGB::Green};
|
|
|
|
// 初始化LED(替代原setup中的FastLED初始化代码)
|
|
void initLEDs() {
|
|
FastLED.addLeds<WS2812, RGB_PIN, GRB>(leds, NUM_LEDS);
|
|
FastLED.setBrightness(50);
|
|
fill_solid(leds, NUM_LEDS, CRGB::Black); // 初始熄灭
|
|
FastLED.show();
|
|
}
|
|
|
|
// 处理LED闪烁逻辑(原handleLEDBlink函数,逻辑不变)
|
|
void handleLEDBlink() {
|
|
if (!isBlinking) return;
|
|
|
|
unsigned long currentMillis = millis();
|
|
|
|
if (currentMillis - previousBlinkMillis >= 100) {
|
|
previousBlinkMillis = currentMillis;
|
|
|
|
if (blinkState == 0) {
|
|
fill_solid(leds, NUM_LEDS, blinkColors[blinkCount]);
|
|
FastLED.show();
|
|
blinkState = 1;
|
|
} else {
|
|
fill_solid(leds, NUM_LEDS, CRGB::Black);
|
|
FastLED.show();
|
|
blinkState = 0;
|
|
blinkCount++;
|
|
|
|
if (blinkCount >= 6) {
|
|
isBlinking = false;
|
|
blinkCount = 0;
|
|
fill_solid(leds, NUM_LEDS, CRGB::Black);
|
|
FastLED.show();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|