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); }这段代码呼吸灯循环了30次,我希望微动开关按下的瞬间,呼吸灯就熄灭,不再继续循环
时间: 2024-03-21 09:44:11 浏览: 52
要在微动开关按下的瞬间熄灭呼吸灯并停止循环,你可以在 `loop()` 函数中添加一个变量 `stopBreath`,当 `stopBreath` 的值为1时,表示需要熄灭呼吸灯并停止循环。
例如,你可以在 `if (val == 0)` 的分支中添加一个变量 `stopBreath`,当 `stopBreath` 的值为1时,表示需要熄灭呼吸灯并停止循环。同时,在呼吸灯循环中,添加一个判断条件,如果 `stopBreath` 的值为1,就跳出循环。
```c++
int stopBreath = 0; // 添加一个变量,初始值为0,表示不需要停止呼吸灯
void loop() {
// ...
if (val == 0) { // 如果Pin10检测的值为高电平,点亮LED
stopBreath = 0; // 设置 stopBreath 的值为0,表示不需要停止呼吸灯
for (int i = 0; i < LED_COUNT_1; i++) {
leds_1[i] = CRGB::White;
FastLED.show();
delay(25);
}
} else { // 如果为低电平熄灭LED
stopBreath = 1; // 设置 stopBreath 的值为1,表示需要停止呼吸灯
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);
if (stopBreath) { // 如果需要停止呼吸灯,则跳出循环
break;
}
}
}
}
```
这样,当微动开关按下的瞬间,只需要将 `val` 的值设置为0,呼吸灯就会熄灭并停止循环。
阅读全文