Advertisement
safwan092

Untitled

Oct 14th, 2023
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.84 KB | None | 0 0
  1. /****************************
  2. Connections:
  3. -----------------------------
  4. [Arduino Uno] --> [L298N Red Board]:
  5. 11 --> ENA (Black)/(أسود)
  6. 9 --> IN1 (White)/(أبيض)
  7. 8 --> IN2 (Gray)/(رمادي)
  8. 7 --> IN3 (Purple)/(أرجواني)
  9. 6 --> IN4 (Blue)/(أزرق)
  10. 10 --> ENB (Green)/(أخضر)
  11. [Arduino Uno] --> [Ultrasonic Sensor]:
  12. 5V --> Vcc (Purple)/(أرجواني)
  13. 2 --> Trig (Gray)/(رمادي)
  14. 3 --> Echo (White)/(أبيض)
  15. GND --> GND (Black)/(أسود)
  16. [Arduino Uno] --> [IR Sensor (Left)]:
  17. GND --> GND (Brown)/(بني)
  18. 5V --> VCC (Red)/(أحمر)
  19. A5 --> OUT (Orange)/(برتقالي)
  20. [Arduino Uno] --> [IR Sensor (Center)]:
  21. GND --> GND (Gray)/(رمادي)
  22. 5V --> VCC (White)/(أبيض)
  23. A2 --> OUT (Black)/(أسود)
  24. [Arduino Uno] --> [IR Sensor (Right)]:
  25. GND --> GND (Brown)/(بني)
  26. 5V --> VCC (Red)/(أحمر)
  27. A0 --> OUT (Orange)/(برتقالي)
  28. [Arduino Uno] --> [Buzzer]:
  29. GND --> - (Green)/(أخضر)
  30. 13 --> + (Yellow)/(أصفر)
  31. -----------------------------
  32. *****************************/
  33. const int trigPin = 2;
  34. const int echoPin = 3;
  35. // defines variables
  36. long duration;
  37. int distance;
  38.  
  39. #define SensorLeft A5 //input pin of left sensor
  40. #define SensorMiddle A2 //input pin of middle sensor
  41. #define SensorRight A0 //input pin of right sensor
  42. unsigned char SL; //state of left sensor
  43. unsigned char SM; //state of middle sensor
  44. unsigned char SR; //state of right sensor
  45.  
  46.  
  47. int counter = 0;
  48. #define Lpwm_pin 10 //ENB
  49. #define Rpwm_pin 11 //ENA
  50. int pinLB = 6; //IN4
  51. int pinLF = 7; //IN3
  52. int pinRB = 9; //IN2
  53. int pinRF = 8; //IN1
  54. unsigned char Lpwm_val = 90;//255 = max
  55. unsigned char Rpwm_val = 90;//255 = max
  56.  
  57. void M_Control_IO_config(void)
  58. {
  59. pinMode(trigPin, OUTPUT);
  60. pinMode(echoPin, INPUT);
  61. pinMode(SensorLeft, INPUT);
  62. pinMode(SensorMiddle, INPUT);
  63. pinMode(SensorRight, INPUT);
  64. pinMode(pinLB, OUTPUT);
  65. pinMode(pinLF, OUTPUT);
  66. pinMode(pinRB, OUTPUT);
  67. pinMode(pinRF, OUTPUT);
  68. pinMode(Lpwm_pin, OUTPUT); // pin 11 (PWM)
  69. pinMode(Rpwm_pin, OUTPUT); // pin 10 (PWM)
  70. }
  71. void Set_Speed(unsigned char Left, unsigned char Right)
  72. {
  73. analogWrite(Lpwm_pin, Left);
  74. analogWrite(Rpwm_pin, Right);
  75. }
  76.  
  77. void turnR()
  78. {
  79. Serial.println("R");
  80. digitalWrite(pinRB, LOW);
  81. digitalWrite(pinRF, HIGH);
  82. digitalWrite(pinLB, LOW);
  83. digitalWrite(pinLF, HIGH);
  84. delay(10);
  85. }
  86. void advance()
  87. {
  88. Serial.println("F");
  89. digitalWrite(pinRB, LOW);
  90. digitalWrite(pinRF, HIGH);
  91. digitalWrite(pinLB, HIGH);
  92. digitalWrite(pinLF, LOW);
  93. delay(10);
  94. }
  95. void back()
  96. {
  97. Serial.println("B");
  98. digitalWrite(pinRB, HIGH);
  99. digitalWrite(pinRF, LOW );
  100. digitalWrite(pinLB, LOW);
  101. digitalWrite(pinLF, HIGH);
  102. delay(10);
  103. }
  104. void stopp()
  105. {
  106. Serial.println("STOP!!");
  107. digitalWrite(pinRB, HIGH);
  108. digitalWrite(pinRF, HIGH);
  109. digitalWrite(pinLB, HIGH);
  110. digitalWrite(pinLF, HIGH);
  111. delay(10);
  112. }
  113. void turnL()
  114. {
  115. Serial.println("L");
  116. digitalWrite(pinRB, HIGH);
  117. digitalWrite(pinRF, LOW);
  118. digitalWrite(pinLB, HIGH);
  119. digitalWrite(pinLF, LOW);
  120. delay(10);
  121. }
  122.  
  123. void hornON() {
  124. digitalWrite(13, 1);
  125. }
  126. void hornOFF() {
  127. digitalWrite(13, 0);
  128. }
  129.  
  130. void setup()
  131. {
  132. Serial.begin(9600);
  133. pinMode(13, OUTPUT);
  134. M_Control_IO_config();
  135. Set_Speed(Lpwm_val, Rpwm_val);
  136. stopp();
  137. counter = 0;
  138. delay(5000);
  139.  
  140. }
  141.  
  142. void Sensor_Scan(void)
  143. {
  144. digitalWrite(trigPin, LOW);
  145. delayMicroseconds(2);
  146. digitalWrite(trigPin, HIGH);
  147. delayMicroseconds(10);
  148. digitalWrite(trigPin, LOW);
  149. duration = pulseIn(echoPin, HIGH);
  150.  
  151. distance = duration * 0.034 / 2;
  152. SL = digitalRead(SensorLeft);
  153. SM = digitalRead(SensorMiddle);
  154. SR = digitalRead(SensorRight);
  155. Serial.print(SL);
  156. Serial.print(SM);
  157. Serial.println(SR);
  158. }
  159.  
  160. void loop()
  161. {
  162. //turnR();
  163.  
  164. Sensor_Scan();
  165.  
  166. if (distance > 10) {
  167. hornOFF();
  168. ///////////////////////////////////////////////////////////////////////////////
  169. //if (SM == HIGH)// middle sensor in black area
  170. //{
  171. if (SL == LOW & SR == HIGH) // black on left, white on right, turn left
  172. {
  173. turnR();
  174. }
  175. else if (SR == LOW & SL == HIGH) // white on left, black on right, turn right
  176. {
  177. turnL();
  178. }
  179. else if (SR == HIGH & SL == HIGH) { // all Black
  180. advance();
  181. delay(50);
  182. counter = counter + 1;
  183. hornON();
  184. delay(100);
  185. hornOFF();
  186. delay(100);
  187. Serial.println(counter);
  188. if (counter >= 8) {
  189. while (1) {
  190. stopp() ;
  191. hornON();
  192. delay(500);
  193. hornOFF();
  194. delay(500);
  195. }
  196. }
  197. else {
  198. //stopp() ;
  199. //delay(1000);
  200. advance();
  201. delay(50);
  202. }
  203. }
  204. else // white on both sides, going forward
  205. {
  206. advance();
  207.  
  208. }
  209. //}
  210. ///////////////////////////////////////////////////////////////////////////////
  211. /*else // middle sensor on white area
  212. {
  213. if (SL == LOW & SR == HIGH) // black on left, white on right, turn left
  214. {
  215. turnR();
  216.  
  217. }
  218. else if (SR == LOW & SL == HIGH) // white on left, black on right, turn right
  219. {
  220. turnL();
  221.  
  222.  
  223. }
  224.  
  225. else // all white, stop
  226. {
  227. //turnL();
  228. // back();
  229. delay(100);
  230. stopp() ;
  231. }
  232.  
  233. }
  234. ///////////////////////////////////////////////////////////////////////////////
  235. }
  236. */
  237. }
  238. else {
  239. stopp();
  240. hornON();
  241. delay(500);
  242. hornOFF();
  243. delay(500);
  244. }
  245.  
  246. }//end of loop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement