For a small WS2812 based led project I'm using both FastLED and Adafruit NeoMatrix libraries (mainly for displaying text) and this was running perfectly on an Arduino Nano. However, I need to control it with an iOS app using bluetooth communication so I had to step away from the Nano/Bluno controllers as they are not capable of processing the BT communication together with these led libraries.
So I moved to a Teensy 3.2 controller (3 UARTS) and WS2812Serial and first what I tried to do is get my led patterns working again. However, each of the libraries separately are working correctly (I've tested them successfully with the library examples), but as soon as I fire the FastLED.show() command, the subsequent patterns using NeoMatrix.show() don't work (the program doesn't crash, but the leds are just not being controlled). As soon as FastLED pattern comes along it works as usual. On the Nano/Bluno platform I had no problems with switching between these libraries.
Here are some code snippets which show which libraries are included and how they are used:
So I moved to a Teensy 3.2 controller (3 UARTS) and WS2812Serial and first what I tried to do is get my led patterns working again. However, each of the libraries separately are working correctly (I've tested them successfully with the library examples), but as soon as I fire the FastLED.show() command, the subsequent patterns using NeoMatrix.show() don't work (the program doesn't crash, but the leds are just not being controlled). As soon as FastLED pattern comes along it works as usual. On the Nano/Bluno platform I had no problems with switching between these libraries.
Here are some code snippets which show which libraries are included and how they are used:
Code:
#include <WS2812Serial.h>
#define USE_WS2812SERIAL
#include <FastLED.h>
// Adafruit stuff
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#include <Fonts/Picopixel.h>
#define DATA_PIN 5
#define LED_TYPE WS2812SERIAL
#define COLOR_ORDER BRG
#define NUM_LEDS 64
....
// FastLED declarations
// Declare array of leds including extra 'safety' pixel
CRGB leds_plus_safety_pixel[NUM_LEDS + 1];
CRGB* const leds(leds_plus_safety_pixel + 1);
// Adafruit declarations
Adafruit_NeoMatrix ledsNeo = Adafruit_NeoMatrix(WIDTH, HEIGHT, DATA_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_GRB + NEO_KHZ800);
....
// Setup
void setup() {
delay(3000); // 3 second delay for recovery
// FastLED LED strip initializer
FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
FastLED.setBrightness(128);
// Adafruit LED strip initializer + text message stuff
ledsNeo.begin();
ledsNeo.setBrightness(128);
ledsNeo.setRemapFunction(remapFn);
ledsNeo.setFont(&Picopixel);
ledsNeo.setTextWrap(false);
// Serial communication with Serial Monitor
Serial.begin(BAUDRATE);
while (!Serial); // Wait until Serial is ready
Serial.print("Serial communication started at "); Serial.println(BAUDRATE);
Serial.println(" ");
}
....
// Main loop
void loop()
{
// Prepare patterns to display and set the corresponding library to use for the show() function -> bAdafruit
.....
if (bAdafruit) {
// Adafruit GFX
ledsNeo.show();
delay(25);
bAdafruit = false; // will be set by the pattern above
} else {
// FastLED
FastLED.show();
// insert a delay to keep the framerate modest
FastLED.delay(25);
}
}