Routines to drive a chain of APA102 Leds.
Fork of APA102a by
Diff: APA102a.h
- Revision:
- 3:bf8c63d10824
- Child:
- 4:2afea45fce8f
diff -r b8dc9a84801c -r bf8c63d10824 APA102a.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/APA102a.h Sat Mar 14 18:17:53 2015 +0000 @@ -0,0 +1,64 @@ +#ifndef MBED_APA102a_H + +#define MBED_APA102a_H + +#include "mbed.h" + + + +/** Create an APA102 Object + */ + class APA102{ + public: +/** Create an APA102 object connected to the specified mosi,miso,sclk pins + * + * @param mosi : SPI Master Out Slave In pin + * @param miso : SPI Master In Slave Out pin (ignored) + * @param sclk : SPI Clock + * @param rate : SPI Rate + */ + APA102(PinName mosi,PinName miso,PinName sclk,int rate); + +/** Set the Buffer + * + * @param buffer[] : a buffer of unsigned integers (4 bytes) *Rows*Stride in size + * @param Rows : Number of Rows + * @param Cols : Number of Columns + * @param Stride : The actual number of columns (useful for data alignment) + * @param Offset : The offset into a row + * @param ZigZag : A boolean, do we alternate count up/ count down per row? + * @param Wrap : A boolean, do we wrap if (Offset+Cols) > Stride? (handy for scrolling messages) + */ + void SetBuffer(unsigned int Buffer[],int Rows,int Cols, int Stride,int Offset, bool ZigZag,bool Wrap); + +/** Repaint the Strip + * Sends to the Buffer to the Strip. + * @param none + */ + void Repaint(); + +/** Create an IRGB helper function to construct a 4 byte LED Frame + * + * @param I : 5 bits of intensity (0,1,2,...,31) + * @param R : 8 bits of Red (0,1,...,255) + * @param G : 8 bits of Green (0,1,...,255) + * @param B : 8 bits of Blue (0,1,...,255) + */ + +int IRGB(unsigned char I,unsigned char R,unsigned char G,unsigned char B) { + return ((0xE0 + 0x1F&I)<<24)|((0xFF&R)<<16)|((0xFF&G)<<8)|(0xFF&B);} + + protected: + + SPI _spi; + private: + int NR; + int NC; + int NS; + int off; + bool ZF; + bool WF; + unsigned int * Buf; + }; + +#endif \ No newline at end of file