Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of LEDMatrix by
LEDMatrix.h@2:cd2da920cf98, 2016-01-14 (annotated)
- Committer:
- Bobty
- Date:
- Thu Jan 14 12:57:59 2016 +0000
- Revision:
- 2:cd2da920cf98
- Parent:
- 1:79cf2e115449
- Child:
- 3:1e06e89bc0c9
Improved scrolling; Now handles multiple independent lines of text; Converted the coordinate system to more conventional one
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 | |
| Bobty | 2:cd2da920cf98 | 27 | const int LED_MATRIX_LEDS_HORIZONTALLY = 32; |
| Bobty | 2:cd2da920cf98 | 28 | const int LED_MATRIX_LEDS_VERTICALLY = 16; |
| Bobty | 2:cd2da920cf98 | 29 | const int LED_MATRIX_MAX_LINES = 16; |
| Bobty | 2:cd2da920cf98 | 30 | |
| Bobty | 2:cd2da920cf98 | 31 | class LEDMatrix |
| Bobty | 2:cd2da920cf98 | 32 | { |
| yihui | 0:13728deac7a7 | 33 | public: |
| Bobty | 2:cd2da920cf98 | 34 | |
| yihui | 0:13728deac7a7 | 35 | LEDMatrix(PinName pinA, PinName pinB, PinName pinC, PinName pinD, PinName pinOE, PinName pinR1, PinName pinSTB, PinName pinCLK); |
| yihui | 0:13728deac7a7 | 36 | |
| yihui | 0:13728deac7a7 | 37 | /** |
| yihui | 0:13728deac7a7 | 38 | * set the display's display buffer and number, the buffer's size must be not less than 512 * number / 8 bytes |
| Bobty | 2:cd2da920cf98 | 39 | * @param pDisplayBuf display buffer |
| yihui | 0:13728deac7a7 | 40 | * @param number panels' number |
| yihui | 0:13728deac7a7 | 41 | */ |
| Bobty | 2:cd2da920cf98 | 42 | void begin(uint8_t *pDisplayBuf, uint16_t width, uint16_t height, uint16_t scrollWidth, uint16_t numLines, int charSeparation = 1); |
| yihui | 0:13728deac7a7 | 43 | |
| yihui | 0:13728deac7a7 | 44 | /** |
| Bobty | 2:cd2da920cf98 | 45 | * draw a point - origin is like a graph with 0,0 at the lower-left corner |
| yihui | 0:13728deac7a7 | 46 | * @param x x |
| yihui | 0:13728deac7a7 | 47 | * @param y y |
| yihui | 0:13728deac7a7 | 48 | * @param pixel 0: led off, >0: led on |
| yihui | 0:13728deac7a7 | 49 | */ |
| yihui | 0:13728deac7a7 | 50 | void drawPoint(uint16_t x, uint16_t y, uint8_t pixel); |
| yihui | 0:13728deac7a7 | 51 | |
| yihui | 0:13728deac7a7 | 52 | /** |
| Bobty | 2:cd2da920cf98 | 53 | * draw a rect - origin is like a graph with 0,0 at the lower-left corner |
| yihui | 0:13728deac7a7 | 54 | * @param (x1, y1) top-left position |
| yihui | 0:13728deac7a7 | 55 | * @param (x2, y2) bottom-right position, not included in the rect |
| yihui | 0:13728deac7a7 | 56 | * @param pixel 0: rect off, >0: rect on |
| yihui | 0:13728deac7a7 | 57 | */ |
| yihui | 0:13728deac7a7 | 58 | void drawRect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t pixel); |
| yihui | 0:13728deac7a7 | 59 | |
| yihui | 0:13728deac7a7 | 60 | /** |
| yihui | 0:13728deac7a7 | 61 | * draw a image |
| yihui | 0:13728deac7a7 | 62 | * @param (x1, y1) top-left position |
| yihui | 0:13728deac7a7 | 63 | * @param (x2, y2) bottom-right position, not included in the rect |
| yihui | 0:13728deac7a7 | 64 | * @param pixels contents, 1 bit to 1 led |
| yihui | 0:13728deac7a7 | 65 | */ |
| yihui | 0:13728deac7a7 | 66 | void drawImage(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t *image); |
| yihui | 0:13728deac7a7 | 67 | |
| yihui | 0:13728deac7a7 | 68 | /** |
| yihui | 0:13728deac7a7 | 69 | * turn off 1/16 leds and turn on another 1/16 leds |
| yihui | 0:13728deac7a7 | 70 | */ |
| yihui | 0:13728deac7a7 | 71 | void scan(); |
| yihui | 0:13728deac7a7 | 72 | |
| Bobty | 2:cd2da920cf98 | 73 | void invertColour(); |
| yihui | 0:13728deac7a7 | 74 | |
| Bobty | 2:cd2da920cf98 | 75 | uint8_t isInvertedColour(); |
| yihui | 0:13728deac7a7 | 76 | |
| yihui | 0:13728deac7a7 | 77 | void on(); |
| yihui | 0:13728deac7a7 | 78 | |
| yihui | 0:13728deac7a7 | 79 | void off(); |
| Bobty | 1:79cf2e115449 | 80 | |
| Bobty | 2:cd2da920cf98 | 81 | // Passing lineIdx == -1 to the following functions resets all lines |
| Bobty | 2:cd2da920cf98 | 82 | // Lines are numbered starting at 0 |
| Bobty | 2:cd2da920cf98 | 83 | void clear(int lineIdx = -1); |
| Bobty | 2:cd2da920cf98 | 84 | void scroll(int lineIdx, bool scrollLeft); |
| Bobty | 2:cd2da920cf98 | 85 | void scrollReset(int lineIdx = -1); |
| Bobty | 2:cd2da920cf98 | 86 | void scrollToPos(int lineIdx, int pos); |
| Bobty | 2:cd2da920cf98 | 87 | void setupScroll(int lineIdx, int scrollWidth, int scrollInc); |
| yihui | 0:13728deac7a7 | 88 | |
| Bobty | 2:cd2da920cf98 | 89 | uint8_t reverseBits(uint8_t b); |
| Bobty | 2:cd2da920cf98 | 90 | int displayChar(int xPos, int yPos, char ch); |
| Bobty | 2:cd2da920cf98 | 91 | int displayLargeDigit(int curX, int curY, char ch); |
| Bobty | 2:cd2da920cf98 | 92 | int displayLine(int lineIdx, const char* line); |
| Bobty | 2:cd2da920cf98 | 93 | |
| Bobty | 2:cd2da920cf98 | 94 | // Called frequently and regularly to handle effects like scrolling |
| Bobty | 2:cd2da920cf98 | 95 | void serviceEffects(); |
| Bobty | 2:cd2da920cf98 | 96 | |
| yihui | 0:13728deac7a7 | 97 | private: |
| Bobty | 2:cd2da920cf98 | 98 | bool getRowsToWorkOn(int lineIdx, int &startRow, int &numRows); |
| yihui | 0:13728deac7a7 | 99 | DigitalOut a, b, c, d, oe, r1, stb, clk; |
| Bobty | 2:cd2da920cf98 | 100 | uint8_t *_pDisplayBuf; |
| yihui | 0:13728deac7a7 | 101 | uint16_t width; |
| yihui | 0:13728deac7a7 | 102 | uint16_t height; |
| Bobty | 2:cd2da920cf98 | 103 | uint16_t dispBufWidth; |
| Bobty | 2:cd2da920cf98 | 104 | uint16_t numLines; |
| yihui | 0:13728deac7a7 | 105 | uint8_t mask; |
| Bobty | 2:cd2da920cf98 | 106 | bool _isEnabled; |
| Bobty | 2:cd2da920cf98 | 107 | int _hScrollPos[LED_MATRIX_LEDS_VERTICALLY]; |
| Bobty | 2:cd2da920cf98 | 108 | int _hScrollWidth[LED_MATRIX_LEDS_VERTICALLY]; |
| Bobty | 2:cd2da920cf98 | 109 | bool _isBusy; |
| Bobty | 2:cd2da920cf98 | 110 | int _charSeparation; |
| Bobty | 2:cd2da920cf98 | 111 | int _lineScrollInc[LED_MATRIX_MAX_LINES]; |
| yihui | 0:13728deac7a7 | 112 | }; |
| yihui | 0:13728deac7a7 | 113 | |
| yihui | 0:13728deac7a7 | 114 | #endif |
