Robot code for searching an object and charging at it.

Dependencies:   HCSR04 Motor mbed

Files at this revision

API Documentation at this revision

Comitter:
alex0612
Date:
Sun Jun 07 18:35:04 2015 +0000
Parent:
29:977f47331d85
Child:
32:775eec44ba4f
Child:
33:4d0fe8fbed68
Commit message:
Minor changes

Changed in this revision

functions.cpp Show annotated file Show diff for this revision Revisions of this file
functions.h 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/functions.cpp	Sun Jun 07 17:34:17 2015 +0000
+++ b/functions.cpp	Sun Jun 07 18:35:04 2015 +0000
@@ -21,8 +21,8 @@
 
 // Setting pins for motor, as follows:
 // Example: Motor____(PWM, Forward, Reverse)
-Motor MotorLeft(p23, p27, p28);
-Motor MotorRight(p22, p30, p29);
+Motor MotorRight(p23, p27, p28);
+Motor MotorLeft(p22, p30, p29);
 
 // Setting pins for ultrasonic sensor, as follows:
 // Example: usensor(Trigger, Echo)
@@ -140,10 +140,10 @@
     }
 }
 
-void reverse(float speed) {
+void reverse(float speed, float adj) {
     //printf("Reverse\n");
     MotorLeft.speed(-(speed));
-    MotorRight.speed(-(speed));
+    MotorRight.speed(-(speed)-adj);
 }
 
 void turn(float speed) {
@@ -158,9 +158,9 @@
     MotorRight.speed(-(speed-0.1));
 }
 
-void move_forward(float speed) {
+void move_forward(float speed, float adj) {
     MotorLeft.speed(speed);
-    MotorRight.speed(speed);
+    MotorRight.speed(speed+adj);
 }
 
 void move_random(float speed)
@@ -216,7 +216,7 @@
     dist = 0;
     reverse = 0;
     
-    while (usensor_t.read_ms() < 15000) {
+    while (usensor_t.read_ms() < 10000) {
         // Start the ultrasonic sensor
         usensor.start();
         inner_t.start();
@@ -270,14 +270,14 @@
         if(detect == 1) {
             stop();
             turn_leds_on();
-            move_detect(-moveforwardspeed,1,1000,300);
+            move_detect(-forwardspeed,1,1000,300);
             stop();
             break;
         // If line is detected from back just keep on moving forward
         } else if (detect == -1) {
             stop();
             turn_leds_on();
-            move_detect(moveforwardspeed,1,1000,300);
+            move_detect(forwardspeed,1,1000,300);
             stop();
             break;
         }
--- a/functions.h	Sun Jun 07 17:34:17 2015 +0000
+++ b/functions.h	Sun Jun 07 18:35:04 2015 +0000
@@ -1,9 +1,17 @@
 // Header file for functions.cpp
 
+// Speed adjustment to take into account different motor speeds
+// Changes speed of left motor
+#define ADJUSTMENT 0.1
+
 // Global parameters
-// Speed at which it move_forwards an object
+// Speed at which it moves forward
 // optimum value: 0.4 to 0.8
-extern float moveforwardspeed;
+extern float forwardspeed;
+// Global parameters
+// Speed at which it reverses
+// optimum value: 0.4 to 0.6
+extern float reversespeed;
 // Speed at which it rotates to find an object
 // optimum value: 0.3 to 0.5
 extern float searchspeed;
@@ -11,6 +19,8 @@
 // optimum value: 30 to 50
 extern unsigned int range;
 
+
+
 void flash_leds();
 void turn_leds_on();
 void turn_led_right();
@@ -18,11 +28,11 @@
 int read_line1();
 int read_line2();
 int detect_line();
-void move_random(float speed=moveforwardspeed);
-void reverse(float speed = moveforwardspeed);
-void turn(float speed = moveforwardspeed);
-void reverse_and_turn(float speed = moveforwardspeed);
-void move_forward(float speed = moveforwardspeed);
+void move_random(float speed = forwardspeed);
+void reverse(float speed = reversespeed, float adj = ADJUSTMENT);
+void turn(float speed = forwardspeed);
+void reverse_and_turn(float speed = reversespeed);
+void move_forward(float speed = forwardspeed, float adj = ADJUSTMENT);
 void stop();
-int detect_object(int range_t = range, float speed = moveforwardspeed);
+int detect_object(int range_t = range, float speed = searchspeed);
 void move_detect(float speed, int fwd_bck, int time, int wait=0);
\ No newline at end of file
--- a/main.cpp	Sun Jun 07 17:34:17 2015 +0000
+++ b/main.cpp	Sun Jun 07 18:35:04 2015 +0000
@@ -33,7 +33,7 @@
 //                          -1 - if line detected from the back
 //
 // reverse(speed)
-//                      -   reverses the robot with moveforwardspeed in same position
+//                      -   reverses the robot with forwardspeed in same position
 //
 // stop()
 //                      -   stops the robot
@@ -55,20 +55,27 @@
 //Serial pc(USBTX, USBRX);
 
 // Global parameters
-// Speed at which it move_forwards an object
-// optimum value: 0.4 to 0.8
-float moveforwardspeed;
-// Speed at which it rotates to find an object
-// optimum value: 0.3 to 0.5
+
+float forwardspeed;
+float reversespeed;
 float searchspeed;
-// Range of detection
-// optimum value: 30 to 50
 unsigned int range;
 
 void initialise()
 {
-    moveforwardspeed = 0.6;
+    // 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
@@ -98,7 +105,7 @@
 
         if (detect_o == 1) {
 
-            move_forward(moveforwardspeed);
+            move_forward(forwardspeed);
 
             while (true) {
 
@@ -107,7 +114,7 @@
                 if(detect_l == 1 || detect_l == -1) {
                     stop();
                     turn_led_right();
-                    reverse(searchspeed);
+                    reverse(reversespeed);
                     wait(1.5);
                     detect_l = 0;
                     break;