Ich habe ein Arduino mit FastLED mit einem Streifen von 600 Ws2812b Lichter. Ich bin mit dem folgenden Code:unerwartetes Verhalten 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;
}
ich meine Lichter in einem Kreis habe und das macht einen roten Punkt Wrap um den Kreis. Ein blauer Punkt, der ungefähr 100 Lichter entfernt ist, dreht sich jedoch auch herum. Es gibt nichts in meinem Code, um blaues Licht zu machen. Ich habe dies aufgespürt
int bottom=1;
zu verwenden, wenn ich unten im Code mit einer Reihe ersetzen, ich werde der blauen Punkt los und es funktioniert einwandfrei. Das Problem ist auch gelöst, wenn ich unten # 1 definiere. Es spielt keine Rolle, ob ich den Boden jetzt oder innerhalb von shapeTwirl definiere. Das führt mich zu der Annahme, dass etwas falsch mit der Verwendung einer Variable für die Unterseite ist, aber ich habe versucht, ein int, static int, unsigned int ohne Erfolg zu verwenden.
Warum leuchtet das falsche Licht?
Ich benutze ein Arduino Uno, um die Lichter und externe Stromversorgung zu steuern, um sie zu betreiben.