WS2822S

WS2822S.h

Committer:
zgtk_r
Date:
2018-03-13
Revision:
0:2fc093733833

File content as of revision 0:2fc093733833:

#pragma once

#include "mbed.h"

// WS2822S RGB LED control class
// by tessecraft R  2018.03.12

class WS2822S_Ctrl
{
private:
    // MTBP:H → BREAK:L → MAB:H → (FirstFrame all Low) → Data 8bit → ... MTBP:H → BREAK:L → MAB:H → ...

    // COLOR Timing names (unit : us)
#define C_MTBP      (1000)
#define C_BREAK     (88)
#define C_MAB       (8)
    // Address Timing names
#define A_MTBP      (88)
#define A_BREAK     (5000)
#define A_MAB       (8)
    // common StopBit
#define STOP_BIT    (8)
private:
    // pin
    DigitalOut  ColorPin;
    DigitalOut  AddressPin;
private:    
    // pixcel NUM
    int PixcelNum;
    // display data
    uint8_t **Display;
private:
    // Expansion DMX512 protocol
    void PutDataHeader(int MTBP, int BREAK, int MAB, DigitalOut* pin, bool AddressHigh = false);
    // Color or Address data out
    void PutDataHeader(bool AddressHeader = false);
    // data put
    void DataPut8(uint8_t data, DigitalOut* pin);
public:
    WS2822S_Ctrl(PinName ColorPinName, PinName AddressPinName, int PixcelNum);
    ~WS2822S_Ctrl();
public:
    // SetPixcelData
    void SetColor(int pos, uint8_t R, uint8_t G, uint8_t B);
    // Clear Setted color
    void ClearColor(uint8_t R = 0, uint8_t G = 0, uint8_t B = 0);
    // Output Data
    void OutputData();
public:
    // WriteAddress
    void OutputAddress();
};