Code to control an individually addressable RGB strip.

Dependencies:   mbed WS2812 PixelArray

Files at this revision

API Documentation at this revision

Comitter:
ahdyer
Date:
Sat Dec 14 16:57:40 2019 +0000
Commit message:
Code to control individually addressable RGB strips

Changed in this revision

PixelArray.lib Show annotated file Show diff for this revision Revisions of this file
WS2812.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r b47973ee96a9 PixelArray.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PixelArray.lib	Sat Dec 14 16:57:40 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/chris/code/PixelArray/#b45a70faaa83
diff -r 000000000000 -r b47973ee96a9 WS2812.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WS2812.lib	Sat Dec 14 16:57:40 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/bridadan/code/WS2812/#6e647820f587
diff -r 000000000000 -r b47973ee96a9 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Dec 14 16:57:40 2019 +0000
@@ -0,0 +1,47 @@
+#include "mbed.h"
+#include "WS2812.h"
+#include "PixelArray.h"
+ 
+#define WS2812_BUF 30
+#define NUM_COLORS 6
+#define NUM_LEDS_PER_COLOR 1
+ 
+PixelArray px(WS2812_BUF);
+ 
+// See the program page for information on the timing numbers
+// The given numbers are for the K64F
+WS2812 ws(D9, WS2812_BUF, 3, 11, 10, 11);
+ 
+int main()
+{
+ 
+    ws.useII(WS2812::PER_PIXEL); // use per-pixel intensity scaling
+    
+    // set up the colours we want to draw with
+    int colorbuf[NUM_COLORS] = {0xfffff0,0xffff00,0xfff000,0xff0000,0xf00000,0xffffff};
+ 
+    // for each of the colours (j) write out 10 of them
+    // the pixels are written at the colour*10, plus the colour position
+    // all modulus 60 so it wraps around
+    for (int i = 0; i < WS2812_BUF; i++) {
+        px.Set(i, colorbuf[(i / NUM_LEDS_PER_COLOR) % NUM_COLORS]);
+    }
+ 
+    // now all the colours are computed, add a fade effect using intensity scaling
+    // compute and write the II value for each pixel
+    for (int j=0; j<WS2812_BUF; j++) {
+        // px.SetI(pixel position, II value)
+        px.SetI(j%WS2812_BUF, 0x0f);
+    }
+ 
+ 
+    // Now the buffer is written, rotate it
+    // by writing it out with an increasing offset
+    while (1) {
+        for (int z=WS2812_BUF; z >= 0 ; z--) {
+            ws.write_offsets(px.getBuf(),z,z,z);
+            wait(0.075);
+        }
+    }
+ 
+}
\ No newline at end of file
diff -r 000000000000 -r b47973ee96a9 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Dec 14 16:57:40 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file