Letters in typing mode
Dependencies: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_Type_letter by
Diff: main.cpp
- Revision:
- 41:560ee7866781
- Parent:
- 40:85be3490d3a7
- Child:
- 42:bdb6f132a609
--- a/main.cpp Sun Dec 03 23:10:29 2017 +0000 +++ b/main.cpp Sun Dec 03 23:44:27 2017 +0000 @@ -168,14 +168,162 @@ t5.start(button5_thread); //t6.start(button6_thread); - char currletter; + //char currletter; int lettersize = sizeof(letter)/sizeof(letter[0]); - int type = 0; + //int type = 0; //TEXT-TO-SPEECH LOGIC - myTTS.volume(1); //max volume is 18 + myTTS.volume(3); //max volume is 18 myTTS.voice(2); + // SETUP + /* buttonarr.setup(); //Reset servos so that buttons are up for typing mode + button1.setMode(1); + button2.setMode(1); + button3.setMode(1); + button4.setMode(1); + button5.setMode(1); + button6.setMode(1); + +// LETTER CODE +// tell how to type letter +// wait for input +// check if correct letter +// feedback +// loop + + for(int i = 0; i < lettersize; i++) { //iterate through the letter array + char currletter = letter[i][0]; + int* pinsup = buttonarr.pinsUp(currletter); + int currpress; + int numpinsups = pinsup[0]; // size of array is first element of pinsup + string presspin = "STo write the letter "; + presspin = presspin + letter[i]; + presspin = presspin + ", press buttons"; + + for (int j = 1; j < numpinsups; j++) { // get what pins to press + currpress = pinsup[j]; + switch (currpress) { + case 1: + presspin = presspin + " 1,"; + break; + case 2: + presspin = presspin + " 2,"; + break; + case 3: + presspin = presspin + " 3,"; + break; + case 4: + presspin = presspin + " 4,"; + break; + case 5: + presspin = presspin + " 5,"; + break; + case 6: + presspin = presspin + " 6,"; + break; + } + } + myTTS.speakf("%s\r",presspin); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + //wait(2); + + //WORKS UP TO HERE + char* braille; + char* oldbraille; + + // TYPE MODE + sprintf(braille, "%d%d%d%d%d%d", !button1.getPress(), !button2.getPress(), + !button3.getPress(), !button4.getPress(), !button5.getPress(), !button6.getPress()); + + // wait for input + while (strcmp(braille, "111111") == 0) { + sprintf(braille, "%d%d%d%d%d%d", !button1.getPress(), !button2.getPress(), + !button3.getPress(), !button4.getPress(), !button5.getPress(), !button6.getPress()); + } + + // while buttons have not been released + int oldsum = 0; + int sum = 0; + while ((strcmp(braille, "111111") != 0) && (oldsum <= sum)) { + oldbraille = braille; + oldsum = sum; + sprintf(braille, "%d%d%d%d%d%d", !button1.getPress(), !button2.getPress(), + !button3.getPress(), !button4.getPress(), !button5.getPress(), !button6.getPress()); + sum = button1.getPress() + button2.getPress() + button3.getPress() + button4.getPress() + + button5.getPress() + button6.getPress(); + } + braille = oldbraille; + + int currwrong; + string wrongpin; + // check result + int* wrongpins = buttonarr.wrongPins(braille, currletter); + int test = 1; + while(test == 1) { + wrongpin = "SYour answer is incorrect. Buttons"; + for (int j = 1; j < wrongpins[0]; j++) { // get what pins are wrong + currwrong = wrongpins[j]; + switch (currwrong) { + case 1: + wrongpin = wrongpin + " 1,"; + break; + case 2: + wrongpin = wrongpin + " 2,"; + break; + case 3: + wrongpin = wrongpin + " 3,"; + break; + case 4: + wrongpin = wrongpin + " 4,"; + break; + case 5: + wrongpin = wrongpin + " 5,"; + break; + case 6: + wrongpin = wrongpin + " 6,"; + break; + } + } + if (wrongpins[0] > 1) { + wrongpin = wrongpin + " are wrong. Please try again."; + myTTS.speakf("%s\r",wrongpin); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + + //UPDATE THE PINS THAT ARE WRONG BY CHECKING AGAIN BELOW + + sprintf(braille, "%d%d%d%d%d%d", !button1.getPress(), !button2.getPress(), + !button3.getPress(), !button4.getPress(), !button5.getPress(), !button6.getPress()); + + // wait for input + while (strcmp(braille, "111111") == 0) { + sprintf(braille, "%d%d%d%d%d%d", !button1.getPress(), !button2.getPress(), + !button3.getPress(), !button4.getPress(), !button5.getPress(), !button6.getPress()); + } + + // while buttons have not been released + int oldsum = 0; + int sum = 0; + while ((strcmp(braille, "111111") != 0) && (oldsum <= sum)) { + oldbraille = braille; + oldsum = sum; + sprintf(braille, "%d%d%d%d%d%d", !button1.getPress(), !button2.getPress(), + !button3.getPress(), !button4.getPress(), !button5.getPress(), !button6.getPress()); + sum = button1.getPress() + button2.getPress() + button3.getPress() + button4.getPress() + + button5.getPress() + button6.getPress(); + } + + // check result + wrongpins = buttonarr.wrongPins(braille, currletter); + } else { + test = 0; + myTTS.speakf("SGood job!\r"); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + } + } + + }*/ + // WORD CODE // WORD COUNTER @@ -188,7 +336,6 @@ // check what letters were wrong // give wrong letters - correct spelling is... - //SETTING UP SERVOS TO RELEASE FOR TYPING MODE FREEZES THE CODE buttonarr.setup(); //Reset servos so that buttons are up for typing mode button1.setMode(1); @@ -200,10 +347,7 @@ string currword; int wordsize = sizeof(word)/sizeof(word[0]); - //int wordlength; - //char* braille; - //char* oldbraille; - + //myTTS.speakf("SLet us now put these letters together to form words. Please reset buttons after each letter. Press down the submit button when done.\r"); // Send the desired string to convert to speech myTTS.speakf("SPlease switch the device into typing mode. Press down the submit button when done.\r"); // Send the desired string to convert to speech myTTS.ready(); //ready waits for speech to finish from last command with a ":" response @@ -212,7 +356,7 @@ for(int i = 0; i < wordsize; i++) { //iterate through the word array currword = word[i]; char currword1[3]; - + string presspin = "To type the word "; presspin = presspin + word[i]; presspin = presspin + ", type letters "; @@ -252,7 +396,6 @@ sprintf(braille, "%d%d%d%d%d%d", !button1.getPress(), !button2.getPress(), !button3.getPress(), !button4.getPress(), !button5.getPress(), !button6.getPress()); } - //pc.printf("reached"); // while buttons have not been released int oldsum = 0;