Added HangmanGame class, but does not work yet
Dependencies: SDFileSystem app epson mbed msp430 pl tests
pageoled.cpp@1:a5ec6f9dcf0d, 2017-12-04 (annotated)
- Committer:
- markpsymonds
- Date:
- Mon Dec 04 20:15:18 2017 +0000
- Revision:
- 1:a5ec6f9dcf0d
- Parent:
- 0:fa7450a43b99
Fixed most compile issues in hangman.cpp/.h.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
group-FlexBook | 0:fa7450a43b99 | 1 | // |
group-FlexBook | 0:fa7450a43b99 | 2 | // Filename: pageoled.cpp |
group-FlexBook | 0:fa7450a43b99 | 3 | // |
group-FlexBook | 0:fa7450a43b99 | 4 | // Flexbook page for page A3. |
group-FlexBook | 0:fa7450a43b99 | 5 | // |
group-FlexBook | 0:fa7450a43b99 | 6 | |
group-FlexBook | 0:fa7450a43b99 | 7 | #include "pageoled.h" |
group-FlexBook | 0:fa7450a43b99 | 8 | #include "pagesensor.h" |
group-FlexBook | 0:fa7450a43b99 | 9 | |
group-FlexBook | 0:fa7450a43b99 | 10 | #include "log.h" |
group-FlexBook | 0:fa7450a43b99 | 11 | |
group-FlexBook | 0:fa7450a43b99 | 12 | #include <iostream> |
group-FlexBook | 0:fa7450a43b99 | 13 | |
group-FlexBook | 0:fa7450a43b99 | 14 | namespace Flexbook { |
group-FlexBook | 0:fa7450a43b99 | 15 | |
group-FlexBook | 0:fa7450a43b99 | 16 | PageOLED::PageOLED() |
group-FlexBook | 0:fa7450a43b99 | 17 | : data(p9), clock(p10), strobe(p11), enable(p12) |
group-FlexBook | 0:fa7450a43b99 | 18 | { |
group-FlexBook | 0:fa7450a43b99 | 19 | Log("Creating PageOLED"); |
group-FlexBook | 0:fa7450a43b99 | 20 | |
group-FlexBook | 0:fa7450a43b99 | 21 | data = 0; |
group-FlexBook | 0:fa7450a43b99 | 22 | clock = 0; |
group-FlexBook | 0:fa7450a43b99 | 23 | strobe = 0; |
group-FlexBook | 0:fa7450a43b99 | 24 | enable = 1; |
group-FlexBook | 0:fa7450a43b99 | 25 | |
group-FlexBook | 0:fa7450a43b99 | 26 | Write(0xffffffffffff); |
group-FlexBook | 0:fa7450a43b99 | 27 | wait(1.0); |
group-FlexBook | 0:fa7450a43b99 | 28 | |
group-FlexBook | 0:fa7450a43b99 | 29 | // test case follows |
group-FlexBook | 0:fa7450a43b99 | 30 | //Write(Translate(0,0,1,2,3,10)); |
group-FlexBook | 0:fa7450a43b99 | 31 | //wait(2.0); |
group-FlexBook | 0:fa7450a43b99 | 32 | |
group-FlexBook | 0:fa7450a43b99 | 33 | /* |
group-FlexBook | 0:fa7450a43b99 | 34 | for (int i=0; i<200; i++) { |
group-FlexBook | 0:fa7450a43b99 | 35 | Write(Translate(0,0,0,0,0,i % 6)); |
group-FlexBook | 0:fa7450a43b99 | 36 | if (i<120) wait_ms(30); |
group-FlexBook | 0:fa7450a43b99 | 37 | else wait_ms(i); |
group-FlexBook | 0:fa7450a43b99 | 38 | } |
group-FlexBook | 0:fa7450a43b99 | 39 | |
group-FlexBook | 0:fa7450a43b99 | 40 | |
group-FlexBook | 0:fa7450a43b99 | 41 | for (int i=0; i<600; i++) { |
group-FlexBook | 0:fa7450a43b99 | 42 | Write(Translate(i%6,i%6,0,0,i*7%6,i%10)); |
group-FlexBook | 0:fa7450a43b99 | 43 | wait(0.5); |
group-FlexBook | 0:fa7450a43b99 | 44 | } |
group-FlexBook | 0:fa7450a43b99 | 45 | |
group-FlexBook | 0:fa7450a43b99 | 46 | uint64_t oledpixels = 63; |
group-FlexBook | 0:fa7450a43b99 | 47 | for(int i=0; i<43; i++) { |
group-FlexBook | 0:fa7450a43b99 | 48 | Write(oledpixels); |
group-FlexBook | 0:fa7450a43b99 | 49 | oledpixels = 1 + (oledpixels * 2); |
group-FlexBook | 0:fa7450a43b99 | 50 | wait(0.5); |
group-FlexBook | 0:fa7450a43b99 | 51 | } |
group-FlexBook | 0:fa7450a43b99 | 52 | |
group-FlexBook | 0:fa7450a43b99 | 53 | wait(5.0); |
group-FlexBook | 0:fa7450a43b99 | 54 | */ |
group-FlexBook | 0:fa7450a43b99 | 55 | // test case ends |
group-FlexBook | 0:fa7450a43b99 | 56 | |
group-FlexBook | 0:fa7450a43b99 | 57 | Write(0x000000000000); |
group-FlexBook | 0:fa7450a43b99 | 58 | } |
group-FlexBook | 0:fa7450a43b99 | 59 | |
group-FlexBook | 0:fa7450a43b99 | 60 | PageOLED::~PageOLED() |
group-FlexBook | 0:fa7450a43b99 | 61 | { |
group-FlexBook | 0:fa7450a43b99 | 62 | Log("Deleting PageOLED"); |
group-FlexBook | 0:fa7450a43b99 | 63 | } |
group-FlexBook | 0:fa7450a43b99 | 64 | |
group-FlexBook | 0:fa7450a43b99 | 65 | // Write data to OLED. |
group-FlexBook | 0:fa7450a43b99 | 66 | void PageOLED::Write(uint64_t writedata) |
group-FlexBook | 0:fa7450a43b99 | 67 | { |
group-FlexBook | 0:fa7450a43b99 | 68 | strobe = 1; |
group-FlexBook | 0:fa7450a43b99 | 69 | enable = 1; |
group-FlexBook | 0:fa7450a43b99 | 70 | |
group-FlexBook | 0:fa7450a43b99 | 71 | for(int bit = 0; bit < 48; bit++) |
group-FlexBook | 0:fa7450a43b99 | 72 | { |
group-FlexBook | 0:fa7450a43b99 | 73 | data = writedata & 1; |
group-FlexBook | 0:fa7450a43b99 | 74 | clock = 1; |
group-FlexBook | 0:fa7450a43b99 | 75 | writedata = writedata >> 1; |
group-FlexBook | 0:fa7450a43b99 | 76 | clock = 0; |
group-FlexBook | 0:fa7450a43b99 | 77 | } |
group-FlexBook | 0:fa7450a43b99 | 78 | |
group-FlexBook | 0:fa7450a43b99 | 79 | strobe = 0; |
group-FlexBook | 0:fa7450a43b99 | 80 | enable = 0; |
group-FlexBook | 0:fa7450a43b99 | 81 | } |
group-FlexBook | 0:fa7450a43b99 | 82 | |
group-FlexBook | 0:fa7450a43b99 | 83 | uint64_t PageOLED::Translate(char b1, char b2, char b3, char b4, char b5, char d1) |
group-FlexBook | 0:fa7450a43b99 | 84 | // b1..b5 should be a number 0..6 - the number of bars lit in each of the five bar graphs |
group-FlexBook | 0:fa7450a43b99 | 85 | // d1 should be a number 0..9 - and is displayed as a single digit |
group-FlexBook | 0:fa7450a43b99 | 86 | { |
group-FlexBook | 0:fa7450a43b99 | 87 | uint64_t result = 0; //start with 0, each addition only changes a single bit |
group-FlexBook | 0:fa7450a43b99 | 88 | |
group-FlexBook | 0:fa7450a43b99 | 89 | //create bit pattern for leftmost bar graph (No. 1) |
group-FlexBook | 0:fa7450a43b99 | 90 | if (b1>6) result = result + (0x010000000000); //bit 40 - not connected on new OLEDS |
group-FlexBook | 0:fa7450a43b99 | 91 | if (b1>5) result = result + (0x020000000000); //bit 41 |
group-FlexBook | 0:fa7450a43b99 | 92 | if (b1>4) result = result + (0x040000000000); //bit 42 |
group-FlexBook | 0:fa7450a43b99 | 93 | if (b1>3) result = result + (0x080000000000); //bit 43 |
group-FlexBook | 0:fa7450a43b99 | 94 | if (b1>2) result = result + (0x000800000000); //bit 35 |
group-FlexBook | 0:fa7450a43b99 | 95 | if (b1>1) result = result + (0x000400000000); //bit 34 |
group-FlexBook | 0:fa7450a43b99 | 96 | if (b1>0) result = result + (0x000200000000); //bit 33 |
group-FlexBook | 0:fa7450a43b99 | 97 | |
group-FlexBook | 0:fa7450a43b99 | 98 | //create bit pattern for second bar graph |
group-FlexBook | 0:fa7450a43b99 | 99 | if (b2>6) result = result + (0x000100000000); //bit 32 - not connected on new OLEDS |
group-FlexBook | 0:fa7450a43b99 | 100 | if (b2>5) result = result + (0x800000000000); //bit 47 |
group-FlexBook | 0:fa7450a43b99 | 101 | if (b2>4) result = result + (0x400000000000); //bit 46 |
group-FlexBook | 0:fa7450a43b99 | 102 | if (b2>3) result = result + (0x200000000000); //bit 45 |
group-FlexBook | 0:fa7450a43b99 | 103 | if (b2>2) result = result + (0x100000000000); //bit 44 |
group-FlexBook | 0:fa7450a43b99 | 104 | if (b2>1) result = result + (0x001000000000); //bit 36 |
group-FlexBook | 0:fa7450a43b99 | 105 | if (b2>0) result = result + (0x002000000000); //bit 37 |
group-FlexBook | 0:fa7450a43b99 | 106 | |
group-FlexBook | 0:fa7450a43b99 | 107 | //create bit pattern for third bar graph |
group-FlexBook | 0:fa7450a43b99 | 108 | if (b3>6) result = result + (0x004000000000); //bit 38 - not connected on new OLEDS |
group-FlexBook | 0:fa7450a43b99 | 109 | if (b3>5) result = result + (0x008000000000); //bit 39 |
group-FlexBook | 0:fa7450a43b99 | 110 | if (b3>4) result = result + (0x000001000000); //bit 24 |
group-FlexBook | 0:fa7450a43b99 | 111 | if (b3>3) result = result + (0x000002000000); //bit 25 |
group-FlexBook | 0:fa7450a43b99 | 112 | if (b3>2) result = result + (0x000004000000); //bit 26 |
group-FlexBook | 0:fa7450a43b99 | 113 | if (b3>1) result = result + (0x000008000000); //bit 27 |
group-FlexBook | 0:fa7450a43b99 | 114 | if (b3>0) result = result + (0x000000080000); //bit 19 |
group-FlexBook | 0:fa7450a43b99 | 115 | |
group-FlexBook | 0:fa7450a43b99 | 116 | //create bit pattern for fourth bar graph |
group-FlexBook | 0:fa7450a43b99 | 117 | if (b4>6) result = result + (0x000000040000); //bit 18 - not connected on new OLEDS |
group-FlexBook | 0:fa7450a43b99 | 118 | if (b4>5) result = result + (0x000000020000); //bit 17 |
group-FlexBook | 0:fa7450a43b99 | 119 | if (b4>4) result = result + (0x000000010000); //bit 16 |
group-FlexBook | 0:fa7450a43b99 | 120 | if (b4>3) result = result + (0x000080000000); //bit 31 |
group-FlexBook | 0:fa7450a43b99 | 121 | if (b4>2) result = result + (0x000040000000); //bit 30 |
group-FlexBook | 0:fa7450a43b99 | 122 | if (b4>1) result = result + (0x000020000000); //bit 29 |
group-FlexBook | 0:fa7450a43b99 | 123 | if (b4>0) result = result + (0x000010000000); //bit 28 |
group-FlexBook | 0:fa7450a43b99 | 124 | |
group-FlexBook | 0:fa7450a43b99 | 125 | //create bit pattern for fifth (rightmost) bar graph |
group-FlexBook | 0:fa7450a43b99 | 126 | if (b5>6) result = result + (0x000000100000); //bit 20 - not connected on new OLEDS |
group-FlexBook | 0:fa7450a43b99 | 127 | if (b5>5) result = result + (0x000000200000); //bit 21 |
group-FlexBook | 0:fa7450a43b99 | 128 | if (b5>4) result = result + (0x000000400000); //bit 22 |
group-FlexBook | 0:fa7450a43b99 | 129 | if (b5>3) result = result + (0x000000800000); //bit 23 |
group-FlexBook | 0:fa7450a43b99 | 130 | if (b5>2) result = result + (0x000000000100); //bit 8 |
group-FlexBook | 0:fa7450a43b99 | 131 | if (b5>1) result = result + (0x000000000200); //bit 9 |
group-FlexBook | 0:fa7450a43b99 | 132 | if (b5>0) result = result + (0x000000000400); //bit 10 |
group-FlexBook | 0:fa7450a43b99 | 133 | |
group-FlexBook | 0:fa7450a43b99 | 134 | //create bit pattern for digit - each digit needs multiple segments to be lit |
group-FlexBook | 0:fa7450a43b99 | 135 | //7 segments use bits 6, 7, 11, 12, 13, 14 and 15 |
group-FlexBook | 0:fa7450a43b99 | 136 | switch (d1) { |
group-FlexBook | 0:fa7450a43b99 | 137 | case 0: result = result + (0x01E3 << 6); break; //0001 1110 0011 |
group-FlexBook | 0:fa7450a43b99 | 138 | case 1: result = result + (0x0042 << 6); break; //0000 0100 0010 |
group-FlexBook | 0:fa7450a43b99 | 139 | case 2: result = result + (0x0383 << 6); break; //0011 1000 0011 |
group-FlexBook | 0:fa7450a43b99 | 140 | case 3: result = result + (0x02C3 << 6); break; //0010 1100 0011 |
group-FlexBook | 0:fa7450a43b99 | 141 | case 4: result = result + (0x0262 << 6); break; //0010 0110 0010 |
group-FlexBook | 0:fa7450a43b99 | 142 | case 5: result = result + (0x02E1 << 6); break; //0010 1110 0001 |
group-FlexBook | 0:fa7450a43b99 | 143 | case 6: result = result + (0x03E1 << 6); break; //0011 1110 0001 |
group-FlexBook | 0:fa7450a43b99 | 144 | case 7: result = result + (0x0043 << 6); break; //0000 0100 0011 |
group-FlexBook | 0:fa7450a43b99 | 145 | case 8: result = result + (0x03E3 << 6); break; //0011 1110 0011 |
group-FlexBook | 0:fa7450a43b99 | 146 | case 9: result = result + (0x02E3 << 6); break; //0010 1110 0011 |
group-FlexBook | 0:fa7450a43b99 | 147 | } |
group-FlexBook | 0:fa7450a43b99 | 148 | //Note least significant 6 bits (0..5) are not used |
group-FlexBook | 0:fa7450a43b99 | 149 | |
group-FlexBook | 0:fa7450a43b99 | 150 | return(result); |
group-FlexBook | 0:fa7450a43b99 | 151 | } |
group-FlexBook | 0:fa7450a43b99 | 152 | |
group-FlexBook | 0:fa7450a43b99 | 153 | void PageOLED::SensorPoll(const SensorData &sensordata) |
group-FlexBook | 0:fa7450a43b99 | 154 | { |
group-FlexBook | 0:fa7450a43b99 | 155 | Write(Translate(3,sensordata.temperature,4,sensordata.pressure,2,sensordata.pressure)); |
group-FlexBook | 0:fa7450a43b99 | 156 | //printf("%i \n", sensordata.temperature); |
group-FlexBook | 0:fa7450a43b99 | 157 | |
group-FlexBook | 0:fa7450a43b99 | 158 | } |
group-FlexBook | 0:fa7450a43b99 | 159 | |
group-FlexBook | 0:fa7450a43b99 | 160 | void PageOLED::DiceRoll(const int dicenr) |
group-FlexBook | 0:fa7450a43b99 | 161 | { |
group-FlexBook | 0:fa7450a43b99 | 162 | |
group-FlexBook | 0:fa7450a43b99 | 163 | } |
group-FlexBook | 0:fa7450a43b99 | 164 | |
group-FlexBook | 0:fa7450a43b99 | 165 | void PageOLED::HandlePageActions () |
group-FlexBook | 0:fa7450a43b99 | 166 | { |
group-FlexBook | 0:fa7450a43b99 | 167 | //Write(Translate(0,sensordata.temperature,0,sensordata.pressure,0,3)); |
group-FlexBook | 0:fa7450a43b99 | 168 | Log("OLED updated"); |
group-FlexBook | 0:fa7450a43b99 | 169 | } |
group-FlexBook | 0:fa7450a43b99 | 170 | |
group-FlexBook | 0:fa7450a43b99 | 171 | } // End Flexbook namespace. |
group-FlexBook | 0:fa7450a43b99 | 172 | |
group-FlexBook | 0:fa7450a43b99 | 173 | |
group-FlexBook | 0:fa7450a43b99 | 174 | |
group-FlexBook | 0:fa7450a43b99 | 175 | |
group-FlexBook | 0:fa7450a43b99 | 176 | |
group-FlexBook | 0:fa7450a43b99 | 177 |