Beruflich Dokumente
Kultur Dokumente
h>
// Robot Project
// Attach the left and right servo control wires (white)
// to pins 6 and 7 respectively.
#define SERV0_LEFT 5
#define SERVO_RIGHT 6
// Attach the left and right wheel encoder wires
// to pins A4 and A11
#define LEFT_WHEEL_SENSOR A11
#define RIGHT_WHEEL_SENSOR A4
// Attach the front and side IR Sensor wires
// to pins A0 and A8
#define FRONT_IR_SENSOR A0
#define SIDE_IR_SENSOR A3
#define FORWARDSTRAIGHTPOWERLEFT 40
#define FORWARDSTRAIGHTPOWERRIGHT 40
#define STOP_DISTANCE 12
//direction argument defines
#define FORWARD 1
#define REVERSE 2
#define BACKWARD 2
#define TURNLEFT 3
#define TURNRIGHT 4
///
#define BEARLEFTPOWERLEFT 1.375
#define BEARLEFTPOWERRIGHT 8.625
#define BEARRIGHTPOWERRIGHT 3.33
#define BEARRIGHTPOWERLEFT 5.675
//Pulse counts necessary to get the servos to stop
//function prototypes
void forward(int speed, int stopDist);
void forward(int speed);
void driveEncoder(int SpokeTransitions, int servoSpeed, int robotDirection);
float sideSensor2cm(float analogValue);
float frontSensor2cm(float analogValue);
void wallFollow(float dist, int stopDist , int speed);
void leftToWall(int speed);
void rightToWall(int speed);
void stop_robot();
void setup() {
// attaches the left wheel servo on pin 6 to servo object
myservo_left.attach(SERV0_LEFT);
// attaches the right wheel servo on pin 7 to servo object
myservo_right.attach(SERVO_RIGHT);
}
void loop() {
driveEncoder(7, 10, TURNRIGHT);
delay(500);
forward(10, STOP_DISTANCE);
delay(500);
driveEncoder(8, 10, TURNRIGHT);
delay(500);
forward(10, STOP_DISTANCE);
delay(500);
driveEncoder(8, 10, TURNLEFT);
delay(500);
forward(10, 15);
delay(500);
driveEncoder(8, 10, TURNLEFT);
delay(500);
wallFollow(15, STOP_DISTANCE, 10);
stop_robot();
delay(2000);
// float dist = frontSensor2cm(analogRead(FRONT_IR_SENSOR));
// while (dist < STOP_DISTANCE){
//
stop_robot();
//
//
}
forward(10, STOP_DISTANCE);
delay(300);
driveEncoder(8, 10, TURNLEFT);
delay(300);
forward(10, STOP_DISTANCE);
}
//Function driveEncoder- moves the robot a determined
//
//
//
// Input args:
//
//
//
//
// Returns a void
void driveEncoder(int SpokeTransitions, int servoSpeed, int robotDirection) {
int pos = 0;
void stop_robot(){
myservo_left.writeMicroseconds(LSERVOREST);
myservo_right.writeMicroseconds(RSERVOREST);
}
myservo_right.writeMicroseconds(RSERVORESTFORWARDSTRAIGHTPOWERRIGHT*speed);
}