Working read code with mode button
Dependencies: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_senior_design_Testnew by
Diff: main.cpp
- Revision:
- 37:ef0921d9b5bd
- Parent:
- 36:1248dfa0740b
diff -r 1248dfa0740b -r ef0921d9b5bd main.cpp --- a/main.cpp Wed Nov 29 15:14:26 2017 +0000 +++ b/main.cpp Wed Nov 29 16:26:22 2017 +0000 @@ -144,10 +144,6 @@ // replace with a button setup function buttonarr.setup(); - //led1 = 1; - //led2 = 1; - - // PARSE INPUT FILE FOR LETTERS AND WORDS char delimiter = ','; // TODO: fix the letters @@ -198,70 +194,50 @@ t3.start(button3_thread); t4.start(button4_thread); 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]; - }*/ - - //TEXT-TO-SPEECH LOGIC myTTS.volume(18); //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 + + 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) { + 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 == '!') { + reset = 0; + } else { + reset = 0; // TODO: remove this line + myTTS.speakf("SSetup failed. Please try again.\r"); + myTTS.ready(); //ready waits for speech to finish from last command with a ":" response + } + } + + int lettersize = sizeof(letter)/sizeof(letter[0]); + for(int i = 0; i < lettersize; i++) { //iterate through the letter array char currletter = letter[i][0]; //pc.printf("letter: %c \n", currletter); int* pinsup = buttonarr.pinsUp(currletter); int currpress; int numpinsups = pinsup[0]; // size of array is first element of pinsup - //string presspin; string presspin = "STo write the letter "; presspin = presspin + letter[i]; presspin = presspin + ", press buttons"; @@ -292,17 +268,14 @@ myTTS.speakf("%s\r",presspin); myTTS.ready(); //ready waits for speech to finish from last command with a ":" response wait(1); - //pc.printf("hello"); //WORKS UP TO HERE - char* braille; + + // PARSE LETTERS 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); + 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); @@ -311,14 +284,10 @@ // 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"); wrongpin = "SYour answer is incorrect. Buttons"; - //wrongpin = wrongpin + letter[i]; - //wrongpin = wrongpin + ", press pins"; for (int j = 1; j < wrongpins[0]; j++) { // get what pins are wrong currwrong = wrongpins[j]; //pc.printf("currwrong: %d", currwrong); @@ -349,7 +318,6 @@ 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 - //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); @@ -364,38 +332,102 @@ myTTS.ready(); //ready waits for speech to finish from last command with a ":" response } } - int reset = 1; + 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') { + if(userinput == '!') { reset = 0; } else { - reset = 0; - myTTS.speakf("SNot all of the buttons were reset. Please try again.\r"); + reset = 0; // TODO: remove this line + myTTS.speakf("SSetup failed. Please 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 + + // loop through each of the words + for(int i = 0; i < wordsize; i++) { //iterate through the word array + currword = word[i]; + 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; + + // loop through each of the letters + olduserinput; + incorrect = 1; + char userinput; + char* braille; - //buttonarr.releaseButtons(); - //pc.printf("current braille %c \n", buttonarr.checkVal()); - //pc.printf("%c\n", buttonarr.releaseButtons()); + // 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) {} + + // 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, braille contains the letter representation + // flip braille values + userinput = checkVal(braille); + wordinput[j] = olduserinput; + } + + // 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) { - - // read linear potentiometer - //led4 = linpot; - Thread::wait(500); // wait till thread is done } } \ No newline at end of file