Fork of original senior design repo

Dependencies:   SDFileSystem mbed-rtos mbed wave_player emic2

Fork of BAT_senior_design by BAT

Committer:
aismail1997
Date:
Wed Nov 15 16:27:26 2017 +0000
Revision:
24:3c4ebc4fde0f
Parent:
23:b2e53ce54b3e
Child:
26:79cdf893c8b8
pinsUp function works

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aismail1997 18:ceac47be2e64 1 #include "mbed.h"
aismail1997 18:ceac47be2e64 2 #include "buttonArray.h"
aismail1997 18:ceac47be2e64 3
aismail1997 21:6931917c70cd 4 // type mode
aismail1997 21:6931917c70cd 5
aismail1997 19:abbc12fca525 6 // buttonArray constructor
aismail1997 18:ceac47be2e64 7 buttonArray::buttonArray(button b1, button b2, button b3, button b4, button b5, button b6)
aismail1997 18:ceac47be2e64 8 : button1(b1), button2(b2), button3(b3), button4(b4), button5(b5), button6(b6) {}
aismail1997 20:c5df903f068a 9
aismail1997 19:abbc12fca525 10 // FUNCTIONS
aismail1997 18:ceac47be2e64 11
aismail1997 19:abbc12fca525 12 // map input braille to ascii
aismail1997 20:c5df903f068a 13 // braille respresentation here - https://en.wikipedia.org/wiki/Braille_ASCII
aismail1997 20:c5df903f068a 14 char buttonArray::checkVal()
aismail1997 20:c5df903f068a 15 {
aismail1997 21:6931917c70cd 16 char* braille;
aismail1997 20:c5df903f068a 17 char val = NULL;
aismail1997 21:6931917c70cd 18 sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(),
aismail1997 20:c5df903f068a 19 button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress());
aismail1997 21:6931917c70cd 20 if (strcmp(braille, "000000") == 0) val = '@';
aismail1997 21:6931917c70cd 21 if (strcmp(braille, "011111") == 0) val = 'A';
aismail1997 21:6931917c70cd 22 if (strcmp(braille, "001111") == 0) val = 'B';
aismail1997 21:6931917c70cd 23 if (strcmp(braille, "011011") == 0) val = 'C';
aismail1997 21:6931917c70cd 24 if (strcmp(braille, "011001") == 0) val = 'D';
aismail1997 21:6931917c70cd 25 if (strcmp(braille, "011101") == 0) val = 'E';
aismail1997 21:6931917c70cd 26 if (strcmp(braille, "001011") == 0) val = 'F';
aismail1997 21:6931917c70cd 27 if (strcmp(braille, "001001") == 0) val = 'G';
aismail1997 21:6931917c70cd 28 if (strcmp(braille, "001101") == 0) val = 'H';
aismail1997 21:6931917c70cd 29 if (strcmp(braille, "101101") == 0) val = 'I';
aismail1997 21:6931917c70cd 30 if (strcmp(braille, "101001") == 0) val = 'J';
aismail1997 21:6931917c70cd 31 /*if (strcmp(braille, "011111") == 0) val = 'K';
aismail1997 21:6931917c70cd 32 if (strcmp(braille, "011111") == 0) val = 'L';
aismail1997 21:6931917c70cd 33 if (strcmp(braille, "011111") == 0) val = 'N';
aismail1997 21:6931917c70cd 34 if (strcmp(braille, "011111") == 0) val = 'P';
aismail1997 21:6931917c70cd 35 if (strcmp(braille, "011111") == 0) val = 'Q';
aismail1997 21:6931917c70cd 36 if (strcmp(braille, "011111") == 0) val = 'R';
aismail1997 21:6931917c70cd 37 if (strcmp(braille, "011111") == 0) val = 'S';
aismail1997 21:6931917c70cd 38 if (strcmp(braille, "011111") == 0) val = 'T';
aismail1997 21:6931917c70cd 39 if (strcmp(braille, "011111") == 0) val = 'U';
aismail1997 21:6931917c70cd 40 if (strcmp(braille, "011111") == 0) val = 'V';
aismail1997 21:6931917c70cd 41 if (strcmp(braille, "011111") == 0) val = 'W';
aismail1997 21:6931917c70cd 42 if (strcmp(braille, "011111") == 0) val = 'X';
aismail1997 21:6931917c70cd 43 if (strcmp(braille, "011111") == 0) val = 'Y';
aismail1997 21:6931917c70cd 44 if (strcmp(braille, "011111") == 0) val = 'Z';
aismail1997 21:6931917c70cd 45 if (strcmp(braille, "010101") == 0) val = 'O';*/
aismail1997 20:c5df903f068a 46 // check if reset
aismail1997 21:6931917c70cd 47 if (strcmp(braille, "111111") == 0) val = '!';
aismail1997 20:c5df903f068a 48 return val;
aismail1997 20:c5df903f068a 49 }
aismail1997 20:c5df903f068a 50
aismail1997 21:6931917c70cd 51 // get braille represention of char
aismail1997 21:6931917c70cd 52 char* buttonArray::getBraille(char val)
aismail1997 21:6931917c70cd 53 {
aismail1997 21:6931917c70cd 54 char* braille;
aismail1997 21:6931917c70cd 55 if (val == NULL) braille = "000000";
aismail1997 21:6931917c70cd 56 if (val == 'A') braille = "011111";
aismail1997 21:6931917c70cd 57 if (val == 'M') braille = "010011";
aismail1997 21:6931917c70cd 58 if (val == 'O') braille = "010101";
aismail1997 21:6931917c70cd 59 // check if reset
aismail1997 21:6931917c70cd 60 if (val == ' ') braille = "111111";
aismail1997 21:6931917c70cd 61 return braille;
aismail1997 21:6931917c70cd 62 }
aismail1997 20:c5df903f068a 63
aismail1997 21:6931917c70cd 64 // return an array of which pins need to be up
aismail1997 22:23970cf718ee 65 int* buttonArray::pinsUp(char val)
aismail1997 21:6931917c70cd 66 {
aismail1997 22:23970cf718ee 67 int* pinsup;
aismail1997 21:6931917c70cd 68 char* braille = getBraille(val);
aismail1997 23:b2e53ce54b3e 69 int j = 1;
aismail1997 21:6931917c70cd 70 for (int i = 0; i < 6; i++) {
aismail1997 21:6931917c70cd 71 if (braille[i] == '0') {
aismail1997 24:3c4ebc4fde0f 72 pinsup[j] = i+1;
aismail1997 23:b2e53ce54b3e 73 j++;
aismail1997 21:6931917c70cd 74 }
aismail1997 21:6931917c70cd 75 }
aismail1997 23:b2e53ce54b3e 76 // record size of array in the first element
aismail1997 23:b2e53ce54b3e 77 pinsup[0] = j;
aismail1997 22:23970cf718ee 78 return pinsup;
aismail1997 21:6931917c70cd 79 }
aismail1997 21:6931917c70cd 80
aismail1997 21:6931917c70cd 81 // return feedback on which pins need to be corrected
aismail1997 21:6931917c70cd 82 // takes in current and actual char as input and returns status of each char
aismail1997 21:6931917c70cd 83 int* buttonArray::wrongPins(char input, char actual)
aismail1997 21:6931917c70cd 84 {
aismail1997 21:6931917c70cd 85 if (input == NULL) return NULL;
aismail1997 22:23970cf718ee 86 int* wrong;
aismail1997 21:6931917c70cd 87 char* inarr = getBraille(input);
aismail1997 21:6931917c70cd 88 char* actarr = getBraille(actual);
aismail1997 22:23970cf718ee 89 int j = 0;
aismail1997 21:6931917c70cd 90 for (int i = 0; i < 6; i++) {
aismail1997 22:23970cf718ee 91 if(inarr[i] != actarr[i]) {
aismail1997 23:b2e53ce54b3e 92 j++;
aismail1997 22:23970cf718ee 93 wrong[j] = i+1;
aismail1997 22:23970cf718ee 94 }
aismail1997 21:6931917c70cd 95 }
aismail1997 23:b2e53ce54b3e 96 // record size of array in the first element
aismail1997 23:b2e53ce54b3e 97 wrong[0] = j;
aismail1997 21:6931917c70cd 98 return wrong;
aismail1997 21:6931917c70cd 99 }
aismail1997 20:c5df903f068a 100
aismail1997 20:c5df903f068a 101 // release buttons
aismail1997 20:c5df903f068a 102 void buttonArray::releaseButtons()
aismail1997 20:c5df903f068a 103 {
aismail1997 20:c5df903f068a 104 if (button1.getPress()) {
aismail1997 20:c5df903f068a 105 button1.moveServoOut();
aismail1997 20:c5df903f068a 106 button1.setState(3);
aismail1997 20:c5df903f068a 107 button1.setPress(0);
aismail1997 20:c5df903f068a 108 }
aismail1997 23:b2e53ce54b3e 109 if (button2.getPress()) {
aismail1997 23:b2e53ce54b3e 110 button2.moveServoOut();
aismail1997 23:b2e53ce54b3e 111 button2.setState(3);
aismail1997 23:b2e53ce54b3e 112 button2.setPress(0);
aismail1997 23:b2e53ce54b3e 113 }
aismail1997 23:b2e53ce54b3e 114 if (button3.getPress()) {
aismail1997 23:b2e53ce54b3e 115 button3.moveServoOut();
aismail1997 23:b2e53ce54b3e 116 button3.setState(3);
aismail1997 23:b2e53ce54b3e 117 button3.setPress(0);
aismail1997 23:b2e53ce54b3e 118 }
aismail1997 23:b2e53ce54b3e 119 if (button4.getPress()) {
aismail1997 23:b2e53ce54b3e 120 button4.moveServoOut();
aismail1997 23:b2e53ce54b3e 121 button4.setState(3);
aismail1997 23:b2e53ce54b3e 122 button4.setPress(0);
aismail1997 23:b2e53ce54b3e 123 }
aismail1997 23:b2e53ce54b3e 124 if (button5.getPress()) {
aismail1997 23:b2e53ce54b3e 125 button5.moveServoOut();
aismail1997 23:b2e53ce54b3e 126 button5.setState(3);
aismail1997 23:b2e53ce54b3e 127 button5.setPress(0);
aismail1997 23:b2e53ce54b3e 128 }
aismail1997 23:b2e53ce54b3e 129 if (button6.getPress()) {
aismail1997 23:b2e53ce54b3e 130 button6.moveServoOut();
aismail1997 23:b2e53ce54b3e 131 button6.setState(3);
aismail1997 23:b2e53ce54b3e 132 button6.setPress(0);
aismail1997 23:b2e53ce54b3e 133 }
aismail1997 20:c5df903f068a 134 }
aismail1997 23:b2e53ce54b3e 135
aismail1997 23:b2e53ce54b3e 136 void buttonArray::setup()
aismail1997 23:b2e53ce54b3e 137 {
aismail1997 23:b2e53ce54b3e 138 // servos begin at 30 degrees
aismail1997 23:b2e53ce54b3e 139 // replace with a button setup function
aismail1997 23:b2e53ce54b3e 140 button1.setup();
aismail1997 23:b2e53ce54b3e 141 button2.setup();
aismail1997 23:b2e53ce54b3e 142 button3.setup();
aismail1997 23:b2e53ce54b3e 143 button4.setup();
aismail1997 23:b2e53ce54b3e 144 button5.setup();
aismail1997 23:b2e53ce54b3e 145 button6.setup();
aismail1997 23:b2e53ce54b3e 146 }