Demo Team / Mbed 2 deprecated bluefruit

Dependencies:   mbed

Revision:
1:266895757ab3
Parent:
0:4959c491059f
Child:
2:98ab6e6dd8aa
--- a/main.cpp	Wed Sep 17 10:34:08 2014 +0000
+++ b/main.cpp	Thu Sep 18 09:54:45 2014 +0000
@@ -1,3 +1,24 @@
+/* This Bluetooth Remote uses a Bluefruit E-Z Key
+
+The default switch-key mapping for Bluefruit E-Z Key is
+#0 - Up Arrow
+#1 - Down Arrow
+#2 - Left Arrow
+#3 - Right Arrow
+#4 - Return
+#5 - Space
+#6 - the number '1'
+#7 - the number '2'
+#8 - lowercase 'w'
+#9 - lowercase 'a'
+#10 - lowercase 's'
+#11 - lowercase 'd'
+
+These however can be remapped to include any keys the user needs (Shift, Esc, Backspace, VolumeUp, Play/Pause)
+
+This Remote records all user input after one input has been entered.
+ */
+
 #include "mbed.h"
 #include "string.h"
 
@@ -8,41 +29,278 @@
 DigitalOut enterswitch(p5);
 DigitalOut spaceswitch(p6);
 DigitalOut wswitch(p7);
-DigitalOut sswitch(p8);
-DigitalOut aswitch(p9);
-DigitalOut dswitch(p10);
-DigitalOut oneswitch(p11);
-DigitalOut twoswitch(p12);
-DigitalInOut upreader(p21);
-DigitalOut myled1 (LED1);
-DigitalOut myled2 (LED2);
+DigitalOut sswitch(p12);
+DigitalOut aswitch(p11);
+DigitalOut dswitch(p8);
+DigitalOut oneswitch(p13);
+DigitalOut twoswitch(p14 );
 Serial bluefruit(p9, p10);
 Serial pc(USBTX, USBRX);
 InterruptIn playI(p25);
-Timer t;
-Timer t2;
-Timer t3;
-//Timer t4;
+Timer t, t2,t3;
 
 char buf [9];
-char moves[200];
-unsigned long long times[200];
-unsigned long long times2[200];
-//unsigned long long times4[200];
-unsigned int i = 0;
-unsigned int j = 0;
-unsigned int z = 0;
-unsigned int k;
+char moves[400]; //change array size to increase recorded moves
+unsigned long long times[400]; //change array size to increase recorded moves
+unsigned long long times2[400]; //change array size to increase recorded moves
+unsigned int i, j, k, z = 0;
 unsigned long long reader = 0;
