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.
Fork of LineFollower by
Revision 10:a9233fa6240d, committed 2014-03-24
- Comitter:
- blu12758
- Date:
- Mon Mar 24 00:44:31 2014 +0000
- Parent:
- 9:039a74519b89
- Child:
- 11:88aa683f1c94
- Commit message:
- sdfh
Changed in this revision
| LineFollower.cpp | Show annotated file Show diff for this revision Revisions of this file |
| LineFollower.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/LineFollower.cpp Mon Mar 10 00:54:55 2014 +0000
+++ b/LineFollower.cpp Mon Mar 24 00:44:31 2014 +0000
@@ -19,7 +19,6 @@
array(ir1, ir2, ir3, ir4, ir5, ir6, ir7, ir8)
{}
-
/** Read the value of a LineFollower object
*
* @return The value of the Sensor
@@ -28,7 +27,7 @@
return array;
}
- float LineFollower::analogFollow(Motor l, Motor r){
+ float LineFollower::analogFollow(Motor l, Motor r, float maxspeed, float sp_adj_mult){
float sum = 0;
int count = 0;
for(int i = 0; i < 8; i++)
@@ -38,22 +37,21 @@
}
if(count == 0) return 0;
float center = sum/count;
-
- float sp_adj_mult = 0.9; //Change this to change how drastic your adjustments are. 0-1
- float speed_adjust = sp_adj_mult*(center-4.5)/(3.5)*MAXSPEED;
- //Also, can change MAXSPEED if the thing is too fast overall. 0-1
+ //Change the sp_adj_mult to change how drastic your adjustments are. 0-1
+ float speed_adjust = sp_adj_mult*(center-4.5)/(3.5)*maxspeed;
+ //Also, can change maxspeed if the thing is too fast overall. 0-1
if(center > 4.5){
- l.speed(MAXSPEED - speed_adjust);
- r.speed(MAXSPEED);
+ l.speed(maxspeed - speed_adjust);
+ r.speed(maxspeed);
}
else if(center < 4.5){
- l.speed(MAXSPEED);
- r.speed(MAXSPEED - abs(speed_adjust));
+ l.speed(maxspeed);
+ r.speed(maxspeed + speed_adjust);
}
else{
- l.speed(MAXSPEED);
- r.speed(MAXSPEED);
+ l.speed(maxspeed);
+ r.speed(maxspeed);
}
return center;
@@ -63,7 +61,8 @@
*
* @param l left drive motor
* @param r right drive motor
- */
+ */
+ /*
int LineFollower::followLine(Motor l, Motor r){
int count = 0;
for(int i = 0; i<8; i++){
@@ -73,68 +72,68 @@
switch(count){
case 1: if(this->read() == 0x7F){
- l.speed(-(0.75 * MAXSPEED));
- r.speed(MAXSPEED);
+ l.speed(-(0.75 * maxspeed));
+ r.speed(maxspeed);
}
else if(this->read() == 0xFE){
- l.speed(MAXSPEED);
- r.speed(-(0.75 * MAXSPEED));
+ l.speed(maxspeed);
+ r.speed(-(0.75 * maxspeed));
}
break;
case 2: if(this->read() == 0xE7){
- l.speed(MAXSPEED);
- r.speed(MAXSPEED);
+ l.speed(maxspeed);
+ r.speed(maxspeed);
}
else if(this->read() == 0x3F){
- l.speed(-(0.5 * MAXSPEED));
- r.speed(MAXSPEED);
+ l.speed(-(0.5 * maxspeed));
+ r.speed(maxspeed);
}
else if(this->read() == 0xFC){
- l.speed(MAXSPEED);
- r.speed(-(0.5 * MAXSPEED));
+ l.speed(maxspeed);
+ r.speed(-(0.5 * maxspeed));
}
else if(this->read() == 0x9F){
l.speed(0);
- r.speed(MAXSPEED);
+ r.speed(maxspeed);
}
else if(this->read() == 0xF9){
- l.speed(MAXSPEED);
+ l.speed(maxspeed);
r.speed(0);
}
else if(this->read() == 0xCF){
- l.speed(0.5*MAXSPEED);
- r.speed(MAXSPEED);
+ l.speed(0.5*maxspeed);
+ r.speed(maxspeed);
}
else if(this->read() == 0xF3){
- l.speed(MAXSPEED);
- r.speed(0.5*MAXSPEED);
+ l.speed(maxspeed);
+ r.speed(0.5*maxspeed);
}
break;
case 3: if(this->read() == 0x1F){
- l.speed(-(0.25*MAXSPEED));
- r.speed(MAXSPEED);
+ l.speed(-(0.25*maxspeed));
+ r.speed(maxspeed);
}
else if(this->read() == 0xF8){
- l.speed(MAXSPEED);
- r.speed(-(0.25*MAXSPEED));
+ l.speed(maxspeed);
+ r.speed(-(0.25*maxspeed));
}
else if(this->read() == 0x8F){
- l.speed(0.25*MAXSPEED);
- r.speed(MAXSPEED);
+ l.speed(0.25*maxspeed);
+ r.speed(maxspeed);
}
else if(this->read() == 0xF1){
- l.speed(MAXSPEED);
- r.speed(0.25*MAXSPEED);
+ l.speed(maxspeed);
+ r.speed(0.25*maxspeed);
}
else if(this->read() == 0xC7){
- l.speed(0.5*MAXSPEED);
- r.speed(MAXSPEED);
+ l.speed(0.5*maxspeed);
+ r.speed(maxspeed);
}
else if(this->read() == 0xE3){
- l.speed(MAXSPEED);
- r.speed(0.5*MAXSPEED);
+ l.speed(maxspeed);
+ r.speed(0.5*maxspeed);
}
break;
default: break;
@@ -144,4 +143,5 @@
return count;
- }
\ No newline at end of file
+ }
+ */
\ No newline at end of file
--- a/LineFollower.h Mon Mar 10 00:54:55 2014 +0000
+++ b/LineFollower.h Mon Mar 24 00:44:31 2014 +0000
@@ -36,16 +36,18 @@
*/
int followLine(Motor l, Motor r);
- float analogFollow(Motor l, Motor r);
+ float analogFollow(Motor l, Motor r, float maxspeed, float sp_adj_mult);
protected:
/* Constants */
#define ROTATE_SPEED 100
- #define MAXSPEED 1
/* Attributes */
BusIn array;
+ float prevLeft;
+ float prevRight;
+
};
