我在编写 Arduino 代码方面相当陌生,并且对一段代码感到困惑。
执行时,一个蓝点会沿着 LED 灯条向下移动,并最终循环回到起点。
#include <FastLED.h>
#define NUM_LEDS 150
#define DATA_PIN 4
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
}
void loop() {
for(int dot = 0; dot < NUM_LEDS; dot++) {
leds[dot] = CRGB::Blue;
FastLED.show();
// clear this led for the next time around the loop
leds[dot] = CRGB::Black;
delay(30);
}
}
遵循 void 循环逻辑...
我们将阵列中的第一个 LED 设置为蓝色...
然后我们使用 .show() 告诉条带打开...
然后我们将 LED 设置为黑色...(这是我感到困惑的地方)
并且然后在函数上设置一个延迟...
函数然后迭代点变量并继续沿着 LED 灯条。
混淆点
- 当我们将 LED 设置为黑色时,我们从不运行另一个 .show() 方法。条带怎么知道变黑?
- 当我将延迟设置为 300000 之类的疯狂值时,会出现蓝光……等待延迟时间……然后关闭,然后迭代到下一个 LED。我所期望的行为是灯变蓝......然后立即变黑......然后等待延迟计时器......然后迭代到下一个LED......我不确定延迟如何与
leds[dot] = CRGB::Black;
线相关联。