Advertisement
safwan092

GOLF_CAR_JEDDAH_U_AMER_CAR_11_2_2023

Feb 10th, 2023
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.16 KB | None | 0 0
  1.  
  2. #define left 11
  3. #define leftC 9
  4. #define right 12
  5. #define rightC 10
  6. //motor one
  7. #define ENA 5
  8. #define IN1 4
  9. #define IN2 7
  10.  
  11. //motor two
  12. #define ENB 6
  13. #define IN3 2
  14. #define IN4 3
  15.  
  16. #define echoPin A0 // Echo Pin
  17. #define trigPin A1 // Trigger Pin
  18.  
  19. int maximumRange = 20; // Maximum range to start attacking
  20.  
  21. long duration, distance; // Variables to calculate distance
  22.  
  23. int stopFlag = 0;
  24. int Speed = 50; // speed of this robot
  25. int buzzer = 8;
  26. bool leftV ;
  27. bool leftCV ;
  28. bool centerV ;
  29. bool rightV ;
  30. bool rightCV ;
  31. int Speed1 = A5;
  32. int Speed2 = A3;
  33. int Move = A4;
  34. int Stop = A2;
  35. int Speed1Sta ;
  36. int Speed2Sta ;
  37. int MoveSta ;
  38. int StopSta ;
  39. void setup()
  40. {
  41. Serial.begin(9600);
  42. pinMode(left, INPUT);
  43. pinMode(leftC, INPUT);
  44. pinMode(right, INPUT);
  45. pinMode(rightC, INPUT);
  46.  
  47. pinMode(Speed1, INPUT);
  48. pinMode(Speed2, INPUT);
  49. pinMode(Move, INPUT);
  50. pinMode(Stop, INPUT);
  51.  
  52. pinMode(ENA, OUTPUT);
  53. pinMode(IN1, OUTPUT);
  54. pinMode(IN2, OUTPUT);
  55. pinMode(IN3, OUTPUT);
  56. pinMode(IN4, OUTPUT);
  57. pinMode(ENB, OUTPUT);
  58.  
  59. pinMode(trigPin, OUTPUT);
  60. pinMode(echoPin, INPUT);
  61. pinMode(buzzer, OUTPUT);
  62. }
  63.  
  64. void loop() {
  65.  
  66. Speed1Sta = digitalRead(Speed1);
  67. Speed2Sta = digitalRead(Speed2);
  68. MoveSta = digitalRead(Move);
  69. StopSta = digitalRead(Stop);
  70. Serial.print(Speed1Sta);
  71. Serial.print(" ");
  72. Serial.print(Speed2Sta);
  73. Serial.print(" ");
  74. Serial.print(MoveSta);
  75. Serial.print(" ");
  76. Serial.println(StopSta);
  77.  
  78. leftV = digitalRead(left);
  79. leftCV = digitalRead(leftC);
  80. rightV = digitalRead(rightC);
  81. rightCV = digitalRead(right);
  82.  
  83. /*Serial.print(leftV);
  84. Serial.print(" ");
  85. Serial.print(leftCV);
  86. Serial.print(" ");
  87. Serial.print(rightCV);
  88. Serial.print(" ");
  89. Serial.println(rightV);
  90. */
  91. // Triggering the Ultrasonic Wave :
  92. digitalWrite(trigPin, LOW);// |
  93. delayMicroseconds(2);// |
  94. digitalWrite(trigPin, HIGH);// |
  95. delayMicroseconds(10);// |
  96. digitalWrite(trigPin, LOW);// |
  97. //---------------------------------
  98. //Sensing Ultrasonic Wave on echo Pin and callculating the duration
  99. duration = pulseIn(echoPin, HIGH);
  100.  
  101. //Calculate the distance (in cm) based on the speed of sound.
  102. distance = duration / 58.2;
  103. //Serial.println(distance);
  104. // If object in range of attack start Attacking:
  105. // Conrolling car direction based on Infra-Red Sensors:
  106. //Serial.println(rightV);
  107. if (distance <= maximumRange) {
  108. carStop();
  109. digitalWrite(buzzer, HIGH);
  110. }
  111. // If object is not in range of attack start Searching:
  112. else {
  113. if (MoveSta == 1 && Speed1Sta == 0 && Speed2Sta == 0) {
  114. Serial.println("MoveSta = 1");
  115. LineFollowing(Speed);
  116. }
  117. else if (MoveSta == 1 && Speed1Sta == 1 && Speed2Sta == 0) {
  118. Serial.println("MoveSta = 1 + Speed1Sta = 1");
  119. LineFollowing(Speed + 30);
  120. }
  121. else if (MoveSta == 1 && Speed1Sta == 0 && Speed2Sta == 1) {
  122. Serial.println("MoveSta = 1 + Speed2Sta = 1");
  123. LineFollowing(Speed + 40);
  124. }
  125. //if (MoveSta == 0 ) {
  126. // Serial.println("MoveSta = 0");
  127. // carStop();
  128. //}
  129. if (StopSta == 1) {
  130. Serial.println("StopSta = 1");
  131. carStop();
  132. delay(5000);
  133. LineFollowing(Speed);
  134. }
  135. digitalWrite(buzzer, LOW);
  136. }
  137.  
  138. }
  139.  
  140. void LineFollowing(int sp) {
  141. if (leftV == 0 && leftCV == 1 && rightCV == 1 && rightV == 0) {
  142. carforward(sp);
  143. Serial.println("forward");
  144. }
  145. else if (leftV == 1 && leftCV == 1 && rightCV == 1 && rightV == 1) {
  146. carforwardFast(sp);
  147. }
  148. else if (leftV == 1 && leftCV == 0 && rightCV == 0 && rightV == 0) {
  149. carturnright(sp);
  150. //
  151. delay(200);
  152. }
  153. else if (leftV == 1 && leftCV == 1 && rightCV == 0 && rightV == 0) {
  154. carturnright(sp);
  155. } else if (leftV == 1 && leftCV == 1 && rightCV == 1 && rightV == 0) {
  156. carturnright(sp);
  157. } else if (leftV == 0 && leftCV == 0 && rightCV == 0 && rightV == 0) {
  158. carturnright(sp);
  159. } else if (leftV == 0 && leftCV == 1 && rightCV == 1 && rightV == 1) {
  160. carturnleft(sp);
  161. }
  162. else if (leftV == 0 && leftCV == 0 && rightCV == 1 && rightV == 1) {
  163. carturnleft(sp);
  164. }
  165. else if (leftV == 0 && leftCV == 0 && rightCV == 0 && rightV == 1) {
  166. carturnleft(sp);
  167. // delay(200);
  168. }
  169. }
  170.  
  171.  
  172.  
  173. void carforward(int j) {
  174. analogWrite(ENA, j);
  175. analogWrite(ENB, j);
  176. digitalWrite(IN1, HIGH);
  177. digitalWrite(IN2, LOW);
  178. digitalWrite(IN3, HIGH);
  179. digitalWrite(IN4, LOW);
  180. }
  181. void carturnleft(int j) {
  182. analogWrite(ENA, j + 40 );
  183. analogWrite(ENB, j + 40 );
  184. digitalWrite(IN1, LOW);
  185. digitalWrite(IN2, HIGH);
  186. digitalWrite(IN3, HIGH);
  187. digitalWrite(IN4, LOW);
  188. }
  189. void carturnright(int j) {
  190. analogWrite(ENA, j + 40);
  191. analogWrite(ENB, j + 40);
  192. digitalWrite(IN1, HIGH);
  193. digitalWrite(IN2, LOW);
  194. digitalWrite(IN3, LOW);
  195. digitalWrite(IN4, HIGH);
  196. }
  197. void carStop() {
  198. digitalWrite(IN1, LOW);
  199. digitalWrite(IN2, LOW);
  200. digitalWrite(IN3, LOW);
  201. digitalWrite(IN4, LOW);
  202. }
  203. void carforwardFast(int j) {
  204. analogWrite(ENA, j + 40);
  205. analogWrite(ENB, j + 40);
  206. digitalWrite(IN1, HIGH);
  207. digitalWrite(IN2, LOW);
  208. digitalWrite(IN3, HIGH);
  209. digitalWrite(IN4, LOW);
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement