Minimal library to work with APA102-based LED strips. Uses code from FastLED library.

Dependents:   MobileArcade

Committer:
abraha2d
Date:
Tue Dec 11 06:29:34 2018 +0000
Revision:
0:c223864b981f
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abraha2d 0:c223864b981f 1 #ifndef APA102_H_
abraha2d 0:c223864b981f 2 #define APA102_H_
abraha2d 0:c223864b981f 3
abraha2d 0:c223864b981f 4 #include "mbed.h"
abraha2d 0:c223864b981f 5
abraha2d 0:c223864b981f 6 struct CRGB {
abraha2d 0:c223864b981f 7
abraha2d 0:c223864b981f 8 union {
abraha2d 0:c223864b981f 9 struct {
abraha2d 0:c223864b981f 10 union {
abraha2d 0:c223864b981f 11 uint8_t r;
abraha2d 0:c223864b981f 12 uint8_t red;
abraha2d 0:c223864b981f 13 };
abraha2d 0:c223864b981f 14 union {
abraha2d 0:c223864b981f 15 uint8_t g;
abraha2d 0:c223864b981f 16 uint8_t green;
abraha2d 0:c223864b981f 17 };
abraha2d 0:c223864b981f 18 union {
abraha2d 0:c223864b981f 19 uint8_t b;
abraha2d 0:c223864b981f 20 uint8_t blue;
abraha2d 0:c223864b981f 21 };
abraha2d 0:c223864b981f 22 };
abraha2d 0:c223864b981f 23 uint8_t raw[3];
abraha2d 0:c223864b981f 24 };
abraha2d 0:c223864b981f 25
abraha2d 0:c223864b981f 26 inline CRGB() __attribute__((always_inline)) {}
abraha2d 0:c223864b981f 27
abraha2d 0:c223864b981f 28 inline CRGB( uint8_t ir, uint8_t ig, uint8_t ib) __attribute__((always_inline))
abraha2d 0:c223864b981f 29 : r(ir), g(ig), b(ib) {}
abraha2d 0:c223864b981f 30
abraha2d 0:c223864b981f 31 inline CRGB( uint32_t colorcode) __attribute__((always_inline))
abraha2d 0:c223864b981f 32 : r((colorcode >> 16) & 0xFF), g((colorcode >> 8) & 0xFF), b((colorcode >> 0) & 0xFF) {}
abraha2d 0:c223864b981f 33
abraha2d 0:c223864b981f 34 typedef enum {
abraha2d 0:c223864b981f 35 Black=0x000000,
abraha2d 0:c223864b981f 36 } HTMLColorCode;
abraha2d 0:c223864b981f 37
abraha2d 0:c223864b981f 38 };
abraha2d 0:c223864b981f 39
abraha2d 0:c223864b981f 40 inline __attribute__((always_inline)) bool operator== (const CRGB& lhs, const CRGB& rhs) {
abraha2d 0:c223864b981f 41 return (lhs.r == rhs.r) && (lhs.g == rhs.g) && (lhs.b == rhs.b);
abraha2d 0:c223864b981f 42 }
abraha2d 0:c223864b981f 43
abraha2d 0:c223864b981f 44 __attribute__((always_inline))
abraha2d 0:c223864b981f 45 inline CRGB operator*( const CRGB& p1, double d) {
abraha2d 0:c223864b981f 46 return CRGB(p1.r * d, p1.g * d, p1.b * d);
abraha2d 0:c223864b981f 47 }
abraha2d 0:c223864b981f 48
abraha2d 0:c223864b981f 49 void fill_solid( struct CRGB * leds, int numToFill, const struct CRGB& color);
abraha2d 0:c223864b981f 50
abraha2d 0:c223864b981f 51 void APA102_write(mbed::SPI& mSPI, struct CRGB * leds, int numToFill);
abraha2d 0:c223864b981f 52
abraha2d 0:c223864b981f 53 #endif