Example for WS2812 Library

Dependencies:   PixelArray WS2812 mbed

Dependents:   Button_Neopixel

This is a demo for the WS2812 LED driver library.

The the timings of the bit banging operation are very sensitive. Depending on the platform, you will need to change the timing values in the WS2812 constructor. The default values in this demo are for the K64F. Here are a few other values for other platforms:

K64F, KL46Z: 0, 5, 5, 0

LPC1768: 5, 10, 10, 15

NUCLEO F411RE: 7, 15, 10, 15

UPDATE 11-29-2016

Thanks to the user Proff for the new measurements!

LPC1768: 3, 11, 10, 11

NUCLEO_F401RE: 3, 12, 9, 12

UPDATE 3-14-2017

Thanks to the user SashaK for the new measurements

NUCELO_F746ZG: 32, 105, 70, 123

If you are curious how to determine these values, see the WS2812 library page below.

Import libraryWS2812

Library for the WS2812 LED Driver. Uses bit banging and nops for precise timing. Number of nops executed are configurable at run time.

.

Revision:
1:e04a0ecefa29
Parent:
0:12cb6f0c2788
Child:
2:cb82a3dc4031
--- a/main.cpp	Thu Feb 12 19:20:00 2015 +0000
+++ b/main.cpp	Thu Feb 12 20:20:54 2015 +0000
@@ -4,15 +4,18 @@
 
 #define WS2812_BUF 60
 
-WS2812 ws(D9,WS2812_BUF);
 PixelArray px(WS2812_BUF);
 
+// See the program page for information on the timing numbers (eg: 0, 5, 5, 0)
+// The given numbers are for the K64F
+WS2812 ws(D9,WS2812_BUF, 0, 5, 5, 0);
+
 DigitalOut led(LED1);
 
 int main()
 {
 
-    ws.useII(2); // use per-pixel intensity scaling
+    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};