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: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_senior_design_Testnew by
buttonArray.cpp@43:82d67fb53e61, 2017-12-05 (annotated)
- Committer:
- nnguyen45
- Date:
- Tue Dec 05 03:31:58 2017 +0000
- Revision:
- 43:82d67fb53e61
- Parent:
- 42:44a898adef26
Working with mode button
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| nnguyen45 | 0:5887cb744114 | 1 | #include "mbed.h" |
| nnguyen45 | 0:5887cb744114 | 2 | #include "buttonArray.h" |
| nnguyen45 | 0:5887cb744114 | 3 | |
| nnguyen45 | 43:82d67fb53e61 | 4 | // type mode |
| nnguyen45 | 43:82d67fb53e61 | 5 | |
| nnguyen45 | 0:5887cb744114 | 6 | // buttonArray constructor |
| nnguyen45 | 0:5887cb744114 | 7 | buttonArray::buttonArray(button b1, button b2, button b3, button b4, button b5, button b6) |
| nnguyen45 | 0:5887cb744114 | 8 | : button1(b1), button2(b2), button3(b3), button4(b4), button5(b5), button6(b6) {} |
| nnguyen45 | 0:5887cb744114 | 9 | |
| nnguyen45 | 43:82d67fb53e61 | 10 | //Serial pc(USBTX, USBRX); |
| nnguyen45 | 43:82d67fb53e61 | 11 | |
| nnguyen45 | 0:5887cb744114 | 12 | // FUNCTIONS |
| nnguyen45 | 0:5887cb744114 | 13 | |
| nnguyen45 | 0:5887cb744114 | 14 | // map input braille to ascii |
| nnguyen45 | 0:5887cb744114 | 15 | // braille respresentation here - https://en.wikipedia.org/wiki/Braille_ASCII |
| nnguyen45 | 0:5887cb744114 | 16 | char buttonArray::checkVal(char* braille) |
| nnguyen45 | 0:5887cb744114 | 17 | { |
| nnguyen45 | 43:82d67fb53e61 | 18 | //pc.printf(" checkVal \n"); |
| nnguyen45 | 43:82d67fb53e61 | 19 | //char* braille; |
| nnguyen45 | 0:5887cb744114 | 20 | char val = 'K'; |
| nnguyen45 | 43:82d67fb53e61 | 21 | /*int test = button1.getPress(); |
| nnguyen45 | 43:82d67fb53e61 | 22 | sprintf(braille, "%d%d%d%d%d%d", test, button2.getPress(), |
| nnguyen45 | 43:82d67fb53e61 | 23 | button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress());*/ |
| nnguyen45 | 43:82d67fb53e61 | 24 | //pc.printf(" %s \n", braille); |
| nnguyen45 | 0:5887cb744114 | 25 | if (strcmp(braille, "000000") == 0) val = 'X'; |
| nnguyen45 | 0:5887cb744114 | 26 | if (strcmp(braille, "011111") == 0) val = 'A'; |
| nnguyen45 | 0:5887cb744114 | 27 | if (strcmp(braille, "001111") == 0) val = 'B'; |
| nnguyen45 | 0:5887cb744114 | 28 | if (strcmp(braille, "011011") == 0) val = 'C'; |
| nnguyen45 | 0:5887cb744114 | 29 | if (strcmp(braille, "011001") == 0) val = 'D'; |
| nnguyen45 | 0:5887cb744114 | 30 | if (strcmp(braille, "011101") == 0) val = 'E'; |
| nnguyen45 | 0:5887cb744114 | 31 | if (strcmp(braille, "001011") == 0) val = 'F'; |
| nnguyen45 | 0:5887cb744114 | 32 | if (strcmp(braille, "001001") == 0) val = 'G'; |
| nnguyen45 | 0:5887cb744114 | 33 | if (strcmp(braille, "001101") == 0) val = 'H'; |
| nnguyen45 | 1:f3d363ca2343 | 34 | if (strcmp(braille, "101011") == 0) val = 'I'; |
| nnguyen45 | 0:5887cb744114 | 35 | if (strcmp(braille, "101001") == 0) val = 'J'; |
| nnguyen45 | 43:82d67fb53e61 | 36 | /*if (strcmp(braille, "011111") == 0) val = 'K'; |
| nnguyen45 | 43:82d67fb53e61 | 37 | if (strcmp(braille, "000111") == 0) val = 'L';*/ |
| nnguyen45 | 0:5887cb744114 | 38 | if (strcmp(braille, "010011") == 0) val = 'M'; |
| nnguyen45 | 1:f3d363ca2343 | 39 | if (strcmp(braille, "010001") == 0) val = 'N'; |
| nnguyen45 | 0:5887cb744114 | 40 | if (strcmp(braille, "010101") == 0) val = 'O'; |
| nnguyen45 | 43:82d67fb53e61 | 41 | /*if (strcmp(braille, "000011") == 0) val = 'P'; |
| nnguyen45 | 1:f3d363ca2343 | 42 | if (strcmp(braille, "000001") == 0) val = 'Q'; |
| nnguyen45 | 1:f3d363ca2343 | 43 | if (strcmp(braille, "000101") == 0) val = 'R'; |
| nnguyen45 | 1:f3d363ca2343 | 44 | if (strcmp(braille, "100011") == 0) val = 'S'; |
| nnguyen45 | 1:f3d363ca2343 | 45 | if (strcmp(braille, "100001") == 0) val = 'T'; |
| nnguyen45 | 1:f3d363ca2343 | 46 | if (strcmp(braille, "010110") == 0) val = 'U'; |
| nnguyen45 | 1:f3d363ca2343 | 47 | if (strcmp(braille, "000110") == 0) val = 'V'; |
| nnguyen45 | 1:f3d363ca2343 | 48 | if (strcmp(braille, "101000") == 0) val = 'W'; |
| nnguyen45 | 43:82d67fb53e61 | 49 | if (strcmp(braille, "010010") == 0) val = 'X'; |
| nnguyen45 | 1:f3d363ca2343 | 50 | if (strcmp(braille, "010000") == 0) val = 'Y'; |
| nnguyen45 | 43:82d67fb53e61 | 51 | if (strcmp(braille, "010100") == 0) val = 'Z';*/ |
| nnguyen45 | 0:5887cb744114 | 52 | // check if reset |
| nnguyen45 | 0:5887cb744114 | 53 | if (strcmp(braille, "111111") == 0) val = 'Z'; |
| nnguyen45 | 43:82d67fb53e61 | 54 | //pc.printf(" %c \n", val); |
| nnguyen45 | 0:5887cb744114 | 55 | return val; |
| nnguyen45 | 0:5887cb744114 | 56 | } |
| nnguyen45 | 0:5887cb744114 | 57 | |
| nnguyen45 | 0:5887cb744114 | 58 | // get braille represention of char |
| nnguyen45 | 0:5887cb744114 | 59 | char* buttonArray::getBraille(char val) |
| nnguyen45 | 0:5887cb744114 | 60 | { |
| nnguyen45 | 0:5887cb744114 | 61 | char* braille; |
| nnguyen45 | 0:5887cb744114 | 62 | if (val == 'A') braille = "011111"; |
| nnguyen45 | 42:44a898adef26 | 63 | if (val == 'B') braille = "001111"; |
| nnguyen45 | 42:44a898adef26 | 64 | if (val == 'C') braille = "011011"; |
| nnguyen45 | 42:44a898adef26 | 65 | if (val == 'D') braille = "011001"; |
| nnguyen45 | 42:44a898adef26 | 66 | if (val == 'E') braille = "011101"; |
| nnguyen45 | 42:44a898adef26 | 67 | if (val == 'F') braille = "001011"; |
| nnguyen45 | 42:44a898adef26 | 68 | if (val == 'G') braille = "001001"; |
| nnguyen45 | 42:44a898adef26 | 69 | if (val == 'H') braille = "001101"; |
| nnguyen45 | 42:44a898adef26 | 70 | if (val == 'I') braille = "101011"; |
| nnguyen45 | 42:44a898adef26 | 71 | if (val == 'J') braille = "101001"; |
| nnguyen45 | 43:82d67fb53e61 | 72 | /*if (val == 'K') braille = "011111"; |
| nnguyen45 | 43:82d67fb53e61 | 73 | if (val == 'L') braille = "000111";*/ |
| nnguyen45 | 0:5887cb744114 | 74 | if (val == 'M') braille = "010011"; |
| nnguyen45 | 42:44a898adef26 | 75 | if (val == 'N') braille = "010001"; |
| nnguyen45 | 0:5887cb744114 | 76 | if (val == 'O') braille = "010101"; |
| nnguyen45 | 43:82d67fb53e61 | 77 | /*if (val == 'P') braille = "000011"; |
| nnguyen45 | 42:44a898adef26 | 78 | if (val == 'Q') braille = "000001"; |
| nnguyen45 | 42:44a898adef26 | 79 | if (val == 'R') braille = "000101"; |
| nnguyen45 | 42:44a898adef26 | 80 | if (val == 'S') braille = "100011"; |
| nnguyen45 | 42:44a898adef26 | 81 | if (val == 'T') braille = "100001"; |
| nnguyen45 | 42:44a898adef26 | 82 | if (val == 'U') braille = "010110"; |
| nnguyen45 | 42:44a898adef26 | 83 | if (val == 'V') braille = "000110"; |
| nnguyen45 | 42:44a898adef26 | 84 | if (val == 'W') braille = "101000"; |
| nnguyen45 | 43:82d67fb53e61 | 85 | if (val == 'X') braille = "010010"; |
| nnguyen45 | 42:44a898adef26 | 86 | if (val == 'Y') braille = "010000"; |
| nnguyen45 | 43:82d67fb53e61 | 87 | if (val == 'Z') braille = "010100";*/ |
| nnguyen45 | 0:5887cb744114 | 88 | // check if reset |
| nnguyen45 | 0:5887cb744114 | 89 | if (val == ' ') braille = "111111"; |
| nnguyen45 | 0:5887cb744114 | 90 | return braille; |
| nnguyen45 | 0:5887cb744114 | 91 | } |
| nnguyen45 | 0:5887cb744114 | 92 | |
| nnguyen45 | 0:5887cb744114 | 93 | // return an array of which pins need to be up |
| nnguyen45 | 0:5887cb744114 | 94 | int* buttonArray::pinsUp(char val) |
| nnguyen45 | 0:5887cb744114 | 95 | { |
| nnguyen45 | 0:5887cb744114 | 96 | int* pinsup; |
| nnguyen45 | 43:82d67fb53e61 | 97 | //pinsup = new int[7]; |
| nnguyen45 | 0:5887cb744114 | 98 | char* braille = getBraille(val); |
| nnguyen45 | 0:5887cb744114 | 99 | int j = 1; |
| nnguyen45 | 0:5887cb744114 | 100 | for (int i = 0; i < 6; i++) { |
| nnguyen45 | 0:5887cb744114 | 101 | if (braille[i] == '0') { |
| nnguyen45 | 0:5887cb744114 | 102 | pinsup[j] = i+1; |
| nnguyen45 | 0:5887cb744114 | 103 | j++; |
| nnguyen45 | 0:5887cb744114 | 104 | } |
| nnguyen45 | 0:5887cb744114 | 105 | } |
| nnguyen45 | 0:5887cb744114 | 106 | // record size of array in the first element |
| nnguyen45 | 0:5887cb744114 | 107 | pinsup[0] = j; |
| nnguyen45 | 0:5887cb744114 | 108 | return pinsup; |
| nnguyen45 | 0:5887cb744114 | 109 | } |
| nnguyen45 | 0:5887cb744114 | 110 | |
| nnguyen45 | 0:5887cb744114 | 111 | // return feedback on which pins need to be corrected |
| nnguyen45 | 0:5887cb744114 | 112 | // takes in current and actual char as input and returns status of each char |
| nnguyen45 | 0:5887cb744114 | 113 | int* buttonArray::wrongPins(char* inarr, char actual) |
| nnguyen45 | 0:5887cb744114 | 114 | { |
| nnguyen45 | 43:82d67fb53e61 | 115 | // TODO check initial value of wrong |
| nnguyen45 | 0:5887cb744114 | 116 | int* wrong; |
| nnguyen45 | 0:5887cb744114 | 117 | wrong = new int[7]; |
| nnguyen45 | 0:5887cb744114 | 118 | char* actarr = getBraille(actual); |
| nnguyen45 | 43:82d67fb53e61 | 119 | //pc.printf("wrong pins"); |
| nnguyen45 | 0:5887cb744114 | 120 | int j = 1; |
| nnguyen45 | 0:5887cb744114 | 121 | for (int i = 0; i < 6; i++) { |
| nnguyen45 | 0:5887cb744114 | 122 | if(inarr[i] != actarr[i]) { |
| nnguyen45 | 0:5887cb744114 | 123 | wrong[j] = i+1; |
| nnguyen45 | 43:82d67fb53e61 | 124 | //pc.printf("%d ", wrong[j]); |
| nnguyen45 | 0:5887cb744114 | 125 | j++; |
| nnguyen45 | 0:5887cb744114 | 126 | } |
| nnguyen45 | 0:5887cb744114 | 127 | } |
| nnguyen45 | 0:5887cb744114 | 128 | // record size of array in the first element |
| nnguyen45 | 0:5887cb744114 | 129 | wrong[0] = j; |
| nnguyen45 | 0:5887cb744114 | 130 | return wrong; |
| nnguyen45 | 0:5887cb744114 | 131 | } |
| nnguyen45 | 0:5887cb744114 | 132 | |
| nnguyen45 | 0:5887cb744114 | 133 | // release buttons |
| nnguyen45 | 0:5887cb744114 | 134 | void buttonArray::releaseButtons() |
| nnguyen45 | 0:5887cb744114 | 135 | { |
| nnguyen45 | 0:5887cb744114 | 136 | if (button1.getPress()) { |
| nnguyen45 | 0:5887cb744114 | 137 | button1.moveServoOut(); |
| nnguyen45 | 0:5887cb744114 | 138 | button1.setState(3); |
| nnguyen45 | 0:5887cb744114 | 139 | button1.setPress(0); |
| nnguyen45 | 0:5887cb744114 | 140 | } |
| nnguyen45 | 0:5887cb744114 | 141 | if (button2.getPress()) { |
| nnguyen45 | 0:5887cb744114 | 142 | button2.moveServoOut(); |
| nnguyen45 | 0:5887cb744114 | 143 | button2.setState(3); |
| nnguyen45 | 0:5887cb744114 | 144 | button2.setPress(0); |
| nnguyen45 | 0:5887cb744114 | 145 | } |
| nnguyen45 | 0:5887cb744114 | 146 | if (button3.getPress()) { |
| nnguyen45 | 0:5887cb744114 | 147 | button3.moveServoOut(); |
| nnguyen45 | 0:5887cb744114 | 148 | button3.setState(3); |
| nnguyen45 | 0:5887cb744114 | 149 | button3.setPress(0); |
| nnguyen45 | 0:5887cb744114 | 150 | } |
| nnguyen45 | 0:5887cb744114 | 151 | if (button4.getPress()) { |
| nnguyen45 | 0:5887cb744114 | 152 | button4.moveServoOut(); |
| nnguyen45 | 0:5887cb744114 | 153 | button4.setState(3); |
| nnguyen45 | 0:5887cb744114 | 154 | button4.setPress(0); |
| nnguyen45 | 0:5887cb744114 | 155 | } |
| nnguyen45 | 0:5887cb744114 | 156 | if (button5.getPress()) { |
| nnguyen45 | 0:5887cb744114 | 157 | button5.moveServoOut(); |
| nnguyen45 | 0:5887cb744114 | 158 | button5.setState(3); |
| nnguyen45 | 0:5887cb744114 | 159 | button5.setPress(0); |
| nnguyen45 | 0:5887cb744114 | 160 | } |
| nnguyen45 | 0:5887cb744114 | 161 | if (button6.getPress()) { |
| nnguyen45 | 0:5887cb744114 | 162 | button6.moveServoOut(); |
| nnguyen45 | 0:5887cb744114 | 163 | button6.setState(3); |
| nnguyen45 | 0:5887cb744114 | 164 | button6.setPress(0); |
| nnguyen45 | 0:5887cb744114 | 165 | } |
| nnguyen45 | 0:5887cb744114 | 166 | } |
| nnguyen45 | 0:5887cb744114 | 167 | |
| nnguyen45 | 0:5887cb744114 | 168 | void buttonArray::setup() |
| nnguyen45 | 0:5887cb744114 | 169 | { |
| nnguyen45 | 43:82d67fb53e61 | 170 | // servos begin at 30 degrees |
| nnguyen45 | 43:82d67fb53e61 | 171 | // replace with a button setup function |
| nnguyen45 | 0:5887cb744114 | 172 | button1.setup(); |
| nnguyen45 | 0:5887cb744114 | 173 | button2.setup(); |
| nnguyen45 | 0:5887cb744114 | 174 | button3.setup(); |
| nnguyen45 | 0:5887cb744114 | 175 | button4.setup(); |
| nnguyen45 | 0:5887cb744114 | 176 | button5.setup(); |
| nnguyen45 | 0:5887cb744114 | 177 | button6.setup(); |
| nnguyen45 | 0:5887cb744114 | 178 | } |
