Hello all,
I am hoping someone can help me figure this flicker out...i have read through similar threads but nothing suggested in them has worked for me and I am unsure how to proceed.
The basic idea of my project is to accept 32 channels of DMX (4 channels per strip, with 1 unused channel) and use them to control (8)x 1 meter sections of LED flex strip. When the DMX signal is received, the new color "wipes" or "pours" down the flex strip. I have the DMX working great (thanks to Paul for pointing me toward the library elsewhere on the forum) and the strips "wipe/pour" correctly, I can do something different on all 8 strips without issue.
BUT there is a random flicker that I cannot get rid of. It moves up and down the strip, some colors act up more than others. The really confounding thing is that when I set white at full power it works fine; red, green, and blue at full power also work fine. It seems that anything less than full on generates a flicker. I had a similar issue the the FastLED library, but it only had issues at full power and everything in the middle work fine; I wasn't able to resolve it and moved on to OctoWS2811.
At first I though it was a power thing but after checking, i see 4.9V at the front of the strip and 4.6V at the last LED; I know that's close to being out of spec, but one thing at a time. I really don't think it is power becuase it middle of the strip may flicker while the end after it is fine.
I'm not sure what all needs to be know, but here are all of the details I can think of.
My computer:
Operating System: Windows 8, 64-bit
Arduino 1.0.5 with Teensyduino 1.18-rc1
My system:
Power supply: Mean Well RS-50-5 (5V / 10A)
LED strips Adafruit 144 LED/meter WS2812b (they only have 4-pins) strips (only testing with one strip currently)
TI SN74HCT245N octal bus transceiver (for level shifting) with 100 ohm resistors inline
TI SN65HVD1786 differential bus transceiver (DMX input)
Teensy 3.1 and all other hardware currently on the bread board.
Below is all of my code (please excuse my n00bish formatting):
So, does anybody have any thoughts?
Thanks, Tony.
I am hoping someone can help me figure this flicker out...i have read through similar threads but nothing suggested in them has worked for me and I am unsure how to proceed.
The basic idea of my project is to accept 32 channels of DMX (4 channels per strip, with 1 unused channel) and use them to control (8)x 1 meter sections of LED flex strip. When the DMX signal is received, the new color "wipes" or "pours" down the flex strip. I have the DMX working great (thanks to Paul for pointing me toward the library elsewhere on the forum) and the strips "wipe/pour" correctly, I can do something different on all 8 strips without issue.
BUT there is a random flicker that I cannot get rid of. It moves up and down the strip, some colors act up more than others. The really confounding thing is that when I set white at full power it works fine; red, green, and blue at full power also work fine. It seems that anything less than full on generates a flicker. I had a similar issue the the FastLED library, but it only had issues at full power and everything in the middle work fine; I wasn't able to resolve it and moved on to OctoWS2811.
At first I though it was a power thing but after checking, i see 4.9V at the front of the strip and 4.6V at the last LED; I know that's close to being out of spec, but one thing at a time. I really don't think it is power becuase it middle of the strip may flicker while the end after it is fine.
I'm not sure what all needs to be know, but here are all of the details I can think of.
My computer:
Operating System: Windows 8, 64-bit
Arduino 1.0.5 with Teensyduino 1.18-rc1
My system:
Power supply: Mean Well RS-50-5 (5V / 10A)
LED strips Adafruit 144 LED/meter WS2812b (they only have 4-pins) strips (only testing with one strip currently)
TI SN74HCT245N octal bus transceiver (for level shifting) with 100 ohm resistors inline
TI SN65HVD1786 differential bus transceiver (DMX input)
Teensy 3.1 and all other hardware currently on the bread board.
Below is all of my code (please excuse my n00bish formatting):
Code:
// library #includes
#include <OctoWS2811.h>
#include <DmxReceiver.h> // this uses UART0 (serial1) for DMX input
// DMX #defines and varibles
DmxReceiver dmx = DmxReceiver();
IntervalTimer bufferService;
//byte dmx_address = 0;
//byte dmx_data[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
// octoWS2811 LED #defines and varibles
const int ledsPerStrip = 140;
DMAMEM int displayMemory[ledsPerStrip * 6];
int drawingMemory[ledsPerStrip*6];
const int config = WS2811_GRB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);
#define strip_enable 9
// setup / initalization stuff
void setup()
{
pinMode(0, INPUT);
bufferService.begin(BufferService, 1500);
dmx.begin(); //start the DMX
pinMode(strip_enable, OUTPUT);
digitalWrite(strip_enable, LOW); // enable the buffer
leds.begin(); //start octoWS2811
leds.show(); //turn off all the LEDs
delay(1000);
}
void loop()
{
strip_pour();
delay(10);
}
void BufferService()
{
dmx.bufferService();
}
void strip_uniform()
{
for(int x = 0; x <= (ledsPerStrip-1); x++)
{
//Strip 1
leds.setPixel((x+(ledsPerStrip*0)), dmx.getDimmer(1), dmx.getDimmer(2), dmx.getDimmer(3));
//Strip 2
leds.setPixel((x+(ledsPerStrip*1)), dmx.getDimmer(5), dmx.getDimmer(6), dmx.getDimmer(7));
//Strip 3
leds.setPixel((x+(ledsPerStrip*2)), dmx.getDimmer(9), dmx.getDimmer(10), dmx.getDimmer(11));
//Strip 4
leds.setPixel((x+(ledsPerStrip*3)), dmx.getDimmer(13), dmx.getDimmer(14), dmx.getDimmer(15));
//Strip 5
leds.setPixel((x+(ledsPerStrip*4)), dmx.getDimmer(17), dmx.getDimmer(18), dmx.getDimmer(19));
//Strip 6
leds.setPixel((x+(ledsPerStrip*5)), dmx.getDimmer(21), dmx.getDimmer(22), dmx.getDimmer(23));
//Strip 7
leds.setPixel((x+(ledsPerStrip*6)), dmx.getDimmer(25), dmx.getDimmer(26), dmx.getDimmer(27));
//Strip 8
leds.setPixel((x+(ledsPerStrip*7)), dmx.getDimmer(29), dmx.getDimmer(30), dmx.getDimmer(31));
}
if (leds.busy() == false)
{
leds.show();
delay(5);
}
}
void strip_pour()
{
for(int x = 0; x <= (ledsPerStrip-1); x++)
{
//Strip 1
leds.setPixel((x+(ledsPerStrip*0)), dmx.getDimmer(1), dmx.getDimmer(2), dmx.getDimmer(3));
//Strip 2
leds.setPixel((x+(ledsPerStrip*1)), dmx.getDimmer(5), dmx.getDimmer(6), dmx.getDimmer(7));
//Strip 3
leds.setPixel((x+(ledsPerStrip*2)), dmx.getDimmer(9), dmx.getDimmer(10), dmx.getDimmer(11));
//Strip 4
leds.setPixel((x+(ledsPerStrip*3)), dmx.getDimmer(13), dmx.getDimmer(14), dmx.getDimmer(15));
//Strip 5
leds.setPixel((x+(ledsPerStrip*4)), dmx.getDimmer(17), dmx.getDimmer(18), dmx.getDimmer(19));
//Strip 6
leds.setPixel((x+(ledsPerStrip*5)), dmx.getDimmer(21), dmx.getDimmer(22), dmx.getDimmer(23));
//Strip 7
leds.setPixel((x+(ledsPerStrip*6)), dmx.getDimmer(25), dmx.getDimmer(26), dmx.getDimmer(27));
//Strip 8
leds.setPixel((x+(ledsPerStrip*7)), dmx.getDimmer(29), dmx.getDimmer(30), dmx.getDimmer(31));
if (leds.busy() == false)
{
leds.show();
delay(5);
}
}
}
So, does anybody have any thoughts?
Thanks, Tony.