Successfully created a jumbotron running glediator with ws2812b RGB strips, question

Status
Not open for further replies.

Thaitech

Member
https://www.youtube.com/watch?v=zlftd8de42M&t=127s

Above is a video link of most current programming of screen. My question is this... I'm looking to make another, twin screen to hang on the wall behind me, using exact same materials and build, however I was about to purchase another teensy 3.2 and octoshield, when I realized that in my first jumbotron, I am only using 1/2 of the rj45 connections on the Octoshield. So my question would be, would I be able to use the 2nd rj45 connection to feed data to my 2nd jumbotron, and if so, would there be any issues or complications? Or would I need a separate teensy and octoshield connected to a multi tt usb 2.0 hub? Any info is greatly appreciated! This has been the coolest, most complex undertaking I have done to date, but I love it. Thanks for providing so much great info and products.

-Chris
 
Last edited:
Also, the code of the sketch i'm running through arduino to my current jumbotron is as follows:

// Glediator example with OctoWS2811, by mortonkopf
//
// https://forum.pjrc.com/threads/33012-Gladiator-with-OctoWS2811-working-example

// You can also use Jinx to record Glediator format data to a SD card.
// To play the data from your SD card, use this modified program:
// https://forum.pjrc.com/threads/46229&viewfull=1#post153927

#include <OctoWS2811.h>

const int ledsPerStrip = 648;
const int NUM_LEDS = 2592;

DMAMEM int displayMemory[ledsPerStrip*6];
int drawingMemory[ledsPerStrip*6];

const int config = WS2811_GRB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);

void setup() {
leds.begin();
leds.show();
}

int serialGlediator() {
while (!Serial.available()) {}
return Serial.read();
}

void loop() {
byte r,g,b;
int i;

while (serialGlediator() != 1) {}

for (i=0; i < NUM_LEDS; i++) {
b = serialGlediator();
r = serialGlediator();
g = serialGlediator();

leds.setPixel(i, Color(r,g,b));
}
leds.show();
}

/* Helper functions */
// Create a 24 bit color value from R,G,B
unsigned int Color(byte r, byte g, byte b)
{
return (((unsigned int)b << 16) | ((unsigned int)r << 8) | (unsigned int)g);
}
 
Depending on what you are trying to do you can drive the panel from the single teensy+octo. The main constraints are RAM on the Teensy as per the Octo board page, the refresh rate as the individual strips get longer and wire length to the first pixle. That last one is the most likely to cause issues when people are making lighting effects for stage use were long runs and hostile EMI environment start to become a problem. With what you are doing the twisted pair should suffice unless you have a tesla coil or something running out of shot there.

If you are happy with exactly the same effects you could simply split off the wiring for the current strips but if you have 4 spare outputs using those gives more options.
 
Depending on what you are trying to do you can drive the panel from the single teensy+octo. The main constraints are RAM on the Teensy as per the Octo board page, the refresh rate as the individual strips get longer and wire length to the first pixle. That last one is the most likely to cause issues when people are making lighting effects for stage use were long runs and hostile EMI environment start to become a problem. With what you are doing the twisted pair should suffice unless you have a tesla coil or something running out of shot there.

If you are happy with exactly the same effects you could simply split off the wiring for the current strips but if you have 4 spare outputs using those gives more options.

Fantastic, thank you so much for your response, I actually read through a few of your forum answers on said topic. I would use cat6 cables for any 2nd screen, likely would need maybe 10-15' to ensure enough room to work with when mounting behind. That being said, my main concern would be the RAM on the teensy, so I am under the impression that adding a 2nd twin screen using the bottom rj45 connection would reduce the performance of both screens, correct? (aside from cat6 cable length issues)

So my point is, I might as well just spend the extra $40 or so to have a 2nd teensy 3.2 and octows2811 to run the 2nd screen? I already ordered a good multi tt usb hub, so would I still need to wire the sync pins together or..? Thank you again!
 
If you are using the Octo library but only 4 of the 8 outputs then the RAM is already allocated and all you are saving is the overhead in getting bytes from Glediator onto the Teensy. That said there are advantages with making your setup modular and a second Teensy will do that. In fact if you get clever you can probably program glediator and Teensies so that the Teensies have the same code and are interchangeable, display selected by which four ports you plug into. You may run into issues on the USB bandwidth side but I think you should be OK still, depends on what frame rate you are trying to push.

The sync pins matter if you are trying to display coherent images across multiple teensies. For example if you had your setup vertically paired together showing a video of someone walking left there would be a tendency for a slight tear to show up where the two different panels meet due to updateing to the next frame at different times (and that jitter would change around depending on USB behavior) that the sync signal can lock together.

