LED bus driver on any GPIO pin for addressable RGB LEDs (like NeoPixels or other WS2812 based LEDs)
LEDArray.h
- Committer:
- koengroener
- Date:
- 2017-06-14
- Revision:
- 3:67e68c46daef
File content as of revision 3:67e68c46daef:
#ifndef _LED_ARRAY_PIN_H_ #define _LED_ARRAY_PIN_H_ #include "mbed.h" #include "LEDBus.h" /** The LEDArray class allows for a bit more simplistic way of communication with an addressable LED strip */ class LEDArray { private: LEDBus _ledBus; Color** _leds; unsigned int _numberOfLEDs; void initialize(unsigned int numberOfLEDs); protected: public: /** * Initializes the addressable led strip * * @param wirePin - The output pin on wich the addressable leds are connected * @param byteOrder - The order in wich the r, g and b bytes are expected * @param numberOfLEDs - The number of leds in this strip * @param t0h_us - T0H as found in the addressable led datasheet. The duration, in microseconds, the pin will stay high for sending a 0 bit * @param t0l_us - T0L as found in the addressable led datasheet. The duration, in microseconds, the pin will stay low for sending a 0 bit * @param t1h_us - T1H as found in the addressable led datasheet. The duration, in microseconds, the pin will stay high for sending a 1 bit * @param t1l_us - T1L as found in the addressable led datasheet. The duration, in microseconds, the pin will stay low for sending a 1 bit * @param tReset_us - TReset as found in the addressable led datasheet. The duration, in microsecond, the pin will stay low for sending a reset command, */ LEDArray(PinName wirePin, ColorByteOrder byteOrder, unsigned int numberOfLEDs, float t0h_us, float t0l_us, float t1h_us, float t1l_us, float tReset_us); /** * Initializes the addressable led array with default values (taken from WS2812 datasheet): * T0H = 0.35, * T0L = 0.8, * T1H = 0.7, * T1L = 0.6, * TReset = 50 * * @param wirePin - The output pin on wich the addressable leds are connected * @param byteOrder - The order in wich the r, g and b bytes are expected * @param numberOfLEDs - The number of leds in this strip */ LEDArray(PinName wirePin, ColorByteOrder byteOrder, unsigned int numberOfLEDs); ~LEDArray(); /** * Sets the color of the given pixel (index) with r, g and b values */ void setPixelColor(unsigned int pixel, uint8_t r, uint8_t g, uint8_t b); /** * Sets the color of the given pixel (index) with a given color. */ void setPixelColor(unsigned int pixel, Color& color); /** * Sends all configured colors to the actual led strip, this method is required to call in order to update the LEDs */ void show(); }; #endif