displaying on SSD1306, 128x64 pixels OLED

Dependencies:   microbit

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?

UserRevisionLine numberNew 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