Замените octoWS2811 с ​​fastled 2812 для потоковой передачи - PullRequest
0 голосов
/ 05 ноября 2019

Здравствуйте, коллеги-программисты Arduino, в настоящее время я работаю над светодиодной матрицей, где я управляю матрицей 30x7 (210led WS2812). Я использую Arduino Nano для этой работы.

Я нашел эту часть кода в интернете, но она использует библиотеку octoWS2811, и мне нравится, чтобы это работало без библиотеки octo ws2811, поскольку это только для teensys.

оригинальный код выглядит следующим образом:

#include <OctoWS2811.h>

#include<OctoWS2811.h>
#include<FastLED.h>

// ------------ Change these as neccesary -----------//
#define NUM_LEDS_PER_STRIP 400
#define NUM_STRIPS 8

CRGB leds[NUM_STRIPS * NUM_LEDS_PER_STRIP];
const int numOfBytes = NUM_LEDS_PER_STRIP * NUM_STRIPS * 3;
const int numLeds = NUM_LEDS_PER_STRIP * NUM_STRIPS;
 char inputBuffer[numOfBytes];

// ------------------- Setup -------------------- //
 void setup() {
  LEDS.addLeds<OCTOWS2811>(leds, NUM_LEDS_PER_STRIP);
  LEDS.setBrightness(255);
  delay(500);
  Serial.begin(115200);
  Serial.setTimeout(500);
  LEDS.show();
}

// ------------------- Main Loop -------------------- //
void loop() {
if(Serial.available() > 0) {
  Serial.readBytes(inputBuffer, numOfBytes);
}
  for (int j = 0; j < numLeds; j++) {
    leds[j] = CRGB(inputBuffer[(j*3)],inputBuffer[(j*3)+1],inputBuffer[(j*3)+2]);
  }
  LEDS.show();
}

, и я хочу, чтобы он работал с чем-то вроде этого:

#include<FastLED.h>

// ------------ Change these as neccesary -----------//
#define NUM_LEDS_PER_STRIP 400
#define NUM_STRIPS 8

CRGB leds[NUM_STRIPS * NUM_LEDS_PER_STRIP];
const int numOfBytes = NUM_LEDS_PER_STRIP * NUM_STRIPS * 3;
const int numLeds = NUM_LEDS_PER_STRIP * NUM_STRIPS;
 char inputBuffer[numOfBytes];

// ------------------- Setup -------------------- //
 void setup() {
 FastLED.addLeds<NEOPIXEL, 3>(leds, 0, Num_Leds);
 FastLED.addLeds<NEOPIXEL, 4>(leds, Num_Leds, Num_Leds);
 FastLED.addLeds<NEOPIXEL, 5>(leds, 2 * Num_Leds, Num_Leds);
  FastLED.addLeds<NEOPIXEL, 6>(leds, 3 * Num_Leds, Num_Leds); -------to let fastled know it should be seen as a single led-strip
  FastLED.addLeds<NEOPIXEL, 7>(leds, 4 * Num_Leds, Num_Leds);
  FastLED.addLeds<NEOPIXEL, 8>(leds, 5 * Num_Leds, Num_Leds);
  FastLED.setBrightness(255);
  delay(500);
  Serial.begin(115200);
  Serial.setTimeout(500);
  FastLED.show();
}

// ------------------- Main Loop -------------------- //
void loop() {
if(Serial.available() > 0) {
  Serial.readBytes(inputBuffer, numOfBytes);
}
  for (int j = 0; j < numLeds; j++) {
    leds[j] = CRGB(inputBuffer[(j*3)],inputBuffer[(j*3)+1],inputBuffer[(j*3)+2]);
  }
  FastLED.show();
}

есть предложения по этому поводу? это должен быть простой потоковый фрагмент кода, но я не могу понять, как заставить его скомпилировать, используя библиотеку fastled и светодиоды NEOPIXEL / ws2812.

...