A simple example to drive an APA-102 LED strip.

Dependencies:   mbed APA102b Ping SLCD

Revision:
1:2d02f55d47c5
Parent:
0:afc41b8e2360
Child:
2:5a9388a7ac62
--- a/main.cpp	Thu Mar 05 19:02:07 2015 +0000
+++ b/main.cpp	Sat Mar 14 20:45:48 2015 +0000
@@ -1,6 +1,11 @@
 #include "mbed.h"
+#include "Ping.h"
+#include "APA102a.h"
 
-SPI spi(PTA16, PTA17, PTA15); // mosi, miso, sclk
+//SPI spi(PTA16, PTA17, PTA15); // mosi, miso, sclk
+Ping ping(PTA13); 
+
+APA102a LEDs(PTA16, PTA17, PTA15,1000000); // mosi, miso, sclk, rate
 
 // This function was downloaded from:
 // http://blog.saikoled.com/post/43693602826/why-every-led-light-should-be-using-hsi 
@@ -58,32 +63,36 @@
     
     // Setup the spi for 8 bit data, high steady state clock,
     // second edge capture, with a 1MHz clock rate
-    spi.format(8,3);
-    spi.frequency(1000000);
+
     int rgb[3]; 
-    const int N=288;  // Number of APA-102 Elements
+    unsigned char r,g,b;
+    const int N=67;  // Number of APA-102 Elements +1
+    int range;
+    unsigned int Pixel;
+    unsigned int Pixels[N];
     
     int colors=0x000000;
+    LEDs.SetBuffer(Pixels,1,N, N,0, false,false); 
+    
     while (true) {
-        spi.write(0X00);  // Start
-        spi.write(0X00);
-        spi.write(0X00);
-        spi.write(0X00);
+        ping.Send();    
+        wait_ms(50);  // update rate.
+        range = ping.Read_cm();
         
         
         for(int i=0;i<N;i++)
-        {   spi.write(0XEF);  // 0xE0 + 1F, Frame + max brightness
+        {   
             hsi2rgb(1.0*(i+colors), 0.8, 0.8,rgb);
-            spi.write(0XFF&rgb[0]);  // 0xE0 + 1F, Frame + max brightness
-            spi.write(0XFF&rgb[1]);  // 0xE0 + 1F, Frame + max brightness
-            spi.write(0XFF&rgb[2]);  // 0xE0 + 1F, Frame + max brightness
+            r = rgb[0];
+            g = rgb[1];
+            b = rgb[2];
             
+            Pixel=LEDs.IRGB(7,r,g,b);
+            Pixels[i]=Pixel;
+           
             } 
         
-        spi.write(0XFF); // Stop
-        spi.write(0XFF);
-        spi.write(0XFF);
-        spi.write(0XFF);  
-        colors++;
+        LEDs.Repaint();
+        colors+=range/10;
     }
 }
\ No newline at end of file