Hey gang!
I soldered together my teensy 4.1 with the audio shield and the OctoWS2811 board, hooked up my LED strip to the data and power, and was delighted to find that it all worked right out of the box! The correct colors are coming up in the right order and the colorWipe (from the Teensy4_PinList example) looks great.
Only thing is, when I change the delay (first line in the loop function) by adding 0s, I can slow down the animation, but if I remove 0s I can't speed it up much. The quickest wipe time (per color) that I can get is about 2.7 seconds for the 300 RGB LEDs in my strip (https://www.amazon.com/dp/B018X04ES2).
I'm wondering if this is a ceiling I'm running into because of my hardware or if I've done something odd in my code. It's not a big deal, I've tried running the Fire and Plasma examples and they look great, I just want to understand why I can't get the colorWipe to run at some blazing fast speed.
I soldered together my teensy 4.1 with the audio shield and the OctoWS2811 board, hooked up my LED strip to the data and power, and was delighted to find that it all worked right out of the box! The correct colors are coming up in the right order and the colorWipe (from the Teensy4_PinList example) looks great.
Only thing is, when I change the delay (first line in the loop function) by adding 0s, I can slow down the animation, but if I remove 0s I can't speed it up much. The quickest wipe time (per color) that I can get is about 2.7 seconds for the 300 RGB LEDs in my strip (https://www.amazon.com/dp/B018X04ES2).
I'm wondering if this is a ceiling I'm running into because of my hardware or if I've done something odd in my code. It's not a big deal, I've tried running the Fire and Plasma examples and they look great, I just want to understand why I can't get the colorWipe to run at some blazing fast speed.
Code:
/* OctoWS2811 Teensy4_PinList.ino - Demonstrate use of any pins
http://www.pjrc.com/teensy/td_libs_OctoWS2811.html
With Teensy 4.x, you can use any group of pins. You are not limited
to only 8 fixed pins as with Teensy 3.x. This example shows how to
use only 4 pins, which are the 4 pins of the Octo28 shield which do
not conflict with the Audio shield.
Required Connections
--------------------
pin 2: LED Strip #1
pin 14: LED strip #2
pin 6: LED strip #5
pin 5: LED strip #8
*/
#include <OctoWS2811.h>
// Any group of digital pins may be used
/* original
const int numPins = 4;
byte pinList[numPins] = {2, 14, 6, 5};
*/
const int numPins = 1;
byte pinList[numPins] = {2};
const int ledsPerStrip = 300;
// These buffers need to be large enough for all the pixels.
// The total number of pixels is "ledsPerStrip * numPins".
// Each pixel needs 3 bytes, so multiply by 3. An "int" is
// 4 bytes, so divide by 4. The array is created using "int"
// so the compiler will align it to 32 bit memory.
const int bytesPerLED = 3; // change to 4 if using RGBW
DMAMEM int displayMemory[ledsPerStrip * numPins * bytesPerLED / 4];
int drawingMemory[ledsPerStrip * numPins * bytesPerLED / 4];
const int config = WS2811_GRB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config, numPins, pinList);
void setup() {
//Serial.begin(9600);
leds.begin();
leds.show();
}
/*
#define RED 0xFF0000
#define GREEN 0x00FF00
#define BLUE 0x0000FF
#define YELLOW 0xFFFF00
#define PINK 0xFF1088
#define ORANGE 0xE05800
#define WHITE 0xFFFFFF
*/
// Less intense...
#define RED 0x160000
#define GREEN 0x001600
#define BLUE 0x000016
#define YELLOW 0x101400
#define PINK 0x120009
#define ORANGE 0x100400
#define WHITE 0x101010
void loop() {
int microsec = 2000000 / leds.numPixels(); // change them all in 2 seconds
//Serial.print(microsec);
//Serial.println();
// uncomment for voltage controlled speed
// millisec = analogRead(A9) / 40;
colorWipe(RED, microsec);
colorWipe(GREEN, microsec);
colorWipe(BLUE, microsec);
colorWipe(YELLOW, microsec);
colorWipe(PINK, microsec);
colorWipe(ORANGE, microsec);
colorWipe(WHITE, microsec);
}
void colorWipe(int color, int wait)
{
for (int i=0; i < leds.numPixels(); i++) {
leds.setPixel(i, color);
leds.show();
delayMicroseconds(wait);
}
}