Robot code for searching an object and charging at it.

Dependencies:   HCSR04 Motor mbed

Revision:
1:bd88d4062c97
Parent:
0:15664f71b21f
Child:
4:0507835a3dce
diff -r 15664f71b21f -r bd88d4062c97 functions.cpp
--- a/functions.cpp	Sat May 23 14:13:09 2015 +0000
+++ b/functions.cpp	Sat May 23 14:30:32 2015 +0000
@@ -12,7 +12,7 @@
 int read_line1()
 {
     // Time to record how long input is active
-    Timer t;
+    Timer temp_t;
     
     // Activate the line sensor and then read
     line1.output();
@@ -21,18 +21,18 @@
     line1.input();
     
     // Start timer
-    t.start();
+    temp_t.start();
 
     // Time how long the input is HIGH, but quit
     // after 1ms as nothing happens after that
-    while (line1 == 1 && t.read_us() < 1000);
-    return t.read_us();
+    while (line1 == 1 && temp_t.read_us() < 1000);
+    return temp_t.read_us();
 }
 
 int read_line2()
 {
     // Time to record how long input is active
-    Timer t;
+    Timer temp_t;
     
     // Activate the line sensor and then read
     line2.output();
@@ -45,7 +45,7 @@
 
     // Time how long the input is HIGH, but quit
     // after 1ms as nothing happens after that
-    while (line2 == 1 && t.read_us() < 1000);
+    while (line2 == 1 && temp_t.read_us() < 1000);
     return t.read_us();
 }
 
@@ -78,7 +78,7 @@
 void reverseandturn()
 {
     printf("Reverse and turn\n");
-    MotorLeft.speed((chargespeed-0.2));
+    MotorLeft.speed((chargespeed-0.3));
     MotorRight.speed(-(chargespeed-0.1));
     wait_ms(2000);
     return;
@@ -89,4 +89,33 @@
     MotorLeft.speed(chargespeed);
     MotorRight.speed(chargespeed);
     return;
+}
+
+int detect_object(int smooth)
+{
+    // Start a timer - finds an object for 10 seconds
+    // if it doesn't find anything returns 0
+    Timer usensor_t;
+    usensor_t.start();
+    
+    // Variable to store sensed value
+    int sense;
+        
+    while (usensor_t.readms < 10000)
+    {
+        // Start the ultrasonic sensor
+        usensor.start();
+        dist = usensor.get_dist_cm();
+        
+        // If an object is detected based on out set range return 1
+        if (dist <= range && dist >= 1) {
+            sense = 1;
+            break;
+        } else {
+            sense = 0;
+            MotorLeft.speed(searchspeed);
+            MotorRight.speed(-(searchspeed));
+        }
+    }
+    return sense;
 }
\ No newline at end of file