LED bus driver on any GPIO pin for addressable RGB LEDs (like NeoPixels or other WS2812 based LEDs)

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?

UserRevisionLine numberNew 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 }