0

我在编写 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 灯条。

混淆点

  1. 当我们将 LED 设置为黑色时,我们从不运行另一个 .show() 方法。条带怎么知道变黑?
  2. 当我将延迟设置为 300000 之类的疯狂值时,会出现蓝光……等待延迟时间……然后关闭,然后迭代到下一个 LED。我所期望的行为是灯变蓝......然后立即变黑......然后等待延迟计时器......然后迭代到下一个LED......我不确定延迟如何与leds[dot] = CRGB::Black;线相关联。
4

1 回答 1

1

第一个循环将使 LED[0] 变为蓝色,然后它将使用 FastLED.show() 将其显示在灯条上。接下来它将使相同的 leds[0] 变黑,但它只会在循环的第二次迭代中显示。

第二个循环将对 leds[1] 执行相同的操作,依此类推。

于 2021-10-17T19:06:34.943 回答