Advertisement
safwan092

Untitled

Nov 5th, 2023
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.15 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 ESP32_pin 12 //input for arduino from ESP32 to STOP Car for collecting POST
  40. #define SensorLeft A5 //input pin of left sensor
  41. #define SensorMiddle A2 //input pin of middle sensor
  42. #define SensorRight A0 //input pin of right sensor
  43. unsigned char SL; //state of left sensor
  44. unsigned char SM; //state of middle sensor
  45. unsigned char SR; //state of right sensor
  46.  
  47.  
  48. int ESP32_Command = 0;
  49. #define Lpwm_pin 10 //ENB
  50. #define Rpwm_pin 11 //ENA
  51. int pinLB = 6; //IN4
  52. int pinLF = 7; //IN3
  53. int pinRB = 9; //IN2
  54. int pinRF = 8; //IN1
  55. unsigned char Lpwm_val = 120;//255 = max 110
  56. unsigned char Rpwm_val = 120;//255 = max
  57.  
  58. void M_Control_IO_config(void)
  59. {
  60. pinMode(ESP32_pin, INPUT);
  61. pinMode(trigPin, OUTPUT);
  62. pinMode(echoPin, INPUT);
  63. pinMode(SensorLeft, INPUT);
  64. pinMode(SensorMiddle, INPUT);
  65. pinMode(SensorRight, INPUT);
  66. pinMode(pinLB, OUTPUT);
  67. pinMode(pinLF, OUTPUT);
  68. pinMode(pinRB, OUTPUT);
  69. pinMode(pinRF, OUTPUT);
  70. pinMode(Lpwm_pin, OUTPUT); // pin 11 (PWM)
  71. pinMode(Rpwm_pin, OUTPUT); // pin 10 (PWM)
  72. }
  73. void Set_Speed(unsigned char Left, unsigned char Right)
  74. {
  75. analogWrite(Lpwm_pin, Left);
  76. analogWrite(Rpwm_pin, Right);
  77. }
  78.  
  79. void turnL()
  80. {
  81. Serial.println("L");
  82. digitalWrite(pinRB, LOW);
  83. digitalWrite(pinRF, HIGH);
  84. digitalWrite(pinLB, LOW);
  85. digitalWrite(pinLF, HIGH);
  86. delay(10);
  87. }
  88. void back()
  89. {
  90. Serial.println("B");
  91. digitalWrite(pinRB, LOW);
  92. digitalWrite(pinRF, HIGH);
  93. digitalWrite(pinLB, HIGH);
  94. digitalWrite(pinLF, LOW);
  95. delay(10);
  96. }
  97. void advance()
  98. {
  99. Serial.println("F");
  100. digitalWrite(pinRB, HIGH);
  101. digitalWrite(pinRF, LOW );
  102. digitalWrite(pinLB, LOW);
  103. digitalWrite(pinLF, HIGH);
  104. delay(10);
  105. }
  106. void stopp()
  107. {
  108. Serial.println("STOP!!");
  109. digitalWrite(pinRB, HIGH);
  110. digitalWrite(pinRF, HIGH);
  111. digitalWrite(pinLB, HIGH);
  112. digitalWrite(pinLF, HIGH);
  113. delay(10);
  114. }
  115. void turnR()
  116. {
  117. Serial.println("R");
  118. digitalWrite(pinRB, HIGH);
  119. digitalWrite(pinRF, LOW);
  120. digitalWrite(pinLB, HIGH);
  121. digitalWrite(pinLF, LOW);
  122. delay(10);
  123. }
  124.  
  125. void hornON() {
  126. digitalWrite(13, 1);
  127. }
  128. void hornOFF() {
  129. digitalWrite(13, 0);
  130. }
  131.  
  132. void setup()
  133. {
  134. Serial.begin(9600);
  135. pinMode(13, OUTPUT);
  136. M_Control_IO_config();
  137. Set_Speed(Lpwm_val, Rpwm_val);
  138. stopp();
  139. delay(5000);
  140.  
  141. }
  142.  
  143. void Sensor_Scan(void)
  144. {
  145. digitalWrite(trigPin, LOW);
  146. delayMicroseconds(2);
  147. digitalWrite(trigPin, HIGH);
  148. delayMicroseconds(10);
  149. digitalWrite(trigPin, LOW);
  150. duration = pulseIn(echoPin, HIGH);
  151.  
  152. distance = duration * 0.034 / 2;
  153. SL = digitalRead(SensorLeft);
  154. SM = digitalRead(SensorMiddle);
  155. SR = digitalRead(SensorRight);
  156. Serial.print(SL);
  157. Serial.print(SM);
  158. Serial.println(SR);
  159. }
  160.  
  161. int flagallblack = 0;
  162. void loop()
  163. {
  164. ESP32_Command = digitalRead(ESP32_pin);// if [0 = Move] / if [1 = STOP]
  165. Sensor_Scan();
  166.  
  167. if (distance > 10 && ESP32_Command == 0) {
  168. hornOFF();
  169. ///////////////////////////////////////////////////////////////////////////////
  170. if (SM == HIGH)// middle sensor in black area
  171. {
  172. if (SL == LOW & SR == HIGH) // black on left, white on right, turn left
  173. {
  174. turnR();
  175. }
  176. else if (SR == LOW & SL == HIGH) // white on left, black on right, turn right
  177. {
  178. turnL();
  179. }
  180. else if (SR == HIGH & SL == HIGH) { // all Black
  181. if(flagallblack==0){
  182. stopp() ;
  183. delay(5000);
  184. flagallblack=1;
  185. }
  186. else{
  187. advance();
  188. delay(500);
  189. flagallblack=0;
  190. }
  191. //turnL();
  192. //delay(100);
  193. }
  194. else // white on both sides, going forward
  195. {
  196. advance();
  197.  
  198. }
  199. }
  200. ///////////////////////////////////////////////////////////////////////////////
  201. else // middle sensor on white area
  202. {
  203. if (SL == LOW & SR == HIGH) // black on left, white on right, turn left
  204. {
  205. turnR();
  206.  
  207. }
  208. else if (SR == LOW & SL == HIGH) // white on left, black on right, turn right
  209. {
  210. turnL();
  211.  
  212.  
  213. }
  214.  
  215. else // all white, stop
  216. {
  217. turnL();
  218. // back();
  219. delay(100);
  220. stopp() ;
  221. }
  222.  
  223. }
  224. ///////////////////////////////////////////////////////////////////////////////
  225. }
  226.  
  227. else if (distance > 10 && ESP32_Command == 1) {
  228. stopp();
  229. hornON();
  230. delay(500);
  231. hornOFF();
  232. delay(500);
  233. }
  234. else if (distance < 10 && ESP32_Command == 1) {
  235. stopp();
  236. hornON();
  237. delay(500);
  238. hornOFF();
  239. delay(500);
  240. }
  241. else if (distance < 10 && ESP32_Command == 0) {
  242. stopp();
  243. hornON();
  244. delay(500);
  245. hornOFF();
  246. delay(500);
  247. }
  248.  
  249. }//end of loop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement