Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void engine::forward(int speed, int time){
- analogWrite(PwmPinMotorB, speed);
- digitalWrite(DirectionPinMotorB, LOW);
- delay(time);
- analogWrite(PwmPinMotorB, 0);
- digitalWrite(DirectionPinMotorB, LOW);
- }
- void engine::reverse(int speed, int time){
- analogWrite(PwmPinMotorB, speed);
- digitalWrite(DirectionPinMotorB, HIGH);
- delay(time);
- analogWrite(PwmPinMotorB, 0);
- digitalWrite(DirectionPinMotorB, HIGH);
- }
- engine.forward(255,10);
- void engine::right(){
- analogWrite(PwmPinMotorA, 255);
- digitalWrite(DirectionPinMotorA, LOW);
- }
- void engine::left(){
- analogWrite(PwmPinMotorA, 255);
- digitalWrite(DirectionPinMotorA, HIGH);
- }
- void engine::straight(){
- analogWrite(PwmPinMotorA, 0);
- digitalWrite(DirectionPinMotorA, HIGH);
- }
- void navigation::calibrate(){
- unsigned int val[3];
- qtr.read(val);
- int right = val[0];
- int middle = val[1];
- int left = val[2];
- bwMean = ((right - middle) + (left - middle))/2;
- }
- void navigation::steer(){
- int bearing = getBearing();
- if(bearing == LEFT)
- engin.left();
- if(bearing == STRAIGHT)
- engin.straight();
- if(bearing == RIGHT)
- engin.right();
- engin.forward(255,10);
- }
- int navigation::getBearing(){
- unsigned int val[3];
- qtr.read(val);
- int right = val[0];
- int middle = val[1];
- int left = val[2];
- if(left <= middle && left <= right && position != RIGHT){
- position = LEFT;
- return RIGHT;
- }
- if(right <= left && right <= middle && position != LEFT){
- position = RIGHT;
- return LEFT;
- }
- if(middle <= left && middle <= right && middle < bwMean){
- position = STRAIGHT;
- return STRAIGHT;
- }
- if (position == LEFT ) return RIGHT;
- if (position == RIGHT ) return LEFT;
- }
- void loop(){
- navigation.steer();
- delay(70);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement