Words in Typing mode

Dependencies:   SDFileSystem emic2 mbed-rtos mbed

Revision:
18:d14bf57f435b
Parent:
17:08c575082052
Child:
19:ceac47be2e64
--- a/main.cpp	Wed Oct 25 14:35:31 2017 +0000
+++ b/main.cpp	Fri Oct 27 13:34:49 2017 +0000
@@ -9,9 +9,18 @@
 DigitalIn pb1 (p20);
 PwmOut myservo2(p22);
 DigitalIn pb2 (p19);
-DigitalOut led1(LED1);
-DigitalOut led3(LED3);
-DigitalOut led4(LED4);
+PwmOut myservo3(p23);
+DigitalIn pb3 (p18);
+PwmOut myservo4(p24);
+DigitalIn pb4 (p17);
+PwmOut myservo5(p25);
+DigitalIn pb5 (p16);
+PwmOut myservo6(p26);
+DigitalIn pb6 (p15);
+
+//DigitalOut led1(LED1);
+//DigitalOut led3(LED3);
+//DigitalOut led4(LED4);
 
 //AnalogIn linpot(p20);
 //Serial pc(USBTX, USBRX);
@@ -20,14 +29,22 @@
 //wave_player waver(&DACout);
 button button1(myservo, pb1);
 button button2(myservo2, pb2);
+button button3(myservo3, pb3);
+button button4(myservo4, pb4);
+button button5(myservo5, pb5);
+button button6(myservo6, pb6);
 
 // INITIALIZE VARIABLES
 // add mode, reset buttons
 int start = 0;
 int submit = 0;
+// Buttons begins in up state
 int state = 0;
-int state2 = 0; // Button begins in up state
-///int state2 = 2;
+int state2 = 0;
+int state3 = 0;
+int state4 = 0;
+int state5 = 0;
+int state6 = 0;
 int count = 0;
 
 // FUNCTIONS
@@ -43,9 +60,10 @@
 // THREADS
 
 // thread for the custom button
+//int count = 0;
+
 void button_thread()
 {
-
     while(true) {
         // state 0 - button is up, pb = 0
         if (pb1 == 0 && state == 3) {
@@ -69,9 +87,8 @@
         }
         // state 4 - handle debouncing while button is down
         /*if (pb1 = 1 && state == 2) {
-            
+            count++;
         }*/
-
     }
 }
 
