Minimal library to work with APA102-based LED strips. Uses code from FastLED library.
APA102.h@0:c223864b981f, 2018-12-11 (annotated)
- Committer:
- abraha2d
- Date:
- Tue Dec 11 06:29:34 2018 +0000
- Revision:
- 0:c223864b981f
Initial commit
Who changed what in which revision?
User | Revision | Line number | New 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 |