Go Down

Topic: Driving WS2801 LED strips with the Due (Read 798 times) previous topic - next topic


Jul 28, 2013, 09:40 pm Last Edit: Jul 29, 2013, 02:07 am by Karnaugh Reason: 1
Hi everyone!

I was brought on late to a project that needs to drive several WS2801 addressable RGB LED strips using an Arduino Due. I'm new to using Arduino but not new to programming. At first, I tried the Adafruit libraries, but I found they didn't compile with the Due selected as the target.

I eventually found these libraries which seem to update the WS2801 libraries for use with Due by borrowing from the up-to-date LPD8806 examples. The documentation on WS2801MEO suggested that I use the strandtest example, and since there was no such example on the WS2801MEO page I assume they mean to take the example of the same name from the LPD8806 examples.

I had to modify the example slightly to get it to compile: the constructor for the strip object only takes one argument in the WS2801MEO libraries (number of LEDs), while the LPD examples have three arguments (number of LEDs, datapin, and clockpin). The WS libraries omit the arguments because it just uses the SPI pins. This is where I ran into problems. For one thing, after loading the program onto the Due (and it has been tested with other programs), I wasn't able to see any activity on the SPI pins, and the other problem is that we will eventually need to use the digital outputs anyways, since we need to control multiple strips simultaneously. I'm not sure how hard it would be to modify the WS libraries to work with the digital outputs, but it didn't look straightforward.

So my question is, is there an easy way to get WS2801 working on the Due, or would it be easier to switch to LPD8806?

Thank you,

Go Up