der Roboter / Mbed 2 deprecated ThursWork

Dependencies:   m3pi_ng mbed

Committer:
bayagich
Date:
Thu May 22 14:39:07 2014 +0000
Revision:
1:9848e25989f1
Parent:
0:386c250325ce
UPdated version with comments;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mmpeter 0:386c250325ce 1 #include "mbed.h"
mmpeter 0:386c250325ce 2 #include "m3pi_ng.h"
mmpeter 0:386c250325ce 3 #include "cmath"
mmpeter 0:386c250325ce 4 #include "iostream"
mmpeter 0:386c250325ce 5
mmpeter 0:386c250325ce 6 using namespace std;
mmpeter 0:386c250325ce 7
bayagich 1:9848e25989f1 8 m3pi thinggy;
mmpeter 0:386c250325ce 9
mmpeter 0:386c250325ce 10 int main() {
mmpeter 0:386c250325ce 11
mmpeter 0:386c250325ce 12 float speed = 0.25;
bayagich 1:9848e25989f1 13 float turn_speed = 0.2;
mmpeter 0:386c250325ce 14 float correction;
mmpeter 0:386c250325ce 15 float k = -0.3;
mmpeter 0:386c250325ce 16 int sensor[5];
mmpeter 0:386c250325ce 17 int returned;
mmpeter 0:386c250325ce 18 thinggy.locate(0,1);
mmpeter 0:386c250325ce 19 thinggy.printf("Villan");
mmpeter 0:386c250325ce 20 thinggy.locate(0,0);
mmpeter 0:386c250325ce 21 thinggy.printf("Pimpin");
mmpeter 0:386c250325ce 22
mmpeter 0:386c250325ce 23 wait(1.0);
mmpeter 0:386c250325ce 24
mmpeter 0:386c250325ce 25 thinggy.sensor_auto_calibrate();
mmpeter 0:386c250325ce 26
mmpeter 0:386c250325ce 27 thinggy.calibrated_sensor(sensor);
bayagich 1:9848e25989f1 28
bayagich 1:9848e25989f1 29 //find the average of the three sensors
mmpeter 0:386c250325ce 30 returned = (sensor[1] + sensor[2] + sensor[3])/3;
mmpeter 0:386c250325ce 31
mmpeter 0:386c250325ce 32 while(1) {
bayagich 1:9848e25989f1 33
bayagich 1:9848e25989f1 34 //check if it needs to turn
bayagich 1:9848e25989f1 35 while(returned <= 240){
bayagich 1:9848e25989f1 36 //turns right
mmpeter 0:386c250325ce 37 while(sensor[0] < sensor[4] && thinggy.line_position() != 0){
bayagich 1:9848e25989f1 38 thinggy.left_motor(turn_speed);
bayagich 1:9848e25989f1 39 thinggy.right_motor(-turn_speed);
mmpeter 0:386c250325ce 40 thinggy.calibrated_sensor(sensor);
mmpeter 0:386c250325ce 41 }
bayagich 1:9848e25989f1 42 //turns left
mmpeter 0:386c250325ce 43 while(sensor[4] > sensor[0] && thinggy.line_position() != 0){
bayagich 1:9848e25989f1 44 thinggy.left_motor(-turn_speed);
bayagich 1:9848e25989f1 45 thinggy.right_motor(turn_speed);
mmpeter 0:386c250325ce 46 thinggy.calibrated_sensor(sensor);
mmpeter 0:386c250325ce 47 }
mmpeter 0:386c250325ce 48 thinggy.calibrated_sensor(sensor);
mmpeter 0:386c250325ce 49 returned = (sensor[1] + sensor[2] + sensor[3])/3;
bayagich 1:9848e25989f1 50 }//while returned <= 220
mmpeter 0:386c250325ce 51
mmpeter 0:386c250325ce 52 // Curves and straightaways
bayagich 1:9848e25989f1 53 while(returned > 240){
bayagich 1:9848e25989f1 54 float position = thinggy.line_position();
bayagich 1:9848e25989f1 55 correction = k*(position);
mmpeter 0:386c250325ce 56
bayagich 1:9848e25989f1 57 // -1.0 is far left, 1.0 is far right, 0.0 in the middle
mmpeter 0:386c250325ce 58
bayagich 1:9848e25989f1 59 //speed limiting for right motor
bayagich 1:9848e25989f1 60 if(speed + correction > 1){
bayagich 1:9848e25989f1 61 thinggy.right_motor(0.6);
bayagich 1:9848e25989f1 62 thinggy.left_motor(speed-correction);
bayagich 1:9848e25989f1 63 }
bayagich 1:9848e25989f1 64
bayagich 1:9848e25989f1 65 //speed limiting for left motor
bayagich 1:9848e25989f1 66 if(speed - correction > 1){
bayagich 1:9848e25989f1 67 thinggy.left_motor(0.6);
bayagich 1:9848e25989f1 68 thinggy.right_motor(speed+correction);
bayagich 1:9848e25989f1 69 }
bayagich 1:9848e25989f1 70 else{
bayagich 1:9848e25989f1 71 thinggy.left_motor(speed-correction);
bayagich 1:9848e25989f1 72 thinggy.right_motor(speed+correction);
bayagich 1:9848e25989f1 73 }
bayagich 1:9848e25989f1 74 thinggy.calibrated_sensor(sensor);
bayagich 1:9848e25989f1 75 returned = (sensor[1] + sensor[2] + sensor[3])/3;
bayagich 1:9848e25989f1 76 }//while returned > 220
bayagich 1:9848e25989f1 77
bayagich 1:9848e25989f1 78 }//while(1)
mmpeter 0:386c250325ce 79 }
mmpeter 0:386c250325ce 80
mmpeter 0:386c250325ce 81
mmpeter 0:386c250325ce 82