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