Words in Typing mode FINAL

Dependencies:   SDFileSystem emic2 mbed-rtos mbed

Fork of BAT_Type_word by BAT

Revision:
41:560ee7866781
Parent:
40:85be3490d3a7
Child:
42:aa46c2be7dbb
--- 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;