Please help me out of this. I want to drive 30 led strips of ws2811 chipset having 100 pixels per strip. I want to use arduino mega as master and arduino uno for slaves(30). Power supply is not the issue. I want dmx kind of effects on all of this strips like running strips, color chasing strips. The master should communicate to the slaves as which strip has to do what or else all strips at once .
Please guide me which dmx library has this option and if somebody have done it please tell me the process.
You should use Teensy 3.2 or 3.6 and the OctoWS2811 board to drive 3000 LEDs. A single board can easily drive all 3000 LEDs using its 8 parallel outputs. You can use the OctoWS2811 library alone, or you can use FastLED with the OctoWS2811 library as its driver.
Those 8 bit AVR boards are very difficult to use for such large projects. The big problem is WS2811 output requires tight timing with interrupts disabled. While the interrupt are off, incoming serial data is lost. So even if you use many of those boards, communication between them is extremely difficult and unreliable. They are also so slow that DMX data rate (250,000 baud) is too fast to reliably receive if you do anything else.
The 32 bit Teensy board is much, much faster. It also is able to send 8 parallel outputs using DMA, which means interrupts are not disabled while driving the LEDs. All that speed can be used for DMX data reception or generating patterns.
I know Uno and Mega are probably very familiar, but they are so slow and lack DMA that you really should not try to use them for such a large LED project. A single 32 bit board can easily do this 3000 LED job.
but what about the signal. the output wire has to go long about 50 metres
i want every strip to have slave controller and this controller should be operated through master controller like arduino mega
thank you for reply sir. but what about the distance. each strip is located one after the other for a distance of about 2 metres. so i have to cover 30*2=60 metres. will the teensy board will take the output to long distance.
or else is there any way to solve distance problem.
Unfortunate that you didn’t mention the distance in your original question. Sorry, I don’t have time right now for another lengthy reply. Maybe later…
The question I have is any pixel going to be separated by a long distance from each other or from the controller?
Re reading this you plan on having 100 pixels then 2meter space then another 100 pixels then another 2meter space with 28 more segments separated with 2meter space? Or is each 100 pixels 2 meters in length and you plan to have all of the placed in series?
all the connections should come in smps side.
missing/deleted image from Google+
from the controller. please look my diagram
This setup can be challenging. I agree that your UNO’s can drive each 100 pixels strand (with FastLED library) but where I get stuck and disagree is having them be all controlled by a mega. Mega in my opinion is not well designed for this type of role. Your challenge is finding ways to control each UNO. I suppose you could use UNO with ethernet and program them with FastLED + Ethernet + artnet or sACN e1.31 libraries. Then use a different method to control them such as raspberry pi or PC.
If you need a MCU based controller and do not want to have a computer based control then I suggest carefully looking at Pauls Teensy 3.2 with octows2811 library. To overcome distance issues I would zigzag your LED’s injecting your power in proper locations and using rs485 extenders to push signals if needed. you could group 4 rows of pixels in zigzag method and then use RS485 extenders to connect each group of 4 to the teensy octows2811 defined pins. This way one teensy is controlling the entire pixel array and you can code up in FastLED to make patterns etc.
Agreed, you’re going to need a controller every 8 to 10 meters. Sending the TTL level signals more than a 4 to 5 meters is quite risky, even if you use CAT5 cable. One controller every 8 meters could at least drive the LEDs within 4 meters to its left and right.
RS485 (used by DMX) is probably your easiest path. Ethernet can also work.
Uno is a terrible choice for driving the WS2812 and trying to receive communication. All libraries that control WS2812 will block interrupts on Uno while the LEDs are being driven. If you try to send data during those moments, it will probably be lost. Ethernet might be able to work if you send only 1 UDP packet to each IP number, since the ethernet shield can hold the packet in its own memory until after the LEDs finish. RS485 almost certainly will lose any incoming data.
Mega is also probably not up to this task, only because it has only 8K of RAM and it’s so slow.
Teensy 3.2 can do this job pretty easily, both on the LED driving (using OctoWS2811) while receiving incoming data, and for transmitting the data. Or maybe use Teensy 3.6 (256K RAM) for the transmitting if you want to be able to scale up to much larger.
What is length of single strip? 100pixel per strip Ok, but if it is 60led/m then it is 1.66 m or 30 led/m then it is 3.33 m . both distance are safe to drive with 8 bit boards. but again you have to implement existing libraries for your purposes. I agree with chris that Mega as master is not a good idea or it will be too tricky to implement. better to go as Paul suggested go for teensy. 4 teensy board can do it if am not wrong.
I would strongly advise against 8 bit AVR for even a short strip. AVR can drive 100 LEDs easily. But it can NOT receive incoming serial or I2C communication during that time when the 100 LEDs are updating.
100 LEDs takes approx 3ms to update. So if you are sending fast serial communication, you will need some sort of scheme to allow the transmitting board to know when the receivers are “blind”.
If you use OctoWS2811 or FastLED with OctoWS2811 as its driver, you are never blind to incoming communication. OctoWS2811 does not keep interrupts disabled, so you can hear new incoming data.
I have driven 1800 ws2812b leds with arduino mega in zig zag pattern but then it was the only task to do for Mega nothing else. But in your case you need communication too, so agree with Paul , 8 bit boards are not the way to go.
ok sir. agreed with you all i will go with teensy board but at the same time i want to use only single pin output to handle my leds that will be connected in series.
Eight outputs will take lots of wiring. if i take 1 pin output from teensy then it will first connected to 1 strip and at the end of the strip that data wire to be connected in series to 2nd strip like zig zag.
This zig zag wiring is not the best way. It might work. But why? You get 8 parallel outputs per board.
i wanna know if i had to run all the strips(30) in series using 1 pin output. the teensy will going to support or not. i dont want 8 outputs
No. You have much larger non-technical problems than any board can solve.