Working read code with mode button
Dependencies: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_senior_design_Testnew by
Diff: main.cpp
- Revision:
- 39:d873136dfb12
- Parent:
- 38:593bae6b342b
- Child:
- 40:091b6a852074
--- a/main.cpp Thu Nov 30 22:07:00 2017 +0000 +++ b/main.cpp Fri Dec 01 03:36:28 2017 +0000 @@ -143,6 +143,7 @@ // servos begin at 30 degrees // replace with a button setup function buttonarr.setup(); + //buttonarr.setMode(); //led1 = 1; //led2 = 1; @@ -200,79 +201,36 @@ t5.start(button5_thread); //t6.start(button6_thread); - // start threads for reset, mode, start - //Thread t1(start_thread); - //pc.printf("start thread"); - //Thread t2(submit_thread); - // setup SDcard and Speaker - - // when started - //while (start == 0){} - //Thread t3(button_thread); - //pc.printf("button thread"); - //Thread t4(button2_thread); - //pc.printf("button2 thread"); - - //Thread t3(submit_thread); - - // when submitted - //while (submit == 0) {} - - // start button threads and submit thread - // if submit close button threads and submit thread - // check result - // play results on speaker - // save results - char currletter; int lettersize = sizeof(letter)/sizeof(letter[0]); - /*for (int i = 0; i < lettersize; i++) { - currletter = letter[i][0]; - //pc.printf("currletter %c \n", currletter); - //pc.printf("braille %s \n", buttonarr.getBraille(currletter)); - }*/ - - /*int* pinsup = buttonarr.pinsUp('M'); - int currpress; - // get what pins to press - for (int i = 1; i <= pinsup[0]; i++) { - // speaker stuff - currpress = pinsup[i]; - }*/ - - /*int* wrongpins = buttonarr.wrongPins('M', 'O'); - int currwrong; - // get what pins are wrong - for (int i = 1; i <= wrongpins[0]; i++) { - // speaker stuff - currwrong = wrongpins[i]; - }*/ - + int type = 0; //TEXT-TO-SPEECH LOGIC - myTTS.volume(18); //max volume + myTTS.volume(1); //max volume myTTS.voice(2); - myTTS.speakf("SWelcome to Bat, the Braille Assistive Teacher. This device will help you learn how to write and type braille.\r"); // Send the desired string to convert to speech - myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + //myTTS.speakf("SWelcome to Bat, the Braille Assistive Teacher. This device will help you learn how to write and type braille.\r"); // Send the desired string to convert to speech + //myTTS.ready(); //ready waits for speech to finish from last command with a ":" response char* braille; char userinput; // INITIAL RESET - int reset = 1; - myTTS.speakf("SPlease setup the device by pressing down all the buttons.\r"); - myTTS.ready(); //ready waits for speech to finish from last command with a ":" response - while(reset == 1) { - wait(2); - sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), - button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); - userinput = buttonarr.checkVal(braille); - if(userinput == 'Z') { - reset = 0; - } else { - //reset = 0; - myTTS.speakf("SSetup failed. Please try again.\r"); - myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + if (type == 0) { + int reset = 1; + myTTS.speakf("SPlease setup the device by pressing down all the buttons.\r"); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + while(reset == 1) { + wait(2); + sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), + button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); + userinput = buttonarr.checkVal(braille); + if(userinput == 'Z') { + reset = 0; + } else { + //reset = 0; + myTTS.speakf("SSetup failed. Please try again.\r"); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + } } } @@ -317,23 +275,25 @@ //WORKS UP TO HERE char* braille; - sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), - button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); - char userinput = buttonarr.checkVal(braille); - pc.printf(" %s ", braille); - int test1 = button1.getPress(); - pc.printf(" %d\n", test1); - pc.printf(" %c ", userinput); - //pc.printf("userinput: %c", userinput); - // get input - //pc.printf("Your input was: %c", userinput); + char userinput; + char* oldbraille; + if (type == 0) { + sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), + button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); + userinput = buttonarr.checkVal(braille); + } else { + // TYPE MODE + sprintf(braille, "%d%d%d%d%d%d", !button1.getPress(), !button2.getPress(), + !button3.getPress(), !button4.getPress(), !button5.getPress(), !button6.getPress()); + userinput = buttonarr.checkVal(braille); + oldbraille = braille; + } + int currwrong; string wrongpin; // check result pc.printf("\n %c %c", userinput, currletter); int* wrongpins = buttonarr.wrongPins(braille, currletter); - //string presspin; - //wrongpins[0] != 1 int test = 1; while(test == 1) { //pc.printf("In while loop"); @@ -371,9 +331,16 @@ myTTS.ready(); //ready waits for speech to finish from last command with a ":" response //UPDATE THE PINS THAT ARE WRONG BY CHECKING AGAIN BELOW //char* braille; - sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), - button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); - userinput = buttonarr.checkVal(braille); + if (type == 0) { + sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), + button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); + userinput = buttonarr.checkVal(braille); + } else { + // TYPE MODE + sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), + button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); + userinput = buttonarr.checkVal(braille); + } // get input //pc.printf("Your input was: %c", userinput); @@ -381,41 +348,127 @@ wrongpins = buttonarr.wrongPins(braille, currletter); } else { test = 0; - myTTS.speakf("SGood job! Your answer is correct.\r"); + myTTS.speakf("SGood job!\r"); myTTS.ready(); //ready waits for speech to finish from last command with a ":" response } } - int reset = 1; - myTTS.speakf("SNow reset the device by pressing down all the buttons.\r"); - myTTS.ready(); //ready waits for speech to finish from last command with a ":" response - while(reset == 1) { - char* braille; - sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), - button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); - userinput = buttonarr.checkVal(braille); - if(userinput == 'Z') { - reset = 0; - } else { - reset = 0; - myTTS.speakf("SNot all of the buttons were reset. Please try again.\r"); - myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + if (type == 0) { + int reset = 1; + myTTS.speakf("SNow reset by pressing down all the buttons.\r"); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + while(reset == 1) { + char* braille; + sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), + button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); + userinput = buttonarr.checkVal(braille); + if(userinput == 'Z') { + reset = 0; + } else { + myTTS.speakf("SPlease try again.\r"); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + } } } //pc.printf("wrongpins are: %d", wrongpins[0]); } - //myTTS.speakf("STo write the letter %s, press pins %D\r",letter[i]); - //myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + +// WORD CODE + +// WORD COUNTER +// go through each word +// go through each letter in the word +// get user input +// when buttons reset - save previous letter +// loop until submit button is pressed +// compare words +// check what letters were wrong +// give wrong letters - correct spelling is... + + string currword; + int wordsize = sizeof(word)/sizeof(word[0]); + + 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.ready(); //ready waits for speech to finish from last command with a ":" response + + for(int i = 0; i < wordsize; i++) { //iterate through the word array + currword = word[i]; + string presspin = "To type the word "; + presspin = presspin + word[i]; + presspin = presspin + ", type letters "; + for (int j = 0; j < currword.length(); j++) { + presspin = presspin + ", "+ currword[j]; + } + //myTTS.speakf("S%s\r", presspin); + //myTTS.ready(); + } + + /* + // loop through each of the words + for(int i = 0; i < wordsize; i++) { //iterate through the word array + currword = word[i]; + string presspin = "To type the word "; + presspin = presspin + word[i]; + presspin = presspin + ", type letters "; + for (int j = 0; j < currword.length(); j++) { + presspin = presspin + ", "+ currword[j]; + } + myTTS.speakf("S%s\r", presspin); + myTTS.ready(); + + string wordinput = ""; - //buttonarr.releaseButtons(); - //pc.printf("current braille %c \n", buttonarr.checkVal()); - //pc.printf("%c\n", buttonarr.releaseButtons()); + // loop through each of the letters + //olduserinput; + int incorrect = 1; + //char userinput; + //char* braille; + + // while(!submit) + while (incorrect) { + // replace for loop with submit + // while (!submit) { + for (int j = 0; j < currword.length(); j++) { + //currletter = currword[j]; + // check if all buttons were pressed + wait(1); + + char* braille; + char* oldbraille; + + // wait for input + while (strcmp(braille, "000000") == 0) {} - // MAIN THREAD - while(true) { + // while buttons have not been released + while (strcmp(braille, "000000") != 0) { + oldbraille = braille; + sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), + button3.getPress(), button4.getPress(), button5.getPress(), button6.getPress()); + } + + // at the end of this, oldbraille contains the letter representation + // flip braille values + //userinput = checkVal(oldbraille); + wordinput[j] = buttonarr.checkVal(oldbraille); + //wordinput[j] = olduserinput; + } - // read linear potentiometer - //led4 = linpot; + // check result of words + if (wordinput.compare(currword) == 0) { // input is correct + incorrect = 0; + myTTS.speakf("Good job!\r"); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + } else { + incorrect = 0; // delete this line + myTTS.speakf("SPlease try again!.\r"); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + } + } + + }*/ + +// MAIN THREAD + while(true) { Thread::wait(500); // wait till thread is done }