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.
Dependencies: mbed
Fork of el17ajf by
Graphics/Graphics.cpp@15:afeefa3ceb61, 2019-03-19 (annotated)
- Committer:
- el17ajf
- Date:
- Tue Mar 19 10:36:51 2019 +0000
- Revision:
- 15:afeefa3ceb61
- Parent:
- 14:53d2167d7c9a
- Child:
- 16:3f84f2d7b910
added switch debouncing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el17ajf | 5:3efbdcb3efaf | 1 | #include "Graphics.h" |
el17ajf | 5:3efbdcb3efaf | 2 | |
el17ajf | 14:53d2167d7c9a | 3 | namespace Graphics { |
el17ajf | 14:53d2167d7c9a | 4 | const int SCREEN_HEIGHT = 84; |
el17ajf | 14:53d2167d7c9a | 5 | const int SCREEN_WIDTH = 48; |
el17ajf | 14:53d2167d7c9a | 6 | const int BLOCK_SIZE = 4; |
el17ajf | 14:53d2167d7c9a | 7 | const int BORDER_SIZE = 2; |
el17ajf | 14:53d2167d7c9a | 8 | |
el17ajf | 14:53d2167d7c9a | 9 | N5110 * lcd; |
el17ajf | 14:53d2167d7c9a | 10 | |
el17ajf | 14:53d2167d7c9a | 11 | // "private" methods |
el17ajf | 14:53d2167d7c9a | 12 | void drawPoint(int x, int y); |
el17ajf | 14:53d2167d7c9a | 13 | void drawLine(int x1, int y1, int x2, int y2); |
el17ajf | 14:53d2167d7c9a | 14 | void drawBox(int x1, int y1, int x2, int y2); |
el17ajf | 14:53d2167d7c9a | 15 | void drawDottedLine(int x1, int y1, int x2, int y2); |
el17ajf | 14:53d2167d7c9a | 16 | int gridYToScreenX(int grid_y); |
el17ajf | 14:53d2167d7c9a | 17 | int gridXToScreenY(int grid_x); |
el17ajf | 14:53d2167d7c9a | 18 | |
el17ajf | 14:53d2167d7c9a | 19 | void init() { |
el17ajf | 14:53d2167d7c9a | 20 | lcd = new N5110(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
el17ajf | 14:53d2167d7c9a | 21 | lcd->init(); |
el17ajf | 14:53d2167d7c9a | 22 | lcd->setContrast(0.5); |
el17ajf | 14:53d2167d7c9a | 23 | lcd->setBrightness(0); |
el17ajf | 14:53d2167d7c9a | 24 | } |
el17ajf | 14:53d2167d7c9a | 25 | |
el17ajf | 14:53d2167d7c9a | 26 | void deinit() { |
el17ajf | 14:53d2167d7c9a | 27 | delete lcd; |
el17ajf | 14:53d2167d7c9a | 28 | } |
el17ajf | 14:53d2167d7c9a | 29 | |
el17ajf | 14:53d2167d7c9a | 30 | void clear() { |
el17ajf | 14:53d2167d7c9a | 31 | lcd->clear(); |
el17ajf | 14:53d2167d7c9a | 32 | } |
el17ajf | 14:53d2167d7c9a | 33 | |
el17ajf | 14:53d2167d7c9a | 34 | void render() { |
el17ajf | 14:53d2167d7c9a | 35 | lcd->refresh(); |
el17ajf | 14:53d2167d7c9a | 36 | } |
el17ajf | 14:53d2167d7c9a | 37 | |
el17ajf | 14:53d2167d7c9a | 38 | void drawPoint(int x, int y) { |
el17ajf | 14:53d2167d7c9a | 39 | lcd->setPixel(x, y, true); |
el17ajf | 14:53d2167d7c9a | 40 | } |
el17ajf | 14:53d2167d7c9a | 41 | |
el17ajf | 14:53d2167d7c9a | 42 | void drawLine(int x1, int y1, int x2, int y2) { |
el17ajf | 14:53d2167d7c9a | 43 | lcd->drawLine(x1, y1, x2, y2, 1); |
el17ajf | 14:53d2167d7c9a | 44 | } |
el17ajf | 5:3efbdcb3efaf | 45 | |
el17ajf | 14:53d2167d7c9a | 46 | void drawDottedLine(int x1, int y1, int x2, int y2) { |
el17ajf | 14:53d2167d7c9a | 47 | lcd->drawLine( |
el17ajf | 15:afeefa3ceb61 | 48 | y1,// f(0) -> S_W - 1, f(S_W - 1) = 0 |
el17ajf | 15:afeefa3ceb61 | 49 | (SCREEN_WIDTH - 1) - x1, |
el17ajf | 15:afeefa3ceb61 | 50 | y2, |
el17ajf | 15:afeefa3ceb61 | 51 | (SCREEN_WIDTH - 1) - x2, |
el17ajf | 14:53d2167d7c9a | 52 | 2 // dotted |
el17ajf | 14:53d2167d7c9a | 53 | ); |
el17ajf | 14:53d2167d7c9a | 54 | } |
el17ajf | 14:53d2167d7c9a | 55 | |
el17ajf | 14:53d2167d7c9a | 56 | void drawBox(int x1, int y1, int x2, int y2) { |
el17ajf | 14:53d2167d7c9a | 57 | drawLine(x1, y1, x2, y1); |
el17ajf | 14:53d2167d7c9a | 58 | drawLine(x2, y1, x2, y2); |
el17ajf | 14:53d2167d7c9a | 59 | drawLine(x2, y2, x1, y2); |
el17ajf | 14:53d2167d7c9a | 60 | drawLine(x1, y2, x1, y1); |
el17ajf | 14:53d2167d7c9a | 61 | } |
el17ajf | 8:5066ce13a430 | 62 | |
el17ajf | 14:53d2167d7c9a | 63 | void drawBlock(int grid_x, int grid_y) { |
el17ajf | 14:53d2167d7c9a | 64 | // screen coords |
el17ajf | 14:53d2167d7c9a | 65 | int x = gridYToScreenX(grid_y); |
el17ajf | 14:53d2167d7c9a | 66 | int y = gridXToScreenY(grid_x); |
el17ajf | 14:53d2167d7c9a | 67 | drawBox(x, y, x + 3, y - 3); |
el17ajf | 14:53d2167d7c9a | 68 | drawPoint(x + 2, y - 2); |
el17ajf | 14:53d2167d7c9a | 69 | } |
el17ajf | 14:53d2167d7c9a | 70 | |
el17ajf | 14:53d2167d7c9a | 71 | void drawBorder() { |
el17ajf | 15:afeefa3ceb61 | 72 | drawDottedLine(0, 0, 0, SCREEN_HEIGHT - 1); // |
el17ajf | 14:53d2167d7c9a | 73 | drawDottedLine(1, 1, 1, SCREEN_HEIGHT - 2); |
el17ajf | 14:53d2167d7c9a | 74 | |
el17ajf | 15:afeefa3ceb61 | 75 | drawDottedLine(0, SCREEN_HEIGHT - 1, SCREEN_WIDTH - 1 - 5, SCREEN_HEIGHT - 1); |
el17ajf | 15:afeefa3ceb61 | 76 | drawDottedLine(1, SCREEN_HEIGHT - 2, SCREEN_WIDTH - 2 - 5, SCREEN_HEIGHT - 2); |
el17ajf | 14:53d2167d7c9a | 77 | |
el17ajf | 15:afeefa3ceb61 | 78 | drawDottedLine(SCREEN_WIDTH - 1 - 5, SCREEN_HEIGHT - 1, SCREEN_WIDTH - 1 - 5, 0); |
el17ajf | 15:afeefa3ceb61 | 79 | drawDottedLine(SCREEN_WIDTH - 2 - 5, SCREEN_HEIGHT - 2, SCREEN_WIDTH - 2 - 5, 1); |
el17ajf | 14:53d2167d7c9a | 80 | } |
el17ajf | 14:53d2167d7c9a | 81 | |
el17ajf | 14:53d2167d7c9a | 82 | int gridYToScreenX(int grid_y) { |
el17ajf | 14:53d2167d7c9a | 83 | return grid_y * BLOCK_SIZE + BORDER_SIZE; |
el17ajf | 14:53d2167d7c9a | 84 | } |
el17ajf | 14:53d2167d7c9a | 85 | |
el17ajf | 14:53d2167d7c9a | 86 | int gridXToScreenY(int grid_x) { |
el17ajf | 14:53d2167d7c9a | 87 | return SCREEN_WIDTH - (grid_x * BLOCK_SIZE) - BORDER_SIZE; |
el17ajf | 14:53d2167d7c9a | 88 | } |
el17ajf | 14:53d2167d7c9a | 89 | }; |