A simple test of the WS2812 library on K64F.

Dependencies:   PixelArray WS2812 mbed

Fork of WS2812_Example by Brian Daniels

Files at this revision

API Documentation at this revision

Comitter:
bridadan
Date:
Thu Feb 12 21:55:24 2015 +0000
Parent:
1:e04a0ecefa29
Child:
3:a0545942de4f
Commit message:
K64F timings in demo

Changed in this revision

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
--- a/WS2812.lib	Thu Feb 12 20:20:54 2015 +0000
+++ b/WS2812.lib	Thu Feb 12 21:55:24 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/users/bridadan/code/WS2812/#aadbf08c62a2
+http://developer.mbed.org/users/bridadan/code/WS2812/#6e647820f587
--- a/main.cpp	Thu Feb 12 20:20:54 2015 +0000
+++ b/main.cpp	Thu Feb 12 21:55:24 2015 +0000
@@ -2,15 +2,15 @@
 #include "WS2812.h"
 #include "PixelArray.h"
 
-#define WS2812_BUF 60
+#define WS2812_BUF 150
+#define NUM_COLORS 6
+#define NUM_LEDS_PER_COLOR 10
 
 PixelArray px(WS2812_BUF);
 
-// See the program page for information on the timing numbers (eg: 0, 5, 5, 0)
+// See the program page for information on the timing numbers
 // The given numbers are for the K64F
-WS2812 ws(D9,WS2812_BUF, 0, 5, 5, 0);
-
-DigitalOut led(LED1);
+WS2812 ws(D9, WS2812_BUF, 0, 5, 5, 0);
 
 int main()
 {
@@ -18,29 +18,27 @@
     ws.useII(WS2812::PER_PIXEL); // use per-pixel intensity scaling
     
     // set up the colours we want to draw with
-    int colorbuf[6] = {0x2f0000,0x2f2f00,0x002f00,0x002f2f,0x00002f,0x2f002f};
+    int colorbuf[NUM_COLORS] = {0x2f0000,0x2f2f00,0x002f00,0x002f2f,0x00002f,0x2f002f};
 
     // 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<6; i++) {
-        for (int j=0; j<10; j++) {
-            px.Set(((i*10)+j)%60,colorbuf[i]);
-        }
+    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<60; j++) {
+    for (int j=0; j<WS2812_BUF; j++) {
         // px.SetI(pixel position, II value)
-        px.SetI(j%60, 0xf+(0xf*(j%10)));
+        px.SetI(j%WS2812_BUF, 0xf+(0xf*(j%NUM_LEDS_PER_COLOR)));
     }
 
 
     // Now the buffer is written, rotate it
     // by writing it out with an increasing offset
     while (1) {
-        for (int z=59; z >= 0 ; z--) {
+        for (int z=WS2812_BUF; z >= 0 ; z--) {
             ws.write_offsets(px.getBuf(),z,z,z);
             wait(0.075);
         }