Robot code for searching an object and charging at it.
Dependencies: HCSR04 Motor mbed
Diff: functions.cpp
- Revision:
- 10:cec68ef272cd
- Parent:
- 7:d94d23c55015
- Parent:
- 9:7770a84228c0
- Child:
- 11:b45798cc3c10
diff -r 43a650f9d4af -r cec68ef272cd functions.cpp --- a/functions.cpp Sat May 23 17:08:45 2015 +0000 +++ b/functions.cpp Sat May 23 17:48:01 2015 +0000 @@ -82,30 +82,31 @@ void reverse(float speed) { printf("Reverse\n"); - MotorLeft.speed((speed)); + MotorLeft.speed(-(speed)); MotorRight.speed(-(speed)); - wait_ms(1000); - return; +} + +void turn(float speed) { + printf("Turning\n"); + MotorLeft.speed(speed); + MotorRight.speed(-(speed)); } void reverseandturn(float speed) { printf("Reverse and turn\n"); MotorLeft.speed((speed-0.3)); MotorRight.speed(-(speed-0.1)); - wait_ms(2000); - return; } void charge(float speed) { MotorLeft.speed(speed); MotorRight.speed(speed); - return; } void moverandom() { int counter; - int turn; + int dir; int direction; float random_time; float random_speed; @@ -117,7 +118,7 @@ { random_time = rand() % 1000 + 1000; - turn = rand()/(RAND_MAX); + dir = rand()/(RAND_MAX); random_speed = (float)rand()/(float)(RAND_MAX); if (random_speed < 0.5) { random_speed = 0.5; @@ -125,20 +126,17 @@ random_speed = 0.8; } - if (turn == 0) { + if (dir == 0) { direction = rand()/(RAND_MAX); if (direction == 1) { - MotorLeft.speed(random_speed); - MotorRight.speed(random_speed); + charge(random_speed); wait_ms(random_time); } else { - MotorLeft.speed(-random_speed); - MotorRight.speed(-random_speed); + reverse(random_speed); wait_ms(random_time); } } else { - MotorLeft.speed(-random_speed); - MotorRight.speed(random_speed); + turn(random_speed); wait_ms(random_time); } return; @@ -148,7 +146,6 @@ void stop() { MotorLeft.speed(0.0); MotorRight.speed(0.0); - return; } int detect_object(int range, float speed) { @@ -175,8 +172,7 @@ break; } else { sense = 0; - MotorLeft.speed(speed); - MotorRight.speed(-(speed)); + turn(speed); } if (inner_t.read_ms() >=100) {