Hello,
I am working with a Neopixel matrix that consists of 64 pixels (8x8 configuration). I read that the pixels have a lot of current draw so I powered the board matrix independently using a 5A,3A UL certified AC adapter. The matrix that I bought is also a RGBW configuration (Adafruit NeoPixel NeoMatrix 8x8 - 64 RGB LED Pixel Matrix : ID 1487 : $34.95 : Adafruit Industries, Unique & fun DIY electronics and kits).
I am having major flickering issues with the pixels. At first, I thought that it might be a voltage variation issue, but when I disconnect the Arduino from my computer, which is powering it, there are no flickering issues at all. So the problem cannot be that their is varying voltage from the AC adapter to the board.
I then read that the Neopixels use up a lot of RAM: "Each NeoPixel requires about 3 bytes of RAM. This doesn’t sound like very much, but when you start using dozens or even hundreds of pixels, and consider that the mainstream Arduino Uno only has 2 kilobytes of RAM (often much less after other libraries stake their claim), this can be a real problem!
For using really large numbers of LEDs, you might need to step up to a more potent board like the Arduino Mega or Due. But if you’re close and need just a little extra space, you can sometimes tweak your code to be more RAM-efficient."
I was using the Arduino Uno up to this point and decided to switch to the Arduino Mega which I read has more RAM than Uno, but the flickering issue still persisted.
If anyone has worked with Neopixels with Arduino before and has had similar issues and was able to resolve them, your help would be greatly appreciated. I have attached the code that I am using for the Neopixels below as well.
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define NUM_LIGHTS 64
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LIGHTS, PIN, NEO_RGBW + NEO_KHZ800);
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
strip.setBrightness(255);
strip.show();
}
void loop() {
uint32_t low = strip.Color(0, 0, 0, 0);
uint32_t high = strip.Color(255, 0, 0, 0);
// Turn them off
for( int i = 0; i<NUM_LIGHTS; i++){
strip.setPixelColor(i, high);
strip.show();
}
}