A simple example to drive an APA-102 LED strip.
Dependencies: mbed APA102b Ping SLCD
Diff: main.cpp
- 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