Advertisement
MrLunk

Untitled

Feb 28th, 2017
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.20 KB | None | 0 0
  1. // MrLunk's Autonomous Vehikel 2017  - v0.04
  2.  
  3. #define trigPin1 2
  4. #define echoPin1 3
  5. #define trigPin2 4
  6. #define echoPin2 5
  7. #define trigPin3 7
  8. #define echoPin3 8
  9. #include <Servo.h>
  10. #include <Wire.h>
  11. #include <Adafruit_MotorShield.h>
  12. #include "utility/Adafruit_MS_PWMServoDriver.h"
  13.  
  14. long duration, distance, RightSensor,BackSensor,FrontSensor,LeftSensor;
  15. Adafruit_MotorShield AFMS = Adafruit_MotorShield();
  16. Adafruit_DCMotor *DCMotor = AFMS.getMotor(1);
  17.  
  18. Servo SteeringServo;
  19. int usbRead =0;
  20.  
  21. int LedLeft = 6;
  22. int LedMiddle = 9;
  23. int LedRight = 13;
  24.  
  25. const int ProxSensorLeft=11;
  26. const int ProxSensorRight=12;
  27.  
  28. // --------------------------------------------------------------
  29.  
  30. void setup() {
  31.  AFMS.begin();  
  32.  DCMotor->setSpeed(0);
  33.  DCMotor->run(RELEASE);
  34.  SteeringServo.attach(10);  
  35.  
  36.  Serial.begin(9600);
  37.  
  38.  pinMode(trigPin1, OUTPUT);  // Left sonar sensor
  39.  pinMode(echoPin1, INPUT);
  40.  
  41.  pinMode(trigPin2, OUTPUT);  // Middle sonar sensor
  42.  pinMode(echoPin2, INPUT);
  43.  
  44.  pinMode(trigPin3, OUTPUT);  // Right sonar sensor
  45.  pinMode(echoPin3, INPUT);
  46.  
  47.  pinMode(LedLeft, OUTPUT);    // Left Detection indicator
  48.  pinMode(LedMiddle, OUTPUT);  // Middle ...
  49.  pinMode(LedRight, OUTPUT);   // Right ...
  50.  
  51.  pinMode(13, OUTPUT);    
  52.  pinMode(6, OUTPUT);  
  53.  
  54.  pinMode(ProxSensorLeft,INPUT);
  55.  pinMode(ProxSensorRight,INPUT);
  56. }
  57.  
  58. // --------------------------------------------------------------
  59.  
  60. int Loop1 = 0;
  61. int maxspeed = 65;
  62.  
  63. // ------------------ Main Routine --------------------------------------------
  64.  
  65. void loop() {
  66.  
  67.  SonarSensor(trigPin2, echoPin2);
  68.  if (distance <= 25){
  69.    digitalWrite(LedMiddle, HIGH);  
  70.  
  71.    SteeringServo.write(135);   // steer right
  72.    DCMotor->run(BACKWARD);
  73.    DCMotor->setSpeed(maxspeed);
  74.  
  75.    // Whilst driving backwards check for collisions with ir sensors
  76.    while (Loop1 < 1){
  77.      if(digitalRead(ProxSensorLeft)==LOW)      
  78.      {
  79.        Loop1 = 2;  
  80.      }
  81.      if(digitalRead(ProxSensorRight)==LOW)      
  82.      {
  83.        Loop1 = 2;    
  84.      }
  85.    }
  86.    // --- End of backward ir collision check loop) ----
  87.  
  88.    DCMotor->run(RELEASE);
  89.    SteeringServo.write(90);
  90.    digitalWrite(LedMiddle, LOW);    
  91.  }  
  92.  Loop1 = 0;
  93.  
  94.  
  95.  SonarSensor(trigPin1, echoPin1);
  96.  if (distance <= 32){
  97.    digitalWrite(LedRight, HIGH);  
  98.    SteeringServo.write(135);     //steer right        
  99.    Forwards();
  100.    delay(5);              
  101.    digitalWrite(LedRight, LOW);
  102.  }
  103.  
  104.  SonarSensor(trigPin3, echoPin3);
  105.  if (distance <= 32){
  106.    digitalWrite(LedLeft, HIGH);  
  107.    SteeringServo.write(45);   // steer left
  108.    Forwards();
  109.    delay(5);              
  110.    digitalWrite(LedLeft, LOW);  
  111.  }
  112.  
  113.  SteeringServo.write(90);
  114.  Forwards();
  115. }
  116.  
  117. // --------------Sub-Routine definitions------------------------------
  118.  
  119. void Forwards(){
  120.  DCMotor->run(FORWARD);
  121.  DCMotor->setSpeed(maxspeed);
  122.  delay(250);
  123.  DCMotor->run(RELEASE);
  124. }
  125.  
  126. void SonarSensor(int trigPin,int echoPin)
  127. {
  128.  digitalWrite(trigPin, LOW);
  129.  delayMicroseconds(2);
  130.  digitalWrite(trigPin, HIGH);
  131.  delayMicroseconds(10);
  132.  digitalWrite(trigPin, LOW);
  133.  duration = pulseIn(echoPin, HIGH);
  134.  distance = (duration/2) / 29.1;
  135.  
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement