Pixel Grid Problems - Please Help!

ProgrammerPatty

New member
Hello group!

I have the Boscoyo Stocking w/matrix and am using Vixen 3.4. When I set up the matrix which is horizontally placed (7 high, 20 across) and place text - it scrolls vertically and you can barely read it. I am wondering if I've pushed the pixels incorrectly. Here's a mock up of how I pushed them....the number represent the pixel ;)

20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
and so forth.

Can someone please help me?

Thanks so much,
PP
 
In vixen, the order of the elements is always bottom left to top right.
If it's set up horizontally, it's like this...

61 ... 80
41 ...60
21 ...40
1 ... 20

That doesn't mean that's how you need to push your pixels. But if you don't, you then need to do the translation when you're patching.

So since you did it top right, to bottom left, AND you zig zagged, you need to patch one row at a time.
First select the whole matrix group, then click the button below to show the patched controller channels.
Then hit the "unpatch controllers" button. Make sure to use the "unpatch controllers" button and NOT the "unpatch elements" This will unpatch all those controller channels.
Leave those controller channels selected.

Now select the first group, check "reverse elements" (not reverse outputs) and hit patch
Select the second group. do NOT check "reverse elements" and hit patch
3rd group, reverse and patch
4th group, no reverse and patch.
etc....


Now back in the sequencer, make sure your effects are set to horizontal string orientation, and you'll be all good.
 
here is a code that prints test on matrix, would like to use it for multiple grids as serial read anyone have ideas

Code:
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
 
#define PIN 12
 
// 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)
 
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, PIN,
  NEO_MATRIX_BOTTOM    + NEO_MATRIX_RIGHT +
  NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
  NEO_GRB            + NEO_KHZ800);
 
const uint16_t colors[] = {
  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(255, 255, 0),matrix.Color(0, 0, 255), matrix.Color(255, 0, 255), matrix.Color(0, 255, 255), matrix.Color(255, 255, 255)};
 
void setup() {
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(5);
  matrix.setTextColor(colors[0]);
}
 
int x    = matrix.width();
int pass = 0;
 
void loop() {
  matrix.fillScreen(0);
  matrix.setCursor(x, 0);
  matrix.print(F("Test"));
 
  if(--x < -30)
{
    x = matrix.width();
 
    if(++pass >= 8) pass = 0;
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(30);
}

will post the one i have tried to implement with no success :evil: when i find it again
 
here is a code that prints test on matrix, would like to use it for multiple grids as serial read anyone have ideas

Code:
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
 
#define PIN 12
 
// 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)
 
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, PIN,
  NEO_MATRIX_BOTTOM    + NEO_MATRIX_RIGHT +
  NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
  NEO_GRB            + NEO_KHZ800);
 
const uint16_t colors[] = {
  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(255, 255, 0),matrix.Color(0, 0, 255), matrix.Color(255, 0, 255), matrix.Color(0, 255, 255), matrix.Color(255, 255, 255)};
 
void setup() {
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(5);
  matrix.setTextColor(colors[0]);
}
 
int x    = matrix.width();
int pass = 0;
 
void loop() {
  matrix.fillScreen(0);
  matrix.setCursor(x, 0);
  matrix.print(F("Test"));
 
  if(--x < -30)
{
    x = matrix.width();
 
    if(++pass >= 8) pass = 0;
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(30);
}

will post the one i have tried to implement with no success :evil: when i find it again

You should start your own thread for help with this . :)
 
here is the one I tried to comple for serial read
Code:
// You must download and install the library from http://fastled.io/
#include <FastLED.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#ifndef PSTR
#define PSTR // Make Arduino Due happy
#endif

#define NUM_STRIPS 44                             // Changed from original for 3 strings
#define NUM_LEDS_PER_STRIP 22                    // Using 63 pixels per string
#define NUM_LEDS NUM_LEDS_PER_STRIP * NUM_STRIPS // Total number of LEDs
#define PIN 8


CRGB leds[NUM_STRIPS * NUM_LEDS_PER_STRIP];


Adafruit_NeoMatrix matrix1 = Adafruit_NeoMatrix(NUM_STRIPS, NUM_LEDS_PER_STRIP, PIN,
                             NEO_MATRIX_TOP     + NEO_MATRIX_LEFT +
                             NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
                             NEO_GRB            + NEO_KHZ800);

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

void setup() {
  // Define the speed of the serial port
  Serial.begin(115200);
    matrix1.begin();
  matrix1.setTextWrap(false);

}

void loop() {
  // Set some counter / temporary storage variables
  int cnt;
  unsigned int num_leds;
  unsigned int d1, d2, d3;

  // Begin an endless loop to receive and process serial data
  for (;;) {
    // Set a counter to 0. This couter keeps track of the pixel colors received.
    cnt = 0;
    //Begin waiting for the header to be received on the serial bus
    //1st character
    while (!Serial.available());
    if (Serial.read() != '>') {
      continue;
    }
    //second character
    while (!Serial.available());
    if (Serial.read() != '>') {
      continue;
    }
    //get the first digit from the serial bus for the number of pixels to be used
    while (!Serial.available());
    d1 = Serial.read();
    //get the second digit from the serial bus for the number of pixels to be used
    while (!Serial.available());
    d2 = Serial.read();
    //get the third digit from the serial bus for the number of pixels to be used
    while (!Serial.available());
    d3 = Serial.read();
    //get the end of the header
    while (!Serial.available());
    if (Serial.read() != '<') {
      continue;
    }
    while (!Serial.available());
    if (Serial.read() != '<') {
      continue;
    }
    // calculate the number of pixels based on the characters provided in the header digits
    num_leds = (d1 - '0') * 100 + (d2 - '0') * 10 + (d3 - '0');
    // ensure the number of pixels does not exceed the number allowed
    if (num_leds > NUM_LEDS) {
      continue;
    }
    /*  ----have commeted this section to try and use matrix only----
        // CODE ADDED - tell FastLED there's 63 PIXEL leds on pin 8, starting at index 0 in the led array
        //this line change for one long string
        FastLED.addLeds<WS2811, 8, RGB>(leds, 0, NUM_LEDS_PER_STRIP);
        // CODE ADDED - tell FastLED there's 63 PIXEL leds on pin 9, starting at index 64 in the led array
        FastLED.addLeds<WS2811, 9, RGB>(leds, NUM_LEDS_PER_STRIP, NUM_LEDS_PER_STRIP);
        // CODE ADDED - tell FastLED there's 63 PIXEL leds on pin 10, starting at index 127 in the led array
        FastLED.addLeds<WS2811, 10, RGB>(leds, NUM_LEDS_PER_STRIP * 2, NUM_LEDS_PER_STRIP);
        // CODE ADDED - tell FastLED there's 63 PIXEL leds on pin 11, starting at index 190 in the led array
        FastLED.addLeds<WS2811, 11, RGB>(leds, NUM_LEDS_PER_STRIP * 3, NUM_LEDS_PER_STRIP);
        // FastLED.addLeds<WS2811, 8,RGB>(leds, 0, 256);
    */
    do {
      while (!Serial.available());
      leds[cnt].r = Serial.read();
      while (!Serial.available());
      leds[cnt].g = Serial.read();
      while (!Serial.available());
      leds[cnt++].b = Serial.read();
    }
    while (--num_leds);   // Tell the FastLED Library it is time to update the strip of pixels
//    FastLED.show();       // WOO HOO... We are all done and are ready to start over again!
    matrix.show(); //hopefully will display
  }
}
 
Back
Top