For pixel effects without strong motion in the direction of the join, or without any join at all leaving it out will be simpler, and allow higher frame rates overall (do not need either panel to wait for the other and can get clever updating just one controller at a higher rate at need).
 
Hey so I'm getting all the parts, I found a purple OSH teensy 3.2 for $19 on ebay, and I still have a spare OCTO attached to a 3.2 which lost the mini usb connector, so I'm getting ready to build, however I just realized I will need to use the same # of LEDs and rows for the code to work across 2 different teensies, is this correct?
 
If you want the patterns to work out right, yes you will need to match the layouts. The code does not care how long the strips are, it just streams data out so if you are just making the strip shorter that will work electrically and in terms of the code. So all fine if your pattern is abstract (no vertical structure) or if you are just taking the display 'shorter' for all strips. Suspect though you have some choices to make trading code complexity for cost/complexity of the final panel.
 
another thought

Well I'm not too concerned about the 2nd panel being any lesser quality than the 1st, I'm fairly confident it will actually be much nicer than the 1st considering it was my first and only attempt at creating a led display. (Took me about 6months and a few mistakes to complete) So I already have more than enough supplies to make a clone. I just want to make sure my quality is at least as good if not better than the 1st. So my next question is I noticed Glediator 2.0.3 (my current version running on OSX) is currently running the animations at about 24-25fps. What I wanted to know was if there is any way to change that? (Ideally I'd love to run at 60fps) However I don't see anyway to adjust that in the software. I've read you can run Jinx with Glediator only on Windows, however. I'm not familiar with Jinx, except it looks cool and appears to offer more options than Glediator alone. From your personal opinion, would you recommend I switch to a windows based laptop to run both of my teensy3.2/OCTOSHIELD displays? Would that be the easiest way to adjust the FPS? Are you familiar with how I might achieve that? Thank you again for your time and vast knowledge and wisdom.
 
I cannot say much on PC driven effects since all mine are light shows generated by the Teensy itself. Most likely the frame rate is driven by the array size. What happens to the frame rate if you only drive one quarter of the frame size?

Apart from the PC side limitations you also have bandwidth limits on USB and the update rate on the strips themselves, as per the OctoWS board page so you may need to do some math on how how much headroom each stage has.
 
The Glediator example code is running a 1-byte-at-a-time read. It might be speed things up to change that initial "get it working" sketch to use a buffer? This section, where serialGlediator() is a serial read:
Code:
for (i=0; i < NUM_LEDS; i++) {
b = serialGlediator();
r = serialGlediator();
g = serialGlediator();

leds.setPixel(i, Color(r,g,b));
}
 
So how would I use a buffer? Or how would I need to alter the code? Thanks again, I'm still relatively novice at this stuff..
 
Nope but but perhaps you may want to consider other ways of doing it. Serial is great but maybe not the best for what your trying to do. You will find some limitations especially if you want to run high FPS. Not impossible but you may be treading newer ground if your unable to tweak your existing code. If you willing to go further down the rabbit hole and use methods proven I can provide you with the Red Pill. Jokes aside you can see a great example here using sACN over ethernet. You will need the addition of a wiznet W5200 or W5500 module like this https://www.digikey.com/products/en?keywords=r 1278-1043-ND .


In the Lighting industry old school DMX512 was the best way to drive lights. Now that we have pixels and tons more channels than the 512 we have to consider better and faster methods. In Glediator and other software like Jinx, Xlights, Madrix etc. you will notice that their preferred method is artnet or sACN. Luckily you can run both of these on a teensy 3.2 with up to 5440 pixels or pretty much your two displays at pretty decent refresh rates (40 FPS).

Back to your original question. I know of a couple ways to do it but requires more hardware and probably getting too far down the rabbit hole. But this is where your creativity and manipulating code needs to kick in. Look at your array. the pixel data gets stored in RGB values. pay attention to the variable i. that sets the pixel. so if pixel 0 is your very first pixel then what is your last pixel? With that last pixel if you add a duplicate EXACT setup on ports 5-8 then you need to find out what pixel number starts on 5. With that in mind throw that into a second set_pixel statment with i +???? to satisfy the second panel. Pretty much you are duplicating your values into the array with a fixed pixel offset to "i".
 
Ok, so after reading your last post several times, i think I understood about 50%. LOL.

So basically, this is where I'm at currently. (just to clarify so everyone is on same page) I have 1 finished display. It is about 3' tall by 6' wide, has 24 rows of 108 leds per row. (WS2812b 10mm RGB ip65). Connected to a Teensy 3.2/OCTOSHIELD using cat6 cables, running data every 6 rows, so I'm using just 1/2 RJ45 connections on OCTOSHIELD, using Glediator via OSX. I have all the materials for an exact duplicate, I first considered using the 2nd RJ45 connection on my OCTOSHIELD so both displays would run off of 1 Teensy/OCTO, however, I decided to get a 2nd Teensy3.2/OCTOSHIELD, along with a multi TT usb 2.0 hub to run both displays without using all my RAM and or pushing the teensy too hard. So, since my 2nd display is going to hang behind me or wall mount behind (1st display wraps the DJ booth/turntables), with dimensions of 3' tall by 5' wide, I likely will use 24 rows of slightly fewer than the 1st display of 108/row, so the code works for both. Figure I will wire the data the same, every 6 rows to utilize all 4 twisted pairs of a cat6 cable and 1/2 RJ45 plugs on my 2nd Teensy/OCTO.

So... If I obtain a wiznet w5500 (for example), how difficult would it be to incorporate it into my planned setup with 2 displays? Where does it fit into the schematic? And how does it alter my current workflow or the ease of using/setting up? Based on the video you linked I am sold, I want my displays to look that crisp and refresh as quickly..

Thanks for all the excellent info.
 
Ok, so after reading your last post several times, i think I understood about 50%. LOL.

So basically, this is where I'm at currently. (just to clarify so everyone is on same page) I have 1 finished display. It is about 3' tall by 6' wide, has 24 rows of 108 leds per row. (WS2812b 10mm RGB ip65). Connected to a Teensy 3.2/OCTOSHIELD using cat6 cables, running data every 6 rows, so I'm using just 1/2 RJ45 connections on OCTOSHIELD, using Glediator via OSX. I have all the materials for an exact duplicate, I first considered using the 2nd RJ45 connection on my OCTOSHIELD so both displays would run off of 1 Teensy/OCTO, however, I decided to get a 2nd Teensy3.2/OCTOSHIELD, along with a multi TT usb 2.0 hub to run both displays without using all my RAM and or pushing the teensy too hard. So, since my 2nd display is going to hang behind me or wall mount behind (1st display wraps the DJ booth/turntables), with dimensions of 3' tall by 5' wide, I likely will use 24 rows of slightly fewer than the 1st display of 108/row, so the code works for both. Figure I will wire the data the same, every 6 rows to utilize all 4 twisted pairs of a cat6 cable and 1/2 RJ45 plugs on my 2nd Teensy/OCTO.

So... If I obtain a wiznet w5500 (for example), how difficult would it be to incorporate it into my planned setup with 2 displays? Where does it fit into the schematic? And how does it alter my current workflow or the ease of using/setting up? Based on the video you linked I am sold, I want my displays to look that crisp and refresh as quickly..

Thanks for all the excellent info.

If going the W5500 route with two teensy (even serial route) then you will need to reconsider what your setting up in software. The software will talk to both Teensies but it wants to treat them as unique panels. There is not an easy way to duplicate displays. If you run two instances of Glediator or Jinx then you could run two displays independantly and throw the same content to essentially drive the panels with simular content and simular times (tacky perhaps). Or you can treat both displays as one with half on one side and the other half on the other side.

The code trick however only really works for one teensy setup with one port going to one display (1-4) and the other port going to the other display (5-8)

The code trick would be to something simular to this:

Code:
const int ledsPerStrip = 648;
const int NUM_LEDS = 5184;

DMAMEM int displayMemory[ledsPerStrip*6];
int drawingMemory[ledsPerStrip*6];

const int config = WS2811_GRB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);

