Li Weiyi
/
LED_DZ
work fine
Microduino_Matrix.h@0:5ca227682ee7, 2016-05-31 (annotated)
- Committer:
- lixianyu
- Date:
- Tue May 31 15:32:03 2016 +0000
- Revision:
- 0:5ca227682ee7
???????(Pass compile!)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lixianyu | 0:5ca227682ee7 | 1 | // 本作品采用知识共享 署名-非商业性使用-相同方式共享 3.0 未本地化版本 许可协议进行许可 |
lixianyu | 0:5ca227682ee7 | 2 | // 访问 http://creativecommons.org/licenses/by-nc-sa/3.0/ 查看该许可协议 |
lixianyu | 0:5ca227682ee7 | 3 | // ============== |
lixianyu | 0:5ca227682ee7 | 4 | |
lixianyu | 0:5ca227682ee7 | 5 | // 版权所有: |
lixianyu | 0:5ca227682ee7 | 6 | // @老潘orz wasdpkj@hotmail.com |
lixianyu | 0:5ca227682ee7 | 7 | // ============== |
lixianyu | 0:5ca227682ee7 | 8 | |
lixianyu | 0:5ca227682ee7 | 9 | // Microduino-IDE |
lixianyu | 0:5ca227682ee7 | 10 | // ============== |
lixianyu | 0:5ca227682ee7 | 11 | // Microduino Getting start: |
lixianyu | 0:5ca227682ee7 | 12 | // http://www.microduino.cc/download/ |
lixianyu | 0:5ca227682ee7 | 13 | |
lixianyu | 0:5ca227682ee7 | 14 | // Microduino IDE Support: |
lixianyu | 0:5ca227682ee7 | 15 | // https://github.com/wasdpkj/Microduino-IDE-Support/ |
lixianyu | 0:5ca227682ee7 | 16 | |
lixianyu | 0:5ca227682ee7 | 17 | // ============== |
lixianyu | 0:5ca227682ee7 | 18 | // Microduino wiki: |
lixianyu | 0:5ca227682ee7 | 19 | // http://wiki.microduino.cc |
lixianyu | 0:5ca227682ee7 | 20 | |
lixianyu | 0:5ca227682ee7 | 21 | // ============== |
lixianyu | 0:5ca227682ee7 | 22 | // E-mail: |
lixianyu | 0:5ca227682ee7 | 23 | // Kejia Pan |
lixianyu | 0:5ca227682ee7 | 24 | // pankejia@microduino.cc |
lixianyu | 0:5ca227682ee7 | 25 | |
lixianyu | 0:5ca227682ee7 | 26 | // ============== |
lixianyu | 0:5ca227682ee7 | 27 | // Weibo: |
lixianyu | 0:5ca227682ee7 | 28 | // @老潘orz |
lixianyu | 0:5ca227682ee7 | 29 | |
lixianyu | 0:5ca227682ee7 | 30 | #ifndef Microduino_Matrix_h |
lixianyu | 0:5ca227682ee7 | 31 | #define Microduino_Matrix_h |
lixianyu | 0:5ca227682ee7 | 32 | #include "Printit.h" |
lixianyu | 0:5ca227682ee7 | 33 | #include "mbed.h" |
lixianyu | 0:5ca227682ee7 | 34 | |
lixianyu | 0:5ca227682ee7 | 35 | #if 0 |
lixianyu | 0:5ca227682ee7 | 36 | #if (ARDUINO >= 100) |
lixianyu | 0:5ca227682ee7 | 37 | #include "Arduino.h" |
lixianyu | 0:5ca227682ee7 | 38 | #include "Print.h" |
lixianyu | 0:5ca227682ee7 | 39 | #else |
lixianyu | 0:5ca227682ee7 | 40 | #include "WProgram.h" |
lixianyu | 0:5ca227682ee7 | 41 | #endif |
lixianyu | 0:5ca227682ee7 | 42 | #endif |
lixianyu | 0:5ca227682ee7 | 43 | #include "Microduino_MatrixBase.h" |
lixianyu | 0:5ca227682ee7 | 44 | |
lixianyu | 0:5ca227682ee7 | 45 | #define WDT |
lixianyu | 0:5ca227682ee7 | 46 | #ifdef WDT |
lixianyu | 0:5ca227682ee7 | 47 | //#include <avr/wdt.h> |
lixianyu | 0:5ca227682ee7 | 48 | #endif |
lixianyu | 0:5ca227682ee7 | 49 | |
lixianyu | 0:5ca227682ee7 | 50 | #define MODE_H 1 |
lixianyu | 0:5ca227682ee7 | 51 | #define MODE_V 0 |
lixianyu | 0:5ca227682ee7 | 52 | |
lixianyu | 0:5ca227682ee7 | 53 | #define U8G_DRAW_UPPER_RIGHT 0x01 |
lixianyu | 0:5ca227682ee7 | 54 | #define U8G_DRAW_UPPER_LEFT 0x02 |
lixianyu | 0:5ca227682ee7 | 55 | #define U8G_DRAW_LOWER_LEFT 0x04 |
lixianyu | 0:5ca227682ee7 | 56 | #define U8G_DRAW_LOWER_RIGHT 0x08 |
lixianyu | 0:5ca227682ee7 | 57 | #define U8G_DRAW_ALL (U8G_DRAW_UPPER_RIGHT|U8G_DRAW_UPPER_LEFT|U8G_DRAW_LOWER_RIGHT|U8G_DRAW_LOWER_LEFT) |
lixianyu | 0:5ca227682ee7 | 58 | |
lixianyu | 0:5ca227682ee7 | 59 | #define min(x, y) ({ \ |
lixianyu | 0:5ca227682ee7 | 60 | typeof(x) _min1 = (x); \ |
lixianyu | 0:5ca227682ee7 | 61 | typeof(y) _min2 = (y); \ |
lixianyu | 0:5ca227682ee7 | 62 | (void) (&_min1 == &_min2); \ |
lixianyu | 0:5ca227682ee7 | 63 | _min1 < _min2 ? _min1 : _min2; }) |
lixianyu | 0:5ca227682ee7 | 64 | |
lixianyu | 0:5ca227682ee7 | 65 | #define max(x, y) ({ \ |
lixianyu | 0:5ca227682ee7 | 66 | typeof(x) _max1 = (x); \ |
lixianyu | 0:5ca227682ee7 | 67 | typeof(y) _max2 = (y); \ |
lixianyu | 0:5ca227682ee7 | 68 | (void) (&_max1 == &_max2); \ |
lixianyu | 0:5ca227682ee7 | 69 | _max1 > _max2 ? _max1 : _max2; }) |
lixianyu | 0:5ca227682ee7 | 70 | |
lixianyu | 0:5ca227682ee7 | 71 | class Matrix : public Print |
lixianyu | 0:5ca227682ee7 | 72 | { |
lixianyu | 0:5ca227682ee7 | 73 | public: |
lixianyu | 0:5ca227682ee7 | 74 | LedControl* led; |
lixianyu | 0:5ca227682ee7 | 75 | |
lixianyu | 0:5ca227682ee7 | 76 | Matrix(uint8_t (*_addr)[8]); |
lixianyu | 0:5ca227682ee7 | 77 | |
lixianyu | 0:5ca227682ee7 | 78 | int16_t getWidth(); |
lixianyu | 0:5ca227682ee7 | 79 | int16_t getHeight(); |
lixianyu | 0:5ca227682ee7 | 80 | int16_t getMatrixNum(); |
lixianyu | 0:5ca227682ee7 | 81 | |
lixianyu | 0:5ca227682ee7 | 82 | uint8_t getDeviceAddr(uint8_t _a); |
lixianyu | 0:5ca227682ee7 | 83 | |
lixianyu | 0:5ca227682ee7 | 84 | void setDeviceAddr(uint8_t* _addr); |
lixianyu | 0:5ca227682ee7 | 85 | |
lixianyu | 0:5ca227682ee7 | 86 | void clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 87 | |
lixianyu | 0:5ca227682ee7 | 88 | void setColor(uint8_t value_r, uint8_t value_g, uint8_t value_b); |
lixianyu | 0:5ca227682ee7 | 89 | void clearColor(); |
lixianyu | 0:5ca227682ee7 | 90 | |
lixianyu | 0:5ca227682ee7 | 91 | void setFontMode(bool _Mode); |
lixianyu | 0:5ca227682ee7 | 92 | |
lixianyu | 0:5ca227682ee7 | 93 | void setLed(uint8_t row, uint8_t column, bool state); |
lixianyu | 0:5ca227682ee7 | 94 | void setLedColor(uint8_t row, uint8_t column, uint8_t value_r, uint8_t value_g, uint8_t value_b); |
lixianyu | 0:5ca227682ee7 | 95 | void setLedColorFast(uint8_t row, uint8_t column, uint8_t value_r, uint8_t value_g, uint8_t value_b); |
lixianyu | 0:5ca227682ee7 | 96 | |
lixianyu | 0:5ca227682ee7 | 97 | void drawLine(int8_t x1, int8_t y1, int8_t x2, int8_t y2); |
lixianyu | 0:5ca227682ee7 | 98 | |
lixianyu | 0:5ca227682ee7 | 99 | void drawCircle(int8_t x0, int8_t y0, int8_t rad, int8_t option = U8G_DRAW_ALL); |
lixianyu | 0:5ca227682ee7 | 100 | void drawDisc(int8_t x0, int8_t y0, int8_t rad, int8_t option = U8G_DRAW_ALL); |
lixianyu | 0:5ca227682ee7 | 101 | |
lixianyu | 0:5ca227682ee7 | 102 | void drawFrame(int8_t x, int8_t y, int8_t w, int8_t h); |
lixianyu | 0:5ca227682ee7 | 103 | void drawRFrame(int8_t x, int8_t y, int8_t w, int8_t h, uint8_t r); |
lixianyu | 0:5ca227682ee7 | 104 | void drawBox(int8_t x, int8_t y, int8_t w, int8_t h); |
lixianyu | 0:5ca227682ee7 | 105 | void drawRBox(int8_t x, int8_t y, int8_t w, int8_t h, uint8_t r); |
lixianyu | 0:5ca227682ee7 | 106 | |
lixianyu | 0:5ca227682ee7 | 107 | void drawBMP(int16_t x, int16_t y, int16_t w, int16_t h,const uint8_t *bitmap); |
lixianyu | 0:5ca227682ee7 | 108 | bool drawBMP(int16_t x, int16_t y, const uint8_t *bitmap); |
lixianyu | 0:5ca227682ee7 | 109 | |
lixianyu | 0:5ca227682ee7 | 110 | void setFastMode(); |
lixianyu | 0:5ca227682ee7 | 111 | void clearFastMode(); |
lixianyu | 0:5ca227682ee7 | 112 | |
lixianyu | 0:5ca227682ee7 | 113 | virtual size_t write(uint8_t); |
lixianyu | 0:5ca227682ee7 | 114 | |
lixianyu | 0:5ca227682ee7 | 115 | void setCursor(int16_t x, int16_t y); |
lixianyu | 0:5ca227682ee7 | 116 | |
lixianyu | 0:5ca227682ee7 | 117 | void runFun(const void* Fun = NULL); |
lixianyu | 0:5ca227682ee7 | 118 | void (*Fun)(); |
lixianyu | 0:5ca227682ee7 | 119 | |
lixianyu | 0:5ca227682ee7 | 120 | int16_t getStringWidth( char* _String); |
lixianyu | 0:5ca227682ee7 | 121 | int16_t getStringHeight( char* _String); |
lixianyu | 0:5ca227682ee7 | 122 | |
lixianyu | 0:5ca227682ee7 | 123 | void writeString(char* _c,bool _m,uint16_t _t,int16_t _xy); |
lixianyu | 0:5ca227682ee7 | 124 | |
lixianyu | 0:5ca227682ee7 | 125 | //private: |
lixianyu | 0:5ca227682ee7 | 126 | // bool Fast_mode; |
lixianyu | 0:5ca227682ee7 | 127 | void drawCircle_section(int8_t x, int8_t y, int8_t x0, int8_t y0, uint8_t option); |
lixianyu | 0:5ca227682ee7 | 128 | void drawDisc_section(int8_t x, int8_t y, int8_t x0, int8_t y0, uint8_t option); |
lixianyu | 0:5ca227682ee7 | 129 | void drawVLine(int8_t x, int8_t y, int8_t w); |
lixianyu | 0:5ca227682ee7 | 130 | void drawHLine(int8_t x, int8_t y, int8_t h); |
lixianyu | 0:5ca227682ee7 | 131 | |
lixianyu | 0:5ca227682ee7 | 132 | int16_t _numX, _numY; // Display w/h as modified by current rotation |
lixianyu | 0:5ca227682ee7 | 133 | int16_t cursor_x, cursor_y; |
lixianyu | 0:5ca227682ee7 | 134 | int16_t _matrixNum; |
lixianyu | 0:5ca227682ee7 | 135 | }; |
lixianyu | 0:5ca227682ee7 | 136 | |
lixianyu | 0:5ca227682ee7 | 137 | |
lixianyu | 0:5ca227682ee7 | 138 | #endif |