Routines to drive a chain of APA102 Leds.
Fork of APA102a by
APA102a.h
- Committer:
- rosienej
- Date:
- 2015-04-07
- Revision:
- 7:629583c31cef
- Parent:
- 4:2afea45fce8f
File content as of revision 7:629583c31cef:
#ifndef MBED_APA102a_H #define MBED_APA102a_H #include "mbed.h" /** Create an APA102 Object */ class APA102a{ 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 */ APA102a(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) */ unsigned int IRGB(unsigned char I,unsigned char R,unsigned char G,unsigned char B) { return ((0xE0 + (0x1F&I))<<24)|((0xFF&B)<<16)|((0xFF&G)<<8)|(0xFF&R);} protected: SPI _spi; private: int NR; int NC; int NS; int off; bool ZF; bool WF; unsigned int * Buf; }; #endif