Code for Sprint 2
Dependencies: C12832 mbed rtos RangeFinder
Diff: main.cpp
- Revision:
- 0:5edc27224a37
- Child:
- 1:28ea653772dc
- Child:
- 5:4354b585dcab
diff -r 000000000000 -r 5edc27224a37 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Feb 25 17:33:41 2015 +0000 @@ -0,0 +1,82 @@ +#include "mbed.h" +#include "rtos.h" +#include "Servo.h" +#include "C12832.h" +Servo s1(p21); +Servo s2(p22); +Serial pc(USBTX, USBRX); +Mutex mutexIn; +Mutex mutexOut; + +// Globel variables +float cordinates[3]; +float corHoriz; +float corVertic; +float corDeep; +float outVert; +float outHoriz; +C12832 lcd(p5, p7, p6, p8, p11);// lcd is an object from class c12832 initialised by p5,p7.... + +/* Thread Serial 1 - handles the output data from the control thread, and pass to the servo. + @update s1, s2 */ +void serial_thread(void const *args) { + while (true) { + mutexIn.lock(); +// cordinates = pc.putc(pc.getc()); + corHoriz = cordinates[0]; + corVertic = cordinates[1]; + corDeep = cordinates[2]; + mutexIn.unlock(); + Thread::wait(200); + } +} + +/* Thread LCD 2 - handles the input data from the sonar sensor, and display on the LCD screen. + @update inData */ +void lcd_thread(void const *args) { + while (true) { + mutexIn.lock(); + mutexOut.lock(); + // Display values on the LCD screen + lcd.cls(); // clear the display + lcd.locate(0,3); // the location where you want your charater to be displayed + lcd.printf("Hor: %f, Vert: %f, Deep: %f", corHoriz, corVertic, corDeep); + mutexIn.unlock(); + mutexOut.unlock(); + Thread::wait(25); + } +} + +/* Thread Control 3 - handles the input data from the sonar sensor, and display on the LCD screen. + @update inData */ +void control_thread(void const *args) { + while (true) { + mutexIn.lock(); + // The control code will come here + + mutexIn.unlock(); + Thread::wait(25); + } +} + +/* Thread Servo 4 - handles the output data from the control thread, and pass to the servo. + @update s1, s2 */ +void servo_thread(void const *args) { + while (true) { + mutexOut.lock(); +// s1 = outVert; +// s2 = outHoriz; + mutexOut.unlock(); + Thread::wait(200); + } +} + +int main() { + Thread thread_1(serial_thread); // Start Serial Thread + Thread thread_2(lcd_thread); // Start LCD Thread + Thread thread_3(control_thread); // Start Control Thread + Thread thread_4(servo_thread); // Start Servo Thread + while(1) { + Thread::wait(10); + } +}