Issues with rgb led matrix 16x32

Hi,
Im doing some college project with rgb matrix led 16x32 model p10-3535. The goal is to use phone app arduino bluetooth controller to send text on the matrix via bluetooth module.
My first step was to connect matrix to UNO and try to upload example code testshapes_16x32. (link from which i connected matrix: link)The matrix with that code should look like picture on the link, but mine is like in picture2.
Does anyone know what could be the problem?

Code:

#include <RGBmatrixPanel.h>

// Most of the signal pins are configurable, but the CLK pin has some
// special constraints.  On 8-bit AVR boards it must be on PORTB...
// Pin 8 works on the Arduino Uno & compatibles (e.g. Adafruit Metro),
// Pin 11 works on the Arduino Mega.  On 32-bit SAMD boards it must be
// on the same PORT as the RGB data pins (D2-D7)...
// Pin 8 works on the Adafruit Metro M0 or Arduino Zero,
// Pin A4 works on the Adafruit Metro M4 (if using the Adafruit RGB
// Matrix Shield, cut trace between CLK pads and run a wire to A4).

#define CLK  8   // USE THIS ON ARDUINO UNO, ADAFRUIT METRO M0, etc.
//#define CLK A4 // USE THIS ON METRO M4 (not M0)
//#define CLK 11 // USE THIS ON ARDUINO MEGA
#define OE   9
#define LAT 10
#define A   A0
#define B   A1
#define C   A2

RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);

void setup() {

  matrix.begin();

  // draw a pixel in white
  matrix.drawPixel(0, 0, matrix.Color333(7, 7, 7));
  delay(500);

  // fix the screen with green
  matrix.fillRect(0, 0, 32, 16, matrix.Color333(0, 7, 0));
  delay(500);

  // draw a box in yellow
  matrix.drawRect(0, 0, 32, 16, matrix.Color333(7, 7, 0));
  delay(500);

  // draw an 'X' in red
  matrix.drawLine(0, 0, 31, 15, matrix.Color333(7, 0, 0));
  matrix.drawLine(31, 0, 0, 15, matrix.Color333(7, 0, 0));
  delay(500);

  // draw a blue circle
  matrix.drawCircle(7, 7, 7, matrix.Color333(0, 0, 7));
  delay(500);

  // fill a violet circle
  matrix.fillCircle(23, 7, 7, matrix.Color333(7, 0, 7));
  delay(500);

  // fill the screen with black
  matrix.fillScreen(matrix.Color333(0, 0, 0));

  // draw some text!
  matrix.setCursor(1, 0);  // start at top left, with one pixel of spacing
  matrix.setTextSize(1);   // size 1 == 8 pixels high

  // print each letter with a rainbow color
  matrix.setTextColor(matrix.Color333(7,0,0));
  matrix.print('1');
  matrix.setTextColor(matrix.Color333(7,4,0));
  matrix.print('6');
  matrix.setTextColor(matrix.Color333(7,7,0));
  matrix.print('x');
  matrix.setTextColor(matrix.Color333(4,7,0));
  matrix.print('3');
  matrix.setTextColor(matrix.Color333(0,7,0));
  matrix.print('2');

  matrix.setCursor(1, 9);  // next line
  matrix.setTextColor(matrix.Color333(0,7,7));
  matrix.print('*');
  matrix.setTextColor(matrix.Color333(0,4,7));
  matrix.print('R');
  matrix.setTextColor(matrix.Color333(0,0,7));
  matrix.print('G');
  matrix.setTextColor(matrix.Color333(4,0,7));
  matrix.print('B');
  matrix.setTextColor(matrix.Color333(7,0,4));
  matrix.print('*');

  // whew!
}

void loop() {
  // Do nothing -- image doesn't change
}

#define A   A0
#define B   A1
#define C   A2

I would swap these around (either hw or sw) and try all 6 variations.

I have tried all 6 combinations. The display stays the same all the time, nothing changes.

Do you connect GND 3 times like in tutorial?
Try first to lid one row at a time. this matrix is build with some 74hc595 shift registers, you can try playing around with only one color, one chip select and one byte at a time.

Yes I connected GND 3 times and D pin from matrix panel to the GND because i found somewhere that in 16x32 displays they don't connect D pin and I uploaded this code for scrolling text and nothing showed.

