Robot code for searching an object and charging at it.

Dependencies:   HCSR04 Motor mbed

Revision:
32:775eec44ba4f
--- /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();
+    } 
+}
+