I built a 16x16 matrix maybe 6mos ago (teensy 3.2, ws2812b),

I built a 16x16 matrix maybe 6mos ago (teensy 3.2, ws2812b), tinkered for a bit, and it’s sat for the majority of the time since. I have a maker event at work and am planning to show this and wanted to finish up some details. To my surprise, it was acting really weird! Behavior:

  • I have a spectrum analyzer and noted that the low end was lighting up really erratically and crazily

  • I ran a pixel test with full white, one at a time, and found that one pixel is more of an orange color

  • I have a “rolling ball” routine where you can control which area illuminates by tilting it around and only when I get into the area of the orang-y pixel does it do the erratic behavior

Short video examples:

Hopefully the picture illustrates some of the wiring? I was convinced that soldering those short jumpers so close might have melted through the insulation and shorted data/gnd or data/5V, but I just de-soldered some redundant gnd and power from that strip and am not seeing a difference.

I’m hoping someone here has seen something like this and will just say “Oh. Yup. I know just what’s up.” Hoping this doesn’t involve too much extra work to fix!

In the meantime, I’m going to de-solder everything to that strip and try to control just it directly. I’m guessing if that doesn’t work, it means I’ve got a bad strip? Not sure how it would go from good to bad sitting on a shelf… then again, it’s the top of the shelving unit that holds my kids toys :slight_smile:

Many thanks.

--------
Reference code for pixel test:

#include “FastLED.h”

#define DATA_PIN 22
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
#define NUM_LEDS 256
CRGB leds[NUM_LEDS];

void setup() {

delay(2000);
FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
FastLED.setBrightness(50);

}

void loop() {

for(int i = 0; i < 47; i++)
{

 leds[i] = CRGB(255, 255, 255);
 FastLED.show();
 delay(50);
 leds[i] = CHSV(0, 0, 0);
 FastLED.show();
 delay(10);

} // for

} // loop

Well, I guess that resolution was quick. I should have just tested before posting… I think I didn’t want to believe it was a bad pixel :frowning:

Short story is I de-soldered all the matrix connections from that strip and isolated it to connect directly to an arduino. It wouldn’t send the data at all. Doing the loop above (with just pixels 0 through 15) only blinked the first!

I left power and ground connected to the first pixel, but soldered the data line to pixel 2 and it worked! So, I’ll carefully peel up, cut that pixel off, and splice in a new one.
missing/deleted image from Google+

Nice repair job! :slight_smile:

@marmil Thanks! I just cut out the bad pixel and soldered in a new one. Seems to work flawlessly. Kind of wild. I really lucked out it was the first of the strip!

@John_Hendy If it had been leds[0] I was going to ask if you were using a resistor on the data line, thinking maybe that’s why it went bad, but seeing that it looks to be leds[16] I have no idea why. RBPH (random bad pixels happen)

Btw, that “rolling ball” routine looks rather fun.

Well funny that, I made one just like you, except 24x24: http://marc.merlins.org/perso/arduino/2017-04.html#Adafruit-GFX-on-NeoMatrix-and-RGB-Matrix-Panel-Demo
You should try my demo code on your matrix: https://github.com/marcmerlin/Adafruit_NeoMatrix/tree/master/examples/MatrixGFXDemo

2 other things:

  1. On mine I did 8 strips of 24, and used connectors between them. This allows me to test each set of 24 by itself for debugging, but also will allow me to disconnect them and connect them in parallel to a teensy and drive 8 strands at the same time with the new fastled code
  2. however fastled is lacking neomatrix support. I may add this later if I have time. Are you using any kind of neomatrix code or driving the matrix coordinates yourself?

Any chance you could share the Rolling Ball code/setup?

@Jesus_Climent Sure! Just uploaded to this gist:

Take a look at the code in if(mode_main == 2); that’s where that routine is. Also note, that code is based on an ADXL345 accelerometer. Hope that helps!