Microduino

Dependencies:   mbed

Fork of LED_DZ by Li Weiyi

Committer:
lixianyu
Date:
Thu Jun 02 01:07:50 2016 +0000
Revision:
2:487a727d6181
Parent:
0:5ca227682ee7
drawBMP work.

Who changed what in which revision?

UserRevisionLine numberNew 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