
Robot code for searching an object and charging at it.
Dependencies: HCSR04 Motor mbed
Revision 30:8a5570b2de68, committed 2015-06-07
- 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
--- 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;