Example of using threads to run different actions happening at the same time.

Dependencies:   Motor Servo

Fork of Fa2018-es200-1121-3321-thread-example by Fa2018-es200-1121-project2-herndon-toss

Revision:
7:b7257f01ced7
Parent:
6:ed7539be9fa3
Child:
8:990a1c27a5da
--- a/main.cpp	Fri Oct 19 12:27:25 2018 +0000
+++ b/main.cpp	Mon Oct 22 15:23:45 2018 +0000
@@ -1,6 +1,6 @@
 /*
-ES200 Project 2 thread example
-D Evangelista, 2018
+ES200 Project 2 thread use
+Rock em Sock em 2018
 Note that this uses mbed OS 5 vice OS 2. 
 */
 
@@ -13,17 +13,17 @@
 // Declare some stuff
 DigitalIn sw1(p18); // switch for activating motor 
 DigitalIn sw2(p16); // switch for activating servo 
-DigitalIn sw3(p20); //
+DigitalIn sw3(p20); // switch for activating servo2
 DigitalOut led1(LED1); // status LED for sw1
 DigitalOut led2(LED2); // status LED for sw2
 DigitalOut led3(LED3); // status LED for sw3
-DigitalOut heartbeat(LED4); // heartbeat LED
+DigitalOut heartbeat(LED4); // heartbeat LED adds visual effects
 Motor m(p26,p30,p29); 
 Servo s1(p21);
 Servo s2(p22);
 Thread m_thread; // NEW IN mbed OS 5, threads are used to (sorta) do multiple things at once
-Thread s1_thread;
-Thread s2_thread;
+Thread s1_thread; //creates thread for servo
+Thread s2_thread; // creates thread for servo2
 
 /** Callback for executing a simple motor action. When sw1 is high,
  *  the motor turns forward, otherwise the motor turns off.
@@ -46,10 +46,11 @@
     m.speed(0.0); // set motor speed to zero at startup
     
     // start tasks
-    printf("main thread running\n");
+    printf("In the left corner: MIDN Slappy weighing 0.02 lbs.\n In the right corner: MIDN Hitme weighing 0.021 lbs.\n");
     m_thread.start(callback(m_callback)); // starts the motor thread going
     s1_thread.start(callback(s1_callback)); // starts the servo thread going
     s2_thread.start(callback(s2_callback)); //starts the servo2 thread going
+    printf("\"ding ding ding\" Fight!\n");
     
     // main loop
     while(1){
@@ -66,27 +67,27 @@
 
 
 void m_callback(void){
-    printf("m_thread running\n");
+    printf("THE fighters are moving back and forth like dancers!!\n");
     while(1) {
         
             led1.write(1); // light a light for entertaining purposes
-            m.speed(0.7); // spin motor ahead to move players together
-            wait (1.2);
+            m.speed(0.5); // spin motor ahead to move players together
+            wait (0.7); //time of motor movement
             m.speed(0.0); //stop players when they are close.
             wait (1+rand()%5); //let them fight for a random amount of time
             led1.write(0); 
-            m.speed(-0.7); // move the players back
-            wait (1.2);
+            m.speed(-0.5); // move the players back
+            wait (0.7); //time of opposite motor movement
                 
-        //ThisThread::sleep_for(200); // this thread executes 5x a second
-        Thread::wait(200); 
+        //ThisThread::sleep_for(200); // this thread executes 20x a second
+       // Thread::wait(50); //possibly change to small or erase
     } // while(1)
 } // m_callback()
     
     
     
 void s1_callback(void){
-    printf("s1_thread running\n");    
+    printf("Slappy threw a punch!\n");    
     while(1){
         if (sw2.read()){
             led2.write(1); // light a light for entertaining purposes
@@ -94,25 +95,25 @@
             }
             else{
                 led2.write(0); 
-                s1.write(0); // move servo a step to left
+                s1.write(sw1.read()-0.5); // move servo a step to left
                 }
-        //ThisThread::sleep_for(200); // this thread executes 5x a second
-        Thread::wait(200); 
+        //ThisThread::sleep_for(200); // this thread executes 20x a second
+       // Thread::wait(50); //possibly change
         } // while(1)
 } // s1_callback()
 
 void s2_callback(void){
-    printf("s2_thread running\n");    
+    printf("Hitme is fighting back!\n");    
     while(1){
         if (sw3.read()){
-            led3.write(1); // light a light for debugging purposes
+            led3.write(1); // light a light for entertaining purposes
             s2.write(s2.read()+0.5); // move servo a step to right
             }
             else{
                 led3.write(0); 
-                s2.write(0); // move servo a step to left
+                s2.write(s2.read()-0.5); // move servo a step to left
                 }
-        //ThisThread::sleep_for(200); // this thread executes 5x a second
-        Thread::wait(200); 
+        //ThisThread::sleep_for(200); // this thread executes 20x a second
+       // Thread::wait(50); //possibly change
         } // while(1)
 } // s2_callback()