Code:

// scrolltext demo for Adafruit RGBmatrixPanel library.
// Demonstrates double-buffered animation on our 16x32 RGB LED matrix:
// Medium 16x32 RGB LED matrix panel - 6mm Pitch : ID 420 : $24.95 : Adafruit Industries, Unique & fun DIY electronics and kits

// Written by Limor Fried/Ladyada & Phil Burgess/PaintYourDragon
// for Adafruit Industries.
// BSD license, all text above must be included in any redistribution.

#include <Adafruit_GFX.h> // Core graphics library
#include <RGBmatrixPanel.h> // Hardware-specific library

// Similar to F(), but for PROGMEM string pointers rather than literals
#define F2(progmem_ptr) (const __FlashStringHelper *)progmem_ptr

#define CLK 8 // MUST be on PORTB! (Use pin 11 on Mega)
#define LAT 10
#define OE 9
#define A A0
#define B A1
#define C A2
// Last parameter = 'true' enables double-buffering, for flicker-free,
// buttery smooth animation. Note that NOTHING WILL SHOW ON THE DISPLAY
// until the first call to swapBuffers(). This is normal.
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);
// Double-buffered mode consumes nearly all the RAM available on the
// Arduino Uno -- only a handful of free bytes remain. Even the
// following string needs to go in PROGMEM:

const char str[] PROGMEM = "Adafruit 16x32 RGB LED Matrix";
int textX = matrix.width(),
textMin = sizeof(str) * -12,
hue = 0;
int8_t ball[3][4] = {
{ 3, 0, 1, 1 }, // Initial X,Y pos & velocity for 3 bouncy balls
{ 17, 15, 1, -1 },
{ 27, 4, -1, 1 }
};
static const uint16_t PROGMEM ballcolor[3] = {
0x0080, // Green=1
0x0002, // Blue=1
0x1000 // Red=1
};

void setup() {
matrix.begin();
matrix.setTextWrap(false); // Allow text to run off right edge
matrix.setTextSize(2);
}

void loop() {
byte i;

// Clear background
matrix.fillScreen(0);

// Bounce three balls around
for(i=0; i<3; i++) {
// Draw 'ball'
matrix.fillCircle(ball[i][0], ball[i][1], 5, pgm_read_word(&ballcolor[i]));
// Update X, Y position
ball[i][0] += ball[i][2];
ball[i][1] += ball[i][3];
// Bounce off edges
if((ball[i][0] == 0) || (ball[i][0] == (matrix.width() - 1)))
ball[i][2] *= -1;
if((ball[i][1] == 0) || (ball[i][1] == (matrix.height() - 1)))
ball[i][3] *= -1;
}

// Draw big scrolly text on top
matrix.setTextColor(matrix.ColorHSV(hue, 2550, 255, false));
matrix.setCursor(textX, 1);
matrix.print(F2(str));

// Move text left (w/wrap), increase hue
if((--textX) < textMin) textX = matrix.width();
hue += 7;
if(hue >= 1536) hue -= 1536;

// Update display
matrix.swapBuffers(false);
}

do you got some success with sending 1 byte ?

This panel may not be supported by the library. P10 panels use different internal implementations. Check the library support.

why you so sure about that? P10 is for space between two LED: 10mm, P5 - 5mm, and so on.

It is some what common for P10 and/or outdoor panels to be designed for higher brightness. Generally the larger the space between the pixels the farther the panel is intended to be seen from or in well lit areas. These need higher current.

They do this by reducing the multiplex ratio which increases the average current. To get the same number of LEDs on they increase the shift register length against the columns. This creates an issue for the internal wiring, so they use goofy wiring schemes on the PCBs. Sometimes the multiplex ratio is so low they do not use decoders or shift registers for the row selects.

Pixel mappers are required to map the pixels into their correct location. Some libraries support this, while others do not.

Note they can make P10 panels like P5 panels. However P10 panels tend to be less dense panels. More dense panels tend to use tighter pitches and have lower average current due to increased multiplex. They may also use different LED drivers. However they can make P5 outdoor panels, which will have higher brightness. These may be harder to implement on PCBs.

Sometimes TVs have different pixel configurations compared to monitors due to viewing distance. However the size and resolution affect this.

I had same panel and same issue, but this library solved my problem:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.