Working read code with mode button
Dependencies: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_senior_design_Testnew by
Diff: buttonArray.cpp
- Revision:
- 0:5887cb744114
- Child:
- 1:f3d363ca2343
diff -r 000000000000 -r 5887cb744114 buttonArray.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buttonArray.cpp Mon Dec 04 19:58:40 2017 +0000 @@ -0,0 +1,158 @@ +#include "mbed.h" +#include "buttonArray.h" + +// type mode + +// buttonArray constructor +buttonArray::buttonArray(button b1, button b2, button b3, button b4, button b5, button b6) + : button1(b1), button2(b2), button3(b3), button4(b4), button5(b5), button6(b6) {} + +//Serial pc(USBTX, USBRX); + +// FUNCTIONS + +// map input braille to ascii +// braille respresentation here - https://en.wikipedia.org/wiki/Braille_ASCII +char buttonArray::checkVal(char* braille) +{ + //pc.printf(" checkVal \n"); + //char* braille; + char val = 'K'; + /*int test = button1.getPress(); + sprintf(braille, "%d%d%d%d%d%d", test, button2.getPress(), + button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress());*/ + //pc.printf(" %s \n", braille); + if (strcmp(braille, "000000") == 0) val = 'X'; + if (strcmp(braille, "011111") == 0) val = 'A'; + if (strcmp(braille, "001111") == 0) val = 'B'; + if (strcmp(braille, "011011") == 0) val = 'C'; + if (strcmp(braille, "011001") == 0) val = 'D'; + if (strcmp(braille, "011101") == 0) val = 'E'; + if (strcmp(braille, "001011") == 0) val = 'F'; + if (strcmp(braille, "001001") == 0) val = 'G'; + if (strcmp(braille, "001101") == 0) val = 'H'; + if (strcmp(braille, "101101") == 0) val = 'I'; + if (strcmp(braille, "101001") == 0) val = 'J'; + if (strcmp(braille, "010011") == 0) val = 'M'; + if (strcmp(braille, "010101") == 0) val = 'O'; + /*if (strcmp(braille, "011111") == 0) val = 'K'; + if (strcmp(braille, "011111") == 0) val = 'L'; + if (strcmp(braille, "011111") == 0) val = 'N'; + if (strcmp(braille, "011111") == 0) val = 'P'; + if (strcmp(braille, "011111") == 0) val = 'Q'; + if (strcmp(braille, "011111") == 0) val = 'R'; + if (strcmp(braille, "011111") == 0) val = 'S'; + if (strcmp(braille, "011111") == 0) val = 'T'; + if (strcmp(braille, "011111") == 0) val = 'U'; + if (strcmp(braille, "011111") == 0) val = 'V'; + if (strcmp(braille, "011111") == 0) val = 'W'; + if (strcmp(braille, "011111") == 0) val = 'X'; + if (strcmp(braille, "011111") == 0) val = 'Y'; + if (strcmp(braille, "011111") == 0) val = 'Z';*/ + // check if reset + if (strcmp(braille, "111111") == 0) val = 'Z'; + //pc.printf(" %c \n", val); + return val; +} + +// get braille represention of char +char* buttonArray::getBraille(char val) +{ + char* braille; + if (val == 'A') braille = "011111"; + if (val == 'X') braille = "000000"; + if (val == 'Z') braille = "111111"; + if (val == 'M') braille = "010011"; + if (val == 'O') braille = "010101"; + if (val == 'K') braille = "100000"; + // check if reset + if (val == ' ') braille = "111111"; + return braille; +} + +// return an array of which pins need to be up +int* buttonArray::pinsUp(char val) +{ + int* pinsup; + //pinsup = new int[7]; + char* braille = getBraille(val); + int j = 1; + for (int i = 0; i < 6; i++) { + if (braille[i] == '0') { + pinsup[j] = i+1; + j++; + } + } + // record size of array in the first element + pinsup[0] = j; + return pinsup; +} + +// return feedback on which pins need to be corrected +// takes in current and actual char as input and returns status of each char +int* buttonArray::wrongPins(char* inarr, char actual) +{ + // TODO check initial value of wrong + int* wrong; + wrong = new int[7]; + char* actarr = getBraille(actual); + //pc.printf("wrong pins"); + int j = 1; + for (int i = 0; i < 6; i++) { + if(inarr[i] != actarr[i]) { + wrong[j] = i+1; + //pc.printf("%d ", wrong[j]); + j++; + } + } + // record size of array in the first element + wrong[0] = j; + return wrong; +} + +// release buttons +void buttonArray::releaseButtons() +{ + if (button1.getPress()) { + button1.moveServoOut(); + button1.setState(3); + button1.setPress(0); + } + if (button2.getPress()) { + button2.moveServoOut(); + button2.setState(3); + button2.setPress(0); + } + if (button3.getPress()) { + button3.moveServoOut(); + button3.setState(3); + button3.setPress(0); + } + if (button4.getPress()) { + button4.moveServoOut(); + button4.setState(3); + button4.setPress(0); + } + if (button5.getPress()) { + button5.moveServoOut(); + button5.setState(3); + button5.setPress(0); + } + if (button6.getPress()) { + button6.moveServoOut(); + button6.setState(3); + button6.setPress(0); + } +} + +void buttonArray::setup() +{ + // servos begin at 30 degrees + // replace with a button setup function + button1.setup(); + button2.setup(); + button3.setup(); + button4.setup(); + button5.setup(); + button6.setup(); +} \ No newline at end of file