5 by 14 Neo array
Dependencies: mbed
NeoMatrix/NeoMatrix.h
- Committer:
- RogerJKelly
- Date:
- 2017-06-12
- Revision:
- 0:a32d1a85a830
File content as of revision 0:a32d1a85a830:
/** * NeoMatrix.h * * Taylor Powell * March 2015 * * Library for the 8x8 grid array of Neopixel LEDs * */ #ifndef NEOARRAY_H #define NEOARRAY_H //#ifndef TARGET_LPC1768 //#error NeoArray only supports the NXP LPC1768 //#endif // NeoColor struct definition to hold 24 bit // color data for each pixel, in GRB order typedef struct _NeoColor { uint8_t green; uint8_t red; uint8_t blue; } NeoColor; #define FRAME_SIZE 24 /** * NeoArr objects manage the buffering and assigning of * addressable NeoPixels */ class NeoArr { public: /** * Create a NeoArr object * * @param pin The mbed data pin name * @param N The number of arrays chained together. */ //NeoArr(PinName pin, int N); NeoArr(PinName pin, int N, int zeroHigh, int zeroLow, int oneHigh, int oneLow); /** * Sets the brightness of the entire array. All functions using set pixel are affected by this value. * If a higher brightness is set, an external power supply may be necessary * * The default brightness is 0.5 * * @param bright The brightness scaled between 0 and 1.0 */ void setBrightness(float bright); /** * sets up number of NOPS for pixel write functions. * * Sets the timing parameters for the bit-banged signal * * @param zeroHigh How many NOPs to insert to ensure TOH is properly generated. See library description for more information. * @param zeroLow How many NOPs to insert to ensure TOL is properly generated. See library description for more information. * @param oneHigh How many NOPs to insert to ensure T1H is properly generated. See library description for more information. * @param oneLow How many NOPs to insert to ensure T1L is properly generated. See library description for more information. * */ void setDelays(int zeroHigh, int zeroLow, int oneHigh, int oneLow); /** * Set a single pixel in the array to a specific color. * * @param idx The index of the array to write on. Indexing starts at 0 (use 0 if there is only one array) * @param x The x co-ordinate of the pixel * @param y The y co-ordinate of the pixel * @param color Integer golding a 24 bit color using RGB hex indexing (e.g. 0xff0000 is red) */ void setPixel(int idx, int x, int y, int color); /** * Set a single pixel in the array to a specific color with reg, blue, and blue values in seperate arguments */ void setPixel(int idx, int x, int y, uint8_t red, uint8_t green, uint8_t blue); /** * Draws a line of a specific color between any two points * * @param idx The index of the array to write on. Indexing starts at 0 (use 0 if there is only one array) * @param x1 The first x co-ordinate of the line * @param y1 The first y co-ordinate of the line * @param x2 The second x co-ordinate of the line * @param y2 The second y co-ordinate of the line * @param color Integer golding a 24 bit color using RGB hex indexing (e.g. 0xff0000 is red) */ void drawLine(int idx, int x1, int y1, int x2, int y2, int color); /** * Draws a line of a specific color between any two points with reg, blue, and blue values in seperate arguments */ void drawLine(int idx, int x1, int y1, int x2, int y2, uint8_t red, uint8_t green, uint8_t blue); /** * Draws a rectangle outline of a specific color given two opposite corner points * * @param idx The index of the array to write on. Indexing starts at 0 (use 0 if there is only one array) * @param x1 The first x co-ordinate of a corner * @param y1 The first y co-ordinate of a corner * @param x2 The second x co-ordinate of a corner * @param y2 The second y co-ordinate of a corner * @param color Integer golding a 24 bit color using RGB hex indexing (e.g. 0xff0000 is red) */ void drawRect(int idx, int x1, int y1, int x2, int y2, int color); /** * Draws a rectangle outline of a specific color given two opposite corner points with reg, blue, and blue values in seperate arguments */ void drawRect(int idx, int x1, int y1, int x2, int y2, uint8_t red, uint8_t green, uint8_t blue); /** * Draws a filled rectangle of a specific color given two opposite corner points * * @param idx The index of the array to write on. Indexing starts at 0 (use 0 if there is only one array) * @param x1 The first x co-ordinate of a corner * @param y1 The first y co-ordinate of a corner * @param x2 The second x co-ordinate of a corner * @param y2 The second y co-ordinate of a corner * @param color Integer golding a 24 bit color using RGB hex indexing (e.g. 0xff0000 is red) */ void drawFilledRect(int idx, int x1, int y1, int x2, int y2, int color); /** * Draws a filled rectangle of a specific color given two opposite corner points with reg, blue, and blue values in seperate arguments */ void drawFilledRect(int idx, int x1, int y1, int x2, int y2, uint8_t red, uint8_t green, uint8_t blue); /** * Fills the entire array screen with one color * * @param idx The index of the array to write on. Indexing starts at 0 (use 0 if there is only one array) * @param color Integer golding a 24 bit color using RGB hex indexing (e.g. 0xff0000 is red) */ void fillScreen(int idx, int color); /** * Fills the entire array screen with one color with reg, blue, and blue values in seperate arguments * */ void fillScreen(int idx, uint8_t red,uint8_t green, uint8_t blue); /** * Draws a triangle outline of a specific color given three corner points * * @param idx The index of the array to write on. Indexing starts at 0 (use 0 if there is only one array) * @param x1 The first x co-ordinate of a corner * @param y1 The first y co-ordinate of a corner * @param x2 The second x co-ordinate of a corner * @param y2 The second y co-ordinate of a corner * @param x3 The third x co-ordinate of a corner * @param y3 The third y co-ordinate of a corner * @param color Integer golding a 24 bit color using RGB hex indexing (e.g. 0xff0000 is red) */ void drawTriangle(int idx, int x1, int y1, int x2, int y2, int x3, int y3, int color); /** * Draws a triangle outline of a specific color given three corner points with reg, blue, and blue values in seperate arguments */ void drawTriangle(int idx, int x1, int y1, int x2, int y2, int x3, int y3, uint8_t red, uint8_t green, uint8_t blue); /** * Draws a filled triangle of a specific color given three corner points * * @param idx The index of the array to write on. Indexing starts at 0 (use 0 if there is only one array) * @param x1 The first x co-ordinate of a corner * @param y1 The first y co-ordinate of a corner * @param x2 The second x co-ordinate of a corner * @param y2 The second y co-ordinate of a corner * @param x3 The third x co-ordinate of a corner * @param y3 The third y co-ordinate of a corner * @param color Integer golding a 24 bit color using RGB hex indexing (e.g. 0xff0000 is red) */ void drawFilledTriangle(int idx, int x1, int y1, int x2, int y2, int x3, int y3, int color); /** * Draws a filled triangle of a specific color given three corner points with reg, blue, and blue values in seperate arguments */ void drawFilledTriangle(int idx, int x1, int y1, int x2, int y2, int x3, int y3, uint8_t red, uint8_t green, uint8_t blue); /** * Draws a single 6x8 character on the array. The character will be pulled from font.h * * @param idx The index of the array to write on. Indexing starts at 0 (use 0 if there is only one array) * @param x The x co-ordinate of the lower left point of the character * @param y The y co-ordinate of the lower left point of the character * @para c The character to be drawn * @param color Integer golding a 24 bit color using RGB hex indexing (e.g. 0xff0000 is red) */ void drawChar(int idx, int x, int y, char c, int color); /** * Draws a single 6x8 character on the array. The character will be pulled from font.h with reg, blue, and blue values in seperate arguments */ void drawChar(int idx, int x, int y, char c, uint8_t red, uint8_t green, uint8_t blue); /** * Displays a 64 bit image on board idx * * @param idx The index of the board * @param colors An array of length 64 containing the image to be displayed */ void showImage(int idx, const int *colors); void showImageRGB(int idx, int bmp, int r, int g, int b); /** * Clears all pixels on all boards (sets them all to 0) */ void clear(); /** * Write the colors out to the strip; this method must be called * to see any hardware effect. * * This function disables interrupts while the strip data is being sent, * each pixel takes approximately 30us to send, plus a 50us reset pulse * at the end. */ void write(); protected: NeoColor *arr; // pixel data buffer modified by setPixel() and used by neo_out() int N; // the number of pixels in the strip int Nbytes; // the number of bytes of pixel data (always N*3) float bright; // the master strip brightness //gpio_t gpio; // gpio struct for initialization and getting register addresses private: int __size; int __zeroHigh, __zeroLow, __oneHigh, __oneLow; //unsigned char __II; //BrightnessControl __use_II; bool *__transmitBuf; void __loadBuf(void); PinName __outPin; DigitalOut __gpo; }; #endif