Мигает только один светодиод в светодиодной ленте

Я хочу мигать только одним светодиодом (номер два в полосе), но он этого не делает, есть идеи, почему и как я могу это сделать?

Код:

#include "FastLED.h"

//Количество светодиодов
#define NUM_LEDS 9

//Определите наши часы и линии передачи данных
#define DATA_PIN 11
#define CLOCK_PIN 13

//Создание светодиодной матрицы
CRGB leds[NUM_LEDS];

void setup() { 
      FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, BGR>(leds, NUM_LEDS);
      FastLED.setBrightness(5);
}

void loop() { 
  leds[0] = CRGB::Blue; 
  leds[1] = CRGB::Green;
  
  //Мигают только эти
  leds[2] = CRGB::Red;
  leds[2] = CRGB::Black;
  delay(500);
  leds[2] = CRGB::Red;
  
  leds[3] = CRGB::White;
  leds[4] = CRGB::Purple;
  leds[5] = CRGB::Green;
  leds[6] = CRGB::Blue;
  leds[7] = CRGB::Yellow;
  leds[8] = CRGB::Red;
  FastLED.show();
}

, 👍1

Обсуждение

`не делает этого " не описывает, что он делает ... пожалуйста, опишите, чего вы ожидаете и что вы наблюдаете, @jsotola

Позвольте мне перевести это для вас. ОП хочет, чтобы 2-й светодиод мигал, в то время как другие светодиоды оставались прежними, но код, который он написал, этого не сделал. Он не умел кодировать и хотел научиться у какого-нибудь опытного парня, как это делается. Это достаточно ясно?, @SimonVu14


1 ответ


2

Каждый раз, когда вы хотите, чтобы светодиоды менялись, вам нужно вызывать функцию FastLED.show (). Вы делаете это только один раз после того, как установили значения несколько раз. Кроме того, вам нужно всего 2 задержки (1 для того, чтобы светодиод был включен, 1 для того, чтобы он был выключен).

Рабочий процесс мигания светодиода будет следующим:

Set LED to on
Call show function
Delay
Set LED to off
Call show function
Delay

Вам нужно перевести это в код.

,