Author Options:

How do I connect an RGB LED Strip to an Arduino DMX controller? Answered

I've been working on a project for a few months now and it's getting to the point where people are suggesting DMX as a method to control our RGB LED Strips.

The LED Strip I have is 60ppm (LEDs per meter), and each LED is individually addressable. It runs on 5VDC.

In the attached images you can see the connection options for this LED Strip. To control color to each of the 60 RGB LEDs, there is only a single data line. Additionally there are two more connections for 5VDC and GND.

I've gotten basic animations and interactions programmed with one LED strip and an Arduino using the Fast LED Library. Moving forward though, I want to have more complex animations with many more LED Strips in different locations all being controlled by a master device. When I tell this to people, they recommend I use DMX (you can see some discussion of this from my partner on the vvvv forum - along with videos and other issues we've been having).

Since then I've been looking into DMX a lot and trying to figure out how to make it work for what we want. For example: At most, we would want to be able to have 30 identical LED strips to the one I have now, all one meter in length, all with 60 RGB LEDs. We want to be able to control all of these Strips & LEDs individually. I'm fairly certain since there's only one data in line, each RGB LED only requires one channel from the DMX control. To further this, I think that means I need to be able to control 5 DMX Universes, in order to control the amount of LEDs I'm trying for.

So here is my problem. In most/all of the tutorials on DMX RGB LED Strips that I've seen, they show you how to hook LED Strips up with three separate r/g/b lines. There was actually a super useful instructable that was just published that shows the same. I was also looking at Arduino's DMX Shield options and it seems the main one they recommend has three lines out that would connect to the typical 3 or 5 pin DMX connector. Since I'm not using the DMX connectors, I'm not sure if any of these shields are a viable option for me.

With all of this in mind, I would like to know what the proper method is for hooking up my specific RGB LED strip to a DMX controller (perferrably an Arduino one - specifically the Arduino Shield they show off of their page). Additionally, would that Arduino shield have a full DMX universe that it could control, or how would I get that?

Finally, if these questions are not useful...is there a better method of doing this?

Thank you!


Did you ever complete the project? This is exactly what I am trying to do so I am very interested.

Yeah, let me talk to my partner about posting our project...but for the LED strips here was are fix:

5V NeoPixel RGB LED strips

6V DC 4.5Ah batterys (one per strip pair)

Positive of each battery was put to each LED strip.

Ground of each strip was put to each LED strip, and a common ground with the arduino.

Then each of the digital outs of the arduino controlled each of the strips that we wanted. It only gives you 13 outs, but that was all we needed for this project.

This is exciting and thanks for the quick reply. My biggest concern is having to rewrite in the Arduino all the effects that the DMX already has like chasing lights. How are you translating DMX commands to the Arduino? I understand if you don't have time to teach but I appreciate anything you can give.

My partner and I used both the FastLED and Adafruit libraries. Both worked for us, because they both support NeoPixel LEDs. I don't remember which one we ended up using for the project, as it was too long ago. You should check out what chip is controlling your LED strips, and see if either of these libraries will work for you. Chances are, at a minimum, the FastLED library should work fine (as it's compatible with more types of strips).

If they both work, see which works better. They both have example code, and both allow you to program animations into the LED strip with as little pain as possible. Best of luck!

Yeah, no worries.

We used both the FastLED and Adafruits libraries at different times. I don't remember which we went with in the end, but I know they both worked just fine. Each has different ways of controlling the different LED commands, and both have example code. So try them both out and see which one works best for you.

I don't see why you can't program multiple universes into one receiver. What happens once you receive the data is entirely up to you. All you need to do is make the controller respond to different consecutive addresses. This device is completely alien compared to normal DMX receivers, so what happens between the interface and the LEDs is entirely up to you. Presumably you want to send RGB data to a specific "device" which is an individual LED ?

the problem is that DMX is old and runs at about 10Khz there is no way it is fast enough to turn the WS2812B neopixel on. the ws2812b has an internal clock that you must precisely match. that is why you can get away with a single line. both are serial systems but use different transition protacal, so a dmx controller to translate and a arduino to control the strips are a must! so $3.50 arduino cheep 5 Chanel dmx controler and ADAFRUIT.COM neopixel library.

ws2812b timing.JPG

As I said, "

This device is completely alien compared to normal DMX receivers, so
what happens between the interface and the LEDs is entirely up to you"

The answer is to use ARTNet on the Pi, the interface is then ethernet speeds, but the paradigm is still "DMX". I'm in the middle of building a 1000 LED system with it.

you are doing it the hard way. use a 1- $3.50 arduino nano to control each strip. go to ADAFRUIT.COM and download the neopixel library.. " solder the data in wire to pin 2 as defineded in program. placing a 220 ohm resistor in line with the data in. Solder a large capacitor between power and ground "400 - 1000 micro PH". set pixel count to 60 in program. upload the strand test to the nano. than when that is running, unplug and connect a dmx controller with 5 channels. solder 4 Chanel wires to 4 of the PWM inputs. modify the nano's programming to read those (see diadram) 3 pins as RGB and 1 to control the speed of light show. Chanel 5 will be sued if you decide to use the other neopixel program "button cycler" solder to pin 2 because it reads high or low and has a built in pull up resistor. now set your DMX to the proper address for your system and repeat for the rest.

instructable led strip.jpg