sonar sensor is working in the version of code but the reading are not correct

Dependencies:   C12832 Pulse RangeFinder Servo mbed rtos

Fork of Team_Sprint2 by WIT_EmbOS_Gr1

Files at this revision

API Documentation at this revision

Comitter:
Argensis
Date:
Mon Apr 13 12:39:24 2015 +0000
Parent:
4:70090f3b1f07
Child:
10:ca6f2769964e
Commit message:
Update to fix serial communications between OpenCV and mBed.

Changed in this revision

Servo.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Servo.lib	Thu Mar 12 19:57:41 2015 +0000
+++ b/Servo.lib	Mon Apr 13 12:39:24 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/jdenkers/code/Servo/#352133517ccc
+http://developer.mbed.org/users/simon/code/Servo/#36b69a7ced07
--- a/main.cpp	Thu Mar 12 19:57:41 2015 +0000
+++ b/main.cpp	Mon Apr 13 12:39:24 2015 +0000
@@ -2,8 +2,9 @@
 #include "rtos.h"
 #include "Servo.h"
 #include "C12832.h"
-Servo s1(p21);
-Servo s2(p22);
+
+Servo tiltServo(p21);
+Servo panServo(p22);
 Serial pc(USBTX, USBRX);
 Mutex mutexIn;
 Mutex mutexOut;
@@ -11,25 +12,16 @@
 AnalogIn p1(p19);
 AnalogIn p2(p20);
 
-// Globel variables
-char cordinates[20];
-char corHoriz[20];
-char corVert[20];
-//float corDeep;
-float outVert;
-//float outHoriz;
+// Global variables
+float corHoriz = 0;
+float corVert = 0;
 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();
-      //  pc.gets(cordinates,4);
-     //   cordinates = pc.putc(pc.getc());
-         pc.scanf("%s \n %s \n ",corHoriz,corVert);// read from serial port the data
-        mutexIn.unlock();
-        Thread::wait(200);
+        pc.scanf("%f,%f", &corHoriz, &corVert);// read from serial port the data
     }
 }
  
@@ -37,43 +29,22 @@
     @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,5);    // the location where you want your charater to be displayed
-        lcd.printf("Hor:%s",corHoriz);
+        lcd.printf("Hor: %0.3f", corHoriz);
         lcd.locate(0,20);    // the location where you want your charater to be displayed
-        lcd.printf("Ver%s", corVert);
-        mutexIn.unlock();
-        mutexOut.unlock();
-        Thread::wait(25);
+        lcd.printf("Ver: %0.3f", corVert);
+        Thread::wait(250);
     }
 }
 
-/* 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
-        if (corHoriz[1]=='1')
-            s1 = s1 + 0.25;
-        if (corHoriz[1]=='2')
-            s1 = s1 - 0.25;
-        mutexIn.unlock();
-        Thread::wait(25);
-    }
-}
-
-/* Thread Servo 4 - handles the output data from the control thread, and pass to the servo.
+/* Thread Servo 3 - 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();
+        tiltServo = corVert;
+        panServo = corHoriz;
         Thread::wait(200);
     }
 }
@@ -81,9 +52,8 @@
 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
+    Thread thread_3(servo_thread); // Start Servo Thread
     while(1) {
-        Thread::wait(10);
+        wait(1);
     }
 }