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.
LEDMatrix.h@0:1deae5ffe9ed, 2012-02-13 (annotated)
- Committer:
- EricWieser
- Date:
- Mon Feb 13 22:19:58 2012 +0000
- Revision:
- 0:1deae5ffe9ed
- Child:
- 1:44819562ea31
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| EricWieser | 0:1deae5ffe9ed | 1 | #include "mbed.h" |
| EricWieser | 0:1deae5ffe9ed | 2 | #include "Locations.h" |
| EricWieser | 0:1deae5ffe9ed | 3 | #include "Matrix.h" |
| EricWieser | 0:1deae5ffe9ed | 4 | |
| EricWieser | 0:1deae5ffe9ed | 5 | template <int WIDTH, int HEIGHT> class LEDMatrix : public Matrix<bool> { |
| EricWieser | 0:1deae5ffe9ed | 6 | private: |
| EricWieser | 0:1deae5ffe9ed | 7 | DigitalOut* _rows; |
| EricWieser | 0:1deae5ffe9ed | 8 | DigitalOut* _colClk; |
| EricWieser | 0:1deae5ffe9ed | 9 | DigitalOut* _colReset; |
| EricWieser | 0:1deae5ffe9ed | 10 | int _usPerColumn; |
| EricWieser | 0:1deae5ffe9ed | 11 | |
| EricWieser | 0:1deae5ffe9ed | 12 | //Column control |
| EricWieser | 0:1deae5ffe9ed | 13 | void firstColumn() { |
| EricWieser | 0:1deae5ffe9ed | 14 | *_colReset = 1; |
| EricWieser | 0:1deae5ffe9ed | 15 | wait_us(10); |
| EricWieser | 0:1deae5ffe9ed | 16 | *_colReset = 0; |
| EricWieser | 0:1deae5ffe9ed | 17 | } |
| EricWieser | 0:1deae5ffe9ed | 18 | void nextColumn() { |
| EricWieser | 0:1deae5ffe9ed | 19 | *_colClk = 1; |
| EricWieser | 0:1deae5ffe9ed | 20 | wait_us(10); |
| EricWieser | 0:1deae5ffe9ed | 21 | *_colClk = 0; |
| EricWieser | 0:1deae5ffe9ed | 22 | } |
| EricWieser | 0:1deae5ffe9ed | 23 | void showColumn(int c) { |
| EricWieser | 0:1deae5ffe9ed | 24 | bool* col = column(WIDTH - 1 - c); |
| EricWieser | 0:1deae5ffe9ed | 25 | for(int i = 0; i < HEIGHT; i++) { |
| EricWieser | 0:1deae5ffe9ed | 26 | _rows[i] = col[HEIGHT - 1 - i]; |
| EricWieser | 0:1deae5ffe9ed | 27 | } |
| EricWieser | 0:1deae5ffe9ed | 28 | delete [] col; |
| EricWieser | 0:1deae5ffe9ed | 29 | } |
| EricWieser | 0:1deae5ffe9ed | 30 | void hideColumn(int c) { |
| EricWieser | 0:1deae5ffe9ed | 31 | for(int i = 0; i < HEIGHT; i++) { |
| EricWieser | 0:1deae5ffe9ed | 32 | _rows[i] = false; |
| EricWieser | 0:1deae5ffe9ed | 33 | } |
| EricWieser | 0:1deae5ffe9ed | 34 | } |
| EricWieser | 0:1deae5ffe9ed | 35 | public: |
| EricWieser | 0:1deae5ffe9ed | 36 | LEDMatrix(DigitalOut rows[HEIGHT], DigitalOut* colClk, DigitalOut* colReset, int usPerFrame) : |
| EricWieser | 0:1deae5ffe9ed | 37 | Matrix<bool>(WIDTH, HEIGHT), _rows(rows), _colClk(colClk), _colReset(colReset) { |
| EricWieser | 0:1deae5ffe9ed | 38 | clear(); |
| EricWieser | 0:1deae5ffe9ed | 39 | firstColumn(); |
| EricWieser | 0:1deae5ffe9ed | 40 | _usPerColumn = usPerFrame / WIDTH; |
| EricWieser | 0:1deae5ffe9ed | 41 | } |
| EricWieser | 0:1deae5ffe9ed | 42 | |
| EricWieser | 0:1deae5ffe9ed | 43 | void redraw() { |
| EricWieser | 0:1deae5ffe9ed | 44 | firstColumn(); |
| EricWieser | 0:1deae5ffe9ed | 45 | for (int col = 0; col < WIDTH; col++) { |
| EricWieser | 0:1deae5ffe9ed | 46 | nextColumn(); |
| EricWieser | 0:1deae5ffe9ed | 47 | showColumn(col); |
| EricWieser | 0:1deae5ffe9ed | 48 | wait_us(_usPerColumn); |
| EricWieser | 0:1deae5ffe9ed | 49 | hideColumn(col); |
| EricWieser | 0:1deae5ffe9ed | 50 | } |
| EricWieser | 0:1deae5ffe9ed | 51 | } |
| EricWieser | 0:1deae5ffe9ed | 52 | }; |