Words in Typing mode
Dependencies: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_Type_word by
Revision 37:d873136dfb12, committed 2017-12-01
- Comitter:
- aismail1997
- Date:
- Fri Dec 01 03:36:28 2017 +0000
- Parent:
- 36:593bae6b342b
- Child:
- 38:68f7f54b723b
- Commit message:
- Flipped code worked. Added placeholders for type mode. Word code not working!!!
Changed in this revision
| buttonArray.cpp | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/buttonArray.cpp Thu Nov 30 22:07:00 2017 +0000
+++ b/buttonArray.cpp Fri Dec 01 03:36:28 2017 +0000
@@ -99,7 +99,7 @@
//pc.printf("wrong pins");
int j = 1;
for (int i = 0; i < 6; i++) {
- if(inarr[i] == actarr[i]) {
+ if(inarr[i] != actarr[i]) {
wrong[j] = i+1;
//pc.printf("%d ", wrong[j]);
j++;
--- 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
}