@@ -82,29 +99,29 @@
         if (pb2 == 0 && state2 == 3) {
             // nothing happens here, servo is still
             state2 = 0;
-            led3 = 0;
-            led4 = 0;
+            //led3 = 0;
+            //led4 = 0;
         }
         // state 1 - button is moving down, pb = 1
         if (pb2 == 1 && state2 == 0) {
             button2.moveServoIn();
             state2 = 1;
-            led3 = 0;
-            led4 = 1;
+            //led3 = 0;
+            //led4 = 1;
         }
         // state 2 - button is down, pb = 0
         if (pb2 == 0 && state2 == 1) {
             // nothing happens here, servo is still
             state2 = 2;
-            led3 = 1;
-            led4 = 0;
+            //led3 = 1;
+            //led4 = 0;
         }
         // state 3 - button is moving up, pb = 1
         if (pb2 == 1 && state2 == 2) {
             button2.moveServoOut();
             state2 = 3;
-            led3 = 1;
-            led4 = 1;
+            //led3 = 1;
+            //led4 = 1;
         }
         // state 4 - handle debouncing while button is down
         /*if (pb2 = 1 && state2 == 2) {
@@ -115,6 +132,135 @@
     }
 }
 
+// thread for the custom button
+void button3_thread()
+{
+    while(true) {
+        // state 0 - button is up, pb = 0
+        if (pb3 == 0 && state3 == 3) {
+            // nothing happens here, servo is still
+            state3 = 0;
+        }
+        // state 1 - button is moving down, pb = 1
+        if (pb3 == 1 && state3 == 0) {
+            button3.moveServoIn();
+            state3 = 1;
+        }
+        // state 2 - button is down, pb = 0
+        if (pb3 == 0 && state3 == 1) {
+            // nothing happens here, servo is still
+            state3 = 2;
+        }
+        // state 3 - button is moving up, pb = 1
+        if (pb3 == 1 && state3 == 2) {
+            button3.moveServoOut();
+            state3 = 3;
+        }
+        // state 4 - handle debouncing while button is down
+        /*if (pb3 = 1 && state3 == 2) {
+            
+        }*/
+
+    }
+}
+
+// thread for the custom button
+void button4_thread()
+{
+    while(true) {
+        // state 0 - button is up, pb = 0
+        if (pb4 == 0 && state4 == 3) {
+            // nothing happens here, servo is still
+            state4 = 0;
+        }
+        // state 1 - button is moving down, pb = 1
+        if (pb4 == 1 && state4 == 0) {
+            button4.moveServoIn();
+            state4 = 1;
+        }
+        // state 2 - button is down, pb = 0
+        if (pb4 == 0 && state4 == 1) {
+            // nothing happens here, servo is still
+            state4 = 2;
+        }
+        // state 3 - button is moving up, pb = 1
+        if (pb4 == 1 && state4 == 2) {
+            button4.moveServoOut();
+            state4 = 3;
+        }
+        // state 4 - handle debouncing while button is down
+        /*if (pb4 = 1 && state4 == 2) {
+            
+        }*/
+
+    }
+}
+
+// thread for the custom button
+void button5_thread()
+{
+
+    while(true) {
+        // state 0 - button is up, pb = 0
+        if (pb5 == 0 && state5 == 3) {
+            // nothing happens here, servo is still
+            state5 = 0;
+        }
+        // state 1 - button is moving down, pb = 1
+        if (pb5 == 1 && state5 == 0) {
+            button5.moveServoIn();
+            state5 = 1;
+        }
+        // state 2 - button is down, pb = 0
+        if (pb5 == 0 && state5 == 1) {
+            // nothing happens here, servo is still
+            state5 = 2;
+        }
+        // state 3 - button is moving up, pb = 1
+        if (pb5 == 1 && state5 == 2) {
+            button5.moveServoOut();
+            state5 = 3;
+        }
+        // state 4 - handle debouncing while button is down
+        /*if (pb5 = 1 && state5 == 2) {
+            
+        }*/
+
+    }
+}
+
+// thread for the custom button
+void button6_thread()
+{
+    while(true) {
+        // state 0 - button is up, pb = 0
+        if (pb6 == 0 && state6 == 3) {
+            // nothing happens here, servo is still
+            state6 = 0;
+        }
+        // state 1 - button is moving down, pb = 1
+        if (pb6 == 1 && state6 == 0) {
+            button6.moveServoIn();
+            state6 = 1;
+        }
+        // state 2 - button is down, pb = 0
+        if (pb6 == 0 && state6 == 1) {
+            // nothing happens here, servo is still
+            state6 = 2;
+        }
+        // state 3 - button is moving up, pb = 1
+        if (pb6 == 1 && state6 == 2) {
+            button6.moveServoOut();
+            state6 = 3;
+        }
+        // state 4 - handle debouncing while button is down
+        /*if (pb6 = 1 && state6 == 2) {
+            
+        }*/
+
+    }
+}
+
 void submit_thread()
 {
     Thread::wait(500); // wait till thread is done
@@ -137,6 +283,10 @@
     // 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);
     wait(.001);
 
     // servo begins at 30 degrees
@@ -149,13 +299,41 @@
         myservo2 = i/100.0;
         wait(0.01);
     }
+    
+    for(int i=0; i<=3; i++) {
+        myservo3 = i/100.0;
+        wait(0.01);
+    }
+    
+    for(int i=0; i<=3; i++) {
+        myservo4 = i/100.0;
+        wait(0.01);
+    }
+    
+    for(int i=0; i<=3; i++) {
+        myservo5 = i/100.0;
+        wait(0.01);
+    }
 
-    led1 = 1;
+    for(int i=0; i<=3; i++) {
+        myservo6 = i/100.0;
+        wait(0.01);
+    }
+    
+    //led1 = 1;
     //led2 = 1;
-    Thread t3(button_thread);
-    Thread t4(button2_thread);
-    t3.start(button_thread);
-    t4.start(button2_thread);
+    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);
 
     // start threads for reset, mode, start
     //Thread t1(start_thread);
@@ -185,6 +363,7 @@
     //if (linpot < 0.5) {
     //float potval = linpot;
     //pc.printf("linear pot: %f\n", potval);
+    
     // MAIN THREAD
     while(true) {
         Thread::wait(500); // wait till thread is done