-unsigned int off = 1;
-unsigned int twobuttons = 0;
-unsigned int onebutton = 0;
-unsigned int y = 0;
+unsigned int onebutton, twobuttons = 0;
+unsigned int subtractor;
+
+void t2_stop()
+{
+    t2.stop();
+    if(t2.read_ms()>0) {
+        times2[j] = t2.read_ms();
+        pc.printf("\n\r Press Time: %d", times2[j]);
+        pc.printf("\n");
+    }
+    t2.reset();
+    j++;
+}
+
+void t3_stop()
+{
+    t3.stop();
+    reader = t3.read_ms();
+    pc.printf("\n\r Time Taken %d", reader);
+    pc.printf("\n");
+    t3.reset();
+}
+
+void twobutton_handler()
+{
+    t2.stop();
+    twobuttons = 0;
+    times2[j] = t2.read_ms();
+    subtractor = times2[j];
+    pc.printf("\n\r Double Key Press Time: %d \n", times2[j]);
+    j++;
+}
+
+void onebutton_handler(char m)
+{
+    onebutton = 1;
+    t2.reset();
+    t2.start();
+    moves[i] = m;
+    switch(m) {
+        case 1:
+            pc.printf("\n\r Move: Up");
+            break;
+        case 2:
+            pc.printf("\n\r Move: Down");
+            break;
+        case 3:
+            pc.printf("\n\r Move: Left");
+            break;
+        case 4:
+            pc.printf("\n\r Move: Right");
+            break;
+        case 11:
+            pc.printf("\n\r Move: w");
+            break;
+        case 12:
+            pc.printf("\n\r Move: s");
+            break;
+        case 13:
+            pc.printf("\n\r Move: a");
+            break;
+        case 14:
+            pc.printf("\n\r Move: d");
+            break;
+        case 15:
+            pc.printf("\n\r Move: Space");
+            break;
+        case 16:
+            pc.printf("\n\r Move: Enter");
+            break;
+        case 17:
+            pc.printf("\n\r Move: One");
+            break;
+        case 18:
+            pc.printf("\n\r Move: Two");
+            break;
+
+        default:
+            break;
+    }
+    pc.printf("\n\r Position: %d", i);
+    t.stop();
+    times[i] = t.read_ms()-subtractor;
+    pc.printf("\n\r Gap Time: %d", times[i]);
+    t.reset();
+    i++;
+}
+
+void twobutton_instant(char n)
+{
+    twobuttons = 1;
+    t2.start();
+    moves[i] = n;
+    switch(n) {
+        case 5:
+            pc.printf("\n\r Move: Up + Right Instant");
+            break;
+        case 6:
+            pc.printf("\n\r Move: Up + Down Instant");
+            break;
+        case 7:
+            pc.printf("\n\r Move: Up + Left Instant");
+            break;
+        case 19:
+            pc.printf("\n\r Move: w + a Instant");
+            break;
+        case 20:
+            pc.printf("\n\r Move: w + d Instant");
+            break;
+        case 21:
+            pc.printf("\n\r Move: s + a Instant");
+            break;
+        case 22:
+            pc.printf("\n\r Move: s + d Instant");
+            break;
+        case 23:
+            pc.printf("\n\r Move: w + s Instant");
+            break;
+        case 24:
+            pc.printf("\n\r Move: a + d Instant");
+            break;
+        case 25:
+            pc.printf("\n\r Move: One + Two Instant");
+            break;
+        case 26:
+            pc.printf("\n\r Move: Up + Space Instant");
+            break;
+        case 27:
+            pc.printf("\n\r Move: Right + Space Instant");
+            break;
+        case 28:
+            pc.printf("\n\r Move: Left + Space Instant");
+            break;
+        case 29:
+            pc.printf("\n\r Move: Down + Space Instant");
+            break;
+        case 30:
+            pc.printf("\n\r Move: Up + Enter Instant");
+            break;
+        case 31:
+            pc.printf("\n\r Move: Down + Enter Instant");
+            break;
+        case 32:
+            pc.printf("\n\r Move: Right + Enter Instant");
+            break;
+        case 33:
+            pc.printf("\n\r Move: Left + Enter Instant");
+        default:
+            break;
+    }
+    pc.printf("\n\r Position: %d", i);
+    i++;
+}
+
+void twobutton(char p)
+{
+    onebutton = 0;
+    twobuttons = 1;
+    t2.start();
+    moves[i] = p;
+    switch(p) {
+        case 5:
+            pc.printf("\n\r Move: Up + Right");
+            break;
+        case 6:
+            pc.printf("\n\r Move:  Up + Down");
+            break;
+        case 7:
+            pc.printf("\n\r Move: Up + Left");
+            break;
+        case 8:
+            pc.printf("\n\r Move: Down + Right");
+            break;
+        case 9:
+            pc.printf("\n\r Move: Down + Left");
+            break;
+        case 10:
+            pc.printf("\n\r Move: Right + Left");
+            break;
+        case 19:
+            pc.printf("\n\r Move: w + a");
+            break;
+        case 20:
+            pc.printf("\n\r Move: w + d");
+            break;
+        case 21:
+            pc.printf("\n\r Move: s + a");
+            break;
+        case 22:
+            pc.printf("\n\r Move: s + d");
+            break;
+        case 23:
+            pc.printf("\n\r Move: w + s");
+            break;
+        case 24:
+            pc.printf("\n\r Move: a + d");
+            break;
+        case 25:
+            pc.printf("\n\r Move: One + Two");
+            break;
+        case 26:
+            pc.printf("\n\r Move: Up + Space");
+            break;
+        case 27:
+            pc.printf("\n\r Move: Right + Space");
+            break;
+        case 28:
+            pc.printf("\n\r Move: Left + Space");
+            break;
+        case 29:
+            pc.printf("\n\r Move: Down + Space");
+            break;
+        case 30:
+            pc.printf("\n\r Move: Up + Enter");
+            break;
+        case 31:
+            pc.printf("\n\r Move: Down + Enter");
+            break;
+        case 32:
+            pc.printf("\n\r Move: Right + Enter");
+            break;
+        case 33:
+            pc.printf("\n\r Move: Left + Enter");
+            break;
+        default:
+            break;
+    }
+    pc.printf("\n\r Position: %d", i);
+    i++;
+}
+
+void TwoButtons(char l)
+{
+    t2_stop();
+
+    if(onebutton == 0) {
+        twobutton_instant(l);
+    } else {
+        twobutton(l);
+    }
+}
+
+void OneButton(char q)
+{
+    subtractor = 0;
+    if (twobuttons) {
+        twobutton_handler();
+    }
+    onebutton_handler(q);
+}
 
 void comparison(char *b)
 {
-    char *up, *down, *left, *right, *nobutton, *upright, *updown, *upleft, *rightleft, *downright, *downleft;
-    unsigned int subtractor;
+    char *up, *down, *left, *right, *nobutton, *upright, *updown, *upleft, *rightleft, *downright, *downleft, *a, *w, *s, *d, *enter, *space, *one, *two, *wa,
+         *wd, *sa, *sd, *ws, *ad, *onetwo, *upspace, *rightspace, *downspace, *leftspace, *upenter, *downenter, *rightenter, *leftenter;
     up = strstr(b, "K 0xFFE"); // 1
     down = strstr(b, "K 0xFFD"); // 2
     left = strstr(b, "K 0xFFB"); // 3
@@ -53,288 +311,139 @@
     downright = strstr(b, "K 0xFF5"); // 8
     downleft = strstr(b, "K 0xFF9"); // 9
     rightleft = strstr(b, "K 0xFF3"); //10
-    nobutton = strstr(b, "K 0xFFF"); //16
+    w = strstr(b, "K 0xEFF"); //11
+    s = strstr(b, "K 0xBFF"); //12
+    a = strstr(b, "K 0xDFF"); //13
+    d = strstr(b, "K 0x7FF"); //14
+    space = strstr(b, "K 0xFDF"); //15
+    enter = strstr(b, "K 0xFEF"); //16
+    one = strstr(b, "K 0xFBF"); //17
+    two = strstr(b, "K 0xF7F"); //18
+    wa = strstr(b, "K 0xCFF"); //19
+    wd = strstr(b, "K 0x6FF"); //20
+    sa = strstr(b, "K 0x9FF"); //21
+    sd = strstr(b, "K 0x3FF"); //22
+    ws = strstr(b, "K 0xAFF"); //23
+    ad = strstr(b, "K 0x5FF"); //24
+    onetwo = strstr(b, "K 0xF3F"); //25
+    upspace = strstr(b, "K 0xFDE"); //26
+    rightspace = strstr(b, "K 0xFD7"); //27
+    leftspace = strstr(b, "K 0xFDB"); //28
+    downspace = strstr(b, "K 0xFDD"); //29
+    upenter = strstr(b, "K 0xFEE"); //30
+    downenter = strstr(b, "K 0xFED"); //31
+    rightenter = strstr(b, "K 0xFE7"); //32
+    leftenter = strstr(b, "K 0xFEB"); //33
 
-    if (strcmp(up, "K 0xFFE") == 0) {
-        subtractor = 0; 
-        if (twobuttons) {
-            t2.stop();
-            twobuttons = 0;
-            times2[j] = t2.read_ms();
-            subtractor = times2[j];
-            pc.printf("\n\r Time stored in array: %d \n", times2[j]);
-            j++;
-        }
-        onebutton = 1;
-        t2.reset();
-        t2.start();
-        moves[i] = 1;
-        pc.printf("\n\r Move: Up");
-        pc.printf("\n\r Position: %d", i);
-        t.stop();
-        times[i] = t.read_ms()-subtractor;
-        pc.printf("\n\r Gap Time: %d", times[i]);
-        t.reset();
-        i++;
-    }
-    if (strcmp(down, "K 0xFFD") == 0) {
-        subtractor = 0; 
-        if (twobuttons) {
-            t2.stop();
-            twobuttons = 0;
-            times2[j] = t2.read_ms();
-            subtractor = times2[j];
-            pc.printf("\n\r Time stored in array: %d \n", times2[j]);
-            j++;
-        }
-        onebutton = 1;
-        t2.reset();
-        t2.start();
-        moves[i] = 2;
-        pc.printf("\n\r Move: Down");
-        pc.printf("\n\r Position: %d", i);
-
-        t.stop();
-        times[i] = t.read_ms()-subtractor;
-        pc.printf("\n\r Gap Time: %d", times[i]);
-        t.reset();
-        i++;
-    }
-
-    if (strcmp(left, "K 0xFFB") == 0) {
-        subtractor = 0; 
+    nobutton = strstr(b, "K 0xFFF"); //
 
-        if (twobuttons) {
-            t2.stop();
-            twobuttons = 0;
-            times2[j] = t2.read_ms();
-            subtractor = times2[j];
-            pc.printf("\n\r Time stored in array: %d \n", times2[j]);
-            j++;
-        }
-        onebutton = 1;
-        t2.reset();
-        t2.start();
-        moves[i] = 3;
-        pc.printf("\n\r Move:  Left");
-        pc.printf("\n\r Position: %d", i);
-
-        t.stop();
-        times[i] = t.read_ms()-subtractor;
-        pc.printf("\n\r Gap Time: %d", times[i]);
-        t.reset();
-        i++;
+    if (strcmp(up, "K 0xFFE") == 0) {   // 1
+        OneButton(1);
+    }
+    if (strcmp(down, "K 0xFFD") == 0) {  // 2
+        OneButton(2);
+    }
+    if (strcmp(left, "K 0xFFB") == 0) { // 3
+        OneButton(3);
+    }
+    if (strcmp(right, "K 0xFF7") == 0) { // 4
+        OneButton(4);
+    }
+    if (strcmp(upright, "K 0xFF6") == 0) { // 5
+        TwoButtons(5);
+    }
+    if (strcmp(updown, "K 0xFFC") == 0) { // 6
+        TwoButtons(6);
     }
-    if (strcmp(right, "K 0xFF7") == 0) {
-        subtractor = 0; 
-        if (twobuttons) {
-            t2.stop();
-            twobuttons = 0;
-            times2[j] = t2.read_ms();
-            subtractor = times2[j];
-            pc.printf("\n\r Time stored in array: %d \n", times2[j]);
-            j++;
-        }
-        onebutton = 1;
-        t2.reset();
-        t2.start();
-        moves[i] = 4;
-        pc.printf("\n\r Move: Right");
-        pc.printf("\n\r Position: %d", i);
-
-        t.stop();
-        times[i] = t.read_ms()-subtractor;
-        pc.printf("\n\r Gap Time: %d", times[i]);
-        t.reset();
-        i++;
+    if (strcmp(upleft, "K 0xFFA") == 0) { // 7
+        TwoButtons(7);
+    }
+    if (strcmp(downright, "K 0xFF5") == 0) { // 8
+        TwoButtons(8);
+    }
+    if (strcmp(downleft, "K 0xFF9") == 0) { // 9
+        TwoButtons(9);
     }
-    if (strcmp(upright, "K 0xFF6") == 0) {
-        t2.stop();
-        if(t2.read_ms()>0) {
-        times2[j] = t2.read_ms();
-        pc.printf("\n\r Press Time: %d", times2[j]);
-        pc.printf("\n");
-        }
-        t2.reset();
-        j++;
-        
-        if(onebutton == 0) {
-            twobuttons = 1;
-            t2.start();
-            moves[i] = 5;
-            pc.printf("\n\r Move: Up + Right Instant");
-            pc.printf("\n\r Position: %d", i);
-            i++;
-            }
-        else {
-        onebutton = 0;
-        twobuttons = 1;
-        t2.start();
-        moves[i] = 5;
-        pc.printf("\n\r Move: Up + Right");
-        pc.printf("\n\r Position: %d", i);
-        i++;
-        }
+    if (strcmp(rightleft, "K 0xFF3") == 0) { //10
+        TwoButtons(10);
+    }
+    if (strcmp(w, "K 0xEFF") == 0) { // 11
+        OneButton(11);
+    }
+    if (strcmp(s, "K 0xBFF") == 0) { // 12
+        OneButton(12);
     }
-    if (strcmp(updown, "K 0xFFC") == 0) {
-        t2.stop();
-        if(t2.read_ms()>0) {
-        times2[j] = t2.read_ms();
-        pc.printf("\n\r Press Time: %d", times2[j]);
-        pc.printf("\n");
-        }
-        t2.reset();
-        j++;
-        
-        if(onebutton == 0) {
-            twobuttons = 1;
-            t2.start();
-            moves[i] = 6;
-            pc.printf("\n\r Move: Up + Down Instant");
-            pc.printf("\n\r Position: %d", i);
-            i++;
-            }
-        else {
-        
-        onebutton = 0;
-        twobuttons = 1;
-        t2.start();
-        moves[i] = 6;
-        pc.printf("\n\r Move:  Up + Down");
-        pc.printf("\n\r Position: %d", i);
-        i++;
-        }
+    if (strcmp(a, "K 0xDFF") == 0) { // 13
+        OneButton(13);
+    }
+    if (strcmp(d, "K 0x7FF") == 0) { // 14
+        OneButton(14);
+    }
+    if (strcmp(space, "K 0xFDF") == 0) { // 15
+        OneButton(15);
+    }
+    if (strcmp(enter, "K 0xFEF") == 0) { // 16
+        OneButton(16);
+    }
+    if (strcmp(one, "K 0xFBF") == 0) { // 17
+        OneButton(17);
     }
-    if (strcmp(upleft, "K 0xFFA") == 0) {
-        t2.stop();
-        if(t2.read_ms()>0) {
-        times2[j] = t2.read_ms();
-        pc.printf("\n\r Press Time: %d", times2[j]);
-        pc.printf("\n");
-        }
-        t2.reset();
-        j++;
-        
-        if(onebutton == 0) {
-            twobuttons = 1;
-            t2.start();
-            moves[i] = 7;
-            pc.printf("\n\r Move: Up + Left Instant");
-            pc.printf("\n\r Position: %d", i);
-            i++;
-            }
-        else {
-        onebutton = 0;
-        twobuttons = 1;
-        t2.start();
-        moves[i] = 7;
-        pc.printf("\n\r Move: Up + Left");
-        pc.printf("\n\r Position: %d", i);
-        i++;
-        }
+    if (strcmp(two, "K 0xF7F") == 0) { // 18
+        OneButton(18);
+    }
+    if (strcmp(wa, "K 0xCFF") == 0) { // 19
+        TwoButtons(19);
+    }
+    if (strcmp(wd, "K 0x6FF") == 0) { // 20
+        TwoButtons(20);
+    }
+    if (strcmp(sa, "K 0x9FF") == 0) { // 21
+        TwoButtons(21);
+    }
+    if (strcmp(sd, "K 0x3FF") == 0) { // 22
+        TwoButtons(22);
     }
-    
-    if (strcmp(downright, "K 0xFF5") == 0) {
-        t2.stop();
-        times2[j] = t2.read_ms();
-        pc.printf("\n\r Press Time: %d", times2[j]);
-        pc.printf("\n");
-        t2.reset();
-        j++;
-        
-        if(onebutton == 0) {
-            twobuttons = 1;
-            t2.start();
-            moves[i] = 8;
-            pc.printf("\n\r Move: Down + Right Instant");
-            pc.printf("\n\r Position: %d", i);
-            i++;
-            }
-        else {
-        
-        onebutton = 0;
-        twobuttons = 1;
-        t2.start();
-        moves[i] = 8;
-        pc.printf("\n\r Move: Down + Right");
-        pc.printf("\n\r Position: %d", i);
-        i++;
-        }
+    if (strcmp(ws, "K 0xAFF") == 0) { // 23
+        TwoButtons(23);
+    }
+    if (strcmp(ad, "K 0x5FF") == 0) { // 24
+        TwoButtons(24);
+    }
+    if (strcmp(onetwo, "K 0xF3F") == 0) { // 25
+        TwoButtons(25);
+    }
+    if (strcmp(upspace, "K 0xFDE") == 0) { // 26
+        TwoButtons(26);
+    }
+    if (strcmp(rightspace, "K 0xFD7") == 0) { // 27
+        TwoButtons(27);
     }
-    
-    if (strcmp(downleft, "K 0xFF9") == 0) {
-        t2.stop();
-        times2[j] = t2.read_ms();
-        pc.printf("\n\r Press Time: %d", times2[j]);
-        pc.printf("\n");
-        t2.reset();
-        j++;
-        
-        if(onebutton == 0) {
-            twobuttons = 1;
-            t2.start();
-            moves[i] = 9;
-            pc.printf("\n\r Move: Down + Left Instant");
-            pc.printf("\n\r Position: %d", i);
-            i++;
-            }
-        else {
-        onebutton = 0;
-        twobuttons = 1;
-        t2.start();
-        moves[i] = 9;
-        pc.printf("\n\r Move: Down + Left");
-        pc.printf("\n\r Position: %d", i);
-        i++;
-        }
+    if (strcmp(leftspace, "K 0xFDB") == 0) { // 28
+        TwoButtons(28);
+    }
+    if (strcmp(downspace, "K 0xFDD") == 0) { //29
+        TwoButtons(29);
+    }
+    if (strcmp(upenter, "K 0xFEE") == 0) { // 30
+        TwoButtons(30);
     }
-    
-    if (strcmp(rightleft, "K 0xFF3") == 0) {
-        t2.stop();
-        times2[j] = t2.read_ms();
-        pc.printf("\n\r Press Time: %d", times2[j]);
-        pc.printf("\n");
-        t2.reset();
-        j++;
-        if(onebutton == 0) {
-            twobuttons = 1;
-            t2.start();
-            moves[i] = 10;
-            pc.printf("\n\r Move: Left + Right Instant");
-            pc.printf("\n\r Position: %d", i);
-            i++;
-            }
-        else {
-        
-        onebutton = 0;
-        twobuttons = 1;
-        t2.start();
-        moves[i] = 10;
-        pc.printf("\n\r Move: Right + Left");
-        pc.printf("\n\r Position: %d", i);
-        i++;
-        }
+    if (strcmp(downenter, "K 0xFED") == 0) { // 31
+        TwoButtons(31);
+    }
+    if (strcmp(rightenter, "K 0xFE7") == 0) { // 32
+        TwoButtons(32);
+    }
+    if (strcmp(leftenter, "K 0xFEB") == 0) { // 33
+        TwoButtons(33);
     }
     if (strcmp(nobutton, "K 0xFFF") == 0) {
-  
-        if(onebutton){
+        if(onebutton) {
             onebutton = 0;
-        t2.stop();
-        if(t2.read_ms()>0) {
-        times2[j] = t2.read_ms();
-        pc.printf("\n\r Press Time: %d", times2[j]);
-        pc.printf("\n");
-        t2.reset();
-        j++;
-        }
+            t2_stop();
         }
         if (twobuttons) {
-        twobuttons = 0;
-        t2.stop();
-        times2[j] = t2.read_ms(); 
-        pc.printf("\n\r Time stored in array: %d \n", times2[j]);
-        t2.reset();
-        j++;
+            twobutton_handler();
+            t2.reset();
         }
     }
 }
@@ -344,78 +453,54 @@
     t.stop();
     t.reset();
     pc.printf("\n\r PLAY \n");
-   /* for (int k = 0; k < j; k++) {
-        pc.printf("\n\r Time %d", k);
-        pc.printf(" %d", times2[k]);
-        } */
-    for (int k = 0; k < j; k++) {
+    for (k = 0; k < j; k++) { //Eliminate 0s presses
         if (times2[k] == 0) {
             for (int z = k; z < j; z++) {
-            times2[z] = times2[z+1];
+                times2[z] = times2[z+1];
             }
             j--;
-            }
         }
-            
-    for(int k = 0; k < i; k++) {
+    }
+    for(k = 0; k < i; k++) {
         wait_ms(times[k]);
+        pc.printf("\n\r Position: %d", k);
         pc.printf("\n\r Wait Time: %d",times[k]);
         switch (moves[k]) {
             case 1:
                 t3.start();
                 pc.printf("\n\r Move: Up");
-                pc.printf("\n\r Position: %d", k);
                 while(t3.read_ms() < times2[k]) {
                     upswitch = 0;
                 }
                 upswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
+                t3_stop();
                 break;
             case 2:
                 pc.printf("\n\r Move: Down");
-                pc.printf("\n\r Position: %d", k);
                 t3.start();
                 while(t3.read_ms() < times2[k]) {
                     downswitch = 0;
                 }
                 downswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
+                t3_stop();
                 break;
             case 3:
                 pc.printf("\n\r Move: Left");
-                pc.printf("\n\r Position: %d", k);
                 t3.start();
                 while(t3.read_ms() < times2[k]) {
                     leftswitch = 0;
                 }
                 leftswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
+                t3_stop();
                 break;
             case 4:
                 pc.printf("\n\r Move: Right");
-                pc.printf("\n\r Position: %d", k);
                 t3.start();
                 while(t3.read_ms() < times2[k]) {
                     rightswitch = 0;
                 }
                 rightswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
+                t3_stop();
                 break;
             case 5:
                 pc.printf("\n\r Move: Up + Right");
@@ -427,16 +512,10 @@
                 }
                 upswitch = 1;
                 rightswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
-                y++;
+                t3_stop();
                 break;
             case 6:
                 pc.printf("\n\r Move: Up + Down");
-                pc.printf("\n\r Position: %d", k);
                 t3.start();
                 while(t3.read_ms() < times2[k]) {
                     upswitch = 0;
@@ -444,16 +523,10 @@
                 }
                 upswitch = 1;
                 downswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
-                y++;
+                t3_stop();
                 break;
             case 7:
                 pc.printf("\n\r Move: Up + Left");
-                pc.printf("\n\r Position: %d", k);
                 t3.start();
                 while(t3.read_ms() < times2[k]) {
                     upswitch = 0;
@@ -461,16 +534,10 @@
                 }
                 upswitch = 1;
                 leftswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
-                y++;
+                t3_stop();
                 break;
             case 8:
                 pc.printf("\n\r Move: Down + Right");
-                pc.printf("\n\r Position: %d", k);
                 t3.start();
                 while(t3.read_ms() < times2[k]) {
                     downswitch = 0;
@@ -478,16 +545,10 @@
                 }
                 downswitch = 1;
                 rightswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
-                y++;
+                t3_stop();
                 break;
             case 9:
                 pc.printf("\n\r Move: Down + Left");
-                pc.printf("\n\r Position: %d", k);
                 t3.start();
                 while(t3.read_ms() < times2[k]) {
                     downswitch = 0;
@@ -495,16 +556,10 @@
                 }
                 downswitch = 1;
                 leftswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
-                y++;
+                t3_stop();
                 break;
             case 10:
                 pc.printf("\n\r Move: Right + Left");
-                pc.printf("\n\r Position: %d", k);
                 t3.start();
                 while(t3.read_ms() < times2[k]) {
                     rightswitch = 0;
@@ -512,14 +567,269 @@
                 }
                 rightswitch = 1;
                 leftswitch = 1;
-                t3.stop();
-                reader = t3.read_ms();
-                pc.printf("\n\r Time Taken %d", reader);
-                pc.printf("\n");
-                t3.reset();
-                y++;
+                t3_stop();
+                break;
+
+            case 11:
+                pc.printf("\n\r Move: w");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    wswitch = 0;
+                }
+                wswitch = 1;
+                t3_stop();
+                break;
+
+            case 12:
+                pc.printf("\n\r Move: s");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    sswitch = 0;
+                }
+                sswitch = 1;
+                t3_stop();
+                break;
+
+            case 13:
+                pc.printf("\n\r Move: a");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    aswitch = 0;
+                }
+                aswitch = 1;
+                t3_stop();
+                break;
+
+            case 14:
+                pc.printf("\n\r Move: d");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    dswitch = 0;
+                }
+                dswitch = 1;
+                t3_stop();
+                break;
+
+            case 15:
+                pc.printf("\n\r Move: Space");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    spaceswitch = 0;
+                }
+                spaceswitch = 1;
+                t3_stop();
+                break;
+
+            case 16:
+                pc.printf("\n\r Move: Enter");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    enterswitch = 0;
+                }
+                enterswitch = 1;
+                t3_stop();
+                break;
+
+            case 17:
+                pc.printf("\n\r Move: 1");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    oneswitch = 0;
+                }
+                oneswitch = 1;
+                t3_stop();
+                break;
+
+            case 18:
+                pc.printf("\n\r Move: 2");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    twoswitch = 0;
+                }
+                twoswitch = 1;
+                t3_stop();
+                break;
+
+            case 19:
+                pc.printf("\n\r Move: w + a");
+                pc.printf("\n\r Position: %d", k);
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    wswitch = 0;
+                    aswitch = 0;
+                }
+                wswitch = 1;
+                aswitch = 1;
+                t3_stop();
+                break;
+
+            case 20:
+                pc.printf("\n\r Move: w + d");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    wswitch = 0;
+                    dswitch = 0;
+                }
+                wswitch = 1;
+                dswitch = 1;
+                t3_stop();
+                break;
+
+            case 21:
+                pc.printf("\n\r Move: s + a");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    sswitch = 0;
+                    aswitch = 0;
+                }
+                sswitch = 1;
+                aswitch = 1;
+                t3_stop();
+                break;
+
+            case 22:
+                pc.printf("\n\r Move: s + d");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    sswitch = 0;
+                    dswitch = 0;
+                }
+                sswitch = 1;
+                dswitch = 1;
+                t3_stop();
                 break;
 
