У меня есть arduino, использующий fastLED с полосой 600 ws2812b огней. У меня есть следующий код:непредвиденная переменная поведение arduino fastLED ws2812b
#include "FastLED.h"
#define DATA_PIN 5 // change to your data pin
#define COLOR_ORDER GRB // if colors are mismatched; change this
#define NUM_LEDS 600 // change to the number of LEDs in your strip
#define BRIGHTNESS 32
#define WRAP_NUM 55
#define LED_TYPE WS2812B
CRGB leds[NUM_LEDS];
int startIndex=0;
int bottom=1;
void setup()
{
delay(3000);
FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
}
void loop()
{
shapeTwirl();
}
void shapeTwirl()
{
FastLED.clear();
static int heart[]={bottom*WRAP_NUM};
for(int i=0;i<sizeof(heart);i++)
{
leds[(heart[i]+startIndex)]=CRGB::Red;
}
FastLED.show();
delay(70);
startIndex=(startIndex+1)%WRAP_NUM;
}
У меня есть свет в круге, и это делает красную точку вокруг круга. Тем не менее, синяя точка, примерно 100 световых лучей, также вращается вокруг. В моем коде нет ничего, чтобы сделать синий свет. Я отследил это вниз к использованию
int bottom=1;
Если я заменяю дно с номером в коде, я избавляюсь от синей точки, и она работает должным образом. Проблема также решена, если я #define bottom 1 ;. Не имеет значения, определяю ли я дно, где оно сейчас, или внутри shapeTwirl. Это заставляет меня думать, что что-то не так с использованием переменной для дна, но я попытался использовать int, static int, unsigned int безрезультатно.
Почему загораются неправильные лампы?
Я использую arduino uno для управления огнями и внешним питанием для их питания.