safwan092

Untitled

Oct 27th, 2022
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. #include <Servo.h> //Servo motor library. This is standard library
  2. #include <NewPing.h> //Ultrasonic sensor function library. You must install this library
  3.  
  4. //our L298N control pins
  5. const int LeftMotorForward = 5;
  6. const int LeftMotorBackward = 4;
  7. const int RightMotorForward = 3;
  8. const int RightMotorBackward = 2;
  9. const int LSpeed = 8;
  10. const int RSpeed = 7;
  11. int speedR = 150 ; //0-2e55
  12. int speedL = 150 ;
  13. //sensor pins
  14. #define trig_pin A3 //analog input 1
  15. #define echo_pin A2 //analog input 2
  16.  
  17. #define maximum_distance 200
  18. boolean goesForward = false;
  19. int distance = 100;
  20.  
  21. NewPing sonar(trig_pin, echo_pin, maximum_distance); //sensor function
  22. Servo servo_motor; //our servo name
  23.  
  24.  
  25. void setup() {
  26.  
  27. pinMode(RightMotorForward, OUTPUT);
  28. pinMode(LeftMotorForward, OUTPUT);
  29. pinMode(LeftMotorBackward, OUTPUT);
  30. pinMode(RightMotorBackward, OUTPUT);
  31. pinMode(LSpeed, OUTPUT);
  32. pinMode(RSpeed, OUTPUT);
  33. analogWrite(LSpeed, speedL);
  34. analogWrite(RSpeed, speedR);
  35. servo_motor.attach(11); //our servo pin
  36.  
  37. servo_motor.write(120);
  38. delay(2000);
  39. distance = readPing();
  40. delay(100);
  41. distance = readPing();
  42. delay(100);
  43. distance = readPing();
  44. delay(100);
  45.  
  46. }
  47.  
  48. void loop() {
  49.  
  50. int distanceRight = 0;
  51. int distanceLeft = 0;
  52. analogWrite(LSpeed, speedL);
  53. analogWrite(RSpeed, speedR);
  54. delay(50);
  55.  
  56. if (distance <= 30) {
  57. moveStop();
  58. delay(300);
  59. moveBackward();
  60. delay(400);
  61. moveStop();
  62. delay(300);
  63. distanceRight = lookRight();
  64. delay(300);
  65. distanceLeft = lookLeft();
  66. delay(300);
  67.  
  68. if (distance >= distanceLeft) {
  69. turnLeft();
  70. moveStop();
  71. }
  72. else {
  73. turnRight();
  74. moveStop();
  75. }
  76. }
  77. else {
  78. moveForward();
  79. }
  80. distance = readPing();
  81. }
  82.  
  83. int lookRight() {
  84. servo_motor.write(10);
  85. delay(500);
  86. int distance = readPing();
  87. delay(100);
  88. servo_motor.write(120);
  89. return distance;
  90. }
  91.  
  92. int lookLeft() {
  93. servo_motor.write(170);
  94. delay(500);
  95. int distance = readPing();
  96. delay(100);
  97. servo_motor.write(120);
  98. return distance;
  99. delay(100);
  100. }
  101.  
  102. int readPing() {
  103. delay(70);
  104. int cm = sonar.ping_cm();
  105. if (cm == 0) {
  106. cm = 250;
  107. }
  108. return cm;
  109. }
  110.  
  111. void moveStop() {
  112.  
  113. digitalWrite(RightMotorForward, LOW);
  114. digitalWrite(LeftMotorForward, LOW);
  115. digitalWrite(RightMotorBackward, LOW);
  116. digitalWrite(LeftMotorBackward, LOW);
  117. }
  118.  
  119. void moveForward() {
  120.  
  121. if (!goesForward) {
  122.  
  123. goesForward = true;
  124.  
  125. digitalWrite(LeftMotorForward, HIGH);
  126. digitalWrite(RightMotorForward, HIGH);
  127.  
  128. digitalWrite(LeftMotorBackward, LOW);
  129. digitalWrite(RightMotorBackward, LOW);
  130. }
  131. }
  132.  
  133. void moveBackward() {
  134.  
  135. goesForward = false;
  136.  
  137. digitalWrite(LeftMotorBackward, HIGH);
  138. digitalWrite(RightMotorBackward, HIGH);
  139.  
  140. digitalWrite(LeftMotorForward, LOW);
  141. digitalWrite(RightMotorForward, LOW);
  142.  
  143. }
  144.  
  145. void turnRight() {
  146.  
  147. digitalWrite(LeftMotorForward, HIGH);
  148. digitalWrite(RightMotorBackward, HIGH);
  149.  
  150. digitalWrite(LeftMotorBackward, LOW);
  151. digitalWrite(RightMotorForward, LOW);
  152.  
  153.  
  154. delay(500);
  155. digitalWrite(LeftMotorForward, HIGH);
  156. digitalWrite(RightMotorBackward, HIGH);
  157.  
  158. digitalWrite(LeftMotorBackward, LOW);
  159. digitalWrite(RightMotorForward, LOW);
  160.  
  161.  
  162. }
  163.  
  164. void turnLeft() {
  165.  
  166. digitalWrite(LeftMotorBackward, LOW);
  167. digitalWrite(RightMotorForward, LOW);
  168.  
  169. digitalWrite(LeftMotorForward, HIGH);
  170. digitalWrite(RightMotorBackward, HIGH);
  171.  
  172. delay(500);
  173. digitalWrite(LeftMotorBackward, LOW);
  174. digitalWrite(RightMotorForward, LOW);
  175.  
  176. digitalWrite(LeftMotorForward, HIGH);
  177. digitalWrite(RightMotorBackward, HIGH);
  178. }
Add Comment
Please, Sign In to add comment