+            case 23:
+                pc.printf("\n\r Move: w + s");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    wswitch = 0;
+                    sswitch = 0;
+                }
+                wswitch = 1;
+                sswitch = 1;
+                t3_stop();
+                break;
+
+            case 24:
+                pc.printf("\n\r Move: a + d");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    aswitch = 0;
+                    dswitch = 0;
+                }
+                aswitch = 1;
+                dswitch = 1;
+                t3_stop();
+                break;
+
+            case 25:
+                pc.printf("\n\r Move: one + two");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    oneswitch = 0;
+                    twoswitch = 0;
+                }
+                oneswitch = 1;
+                twoswitch = 1;
+                t3_stop();
+                break;
+
+            case 26:
+                pc.printf("\n\r Move: Up + Space");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    upswitch = 0;
+                    spaceswitch = 0;
+                }
+                upswitch = 1;
+                spaceswitch = 1;
+                t3_stop();
+                break;
+
+            case 27:
+                pc.printf("\n\r Move: Right + Space");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    rightswitch = 0;
+                    spaceswitch = 0;
+                }
+                rightswitch = 1;
+                spaceswitch = 1;
+                t3_stop();
+                break;
+
+            case 28:
+                pc.printf("\n\r Move: Space + Left");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    spaceswitch = 0;
+                    leftswitch = 0;
+                }
+                spaceswitch = 1;
+                leftswitch = 1;
+                t3_stop();
+                break;
+
+            case 29:
+                pc.printf("\n\r Move: Down + Space");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    downswitch = 0;
+                    spaceswitch = 0;
+                }
+                downswitch = 1;
+                spaceswitch = 1;
+                t3_stop();
+                break;
+
+            case 30:
+                pc.printf("\n\r Move: Up + Enter");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    upswitch = 0;
+                    enterswitch = 0;
+                }
+                upswitch = 1;
+                enterswitch = 1;
+                t3_stop();
+                break;
+
+            case 31:
+                pc.printf("\n\r Move: Down + Enter");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    downswitch = 0;
+                    enterswitch = 0;
+                }
+                rightswitch = 1;
+                leftswitch = 1;
+                t3_stop();
+                break;
+
+            case 32:
+                pc.printf("\n\r Move: Right + Enter");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    rightswitch = 0;
+                    enterswitch = 0;
+                }
+                rightswitch = 1;
+                enterswitch = 1;
+                t3_stop();
+                break;
+
+            case 33:
+                pc.printf("\n\r Move: Enter + Left");
+                t3.start();
+                while(t3.read_ms() < times2[k]) {
+                    enterswitch = 0;
+                    leftswitch = 0;
+                }
+                rightswitch = 1;
+                enterswitch = 1;
+                t3_stop();
+                break;
             default:
                 break;
         }
@@ -529,11 +839,8 @@
 
 int main()
 {
-    pc.printf("\n\r START");
-    pc.printf("\n");
-    //bluefruit.gets("K 0xFFF", 9);
+    pc.printf("\n\r START \n");
     while(1) {
-
         upswitch = 1;
         downswitch = 1;
         leftswitch = 1;
@@ -547,13 +854,14 @@
         oneswitch = 1;
         twoswitch = 1;
         if(twobuttons == 0) {
-        t.start();
+            t.start();
         }
         playI.rise(&playfunction);
         if (bluefruit.readable()) {
             bluefruit.gets(buf, 9);
-            //pc.puts(buf);
+            // pc.puts(buf);
             comparison(buf);
+
         }
     }
 }
\ No newline at end of file