LED matrix library for http://goo.gl/y6VnO6
LEDMatrix.h@0:13728deac7a7, 2013-11-08 (annotated)
- Committer:
- yihui
- Date:
- Fri Nov 08 06:45:52 2013 +0000
- Revision:
- 0:13728deac7a7
- Child:
- 1:b528f8e32726
initial
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yihui | 0:13728deac7a7 | 1 | /** |
yihui | 0:13728deac7a7 | 2 | * LED Matrix library for http://www.seeedstudio.com/depot/ultrathin-16x32-red-led-matrix-panel-p-1582.html |
yihui | 0:13728deac7a7 | 3 | * The LED Matrix panel has 32x16 pixels. Several panel can be combined together as a large screen. |
yihui | 0:13728deac7a7 | 4 | * |
yihui | 0:13728deac7a7 | 5 | * Coordinate & Connection (mbed -> panel 0 -> panel 1 -> ...) |
yihui | 0:13728deac7a7 | 6 | * (0, 0) (0, 0) |
yihui | 0:13728deac7a7 | 7 | * +--------+--------+--------+ +--------+--------+ |
yihui | 0:13728deac7a7 | 8 | * | 5 | 3 | 1 | | 1 | 0 | |
yihui | 0:13728deac7a7 | 9 | * | | | | | | |<----- mbed |
yihui | 0:13728deac7a7 | 10 | * +--------+--------+--------+ +--------+--------+ |
yihui | 0:13728deac7a7 | 11 | * | 4 | 2 | 0 | (64, 16) |
yihui | 0:13728deac7a7 | 12 | * | | | |<----- mbed |
yihui | 0:13728deac7a7 | 13 | * +--------+--------+--------+ |
yihui | 0:13728deac7a7 | 14 | * (96, 32) |
yihui | 0:13728deac7a7 | 15 | * Copyright (c) 2013 Seeed Technology Inc. |
yihui | 0:13728deac7a7 | 16 | * @auther Yihui Xiong |
yihui | 0:13728deac7a7 | 17 | * @date Nov 7, 2013 |
yihui | 0:13728deac7a7 | 18 | * @license Apache |
yihui | 0:13728deac7a7 | 19 | */ |
yihui | 0:13728deac7a7 | 20 | |
yihui | 0:13728deac7a7 | 21 | |
yihui | 0:13728deac7a7 | 22 | #ifndef __LED_MATRIX_H__ |
yihui | 0:13728deac7a7 | 23 | #define __LED_MATRIX_H__ |
yihui | 0:13728deac7a7 | 24 | |
yihui | 0:13728deac7a7 | 25 | #include "mbed.h" |
yihui | 0:13728deac7a7 | 26 | |
yihui | 0:13728deac7a7 | 27 | class LEDMatrix { |
yihui | 0:13728deac7a7 | 28 | public: |
yihui | 0:13728deac7a7 | 29 | LEDMatrix(PinName pinA, PinName pinB, PinName pinC, PinName pinD, PinName pinOE, PinName pinR1, PinName pinSTB, PinName pinCLK); |
yihui | 0:13728deac7a7 | 30 | |
yihui | 0:13728deac7a7 | 31 | /** |
yihui | 0:13728deac7a7 | 32 | * set the display's display buffer and number, the buffer's size must be not less than 512 * number / 8 bytes |
yihui | 0:13728deac7a7 | 33 | * @param displaybuf display buffer |
yihui | 0:13728deac7a7 | 34 | * @param number panels' number |
yihui | 0:13728deac7a7 | 35 | */ |
yihui | 0:13728deac7a7 | 36 | void begin(uint8_t *displaybuf, uint16_t width, uint16_t height); |
yihui | 0:13728deac7a7 | 37 | |
yihui | 0:13728deac7a7 | 38 | /** |
yihui | 0:13728deac7a7 | 39 | * draw a point |
yihui | 0:13728deac7a7 | 40 | * @param x x |
yihui | 0:13728deac7a7 | 41 | * @param y y |
yihui | 0:13728deac7a7 | 42 | * @param pixel 0: led off, >0: led on |
yihui | 0:13728deac7a7 | 43 | */ |
yihui | 0:13728deac7a7 | 44 | void drawPoint(uint16_t x, uint16_t y, uint8_t pixel); |
yihui | 0:13728deac7a7 | 45 | |
yihui | 0:13728deac7a7 | 46 | /** |
yihui | 0:13728deac7a7 | 47 | * draw a rect |
yihui | 0:13728deac7a7 | 48 | * @param (x1, y1) top-left position |
yihui | 0:13728deac7a7 | 49 | * @param (x2, y2) bottom-right position, not included in the rect |
yihui | 0:13728deac7a7 | 50 | * @param pixel 0: rect off, >0: rect on |
yihui | 0:13728deac7a7 | 51 | */ |
yihui | 0:13728deac7a7 | 52 | void drawRect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t pixel); |
yihui | 0:13728deac7a7 | 53 | |
yihui | 0:13728deac7a7 | 54 | /** |
yihui | 0:13728deac7a7 | 55 | * draw a image |
yihui | 0:13728deac7a7 | 56 | * @param (x1, y1) top-left position |
yihui | 0:13728deac7a7 | 57 | * @param (x2, y2) bottom-right position, not included in the rect |
yihui | 0:13728deac7a7 | 58 | * @param pixels contents, 1 bit to 1 led |
yihui | 0:13728deac7a7 | 59 | */ |
yihui | 0:13728deac7a7 | 60 | void drawImage(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t *image); |
yihui | 0:13728deac7a7 | 61 | |
yihui | 0:13728deac7a7 | 62 | /** |
yihui | 0:13728deac7a7 | 63 | * Set screen buffer to zero |
yihui | 0:13728deac7a7 | 64 | */ |
yihui | 0:13728deac7a7 | 65 | void clear(); |
yihui | 0:13728deac7a7 | 66 | |
yihui | 0:13728deac7a7 | 67 | /** |
yihui | 0:13728deac7a7 | 68 | * turn off 1/16 leds and turn on another 1/16 leds |
yihui | 0:13728deac7a7 | 69 | */ |
yihui | 0:13728deac7a7 | 70 | void scan(); |
yihui | 0:13728deac7a7 | 71 | |
yihui | 0:13728deac7a7 | 72 | void reverse(); |
yihui | 0:13728deac7a7 | 73 | |
yihui | 0:13728deac7a7 | 74 | uint8_t isReversed(); |
yihui | 0:13728deac7a7 | 75 | |
yihui | 0:13728deac7a7 | 76 | void on(); |
yihui | 0:13728deac7a7 | 77 | |
yihui | 0:13728deac7a7 | 78 | void off(); |
yihui | 0:13728deac7a7 | 79 | |
yihui | 0:13728deac7a7 | 80 | private: |
yihui | 0:13728deac7a7 | 81 | DigitalOut a, b, c, d, oe, r1, stb, clk; |
yihui | 0:13728deac7a7 | 82 | uint8_t *displaybuf; |
yihui | 0:13728deac7a7 | 83 | uint16_t width; |
yihui | 0:13728deac7a7 | 84 | uint16_t height; |
yihui | 0:13728deac7a7 | 85 | uint8_t mask; |
yihui | 0:13728deac7a7 | 86 | uint8_t state; |
yihui | 0:13728deac7a7 | 87 | }; |
yihui | 0:13728deac7a7 | 88 | |
yihui | 0:13728deac7a7 | 89 | #endif |