Banggood WS2812B - swapped input and output ? How to check ?

Hi,

I'm struggling to get the 8x8 Neopixel Matrix working.
I actually soldered all the wiring, to rule out any loose connections.
So, I used a 18V power adapter as a source, I lowered the voltage to about 5.5 V with a LM317 buck convertor, soldered two 470 µF and a 47µF in parallell (because I don't have a 1000µF) between the positive and negative terminals, put a 330 ohms between the data pin and de DIN pin of the matrix.

The problem is that only the first two rows of the matrix light up, in a pattern that looks like it 8X8 is folded onto two rows.

I read somewhere that with some of these boards from Banggood, the DIN and DOUT were swapped, but in that case I wouldn't get ANY light, right ? Would it be safe to try this ?

I have two of these, they both act the same, so I have a reason to assume they're not both broken.

I also tried the code for fastled and when I lower the count of the LEDs to two, it's turning on three leds (but with random flashes and color)

If it's not due to the in and out being swapped, please tell me how to troubleshoot, I've been trying and searching the internet for hours.

Oh one more thing I noticed: the #include statement for neopixel is colored orange, while these for GFX and neopixel matrix are not coloured. I installed these through the libraries option, even tried to downgrade the neopixel library. What does it mean ?

OK, let's have:

  • The link to the Banggood item so we can see the details.

  • The link - or description with photos - of your "LM317 buck converter" and an explanation of why you think it would have sufficient capability (3.8 Amps) to drive an 8 by 8 display?

  • Your code posted according to the instructions.

  • What editor you are using that shows things in colour?

  • Describe what "8X8 is folded onto two rows" actually looks like. Better still, a photo.Right, now let's see.

  • Soldering is good, if you have the skill.

  • 470 µF is just fine, or two of them. It is completely non-critical, so simply absurd to attempt to make up an accurate 1 mF.

  • Feeding data to DOUT will indeed, get you absolutely nowhere. It would be really bad if they actually designed the PCB wrong and had the interconnection between rows wrong - that would be very difficult to repair. I hadn't heard of it, but others may. I am just now setting up one of my displays of this nature to play with, as well as the 4 by 4s.

  • Were you first trying the Adafruit code? That is what I have used so far. Not that I have done much at all.

  • Need to see your code to be able to advise anything seriously.

First of all, thank you for trying to help me.
In the same order as your request:

  1. Banggood link:

I noticed that I ordered th WS2812, while on the backside of the board it says WS2812B. I concluded from this post: that I am indeed dealing with the WS8212, contrary to the print on the back.

  1. Some pictures of the PSU, LM317 and the soldering board

The PSU can deliver 3.4 Amps @ 19V, I honestly must say I have no idea if the LM317 is able to transform this into a lower voltage with a higher current...

  1. The code is the unchanged (apart from the control PIN) version of the examples found in the arduino IDE after installing the libraries and also here: code.zip

  2. I'm using the Arduino IDE (on linux), but the colouring seems to come from some kind of lint, that recognises these as a known piece of code, the question should rather be why the other two are NOT coloured. Anyway, beyond the scope of this question. If it were a problem, the compiler would complain about it.

  3. As with the folding, that seem to have gone away. I replaced the board with it's twin brother, which had exactly the same problem before, but now suddenly the board does behave in a way I would expect when i.e LED N°17 is broken (but more of them light up sometimes when I turn of the power switch, which makes me hope that this is not the case)
    The code would scroll "instructables" or "howdy" along the screen. Now it seems as if this indeed happening, but limited only to the first two rows.

1B. I measure the same voltage accross the terminals on the board with my multimeter, so I assume the sodlering is good (I'm not a beginner if it comes to soldering)

2B. At first I only put 2x 470µF, but to rule out reason of the strange behaviour, I tried to match the capacitance to the description.

3B. See the link from the forum where some guys figured out the text was printed upside down on the boards. With my boards the text of the pins is also upside down in relation to the text which reads WS2812B-64 bit", which is also wrong

5B. The exact code I used (amongst many other variations)

// Adafruit_NeoMatrix example for single NeoPixel Shield.
// Scrolls 'Howdy' across the matrix in a portrait (vertical) orientation.

#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#ifndef PSTR
 #define PSTR // Make Arduino Due happy
#endif

#define PIN 6

// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as needed:
//   NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT:
//     Position of the FIRST LED in the matrix; pick two, e.g.
//     NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner.
//   NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal
//     rows or in vertical columns, respectively; pick one or the other.
//   NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed
//     in the same order, or alternate lines reverse direction; pick one.
//   See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)


// Example for NeoPixel Shield.  In this application we'd like to use it
// as a 5x8 tall matrix, with the USB port positioned at the top of the
// Arduino.  When held that way, the first pixel is at the top right, and
// lines are arranged in columns, progressive order.  The shield uses
// 800 KHz (v2) pixels that expect GRB color data.
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(8, 8, PIN,
  NEO_MATRIX_TOP     + NEO_MATRIX_RIGHT +
  NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
  NEO_GRB            + NEO_KHZ800);

const uint16_t colors[] = {
  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };

void setup() {
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(20);
  matrix.setTextColor(colors[0]);
}

int x    = matrix.width();
int pass = 0;

void loop() {
  matrix.fillScreen(0);
  matrix.setCursor(x, 0);
  matrix.print(F("Instructables"));
  if(--x < -84) {
    x = matrix.width();
    if(++pass >= 3) pass = 0;
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(100);
}