displaying on SSD1306, 128x64 pixels OLED
Display.h@8:5972683a7190, 2020-02-24 (annotated)
- Committer:
- bvirk
- Date:
- Mon Feb 24 18:31:22 2020 +0000
- Revision:
- 8:5972683a7190
- Parent:
- 7:7b225c565fe6
- Child:
- 10:8bf77efd1579
class header doc copied to cpp files
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bvirk | 6:c69f08f464b5 | 1 | #include "MicroBit.h" |
bvirk | 6:c69f08f464b5 | 2 | #include "MicroBitDisplay.h" |
bvirk | 6:c69f08f464b5 | 3 | |
bvirk | 6:c69f08f464b5 | 4 | #ifndef microbitOLED_Display |
bvirk | 6:c69f08f464b5 | 5 | #define microbitOLED_Display |
bvirk | 6:c69f08f464b5 | 6 | |
bvirk | 8:5972683a7190 | 7 | /** |
bvirk | 8:5972683a7190 | 8 | * Constructer takes five 5bit and a being true 'showing left column' |
bvirk | 8:5972683a7190 | 9 | * parameters for the led display. |
bvirk | 8:5972683a7190 | 10 | */ |
bvirk | 6:c69f08f464b5 | 11 | struct Ledrows { |
bvirk | 6:c69f08f464b5 | 12 | union { |
bvirk | 6:c69f08f464b5 | 13 | struct { |
bvirk | 6:c69f08f464b5 | 14 | int r0:5; |
bvirk | 6:c69f08f464b5 | 15 | int r1:5; |
bvirk | 6:c69f08f464b5 | 16 | int r2:5; |
bvirk | 6:c69f08f464b5 | 17 | int r3:5; |
bvirk | 6:c69f08f464b5 | 18 | int r4:5; }; |
bvirk | 6:c69f08f464b5 | 19 | int all; }; |
bvirk | 6:c69f08f464b5 | 20 | Ledrows(uint8_t lr0,uint8_t lr1,uint8_t lr2,uint8_t lr3,uint8_t lr4, bool b15On) |
bvirk | 6:c69f08f464b5 | 21 | : r0(lr0),r1(lr1),r2(lr2),r3(lr3),r4(lr4) { |
bvirk | 6:c69f08f464b5 | 22 | if (b15On) all |= 0x01084210; } |
bvirk | 6:c69f08f464b5 | 23 | |
bvirk | 6:c69f08f464b5 | 24 | }; |
bvirk | 6:c69f08f464b5 | 25 | |
bvirk | 6:c69f08f464b5 | 26 | |
bvirk | 6:c69f08f464b5 | 27 | /** |
bvirk | 6:c69f08f464b5 | 28 | * Use Microbit 5x5 led display in various output communications |
bvirk | 8:5972683a7190 | 29 | * It deals with display in DISPLAY_MODE_BLACK_AND_WHITE mode |
bvirk | 6:c69f08f464b5 | 30 | */ |
bvirk | 6:c69f08f464b5 | 31 | class Display { |
bvirk | 6:c69f08f464b5 | 32 | |
bvirk | 6:c69f08f464b5 | 33 | /** |
bvirk | 6:c69f08f464b5 | 34 | * Representation the 25 leds, counting from right bottom and continuing |
bvirk | 6:c69f08f464b5 | 35 | * from right on each row above. Light on is the pixel value 1 or true |
bvirk | 8:5972683a7190 | 36 | * Writting to the display is writting to this buffer AND the display only |
bvirk | 8:5972683a7190 | 37 | * if a value is changed - this demands clearing the display is clearing this |
bvirk | 8:5972683a7190 | 38 | * buffer prior uDisplay.image.clear();; |
bvirk | 6:c69f08f464b5 | 39 | */ |
bvirk | 6:c69f08f464b5 | 40 | bool stick[25]; |
bvirk | 6:c69f08f464b5 | 41 | MicroBitDisplay & uDisplay; |
bvirk | 6:c69f08f464b5 | 42 | union { // context dependt trueshowing aliases |
bvirk | 6:c69f08f464b5 | 43 | uint8_t curLength; |
bvirk | 6:c69f08f464b5 | 44 | uint8_t rowNr; }; |
bvirk | 6:c69f08f464b5 | 45 | uint32_t showbit; |
bvirk | 6:c69f08f464b5 | 46 | |
bvirk | 6:c69f08f464b5 | 47 | public: |
bvirk | 8:5972683a7190 | 48 | |
bvirk | 8:5972683a7190 | 49 | /** |
bvirk | 8:5972683a7190 | 50 | * When constructed from MicroBit's MicroBitDisplay of a not yet initialized |
bvirk | 8:5972683a7190 | 51 | * MicroBit object - that must be done before using the Display instance. |
bvirk | 8:5972683a7190 | 52 | */ |
bvirk | 6:c69f08f464b5 | 53 | Display(MicroBitDisplay & uDpl); |
bvirk | 6:c69f08f464b5 | 54 | |
bvirk | 6:c69f08f464b5 | 55 | /** |
bvirk | 8:5972683a7190 | 56 | * clears the display and is buffer |
bvirk | 6:c69f08f464b5 | 57 | */ |
bvirk | 7:7b225c565fe6 | 58 | void clear(); |
bvirk | 6:c69f08f464b5 | 59 | |
bvirk | 6:c69f08f464b5 | 60 | /** |
bvirk | 6:c69f08f464b5 | 61 | * the stick is a binary representaion of the led display |
bvirk | 6:c69f08f464b5 | 62 | * @param size in range [0,24] |
bvirk | 6:c69f08f464b5 | 63 | */ |
bvirk | 6:c69f08f464b5 | 64 | void setStick(uint8_t size); |
bvirk | 6:c69f08f464b5 | 65 | |
bvirk | 6:c69f08f464b5 | 66 | /** |
bvirk | 6:c69f08f464b5 | 67 | * Set a single dot |
bvirk | 6:c69f08f464b5 | 68 | * |
bvirk | 6:c69f08f464b5 | 69 | * @param position in [0,24] for showing that single dot. |
bvirk | 6:c69f08f464b5 | 70 | */ |
bvirk | 6:c69f08f464b5 | 71 | void setFlag(uint8_t position); |
bvirk | 6:c69f08f464b5 | 72 | |
bvirk | 6:c69f08f464b5 | 73 | /** |
bvirk | 6:c69f08f464b5 | 74 | * Puts a bitpattern in a row |
bvirk | 6:c69f08f464b5 | 75 | * |
bvirk | 6:c69f08f464b5 | 76 | * @param rowNr in [0,4] for selected row |
bvirk | 6:c69f08f464b5 | 77 | * @param rowContent in [0,31] to be shown binary |
bvirk | 6:c69f08f464b5 | 78 | */ |
bvirk | 6:c69f08f464b5 | 79 | void toRow(uint8_t rowNr, uint8_t rowContent); |
bvirk | 6:c69f08f464b5 | 80 | |
bvirk | 6:c69f08f464b5 | 81 | /** |
bvirk | 6:c69f08f464b5 | 82 | * 25 bits showed in display as a whole. |
bvirk | 6:c69f08f464b5 | 83 | * |
bvirk | 6:c69f08f464b5 | 84 | * @param allBits contains the 25 bit to be showed |
bvirk | 6:c69f08f464b5 | 85 | */ |
bvirk | 6:c69f08f464b5 | 86 | void toRows(uint32_t allBits); |
bvirk | 6:c69f08f464b5 | 87 | |
bvirk | 6:c69f08f464b5 | 88 | /** |
bvirk | 6:c69f08f464b5 | 89 | * Vertdecimal is intended for showing a single number in [00000,99999], |
bvirk | 6:c69f08f464b5 | 90 | * vertical read from top to bottom. |
bvirk | 6:c69f08f464b5 | 91 | * |
bvirk | 6:c69f08f464b5 | 92 | * @param r0 bottom row - row 0 |
bvirk | 6:c69f08f464b5 | 93 | * @param r1 row 1 |
bvirk | 6:c69f08f464b5 | 94 | * @param r2 row 2 |
bvirk | 6:c69f08f464b5 | 95 | * @param r3 row 3 |
bvirk | 6:c69f08f464b5 | 96 | * @param r4 top row - row 4 |
bvirk | 6:c69f08f464b5 | 97 | */ |
bvirk | 6:c69f08f464b5 | 98 | void vertDecimal(uint8_t r0,uint8_t r1,uint8_t r2,uint8_t r3,uint8_t r4); |
bvirk | 6:c69f08f464b5 | 99 | |
bvirk | 6:c69f08f464b5 | 100 | /** |
bvirk | 6:c69f08f464b5 | 101 | * Vertdecimal is intended for showing a single number in [00000,99999], |
bvirk | 6:c69f08f464b5 | 102 | * vertical read from top to bottom. |
bvirk | 6:c69f08f464b5 | 103 | * |
bvirk | 6:c69f08f464b5 | 104 | * |
bvirk | 6:c69f08f464b5 | 105 | * @param r0 bottom row - row 0 |
bvirk | 6:c69f08f464b5 | 106 | * @param r1 row 1 |
bvirk | 6:c69f08f464b5 | 107 | * @param r2 row 2 |
bvirk | 6:c69f08f464b5 | 108 | * @param r3 row 3 |
bvirk | 6:c69f08f464b5 | 109 | * @param r4 top row - row 4 |
bvirk | 6:c69f08f464b5 | 110 | * @param leftDotOn turns left dot on. leftdot is not used to represent a digit in base 10 numbers. |
bvirk | 6:c69f08f464b5 | 111 | */ |
bvirk | 6:c69f08f464b5 | 112 | void vertDecimal(uint8_t r0,uint8_t r1,uint8_t r2,uint8_t r3,uint8_t r4, bool leftDotOn); |
bvirk | 6:c69f08f464b5 | 113 | |
bvirk | 6:c69f08f464b5 | 114 | /** |
bvirk | 6:c69f08f464b5 | 115 | * binary Clock, hours in top rows (4 for multiplum of 10, 3 for remainer) |
bvirk | 6:c69f08f464b5 | 116 | * minuts in bottom rows (1 for multiplum of 10, 0 for remainer) |
bvirk | 6:c69f08f464b5 | 117 | * |
bvirk | 6:c69f08f464b5 | 118 | * @param minuts of the day |
bvirk | 6:c69f08f464b5 | 119 | */ |
bvirk | 6:c69f08f464b5 | 120 | void vertClock(uint16_t minuts); |
bvirk | 6:c69f08f464b5 | 121 | |
bvirk | 6:c69f08f464b5 | 122 | /** |
bvirk | 6:c69f08f464b5 | 123 | * binary Clock, hours in top rows (4) |
bvirk | 6:c69f08f464b5 | 124 | * minuts in rows 3 and 2 (3 for multiplum of 10, 2 for remainer) |
bvirk | 6:c69f08f464b5 | 125 | * seconds in rows 1 and 0 (1 for multiplum of 10, 0 for remainer) |
bvirk | 6:c69f08f464b5 | 126 | * @param second of the day |
bvirk | 6:c69f08f464b5 | 127 | */ |
bvirk | 6:c69f08f464b5 | 128 | void vertSecClock(uint32_t minuts); |
bvirk | 6:c69f08f464b5 | 129 | |
bvirk | 6:c69f08f464b5 | 130 | private: |
bvirk | 6:c69f08f464b5 | 131 | void paintStick(bool(Display::*getState)(uint8_t)); |
bvirk | 7:7b225c565fe6 | 132 | void clearStick(); |
bvirk | 6:c69f08f464b5 | 133 | bool bitplot(uint8_t num); |
bvirk | 6:c69f08f464b5 | 134 | bool simplePlot(uint8_t num); |
bvirk | 6:c69f08f464b5 | 135 | bool lessCurLength(uint8_t num); |
bvirk | 6:c69f08f464b5 | 136 | bool orPoint(uint8_t num); |
bvirk | 6:c69f08f464b5 | 137 | }; |
bvirk | 6:c69f08f464b5 | 138 | |
bvirk | 6:c69f08f464b5 | 139 | |
bvirk | 6:c69f08f464b5 | 140 | #endif |