我有一条切成成对的LED灯条;每对都在自己的灯笼中,我希望灯笼可以交替放置我通过它们放置的任何东西。
我正在使用 FastLED 库。我已经发布了我的想法。它似乎在控制台中工作;生成的数组是正确的(或似乎是)' even[] = {0,1,4,5,8,9...}; 奇数 [] = {2,3,6,7,10,11...}' 但灯笼 #1 由于某种原因不能像其他灯一样工作。
lantern #1 = leds[even[0]] 和 leds[even[1]] 应该都显示 Eval 颜色,但 leds[even[1]] 显示 Oval 颜色。
其他灯笼正常显示
灯笼 #2 = leds[odd[0]] 和 leds[odd[1]] 显示椭圆颜色。
lantern #3 = leds[even[2]] 和 leds[even[3]] 显示 Eval 颜色。
灯笼 #4 = leds[odd[2]] 和 leds[odd[3]] 显示椭圆颜色。
ETC...
#include <FastLED.h>
#define NUM_LEDS 12
#define DATA_PIN 3
#define POT_PIN A0
int potValue;
int even[NUM_LEDS]; //{0,1,4,5,8,9...}
int odd[NUM_LEDS]; //{2,3,6,7,10,11...}
int Epos = 0; //count position for adding lanterns to even/odd arrays
int Opos = 0;
int lantern = 1; // 1 and 2 switch back and forth between lanterns
int pos = 0; // count 2 leds per lantern
CRGB leds[NUM_LEDS];
void setup() {
Serial.begin(9600);
FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
for (int i=0;i<NUM_LEDS;i++){ //go through leds
if (pos == 2){
pos = 0;
if (lantern == 1){
lantern = 2;
}
else if (lantern == 2){
lantern = 1;
}
}
switch (lantern){
case 1: // even lantern
even[Epos] = i; // i = led on strip
Epos++;
pos++;
break;
case 2: // odd lantern
odd[Opos] = i; // i = led on strip
Opos++;
pos++;
break;
}
}
Serial.print("\n even: ");
for (int x=0;x<NUM_LEDS;x++){
Serial.print(even[x]);
}
Serial.print("\n odd: ");
for (int x=0;x<NUM_LEDS;x++){
Serial.print(odd[x]);
}
}
//////////////////////////////////////////////////////////////////////////
void split(){
potValue = analogRead(POT_PIN);
int Eval;
int Oval;
int Eval = potValue; //color value for even lanterns
int Oval = map(potValue,0,1023, 10,500); //offset color value for odd lanterns
for (int i=0;i<NUM_LEDS;i++){
leds[even[i]] = CHSV(Eval,255,255);
delay(1);
leds[odd[i]] = CHSV(Oval,255,255);
}
FastLED.show();
}
///////////////////////////////////////////////////////////////////////////
void loop() {
split();
}
我对 Arduino 很陌生。我做错了什么吗?这是解决此问题的有效方法吗?