Words in Typing mode FINAL

Dependencies:   SDFileSystem emic2 mbed-rtos mbed

Fork of BAT_Type_word by BAT

Committer:
aismail1997
Date:
Tue Dec 05 16:46:37 2017 +0000
Revision:
44:9ccc9f8524fd
Parent:
43:fa8d0db68228
works FINAL

Who changed what in which revision?

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