void setup() {
leds.begin();
leds.show();
}

int serialGlediator() {
while (!Serial.available()) {}
return Serial.read();
}

void loop() {
byte r,g,b;
int i;
int j;



while (serialGlediator() != 1) {}

for (i=0; i < NUM_LEDS; i++) {
b = serialGlediator();
r = serialGlediator();
g = serialGlediator();

j=2592;  // remember that in the array pixel count starts at 0 so your last pixel in i would be 2591

j = i+j;
leds.setPixel(i, Color(r,g,b));
leds.setPixel(j, Color(r,g,b)); //if i is 0 then pixel i + 2592 = 2592(first pixel on second display)  if i is 2591 then the last pixel would be 5183
}
leds.show();


Right now with your serial setup this should work..... and if so adding a w5500 will make this shine even more.
 
Got it! So, I'm not opposed to changing my plans/configurations, however it seems as though what you are suggesting would be to run both displays off of 1 teensy/OCTO, but to add the w5500 to my teensy/octoshield, is this correct? I just did my measurements and the only difference will be each row will only have 90leds instead of the 108 on my original display. Will this cause me any problems?
 
Also, my only major concern with running both panels off 1 teensy is the cat6 cable from the 2nd display will likely be about 10-15' from teensy to display, and I heard that can present issues... Thoughts?
 
Also, my only major concern with running both panels off 1 teensy is the cat6 cable from the 2nd display will likely be about 10-15' from teensy to display, and I heard that can present issues... Thoughts?

Should not be an issue.
 
Got it! So, I'm not opposed to changing my plans/configurations, however it seems as though what you are suggesting would be to run both displays off of 1 teensy/OCTO, but to add the w5500 to my teensy/octoshield, is this correct? I just did my measurements and the only difference will be each row will only have 90leds instead of the 108 on my original display. Will this cause me any problems?

This would be an issue. They have to be exact. If not then you will need to run multiple instances of glediator to accommodate the different setups. And run multiple teensy to make it easy
 
Thank you again for the info!

What are your thoughts on something like this?

T8000A PIXEL LIGHT LED CONTROLLER: T8000A Pixel Light LED Controller T8000 SD Card Control Addressable 8192 pixels.
T-8000A System features:

1.32-65536 Gray,Support software Gamma correction.

2.Support point, line, surface, rules and special-shaped handle.

3.Eight-port output,can support 1024 pixels.

4. Multiple controllers can be cascaded together and work synchronous.The distance

between every two controller can achieve 200m. Display content stored in SD card.

5.T-8000A store a maximum of 16 programs,copy multiple files to the SD card in order.

6.T-8000A with display screen, and encryption function.

Parameters

Physical Parameters:

Working temperature :-30-85degree celsius

Working voltage:DC5V

Working power:3W

Weight: 0.8KG

Signal port:3pin connect port

Memory Card:

Type:SD card

Capacity:128MB-2GB

Store file:*.led

Power Adapter:

Input voltage:100~240V

Output voltage:DC5V


Here is a youtube video explaining how to use with freeware, LEDEdit 2013, https://www.youtube.com/watch?v=27Vy55pLuGY

Or, https://www.youtube.com/watch?v=uN418SCh6OM
 
Last edited:
Thank you again for the info!

What are your thoughts on something like this?

T8000A PIXEL LIGHT LED CONTROLLER: T8000A Pixel Light LED Controller T8000 SD Card Control Addressable 8192 pixels.
T-8000A System features:

1.32-65536 Gray,Support software Gamma correction.

2.Support point, line, surface, rules and special-shaped handle.

3.Eight-port output,can support 1024 pixels.

4. Multiple controllers can be cascaded together and work synchronous.The distance

between every two controller can achieve 200m. Display content stored in SD card.

5.T-8000A store a maximum of 16 programs,copy multiple files to the SD card in order.

6.T-8000A with display screen, and encryption function.

Parameters

Physical Parameters:

Working temperature :-30-85degree celsius

Working voltage:DC5V

Working power:3W

Weight: 0.8KG

Signal port:3pin connect port

Memory Card:

Type:SD card

Capacity:128MB-2GB

Store file:*.led

Power Adapter:

Input voltage:100~240V

Output voltage:DC5V


Here is a youtube video explaining how to use with freeware, LEDEdit 2013, https://www.youtube.com/watch?v=27Vy55pLuGY

Or, https://www.youtube.com/watch?v=uN418SCh6OM

When you get time, if you could check out the info in my prev comment and give me your honest opinion I would appreciate it
 
About 4 years ago I tinkered with lededit and it was ok but I did not like the fact that I had to upload changes to an sd card each time i wanted to update the content. Instead I wanted live control. I don’t recall if that devices supports Ethernet e1.31 or not. If your looking into a more finished controller look into the falcon f16 or f48.
 
About 4 years ago I tinkered with lededit and it was ok but I did not like the fact that I had to upload changes to an sd card each time i wanted to update the content. Instead I wanted live control. I don’t recall if that devices supports Ethernet e1.31 or not. If your looking into a more finished controller look into the falcon f16 or f48.

Hey, so I've been reasearching and trying to figure out the best way to go before starting, but I've decided to take the materials and add to my original screen to double the pixels and resolution using the 2nd rj45 of my OCTO. The only reason I even looked at those chinese controllers is simply because it appears they are achieving a higher framerate than mine as currently configured. Like some of my GIFS dont look right or are missing background color of the frames, I'm assuming due to the framerate being too low. So my new question is by doubling my pixels this should help the resolution/definition of the graphics? and also, what would be my options to boost my framerate with the least amount of modification?
 
Also, I'm not sure but I believe the new version of LEDedit has live control, its the main contoller/software used by the DIY/led screen salespeople at Electric Junkies.

https://youtu.be/e-rdgB_19Fg

Anyhow, I checked out the F16v3 and F48 and those are some serious controllers. Not sure I'm ready yet but I imagine when I scale up I will likely use one of those... I'm wondering if I can possibly add in a wiz550 to my current setup to improve framerate?
 
Status
Not open for further replies.
Back
Top