![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Working read code with mode button
Dependencies: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_senior_design_Testnew by
Diff: main.cpp
- Revision:
- 43:82d67fb53e61
- Parent:
- 42:44a898adef26
--- a/main.cpp Mon Dec 04 23:25:38 2017 +0000 +++ b/main.cpp Tue Dec 05 03:31:58 2017 +0000 @@ -22,9 +22,17 @@ DigitalIn pb5 (p16); PwmOut myservo6(p26); DigitalIn pb6 (p15); +DigitalIn read (p29); + +//DigitalOut led1(LED1); +//DigitalOut led3(LED3); +//DigitalOut led4(LED4); + +//DigitalIn linpot(p9); Serial pc(USBTX, USBRX); SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card +//button button1(myservo, pb1, linpot); button button1(myservo, pb1, 1); button button2(myservo2, pb2, 2); button button3(myservo3, pb3, 3); @@ -50,11 +58,14 @@ int count = 0; // THREADS + void button_thread() { while(true) { state = button1.updateState(); state6 = button6.updateState(); + + //led4 = button1.getLp(); Thread::wait(100); // wait till thread is done } } @@ -67,6 +78,7 @@ } } +// thread for the custom button void button3_thread() { while(true) { @@ -75,6 +87,7 @@ } } +// thread for the custom button void button4_thread() { while(true) { @@ -83,6 +96,7 @@ } } +// thread for the custom button void button5_thread() { while(true) { @@ -91,6 +105,7 @@ } } +// thread for the custom button void button6_thread() { while(true) { @@ -106,26 +121,40 @@ void start_thread() { + // read pb_start + // if 1 start = 1; + //pc.printf("start %d ", start); + // else 0 Thread::wait(500); // wait till thread is done } + int main() { - // SETUP; pull up the pushbutton to prevent bouncing + // SETUP + // pull up the pushbutton to prevent bouncing pb1.mode(PullUp); pb2.mode(PullUp); pb3.mode(PullUp); pb4.mode(PullUp); pb5.mode(PullUp); pb6.mode(PullUp); + read.mode(PullUp); wait(.001); - // servo setup up function; servos begin at 30 degrees + // servos begin at 30 degrees + // replace with a button setup function buttonarr.setup(); + //buttonarr.setMode(); + + //led1 = 1; + //led2 = 1; + // PARSE INPUT FILE FOR LETTERS AND WORDS char delimiter = ','; + // TODO: fix the letters string letter[2]; string word[2]; char check; @@ -133,10 +162,14 @@ string tempword = ""; int counter = 0; FILE *fp = fopen("/sd/plan.txt", "r"); //create file + if(fp == NULL) { + //pc.printf("Could not open file for write\n"); + } check = fgetc(fp); //grabs a char from file while(check != '\n') { //while not at the end of line for letters if((check == delimiter) && (temp.length() == 1)) { //at a comma and have a letter stored letter[counter] = temp; //write letter + //pc.printf("Letter: %s \n", letter[counter]); counter = counter + 1; //increment counter } else { temp = check; //store letter @@ -148,6 +181,7 @@ while(!feof(fp)) { //while not at the end of line for words if(check == delimiter) { //when at the comma at the end of a word word[counter] = tempword; //write word + //pc.printf("Word: %s \n", word[counter]); tempword = ""; counter = counter + 1; //increment counter } else { @@ -156,54 +190,62 @@ check = fgetc(fp); //grabs next char } fclose(fp); //close file - - //INITIALIZE THREADS + Thread t1(button_thread); Thread t2(button2_thread); Thread t3(button3_thread); Thread t4(button4_thread); Thread t5(button5_thread); + //Thread t6(button6_thread); t1.start(button_thread); t2.start(button2_thread); t3.start(button3_thread); t4.start(button4_thread); t5.start(button5_thread); - + //t6.start(button6_thread); char currletter; int lettersize = sizeof(letter)/sizeof(letter[0]); + //pc.printf("lettersize: %d", lettersize); int type = 0; //TEXT-TO-SPEECH LOGIC - myTTS.volume(18); //max volume is 18 + 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 - if (type == 0) { - int reset = 1; - myTTS.speakf("SWelcome to Bat, the Braille Assistive Teacher. This device will help you learn how to write and type braille. Please 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(3); - 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("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; + while(read==0) {} + myTTS.speakf("SWelcome to Bat, the Braille Assistive Teacher. This device will help you learn how to write and type braille. Please 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(read==0) {} + 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 } } + //} 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"; @@ -234,21 +276,23 @@ myTTS.speakf("%s\r",presspin); myTTS.ready(); //ready waits for speech to finish from last command with a ":" response wait(2); + //pc.printf("hello"); + //WORKS UP TO HERE char* braille; 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 { + //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; @@ -257,9 +301,13 @@ int* wrongpins = buttonarr.wrongPins(braille, currletter); 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); switch (currwrong) { case 1: wrongpin = wrongpin + " 1,"; @@ -281,16 +329,27 @@ break; } } + //pc.printf("end for loop"); 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 wait(2); //UPDATE THE PINS THAT ARE WRONG BY CHECKING AGAIN BELOW + //char* braille; + //if (type == 0) { sprintf(braille, "%d%d%d%d%d%d", button1.getPress(), button2.getPress(), - button3.getPress(), button4.getPress(), button5.getPress(), button6.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); + // check result wrongpins = buttonarr.wrongPins(braille, currletter); } else { @@ -300,24 +359,56 @@ } } - 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 { - wait(2); - myTTS.speakf("SPlease 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 repressing 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 { + wait(2); + 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]); + } + +// 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... + + //SETTING UP SERVOS TO RELEASE FOR TYPING MODE FREEZES THE CODE + //buttonarr.setup(); //Reset servos so that buttons are up for typing mode + string currword; + int wordsize = sizeof(word)/sizeof(word[0]); + + myTTS.speakf("SThis is the end of the module.\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); //UNCOMMENTING HERE WILL MESS UP READ/WRITE CODE + //myTTS.ready(); } // MAIN THREAD