WS2822S
WS2822S.h@0:2fc093733833, 2018-03-13 (annotated)
- Committer:
- zgtk_r
- Date:
- Tue Mar 13 14:25:02 2018 +0000
- Revision:
- 0:2fc093733833
for WS2822S
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zgtk_r | 0:2fc093733833 | 1 | #pragma once |
zgtk_r | 0:2fc093733833 | 2 | |
zgtk_r | 0:2fc093733833 | 3 | #include "mbed.h" |
zgtk_r | 0:2fc093733833 | 4 | |
zgtk_r | 0:2fc093733833 | 5 | // WS2822S RGB LED control class |
zgtk_r | 0:2fc093733833 | 6 | // by tessecraft R 2018.03.12 |
zgtk_r | 0:2fc093733833 | 7 | |
zgtk_r | 0:2fc093733833 | 8 | class WS2822S_Ctrl |
zgtk_r | 0:2fc093733833 | 9 | { |
zgtk_r | 0:2fc093733833 | 10 | private: |
zgtk_r | 0:2fc093733833 | 11 | // MTBP:H → BREAK:L → MAB:H → (FirstFrame all Low) → Data 8bit → ... MTBP:H → BREAK:L → MAB:H → ... |
zgtk_r | 0:2fc093733833 | 12 | |
zgtk_r | 0:2fc093733833 | 13 | // COLOR Timing names (unit : us) |
zgtk_r | 0:2fc093733833 | 14 | #define C_MTBP (1000) |
zgtk_r | 0:2fc093733833 | 15 | #define C_BREAK (88) |
zgtk_r | 0:2fc093733833 | 16 | #define C_MAB (8) |
zgtk_r | 0:2fc093733833 | 17 | // Address Timing names |
zgtk_r | 0:2fc093733833 | 18 | #define A_MTBP (88) |
zgtk_r | 0:2fc093733833 | 19 | #define A_BREAK (5000) |
zgtk_r | 0:2fc093733833 | 20 | #define A_MAB (8) |
zgtk_r | 0:2fc093733833 | 21 | // common StopBit |
zgtk_r | 0:2fc093733833 | 22 | #define STOP_BIT (8) |
zgtk_r | 0:2fc093733833 | 23 | private: |
zgtk_r | 0:2fc093733833 | 24 | // pin |
zgtk_r | 0:2fc093733833 | 25 | DigitalOut ColorPin; |
zgtk_r | 0:2fc093733833 | 26 | DigitalOut AddressPin; |
zgtk_r | 0:2fc093733833 | 27 | private: |
zgtk_r | 0:2fc093733833 | 28 | // pixcel NUM |
zgtk_r | 0:2fc093733833 | 29 | int PixcelNum; |
zgtk_r | 0:2fc093733833 | 30 | // display data |
zgtk_r | 0:2fc093733833 | 31 | uint8_t **Display; |
zgtk_r | 0:2fc093733833 | 32 | private: |
zgtk_r | 0:2fc093733833 | 33 | // Expansion DMX512 protocol |
zgtk_r | 0:2fc093733833 | 34 | void PutDataHeader(int MTBP, int BREAK, int MAB, DigitalOut* pin, bool AddressHigh = false); |
zgtk_r | 0:2fc093733833 | 35 | // Color or Address data out |
zgtk_r | 0:2fc093733833 | 36 | void PutDataHeader(bool AddressHeader = false); |
zgtk_r | 0:2fc093733833 | 37 | // data put |
zgtk_r | 0:2fc093733833 | 38 | void DataPut8(uint8_t data, DigitalOut* pin); |
zgtk_r | 0:2fc093733833 | 39 | public: |
zgtk_r | 0:2fc093733833 | 40 | WS2822S_Ctrl(PinName ColorPinName, PinName AddressPinName, int PixcelNum); |
zgtk_r | 0:2fc093733833 | 41 | ~WS2822S_Ctrl(); |
zgtk_r | 0:2fc093733833 | 42 | public: |
zgtk_r | 0:2fc093733833 | 43 | // SetPixcelData |
zgtk_r | 0:2fc093733833 | 44 | void SetColor(int pos, uint8_t R, uint8_t G, uint8_t B); |
zgtk_r | 0:2fc093733833 | 45 | // Clear Setted color |
zgtk_r | 0:2fc093733833 | 46 | void ClearColor(uint8_t R = 0, uint8_t G = 0, uint8_t B = 0); |
zgtk_r | 0:2fc093733833 | 47 | // Output Data |
zgtk_r | 0:2fc093733833 | 48 | void OutputData(); |
zgtk_r | 0:2fc093733833 | 49 | public: |
zgtk_r | 0:2fc093733833 | 50 | // WriteAddress |
zgtk_r | 0:2fc093733833 | 51 | void OutputAddress(); |
zgtk_r | 0:2fc093733833 | 52 | }; |