Skip to content

Commit 922bd24

Browse files
committed
Add a README.
1 parent d4614e9 commit 922bd24

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
WS2811 multiple strips library
2+
==============================
3+
4+
The WS2811 RGB LED strips have extremely many potential uses. In some
5+
of them, like POV displays, very high refresh rates are needed. If all
6+
your LEDs are connected serially, the time required to update all of the
7+
pixel values or any subset of them is 30us times the total number of
8+
LEDs connected -- even if you don't need to update all of their colours.
9+
At, say, 100 LEDs that's already 3ms per refresh, which limits your
10+
total frame rate to 300 Hz and on an Arduino if you add all other
11+
overheads you may end up with even lower rates.
12+
13+
To improve on this a little, you can connect various strips in parallel
14+
instead of serially, i.e. with their data lines connected to different
15+
Atmega GPIO pins. The routines in this version of WS2811.h allow
16+
outputting the pixel data to up to 4 strips at the same time, if
17+
connected to GPIOs on the same Atmega port (e.g. PC0, PC1) of 2 strips
18+
if connected to different ports (e.g. PC2 and PB4).
19+
20+
For example 4 strips of 25 LEDs connected to PC0 - PC3 (A0 to A3 in
21+
Arduino naming) can be updated in about 750us. Not an order of
22+
magnitude jump but enough to make some projects practical.
23+
24+
Further improvement
25+
===================
26+
27+
With some further assumptions you can probably drive up to at least 16
28+
different LED strips from an Arduino, this library doesn't have any
29+
support for that. It would require some preprocessing of the pixel
30+
data before outputting it to the AVR digital pins, so if you're
31+
animating something that may not be viable, but if you've got static
32+
data it might work. This also requires a good amount of memory, so
33+
your strips probably can't be too long if you're on an Atmega328P.
34+
Someone has already implemented that and explains the details here
35+
with the 8 LED strips case:
36+
http://rurandom.org/justintime/index.php?title=Driving_the_WS2811_at_800_kHz_with_an_8_MHz_AVR
37+
38+
Installation
39+
============
40+
41+
Like with every Arduino library, put the files in a "libraries"
42+
directory in one of the various standard paths, and restart the
43+
Arduino IDE. The name of the subdirectory inside "libraries" needs to
44+
be WS2811. For example, clone this repository, cd inside, and do
45+
ln -s `pwd` ~/Arduino/libraries/WS2811

0 commit comments

Comments
 (0)