Robot code for searching an object and charging at it.

Dependencies:   HCSR04 Motor mbed

Files at this revision

API Documentation at this revision

Comitter:
lhartfield
Date:
Sun Jun 07 18:44:26 2015 +0000
Parent:
30:8a5570b2de68
Parent:
31:70753d91565c
Child:
34:a85424ea60ac
Commit message:
merge

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp.orig Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Sun Jun 07 18:35:04 2015 +0000
+++ b/main.cpp	Sun Jun 07 18:44:26 2015 +0000
@@ -8,40 +8,38 @@
 // Yucando Navarrete
 // Vivekanand Gupta
 
-// The following code will control a robotic car
-// by detetecting an object and charging towards it
-// it uses basic functions as:
+// The following code controls a robotic car
+// by detetecting an object and charging towards it.
+// It uses the following basic functions:
 //
 // move_forward(speed)
-//                      -   used to move_forward on an object detected
-//                          the robot will move in a straight line
+//                      -   Used to move the robot toward a detected object.
+//                          The robot will move forwards in a straight line
 //                          until it detects the arena line where
 //                          it will use reverse() to move back
 //
 // detect_object(range, speed)
-//                      -   used to detect an object, the robot will
-//                          move in a circle to find an object and
-//                          return 1 if it finds something and return
-//                          0 if it does not find anything - the search
-//                          will be carried out for 15 seconds.
+//                      -   Used to detect an object, the robot will
+//                          move in a circle to find an object. This function
+//                          returns 1 if an object is detected, otherwise it will 
+//                          return 0. The search will be carried out for 15 seconds.
 //
 // detect_line ()
-//                      -   used to detect a line, it returns the following
-//                          an int value as follows:
-//                          0  - if no line is detected
-//                          1  - if line detected from the front
-//                          -1 - if line detected from the back
+//                      -   Used to detect a line, it returns the following values:
+//                              0  - if no line is detected
+//                              1  - if line detected from the front
+//                              -1 - if line detected from the back
 //
 // reverse(speed)
-//                      -   reverses the robot with forwardspeed in same position
+//                      -   Reverses the robot in a straight line at given speed.
 //
 // stop()
-//                      -   stops the robot
+//                      -   Stops the robot.
 //
 // move_random(speed)
-//                      -   used to move the robot randomly, the robot will either
+//                      -   Used to move the robot randomly: the robot will either
 //                          move forward, move backward, or turn around. The movement 
-//                          will be carried out for a random time
+//                          will be carried out for a random time.
 //
 
 // Libraries for using the above functions and more ...
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp.orig	Sun Jun 07 18:44:26 2015 +0000
@@ -0,0 +1,134 @@
+// Code written by:
+// Jon Baker
+// Alessandro Grande
+// Abdul-Rehman Sharif
+// Lucinda Hartfield
+
+// Circuitry made by:
+// Yucando Navarrete
+// Vivekanand Gupta
+
+// The following code will control a robotic car
+// by detetecting an object and charging towards it
+// it uses basic functions as:
+//
+// move_forward(speed)
+//                      -   used to move_forward on an object detected
+//                          the robot will move in a straight line
+//                          until it detects the arena line where
+//                          it will use reverse() to move back
+//
+// detect_object(range, speed)
+//                      -   used to detect an object, the robot will
+//                          move in a circle to find an object and
+//                          return 1 if it finds something and return
+//                          0 if it does not find anything - the search
+//                          will be carried out for 15 seconds.
+//
+// detect_line ()
+//                      -   used to detect a line, it returns the following
+//                          an int value as follows:
+//                          0  - if no line is detected
+//                          1  - if line detected from the front
+//                          -1 - if line detected from the back
+//
+// reverse(speed)
+//                      -   reverses the robot with forwardspeed in same position
+//
+// stop()
+//                      -   stops the robot
+//
+// move_random(speed)
+//                      -   used to move the robot randomly, the robot will either
+//                          move forward, move backward, or turn around. The movement 
+//                          will be carried out for a random time
+//
+
+// Libraries for using the above functions and more ...
+#include "mbed.h"
+#include "Motor.h"
+#include "hcsr04.h"
+#include "functions.h"
+
+// Set for debugging purpose
+// Example: pc(TX, RX)
+//Serial pc(USBTX, USBRX);
+
+// Global parameters
+
+float forwardspeed;
+float reversespeed;
+float searchspeed;
+unsigned int range;
+
+void initialise()
+{
+    // Each speed value can be set from 0 to 1
+    
+    // Speed at which it moves forward
+    // optimum value: 0.5 to 0.8
+    forwardspeed = 0.6;
+    // Speed at which it reverses
+    // optimum value: 0.4 to 0.6
+    reversespeed = 0.5;
+    // Speed at which it rotates to find an object
+    // optimum value: 0.4 to 0.6
+    searchspeed = 0.5;
+    // Range of detection
+    // optimum value: 30 to 50
+    range = 30;
+
+    // Wait for 5 seconds to move away from robot
+    wait(5);
+}
+
+// The main loop - please write your code here
+int main()
+{
+    // Initialise the code
+    initialise();
+
+    printf("Starting the robot...");
+
+    Timer t;
+    t.start();
+
+    int detect_l = 0;
+    int detect_o = 0;
+
+    while(true) {
+        // Sample code to detect and object and move_forward at it
+        
+        wait(1);
+        
+        detect_o = detect_object(range, searchspeed);
+
+        if (detect_o == 1) {
+
+            move_forward(forwardspeed);
+
+            while (true) {
+
+                detect_l = detect_line();
+                // If line is detected from front then reverse
+                if(detect_l == 1 || detect_l == -1) {
+                    stop();
+                    turn_led_right();
+                    reverse(reversespeed);
+                    wait(1.5);
+                    detect_l = 0;
+                    break;
+                }
+            }
+
+        } else {
+
+            move_random();
+
+        }
+
+        detect_o = 0;
+        stop();
+    } 
+}
+