Advertisement
IkeKap

Untitled

Nov 15th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const int AIN1 = 13;        
  2. const int AIN2 = 12;            
  3. const int PWMA = 11;            
  4.  
  5.  
  6. const int PWMB = 8;          
  7. const int BIN2 = 9;          
  8. const int BIN1 = 10;          
  9.  
  10. const int trigPinLeft=4;
  11. const int echoPinLeft=3;
  12. const int trigPinRight=2;
  13. const int echoPinRight=1;
  14. const int trigPin = 6;
  15. const int echoPin = 5;
  16.  int switchPin = 7;            
  17.  
  18. float distance = 0;
  19. float distanceRight=0;
  20. float distanceLeft=0;
  21.  
  22. int backupTime = 300;          
  23. int turnTime = 200;            
  24.  
  25. /********************************************************************************/
  26. void setup()
  27. {
  28.   pinMode(trigPin, OUTPUT);      
  29.   pinMode(echoPin, INPUT);      
  30.  
  31.   //pinMode(switchPin, INPUT_PULLUP);  
  32.  
  33.  
  34.  
  35.   pinMode(AIN1, OUTPUT);
  36.   pinMode(AIN2, OUTPUT);
  37.   pinMode(PWMA, OUTPUT);
  38.  
  39.   pinMode(BIN1, OUTPUT);
  40.   pinMode(BIN2, OUTPUT);
  41.   pinMode(PWMB, OUTPUT);
  42.  
  43.   Serial.begin(9600);                      
  44. }
  45.  
  46. /********************************************************************************/
  47. void loop()
  48. {
  49.   distance = getDistance();
  50.     if(distance < 8){              
  51.       stop();
  52.       delay(25);
  53.       goLeft();
  54.       delay(turnTime);
  55.       distanceLeft=getDistanceLeft();
  56.       distanceRight=getDistanceRight();
  57.       while(distanceLeft<1||distanceRight<1){
  58.         distanceLeft=getDistanceLeft();
  59.         distanceRight=getDistanceRight();
  60.         if(distanceRight<1&&distanceLeft<1){
  61.           goForwards(255);
  62.           break;
  63.         }
  64.         else if(distanceLeft<1){
  65.           goRight();
  66.         }
  67.         else if(distanceRight<1){
  68.           goLeft();
  69.         }
  70.         delay(50);
  71.       }
  72.     }
  73.     else{                        
  74.       goForwards(255);
  75.       delay(50);
  76.     }
  77.                        
  78. }
  79.  
  80. /********************************************************************************/
  81. void rightMotor(int motorSpeed)                    
  82. {
  83.   if (motorSpeed > 0)                                
  84.     {
  85.       digitalWrite(AIN1, HIGH);                        
  86.       digitalWrite(AIN2, LOW);                        
  87.     }
  88.   else if (motorSpeed < 0)                          
  89.     {
  90.       digitalWrite(AIN1, LOW);                          
  91.       digitalWrite(AIN2, HIGH);                        
  92.     }
  93.   else                                                
  94.     {
  95.       digitalWrite(AIN1, LOW);                          
  96.       digitalWrite(AIN2, LOW);                        
  97.     }
  98.   analogWrite(PWMA, abs(motorSpeed));                
  99. }
  100.  
  101. /********************************************************************************/
  102. void leftMotor(int motorSpeed)                        
  103. {
  104.   if (motorSpeed > 0)
  105.     {
  106.       digitalWrite(BIN1, HIGH);                        
  107.       digitalWrite(BIN2, LOW);                        
  108.     }
  109.   else if (motorSpeed < 0)                            
  110.     {
  111.       digitalWrite(BIN1, LOW);                          
  112.       digitalWrite(BIN2, HIGH);                        
  113.     }
  114.   else                                              
  115.     {
  116.       digitalWrite(BIN1, LOW);                          
  117.       digitalWrite(BIN2, LOW);                          
  118.     }
  119.   analogWrite(PWMB, abs(motorSpeed));                
  120. }
  121. /********************************************************************************/
  122. void goForwards(int speed){
  123.   rightMotor(speed);
  124.   leftMotor(speed);
  125. }
  126. /********************************************************************************/
  127. void goBackwards(int speed){
  128.   rightMotor(speed*-1);
  129.   leftMotor(speed*-1);
  130. }
  131. /********************************************************************************/
  132. void goRight(){
  133.   rightMotor(-255);
  134.   leftMotor(255);
  135. }
  136. /********************************************************************************/
  137. void goLeft(){
  138.   rightMotor(255);
  139.   leftMotor(-255);
  140. }
  141. /********************************************************************************/
  142. void stop(){
  143.   rightMotor(0);
  144.   leftMotor(0);
  145. }
  146. /********************************************************************************/
  147. float getDistance()
  148. {
  149.   float echoTime;                  
  150.   float calculatedDistance;        
  151.   digitalWrite(trigPin, HIGH);
  152.   delayMicroseconds(10);
  153.   digitalWrite(trigPin, LOW);
  154.  
  155.   echoTime = pulseIn(echoPin, HIGH);      
  156.   calculatedDistance = echoTime / 148.0;  
  157.   return calculatedDistance;            
  158. }
  159. /********************************************************************************/
  160. float getDistanceRight()
  161. {
  162.   float echoTimeRight;                  
  163.   float calculatedDistanceRight;        
  164.  
  165.   digitalWrite(trigPinRight, HIGH);
  166.   delayMicroseconds(10);
  167.   digitalWrite(trigPinRight, LOW);
  168.  
  169.   echoTimeRight = pulseIn(echoPinRight, HIGH);      
  170.   calculatedDistanceRight = echoTimeRight / 148.0;
  171.  
  172.   return calculatedDistanceRight;            
  173. }
  174. /********************************************************************************/
  175. float getDistanceLeft()
  176. {
  177.   float echoTimeLeft;                  
  178.   float calculatedDistanceLeft;        
  179.  
  180.   digitalWrite(trigPinLeft, HIGH);
  181.   delayMicroseconds(10);
  182.   digitalWrite(trigPinLeft, LOW);
  183.  
  184.   echoTimeLeft = pulseIn(echoPinLeft, HIGH);      
  185.   calculatedDistanceLeft = echoTimeLeft/ 148.0;
  186.  
  187.   return calculatedDistanceLeft;            
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement