Advertisement
jbn6972

Untitled

Jan 20th, 2022
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.75 KB | None | 0 0
  1.  
  2. #include <SoftwareSerial.h>
  3. SoftwareSerial mySerial(0,1);
  4. long duration;
  5. int distance, l, r, f;
  6. int US_M_trigPin = A2, US_M_echoPin = A3;
  7. int US_L_trigPin = A0, US_L_echoPin = A1;
  8. int US_R_trigPin = A4, US_R_echoPin = A5;
  9. int m12 = 7;
  10. int mbl = 6;
  11. int mbr = 12;
  12. int m11 = 4;
  13. int enal = 3;
  14. int enar = 9;
  15. int enabl = 5;
  16. int enabr = 11;
  17. int buzzer = 2;
  18. bool isdriving;
  19. int dir=1;
  20. int delayTime = 60;
  21. int SPEED = 100; //h4ighest  = 255 range == 1 < 255
  22. void setup()
  23. {
  24.     Serial.begin(9600);
  25.     mySerial.begin(9600);
  26.     while(!Serial)
  27.     {  
  28.       ;  
  29.     }
  30.        
  31.     pinMode(US_L_trigPin, OUTPUT);
  32.     pinMode(US_L_echoPin, INPUT);
  33.     pinMode(US_M_trigPin, OUTPUT);
  34.     pinMode(US_M_echoPin, INPUT);
  35.     pinMode(US_R_trigPin, OUTPUT);
  36.     pinMode(US_R_echoPin, INPUT);
  37.     pinMode(buzzer, OUTPUT);  
  38.     pinMode(m12, OUTPUT);
  39.     pinMode(mbl, OUTPUT);
  40.     pinMode(mbr, OUTPUT);
  41.     pinMode(m11, OUTPUT);
  42.     pinMode(enal, OUTPUT);
  43.     pinMode(enar, OUTPUT);
  44.     pinMode(enabr, OUTPUT);
  45.     pinMode(enabl, OUTPUT);
  46.     analogWrite(enar, SPEED);
  47.     analogWrite(enal, SPEED);
  48.     analogWrite(enabl, SPEED);
  49.     analogWrite(enabr , SPEED);
  50.    
  51.        
  52.     isdriving = true;
  53. }
  54.  
  55. void loop()
  56. {
  57.     if(l > 50 && r >50 && f>50){
  58.       dir=drive();
  59.     }
  60.     else if(l<15 || r< 15 || f<15){
  61.         dir = stopcar();
  62.       }
  63.     else if(r > 15 && f>15 && r>l){
  64.       dir=moveleft(l);
  65. //      delay(delayTime);
  66.     }
  67.     else if(l>15 && f>15 && l>r){
  68.       dir=moveright(r);
  69. //      delay(delayTime);
  70.     }
  71.     else{
  72.       dir = stopcar();
  73.     }
  74.    
  75.  
  76.     getdistances();
  77.  
  78. //    delay(100);
  79. }
  80. //delay(100);
  81.  
  82. void getdistances()
  83. {
  84.     sonar(US_M_trigPin, US_M_echoPin);
  85.     f = distance;
  86.     sonar(US_L_trigPin, US_L_echoPin);
  87.     l = distance;
  88.     sonar(US_R_trigPin, US_R_echoPin);
  89.     r = distance;
  90.     Serial.print("L:");
  91.     Serial.println(l);
  92.     delayMicroseconds(1);
  93.     Serial.print("F:");
  94.     Serial.println(f);
  95.     delayMicroseconds(1);
  96.     Serial.print("R:");
  97.     Serial.println(r);
  98.     delayMicroseconds(1);
  99.     Serial.print("dir:");
  100.     Serial.println(dir);
  101.     delayMicroseconds(1);
  102.    
  103. }
  104.  
  105. int stopcar()
  106. {
  107.     digitalWrite(m11, LOW);
  108.     digitalWrite(m12, LOW);
  109.     digitalWrite(mbl, LOW);
  110.     digitalWrite(mbr, LOW);
  111.     digitalWrite(buzzer, HIGH);
  112.     return -1;
  113. }
  114.  
  115. int drive()
  116. {
  117.  
  118.     analogWrite(enal, SPEED);
  119.     analogWrite(enar, SPEED);
  120.     analogWrite(enabl, SPEED);
  121.     analogWrite(enabr, SPEED);
  122.     digitalWrite(m11, HIGH);
  123.     digitalWrite(m12, HIGH);
  124.     digitalWrite(mbl, HIGH);
  125.     digitalWrite(mbr, HIGH);
  126.     digitalWrite(buzzer, LOW);
  127.     return 1;
  128. }
  129.  
  130. int moveleft(int rpm)
  131. {
  132.   analogWrite(enal, 255);
  133.     analogWrite(enar, 255);
  134.     analogWrite(enabl, 255);
  135.     analogWrite(enabr, 255);
  136.     digitalWrite(m11, HIGH);
  137.     digitalWrite(m12, LOW);
  138.     digitalWrite(mbl, HIGH);
  139.     digitalWrite(mbr, LOW);
  140.    
  141.     digitalWrite(buzzer, LOW);
  142.     return 0;
  143. }
  144.  
  145. int moveright(int rpm)
  146. {
  147.   analogWrite(enal, 255);
  148.     analogWrite(enar, 255);
  149.     analogWrite(enabl, 255);
  150.     analogWrite(enabr, 255);
  151.     digitalWrite(m11, LOW);
  152.     digitalWrite(m12, HIGH);
  153.     digitalWrite(mbl, LOW);
  154.     digitalWrite(mbr, HIGH);
  155.    
  156.     digitalWrite(buzzer, LOW);
  157.     return 2;
  158. }
  159.  
  160. void sonar(int trigPin, int echoPin)
  161. {
  162.     digitalWrite(trigPin, LOW);
  163.     delayMicroseconds(2);
  164.     // Sets the trigPin HIGH (ACTIVE) for 10 microseconds
  165.     digitalWrite(trigPin, HIGH);
  166.     delayMicroseconds(10);
  167.     digitalWrite(trigPin, LOW);
  168.     // Reads the echoPin, returns the sound wave travel time in microseconds
  169.     duration = pulseIn(echoPin, HIGH);
  170.     // Calculating the distance
  171.     distance = duration * 0.034 / 2; // Speed of sound wave divided by 2 (go and back)
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement