Example of using threads to run different actions happening at the same time.
Fork of Fa2018-es200-1121-3321-thread-example-rockem by
Revision 5:0c7c692db414, committed 2018-10-15
- Comitter:
- evangeli
- Date:
- Mon Oct 15 11:34:44 2018 +0000
- Parent:
- 4:6ccbc7542ddc
- Commit message:
- Tested. Went back to (deprecated) Thread::wait() but it and ThisThread::sleep_for() both seem to run really slow???
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sun Oct 14 22:05:59 2018 +0000
+++ b/main.cpp Mon Oct 15 11:34:44 2018 +0000
@@ -21,15 +21,13 @@
Thread m_thread; // NEW IN mbed OS 5, threads are used to (sorta) do multiple things at once
Thread s1_thread;
-/**
- * Callback for executing a simple motor action. When sw1 is high,
- * the motor turns forward, otherwise the motor turns off.
+/** Callback for executing a simple motor action. When sw1 is high,
+ * the motor turns forward, otherwise the motor turns off.
*/
void m_callback(void); // This function will be run within the corresponding thread
-/**
- * Simple callback for servo motion. When sw2 is high, the servo steps right,
- * otherwise it steps left. If it hits the ends it stays there.
+/** Simple callback for servo motion. When sw2 is high, the servo steps right,
+ * otherwise it steps left. If it hits the ends it stays there.
*/
void s1_callback(void);
@@ -48,8 +46,9 @@
// main loop
while(1){
heartbeat = !heartbeat; // blink heartbeat once a second
- ThisThread::sleep_for(1000);
-
+ //ThisThread::sleep_for(1000);
+ Thread::wait(1000);
+
// I don't have to do my motor or servo stuff here because they are
// running in their own threads.
} // main loop
@@ -69,7 +68,8 @@
led1.write(0);
m.speed(0.0); // stop the shaft
}
- ThisThread::sleep_for(200); // this thread executes 5x a second
+ //ThisThread::sleep_for(200); // this thread executes 5x a second
+ Thread::wait(200);
} // while(1)
} // m_callback()
@@ -86,6 +86,7 @@
led2.write(0);
s1.write(s1.read()-0.1); // move servo a step to left
}
- ThisThread::sleep_for(200); // this thread executes 5x a second
+ //ThisThread::sleep_for(200); // this thread executes 5x a second
+ Thread::wait(200);
} // while(1)
} // s1_callback()
