TLIGHT_PRODUCTS / WS281X
Committer:
mutech
Date:
Wed Jan 04 00:59:33 2017 +0000
Revision:
47:b0230f40ea7b
WS2811/WS2812 Library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mutech 47:b0230f40ea7b 1 /* WS281XU.h (for LPC82X/STM32F0x/STM32F446/STM32F746xx)
mutech 47:b0230f40ea7b 2 * mbed Microcontroller Library
mutech 47:b0230f40ea7b 3 * Copyright (c) 2016 muetch, t.kuroki
mutech 47:b0230f40ea7b 4 * Allrights reserved.
mutech 47:b0230f40ea7b 5 *
mutech 47:b0230f40ea7b 6 * Rev 0.97 2016-09-07
mutech 47:b0230f40ea7b 7 * Rev 0.98 2016-09-08
mutech 47:b0230f40ea7b 8 */
mutech 47:b0230f40ea7b 9
mutech 47:b0230f40ea7b 10 #pragma once
mutech 47:b0230f40ea7b 11
mutech 47:b0230f40ea7b 12 #ifndef WS281XU_H
mutech 47:b0230f40ea7b 13 #define WS281XU_H
mutech 47:b0230f40ea7b 14
mutech 47:b0230f40ea7b 15 //#include "mbed.h"
mutech 47:b0230f40ea7b 16 #include "PixelBuffer.h"
mutech 47:b0230f40ea7b 17
mutech 47:b0230f40ea7b 18 //----------------------------------------------------------------------------
mutech 47:b0230f40ea7b 19 /**
mutech 47:b0230f40ea7b 20 * WS281XU
mutech 47:b0230f40ea7b 21 */
mutech 47:b0230f40ea7b 22 class WS281XU : public RGBPixels
mutech 47:b0230f40ea7b 23 {
mutech 47:b0230f40ea7b 24 public:
mutech 47:b0230f40ea7b 25 /**
mutech 47:b0230f40ea7b 26 Order of r, g and b bytes
mutech 47:b0230f40ea7b 27 */
mutech 47:b0230f40ea7b 28 enum RGBOrder
mutech 47:b0230f40ea7b 29 {
mutech 47:b0230f40ea7b 30 RGB = 0, RBG, GRB, GBR, BRG, BGR
mutech 47:b0230f40ea7b 31 };
mutech 47:b0230f40ea7b 32
mutech 47:b0230f40ea7b 33 /**
mutech 47:b0230f40ea7b 34 * Initializes the addressable led bus
mutech 47:b0230f40ea7b 35 *
mutech 47:b0230f40ea7b 36 * @param txPin - The output pin on wich the addressable leds are connected
mutech 47:b0230f40ea7b 37 * @param pinMode - The output pin mode PullUp, PullDown, PullNone, OpenDrain
mutech 47:b0230f40ea7b 38 * @param maxPixels - Number of the addressable leds
mutech 47:b0230f40ea7b 39 * @param RGBOrder - The order in wich the r, g and b bytes are expected
mutech 47:b0230f40ea7b 40 */
mutech 47:b0230f40ea7b 41 WS281XU(PinName txPin, PinMode pinMode = PullNone, int maxPixels = MAX_PIXELS, RGBOrder rgbOrder = WS281XU::RGB);
mutech 47:b0230f40ea7b 42 WS281XU(PinName txPin, PinMode pinMode = PullNone, RGBColor *buffer = 0, int maxPixels = 0, RGBOrder rgbOrder = WS281XU::RGB);
mutech 47:b0230f40ea7b 43 virtual ~WS281XU();
mutech 47:b0230f40ea7b 44
mutech 47:b0230f40ea7b 45 RGBOrder rgbOrder() { return _rgb_order; }
mutech 47:b0230f40ea7b 46 RGBOrder rgbOrder(RGBOrder order);
mutech 47:b0230f40ea7b 47
mutech 47:b0230f40ea7b 48 void show();
mutech 47:b0230f40ea7b 49 void show(const RGBColor color);
mutech 47:b0230f40ea7b 50
mutech 47:b0230f40ea7b 51 bool irqEnabled() { return _irq_enabled; }
mutech 47:b0230f40ea7b 52 bool irqEnabled(bool value) { return _irq_enabled = value; }
mutech 47:b0230f40ea7b 53
mutech 47:b0230f40ea7b 54 RGBColor operator[](int index) const
mutech 47:b0230f40ea7b 55 {
mutech 47:b0230f40ea7b 56 if (_pixels && (uint16_t)index < _num_pixels)
mutech 47:b0230f40ea7b 57 return _pixels[index];
mutech 47:b0230f40ea7b 58 return _dummy_pixel;
mutech 47:b0230f40ea7b 59 }
mutech 47:b0230f40ea7b 60
mutech 47:b0230f40ea7b 61 RGBColor& operator[](int index)
mutech 47:b0230f40ea7b 62 {
mutech 47:b0230f40ea7b 63 if (_pixels && (uint16_t)index < _num_pixels)
mutech 47:b0230f40ea7b 64 return _pixels[index];
mutech 47:b0230f40ea7b 65 return _dummy_pixel;
mutech 47:b0230f40ea7b 66 }
mutech 47:b0230f40ea7b 67
mutech 47:b0230f40ea7b 68 operator RGBColor*() const { return _pixels; }
mutech 47:b0230f40ea7b 69
mutech 47:b0230f40ea7b 70 protected:
mutech 47:b0230f40ea7b 71 void putByte(uint8_t c) { serial_putc(&_serial, c); }
mutech 47:b0230f40ea7b 72
mutech 47:b0230f40ea7b 73 private:
mutech 47:b0230f40ea7b 74 PinName _txPin;
mutech 47:b0230f40ea7b 75 serial_t _serial;
mutech 47:b0230f40ea7b 76 bool _irq_enabled;
mutech 47:b0230f40ea7b 77 RGBOrder _rgb_order;
mutech 47:b0230f40ea7b 78 int _1st, _2nd, _3rd;
mutech 47:b0230f40ea7b 79
mutech 47:b0230f40ea7b 80 #if defined(TARGET_STM)
mutech 47:b0230f40ea7b 81 void pin_mode_ex(PinName pin, PinMode mode);
mutech 47:b0230f40ea7b 82 #endif
mutech 47:b0230f40ea7b 83 void pin_init(PinName txPin, PinMode pinMode);
mutech 47:b0230f40ea7b 84 };
mutech 47:b0230f40ea7b 85
mutech 47:b0230f40ea7b 86 //----------------------------------------------------------------------------
mutech 47:b0230f40ea7b 87 #endif // end of WS281XU_H