Routines to drive a chain of APA102 Leds.
Fork of APA102 by
APA102.cpp
- Committer:
- vrou44
- Date:
- 2018-05-14
- Revision:
- 3:a1d3dbde7004
- Parent:
- 0:2fd584b4a9b8
File content as of revision 3:a1d3dbde7004:
#include "APA102.h" #include "mbed.h" APA102::APA102(PinName mosi,PinName miso,PinName sclk,int rate) : _spi(mosi, miso, sclk) { // 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(rate); } void APA102::SetBuffer(unsigned int Buffer[],int Rows,int Cols, int Stride,int Offset, bool ZigZag,bool Wrap) { Buf = Buffer; NR = Rows; NC = Cols; NS = Stride; off = Offset; ZF = ZigZag; WF = Wrap; } void APA102::Repaint() { // int index; unsigned int val; _spi.write(0X00); // Start _spi.write(0X00); _spi.write(0X00); _spi.write(0X00); #if 0 for(int r = 0;r<NR;r++) { for(int c = off;c<(NC+off);c++) { int cc = (WF)?(c%NS):((c<NS)?c:NS); if (ZF) if((r&0x01)>0) index = r*NS + NC+off-cc; else index = r*NS + cc; else index = r*NS + cc; val = Buf[index]; _spi.write((val>>24)&0xFF); _spi.write((val>>16)&0xFF); _spi.write((val>>8)&0xFF); _spi.write(val&0xFF); } } #else for (int i = 0 ; i < NC ; ++i) { val = Buf[i] ; _spi.write((val>>24)&0xFF); _spi.write((val>>16)&0xFF); _spi.write((val>>8)&0xFF); _spi.write(val&0xFF); } #endif _spi.write(0XFF); // Stop _spi.write(0XFF); _spi.write(0XFF); _spi.write(0XFF); }