Adafruit-RGB_matrix_Panel(32*16)

Dependencies:   Adafruit-GFX

RGBmatrixPanel.h

Committer:
lelect
Date:
2014-05-23
Revision:
0:06d9443a018f
Child:
2:6136465ffd3a

File content as of revision 0:06d9443a018f:

#include "mbed.h"
#include "Adafruit_GFX.h"

class RGBmatrixPanel : public Adafruit_GFX
{

public:
    // Constructor for 16x32 panel:
    RGBmatrixPanel(uint8_t a, uint8_t b, uint8_t c, uint8_t sclk, uint8_t latch, uint8_t oe, bool dbuf);

    // Constructor for 32x32 panel (adds 'd' pin):
    RGBmatrixPanel(uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t sclk, uint8_t latch, uint8_t oe, bool dbuf);

    void begin(void);
    virtual void drawPixel(int16_t x, int16_t y, uint16_t c);
    virtual void fillScreen(uint16_t c);
    void updateDisplay(void);
    void swapBuffers(bool);
    void dumpMatrix(void);

    uint8_t *backBuffer(void);

    uint16_t Color333(uint8_t r, uint8_t g, uint8_t b);
    uint16_t Color444(uint8_t r, uint8_t g, uint8_t b);
    uint16_t Color888(uint8_t r, uint8_t g, uint8_t b);
    uint16_t Color888(uint8_t r, uint8_t g, uint8_t b, bool gflag);
    uint16_t ColorHSV(long hue, uint8_t sat, uint8_t val, bool gflag);

private:
    uint8_t         *matrixbuff[2];
    uint8_t          nRows;
    volatile uint8_t backindex;
    volatile bool swapflag;

    // Init/alloc code common to both constructors:
    void init(uint8_t rows, uint8_t a, uint8_t b, uint8_t c, uint8_t sclk, uint8_t latch, uint8_t oe, bool dbuf);

    // PORT register pointers, pin bitmasks, pin numbers:
    volatile uint8_t *latport, *oeport, *addraport, *addrbport, *addrcport, *addrdport;
    uint8_t sclkpin, latpin, oepin, addrapin, addrbpin, addrcpin, addrdpin;
    uint8_t _sclk, _latch, _oe, _a, _b, _c, _d;

    // Counters/pointers for interrupt handler:
    volatile uint8_t row, plane;
    volatile uint8_t *buffptr;
};