diff options
author | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
---|---|---|
committer | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
commit | 177ad96f866714a4962be57f69cd3d5a6334cde1 (patch) | |
tree | 1072239986340d6a239adac924eddf2e1d1ca566 /libraries/Robot_Control/Motors.cpp | |
parent | 6cff36ac5e85c74bcb45cc53491ad69d64520b36 (diff) | |
parent | d90fcca5839d13d57ed527d4009b78d22dafbde7 (diff) |
Merge branch 'merge-1.0.5' into ide-1.5.x-discovery
Diffstat (limited to 'libraries/Robot_Control/Motors.cpp')
-rw-r--r-- | libraries/Robot_Control/Motors.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libraries/Robot_Control/Motors.cpp b/libraries/Robot_Control/Motors.cpp new file mode 100644 index 0000000..9d5e8b0 --- /dev/null +++ b/libraries/Robot_Control/Motors.cpp @@ -0,0 +1 @@ +#include "ArduinoRobot.h"
#include "EasyTransfer2.h"
void RobotControl::motorsStop(){
messageOut.writeByte(COMMAND_MOTORS_STOP);
messageOut.sendData();
}
void RobotControl::motorsWrite(int speedLeft,int speedRight){
messageOut.writeByte(COMMAND_RUN);
messageOut.writeInt(speedLeft);
messageOut.writeInt(speedRight);
messageOut.sendData();
}
void RobotControl::motorsWritePct(int speedLeftPct, int speedRightPct){
int16_t speedLeft=255*speedLeftPct;
int16_t speedRight=255*speedRightPct;
motorsWrite(speedLeft,speedRight);
}
void RobotControl::pointTo(int angle){
int target=angle;
uint8_t speed=80;
target=target%360;
if(target<0){
target+=360;
}
int direction=angle;
while(1){
if(direction>0){
motorsWrite(speed,-speed);//right
delay(10);
}else{
motorsWrite(-speed,speed);//left
delay(10);
}
int currentAngle=compassRead();
int diff=target-currentAngle;
if(diff<-180)
diff += 360;
else if(diff> 180)
diff -= 360;
direction=-diff;
if(abs(diff)<5){
motorsWrite(0,0);
return;
}
}
}
void RobotControl::turn(int angle){
int originalAngle=compassRead();
int target=originalAngle+angle;
pointTo(target);
/*uint8_t speed=80;
target=target%360;
if(target<0){
target+=360;
}
int direction=angle;
while(1){
if(direction>0){
motorsWrite(speed,speed);//right
delay(10);
}else{
motorsWrite(-speed,-speed);//left
delay(10);
}
int currentAngle=compassRead();
int diff=target-currentAngle;
if(diff<-180)
diff += 360;
else if(diff> 180)
diff -= 360;
direction=-diff;
if(abs(diff)<5){
motorsWrite(0,0);
return;
}
}*/
}
void RobotControl::moveForward(int speed){
motorsWrite(speed,speed);
}
void RobotControl::moveBackward(int speed){
motorsWrite(speed,speed);
}
void RobotControl::turnLeft(int speed){
motorsWrite(speed,255);
}
void RobotControl::turnRight(int speed){
motorsWrite(255,speed);
}
/*
int RobotControl::getIRrecvResult(){
messageOut.writeByte(COMMAND_GET_IRRECV);
messageOut.sendData();
//delay(10);
while(!messageIn.receiveData());
if(messageIn.readByte()==COMMAND_GET_IRRECV_RE){
return messageIn.readInt();
}
return -1;
}
*/
\ No newline at end of file |