WS2812B

Dependents:   high speed light Bracelet

Fork of PololuLedStrip by David Grayson

Revision:
6:9d0530b7dae2
Parent:
4:d3b60bd43811
Child:
7:9a088f042ee0
diff -r 690fdfb595de -r 9d0530b7dae2 PololuLedStrip.cpp
--- a/PololuLedStrip.cpp	Fri Mar 01 00:05:26 2013 +0000
+++ b/PololuLedStrip.cpp	Fri Mar 01 00:31:24 2013 +0000
@@ -5,6 +5,8 @@
 // TODO: read clock frequency from SystemCoreClock and use that to make this work on different boards.
 // calculate the three delays needed and pass them to the assembly.  The assembly can implement them with computed jumps.
 
+uint8_t led_strip_write_delays[3];
+
 PololuLedStrip::PololuLedStrip(PinName pinName)
 {
     gpio_init(&gpio, pinName, PIN_OUTPUT);
@@ -14,6 +16,12 @@
 {
     __disable_irq();   // Disable interrupts temporarily because we don't want our pulse timing to be messed up.
     
+    int f = SystemCoreClock/1000000;
+    led_strip_write_delays[0] = 700*f/1000 - 10;
+    led_strip_write_delays[1] = 600*f/1000 - 10;
+    led_strip_write_delays[2] = 1200*f/1000 - 10;
+    led_strip_write_delays[0] = 59;
+    
     while(count--)
     {
         led_strip_write_color(colors++, gpio.reg_set, gpio.reg_clr, gpio.mask);