#arduino #led #neopixel
Вопрос:
Я довольно новичок в написании кода Arduino и меня смущает блок кода.
При выполнении синяя точка перемещается вниз по светодиодной полосе и в конечном итоге возвращается к началу.
#include lt;FastLED.hgt; #define NUM_LEDS 150 #define DATA_PIN 4 CRGB leds[NUM_LEDS]; void setup() { FastLED.addLedslt;NEOPIXEL, DATA_PINgt;(leds, NUM_LEDS); } void loop() { for(int dot = 0; dot lt; 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); } }
Следуя логике пустого цикла…
Мы установили первый светодиод в массиве на синий…
Затем мы говорим полосе включиться с помощью .show()…
Затем мы устанавливаем светодиод на черный… (Вот тут я в замешательстве)
, А затем установите задержку для функции…
Затем функция повторяет переменную точки и продолжает движение вниз по светодиодной полосе.
Моменты путаницы
- Когда мы устанавливаем светодиод на черный, мы никогда не запускаем другой метод .show (). Как стриптиз узнает, что нужно переходить на черный цвет?
- Когда я устанавливаю задержку на что-то сумасшедшее, например 300000, появляется синий индикатор… ожидает время задержки.. затем выключается, а затем переходит к следующему светодиоду. Поведение, которого я ожидал бы, состояло бы в том, что свет станет синим… затем сразу же станет черным… а затем дождется таймера задержки.. затем перейдите к следующему светодиоду… Я не уверен, как задержка связана с
leds[dot] = CRGB::Black;
линией.
Ответ №1:
В первом цикле светодиоды[0] станут синими, затем они отобразятся на световой полосе с помощью функции FastLED.show(). Затем он заставит те же светодиоды[0] почернеть, однако это будет отображаться только во второй итерации цикла.
Второй цикл сделает то же самое со светодиодами[1] и так далее.