Advertisement
Graczer

arduino program na autostopara

May 23rd, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void engine::forward(int speed, int time){
  2.    analogWrite(PwmPinMotorB, speed);
  3.    digitalWrite(DirectionPinMotorB, LOW);
  4.  
  5.    delay(time);
  6.  
  7.    analogWrite(PwmPinMotorB, 0);
  8.    digitalWrite(DirectionPinMotorB, LOW);
  9.  }
  10.  
  11.  void engine::reverse(int speed, int time){
  12.    analogWrite(PwmPinMotorB, speed);
  13.    digitalWrite(DirectionPinMotorB, HIGH);
  14.  
  15.    delay(time);
  16.  
  17.    analogWrite(PwmPinMotorB, 0);
  18.    digitalWrite(DirectionPinMotorB, HIGH);
  19.  }
  20.  
  21. engine.forward(255,10);
  22.  
  23.  void engine::right(){
  24.    analogWrite(PwmPinMotorA, 255);
  25.    digitalWrite(DirectionPinMotorA, LOW);
  26.  }
  27.  
  28.  void engine::left(){
  29.    analogWrite(PwmPinMotorA, 255);
  30.    digitalWrite(DirectionPinMotorA, HIGH);
  31.  }
  32.  
  33.  void engine::straight(){
  34.    analogWrite(PwmPinMotorA, 0);
  35.    digitalWrite(DirectionPinMotorA, HIGH);
  36.  }
  37.  
  38. void navigation::calibrate(){
  39.    unsigned int val[3];
  40.    qtr.read(val);
  41.  
  42.    int right = val[0];
  43.    int middle = val[1];
  44.    int left = val[2];
  45.  
  46.    bwMean = ((right - middle) + (left - middle))/2;
  47.  }
  48.  
  49.  void navigation::steer(){
  50.    int bearing = getBearing();
  51.  
  52.    if(bearing == LEFT)
  53.      engin.left();
  54.  
  55.    if(bearing == STRAIGHT)
  56.      engin.straight();
  57.  
  58.    if(bearing == RIGHT)
  59.      engin.right();
  60.  
  61.    engin.forward(255,10);
  62.  }
  63.  
  64. int navigation::getBearing(){
  65.    unsigned int val[3];
  66.    qtr.read(val);
  67.  
  68.    int right = val[0];
  69.    int middle = val[1];
  70.    int left = val[2];
  71.  
  72.    if(left <= middle && left <= right && position != RIGHT){
  73.      position = LEFT;
  74.      return RIGHT;
  75.    }
  76.  
  77.    if(right <= left && right <= middle && position != LEFT){
  78.      position = RIGHT;
  79.      return LEFT;
  80.    }
  81.  
  82.    if(middle <= left && middle <= right && middle < bwMean){
  83.      position = STRAIGHT;
  84.      return STRAIGHT;
  85.    }
  86.  
  87.    if (position == LEFT ) return RIGHT;
  88.    if (position == RIGHT ) return LEFT;
  89.  }
  90.  
  91. void loop(){
  92.    navigation.steer();
  93.    delay(70);
  94.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement