LED bus driver on any GPIO pin for addressable RGB LEDs (like NeoPixels or other WS2812 based LEDs)
LEDArray.cpp@3:67e68c46daef, 2017-06-14 (annotated)
- Committer:
- koengroener
- Date:
- Wed Jun 14 20:37:31 2017 +0000
- Revision:
- 3:67e68c46daef
Added LEDArray class, for a more simplistic way of communcation with the LED strip
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
koengroener | 3:67e68c46daef | 1 | #include "LEDArray.h" |
koengroener | 3:67e68c46daef | 2 | |
koengroener | 3:67e68c46daef | 3 | LEDArray::LEDArray(PinName wirePin, ColorByteOrder byteOrder, unsigned int numberOfLEDs, float t0h_us, float t0l_us, float t1h_us, float t1l_us, float tReset_us) : _ledBus(wirePin, byteOrder, t0h_us, t0l_us, t1h_us, t1l_us, tReset_us) |
koengroener | 3:67e68c46daef | 4 | { |
koengroener | 3:67e68c46daef | 5 | initialize(numberOfLEDs); |
koengroener | 3:67e68c46daef | 6 | } |
koengroener | 3:67e68c46daef | 7 | |
koengroener | 3:67e68c46daef | 8 | LEDArray::LEDArray(PinName wirePin, ColorByteOrder byteOrder, unsigned int numberOfLEDs) : _ledBus(wirePin, byteOrder, 0.35, 0.8, 0.7, 0.6, 50) |
koengroener | 3:67e68c46daef | 9 | { |
koengroener | 3:67e68c46daef | 10 | initialize(numberOfLEDs); |
koengroener | 3:67e68c46daef | 11 | } |
koengroener | 3:67e68c46daef | 12 | |
koengroener | 3:67e68c46daef | 13 | LEDArray::~LEDArray() |
koengroener | 3:67e68c46daef | 14 | { |
koengroener | 3:67e68c46daef | 15 | } |
koengroener | 3:67e68c46daef | 16 | |
koengroener | 3:67e68c46daef | 17 | void LEDArray::initialize(unsigned int numberOfLEDs) |
koengroener | 3:67e68c46daef | 18 | { |
koengroener | 3:67e68c46daef | 19 | _numberOfLEDs = numberOfLEDs; |
koengroener | 3:67e68c46daef | 20 | _leds = new Color*[_numberOfLEDs]; |
koengroener | 3:67e68c46daef | 21 | for(uint32_t i = 0; i < _numberOfLEDs; ++i) |
koengroener | 3:67e68c46daef | 22 | { |
koengroener | 3:67e68c46daef | 23 | _leds[i] = new Color(0,0,0); |
koengroener | 3:67e68c46daef | 24 | } |
koengroener | 3:67e68c46daef | 25 | } |
koengroener | 3:67e68c46daef | 26 | |
koengroener | 3:67e68c46daef | 27 | void LEDArray::setPixelColor(unsigned int pixel, uint8_t r, uint8_t g, uint8_t b) |
koengroener | 3:67e68c46daef | 28 | { |
koengroener | 3:67e68c46daef | 29 | _leds[pixel]->red = r; |
koengroener | 3:67e68c46daef | 30 | _leds[pixel]->green = g; |
koengroener | 3:67e68c46daef | 31 | _leds[pixel]->blue = b; |
koengroener | 3:67e68c46daef | 32 | } |
koengroener | 3:67e68c46daef | 33 | |
koengroener | 3:67e68c46daef | 34 | void LEDArray::setPixelColor(unsigned int pixel, Color& color) |
koengroener | 3:67e68c46daef | 35 | { |
koengroener | 3:67e68c46daef | 36 | setPixelColor(pixel, color.red, color.green, color.blue); |
koengroener | 3:67e68c46daef | 37 | } |
koengroener | 3:67e68c46daef | 38 | |
koengroener | 3:67e68c46daef | 39 | void LEDArray::show() |
koengroener | 3:67e68c46daef | 40 | { |
koengroener | 3:67e68c46daef | 41 | _ledBus.write(_leds, _numberOfLEDs); |
koengroener | 3:67e68c46daef | 42 | } |