Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 3:bac13ce5f5d0
- Parent:
- 2:b5031bb5303e
- Child:
- 4:057e904b1395
--- a/main.cpp Mon May 26 07:40:29 2014 +0000
+++ b/main.cpp Mon May 26 09:34:16 2014 +0000
@@ -9,7 +9,7 @@
using namespace std;
-void cross_detection(int sensor[5], int black_thresh, int white_thresh);
+bool cross_detection(int sensor[5], int black_thresh, int white_thresh);
m3pi thinggy;
@@ -23,6 +23,7 @@
int returned;
int black_thresh = 300;
int white_thresh = 240;
+ bool cross = 0;
thinggy.locate(0,1);
thinggy.printf("Villan");
thinggy.locate(0,0);
@@ -38,23 +39,27 @@
returned = (sensor[1] + sensor[2] + sensor[3])/3;
while(1) {
-
- cross_detection(sensor, black_thresh, white_thresh);
-
//check if it needs to turn
while(returned <= 240){
- cross_detection(sensor, black_thresh, white_thresh);
//turns right
while(sensor[0] < sensor[4] && thinggy.line_position() != 0){
thinggy.left_motor(turn_speed);
thinggy.right_motor(-turn_speed);
thinggy.calibrated_sensor(sensor);
+ cross = cross_detection(sensor, black_thresh, white_thresh);
+ if(cross){
+ //ask for command (left, right or forward)
+ }
}
//turns left
while(sensor[4] > sensor[0] && thinggy.line_position() != 0){
thinggy.left_motor(-turn_speed);
thinggy.right_motor(turn_speed);
thinggy.calibrated_sensor(sensor);
+ cross = cross_detection(sensor, black_thresh, white_thresh);
+ if(cross){
+ //ask for command (left, right or forward)
+ }
}
thinggy.calibrated_sensor(sensor);
returned = (sensor[1] + sensor[2]*2 + sensor[3])/4;
@@ -104,26 +109,33 @@
//REQUIRES: array of 5 ints
//EFFECTS: stops the robot if it comes to any interesection where a decision has to be made
- void cross_detection(int sensor[5], int black_thresh, int white_thresh){
+ // and returns true if there is a cross
+ bool cross_detection(int sensor[5], int black_thresh, int white_thresh){
//three directions to choose from NOT WORKING
- if(sensor[0] > black_thresh and sensor[1] < white_thresh and sensor[2] > black_thresh and sensor[3] < white_thresh and sensor[4] > black_thresh){
+ if(sensor[0] > black_thresh and sensor[2] > black_thresh and sensor[4] > black_thresh){
thinggy.stop();
- wait(300);
+ wait(300);
+ return 1;
}
//left or forward
- else if(sensor[0] > black_thresh and sensor[1] < white_thresh and sensor[2] > black_thresh and sensor[3] < white_thresh and sensor[4] < white_thresh){
+ else if(sensor[0] > black_thresh and sensor[2] > black_thresh){
thinggy.stop();
wait(300);
+ return 1;
}
//left or right WORKING
else if (sensor[0] > black_thresh and sensor[1] < white_thresh and sensor[2] < white_thresh and sensor[3] < white_thresh and sensor[4] > black_thresh ){
thinggy.stop();
- wait(300);
+ wait(300);
+ return 1;
}
//forward or right
- else if (sensor[0] < white_thresh and sensor[1] < white_thresh and sensor[2] > black_thresh and sensor[3] < white_thresh and sensor[4] > black_thresh){
+ else if (sensor[2] > black_thresh and sensor[4] > black_thresh){
thinggy.stop();
- wait(300);
+ wait(300);
+ return 1;
}
+
+ return 0;
}
\ No newline at end of file