#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]; int pin_switch = 10; // 定义数字输入口pin10接收开关状态 int switch_state = 0; // 定义开关状态变量 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); Serial.begin(9600);//设置串口波特率为9600kbps pinMode(pin_switch, INPUT); // 初始化数字输入口 } void loop() { switch_state = digitalRead(pin_switch); // 读取开关状态 // 开关按下 if (switch_state == LOW) { // 闪烁两次黄光 for (int i = 0; i < 3; i++) { // 点亮所有灯珠,颜色为黄色 for (int j = 0; j < LED_COUNT_1; j++) { leds_1[j] = CRGB::Orange; } FastLED.show(); delay(200); // 熄灭所有灯珠 for (int j = 0; j < LED_COUNT_1; j++) { leds_1[j] = CRGB::Black; } FastLED.show(); delay(200); }第一条灯带所有灯珠在闪烁完熄灭之后,慢慢亮为绿色
时间: 2024-03-22 15:39:01 浏览: 115
要在第一条灯带所有灯珠在闪烁完熄灭之后,慢慢亮为绿色,可以在第13行闪烁完熄灭之后,添加一个循环逐渐将所有灯珠从黑色变为绿色,代码如下:
```
// 闪烁两次黄光
for (int i = 0; i < 3; i++) {
// 点亮所有灯珠,颜色为橘色
for (int j = 0; j < LED_COUNT_1; j++) {
leds_1[j] = CRGB::Orange;
}
FastLED.show();
delay(200);
// 熄灭所有灯珠
for (int j = 0; j < LED_COUNT_1; j++) {
leds_1[j] = CRGB::Black;
}
FastLED.show();
delay(200);
// 逐渐将所有灯珠从黑色变为绿色
for (int k = 0; k < LED_COUNT_1; k++) {
leds_1[k] = CRGB::Green;
FastLED.show();
delay(20);
}
}
```
相关问题
#include <FastLED.h> #define LED_PIN_1 3 #define LED_PIN_2 6 #define LED_COUNT_1 53 #define LED_COUNT_2 1 #define BRIGHTNESS 255 #define LED_TYPE WS2812B #define COLOR_ORDER GRB CRGB leds_1[LED_COUNT_1]; CRGB leds_2[LED_COUNT_2]; int pin_switch = 10; // 定义数字输入口pin10接收开关状态 int switch_state = 0; // 定义开关状态变量 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); Serial.begin(9600);//设置串口波特率为9600kbps pinMode(pin_switch, INPUT); // 初始化数字输入口 }第二条灯带慢慢点亮为黄色
您可以使用以下代码实现第二条灯带慢慢点亮为黄色:
```
void loop() {
switch_state = digitalRead(pin_switch); // 读取开关状态
if (switch_state == HIGH) { // 如果开关打开
for (int i = 0; i <= 255; i++) { // 从0渐变到255
leds_2[0] = CHSV(60, 255, i); // 设置黄色
FastLED.show(); // 更新LED灯带状态
delay(10); // 延时10毫秒
}
}
}
```
在主循环中,我们首先读取开关的状态,当开关打开时,我们使用一个循环从0渐变到255,每一次都设置第二条灯带的颜色为黄色并更新灯带状态,同时延时10毫秒,使得渐变效果更加平滑。
#include <FastLED.h> #define LED_PIN_1 3 #define LED_PIN_2 6 #define LED_COUNT_1 42 #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(brightness_1, brightness_1, brightness_1); } FastLED.show(); delay(20); } }为这段代码添加注释
/*
* 这段代码实现了两个LED灯带的控制,分别连接在3和6号引脚上。
* 第一个LED灯带有42个灯珠,第二个LED灯带有7个灯珠。
* 灯珠类型为WS2812B,颜色排序方式为GRB。
* 设置亮度为255。
*/
#include <FastLED.h>
#define LED_PIN_1 3 //第一个LED灯带连接的引脚
#define LED_PIN_2 6 //第二个LED灯带连接的引脚
#define LED_COUNT_1 42 //第一个LED灯带的LED数量
#define LED_COUNT_2 7 //第二个LED灯带的LED数量
#define BRIGHTNESS 255 //灯光亮度
#define LED_TYPE WS2812B //灯珠类型
#define COLOR_ORDER GRB //颜色排序方式
CRGB leds_1[LED_COUNT_1]; //第一个LED灯带的LED数组
CRGB leds_2[LED_COUNT_2]; //第二个LED灯带的LED数组
void setup() {
FastLED.addLeds<LED_TYPE, LED_PIN_1, COLOR_ORDER>(leds_1, LED_COUNT_1); //连接第一个LED灯带
FastLED.addLeds<LED_TYPE, LED_PIN_2, COLOR_ORDER>(leds_2, LED_COUNT_2); //连接第二个LED灯带
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(brightness_1, brightness_1, brightness_1); //设置灯珠颜色
}
FastLED.show(); //显示灯光效果
delay(20); //延时控制
}
}
阅读全文