Advertisement
safwan092

Untitled

May 9th, 2022
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. /*
  2. ***************************
  3. Connections:
  4. -----------------------------
  5. [Arduino Uno] --> [L298N Red Board]:
  6. 5V --> ENA
  7. 4 --> IN1
  8. 5 --> IN2
  9. 6 --> IN3
  10. 7 --> IN4
  11. 5V --> ENB
  12. [Arduino Uno] --> [IR Sensor (Left)]:
  13. GND --> GND
  14. 5V --> VCC
  15. 2 --> OUT
  16. [Arduino Uno] --> [IR Sensor (Center)]:
  17. GND --> GND
  18. 5V --> VCC
  19. 8 --> OUT
  20. [Arduino Uno] --> [IR Sensor (Right)]:
  21. GND --> GND
  22. 5V --> VCC
  23. 3 --> OUT
  24. [Arduino Uno] --> [IR Sensor (Front)]:
  25. GND --> GND
  26. 5V --> VCC
  27. 9 --> OUT
  28. -----------------------------
  29. ****************************
  30. */
  31.  
  32. #include <Servo.h>
  33.  
  34. Servo myservo;
  35. int pos = 0;
  36. #define SensorFront 9
  37. #define SensorLeft 2 //input pin of left sensor
  38. #define SensorMiddle 8 //input pin of middle sensor
  39. #define SensorRight 3 //input pin of right sensor
  40. unsigned char SL; //state of left sensor
  41. unsigned char SM; //state of middle sensor
  42. unsigned char SR; //state of right sensor
  43. unsigned char SF;
  44.  
  45. int pinLB = 7; //IN4
  46. int pinLF = 6; //IN3
  47. int pinRB = 5; //IN2
  48. int pinRF = 4; //IN1
  49.  
  50. void M_Control_IO_config(void)
  51. {
  52. pinMode(SensorFront, INPUT);
  53. pinMode(SensorLeft, INPUT);
  54. pinMode(SensorMiddle, INPUT);
  55. pinMode(SensorRight, INPUT);
  56. pinMode(pinLB, OUTPUT);
  57. pinMode(pinLF, OUTPUT);
  58. pinMode(pinRB, OUTPUT);
  59. pinMode(pinRF, OUTPUT);
  60. }
  61.  
  62. void turnR()
  63. {
  64. digitalWrite(pinRB, LOW);
  65. digitalWrite(pinRF, HIGH);
  66. digitalWrite(pinLB, LOW);
  67. digitalWrite(pinLF, HIGH);
  68. delay(10);
  69. }
  70. void back()
  71. {
  72. digitalWrite(pinRB, LOW);
  73. digitalWrite(pinRF, HIGH);
  74. digitalWrite(pinLB, HIGH);
  75. digitalWrite(pinLF, LOW);
  76. delay(10);
  77. }
  78. void advance()
  79. {
  80. digitalWrite(pinRB, HIGH);
  81. digitalWrite(pinRF, LOW );
  82. digitalWrite(pinLB, LOW);
  83. digitalWrite(pinLF, HIGH);
  84. delay(10);
  85. }
  86. void stopp()
  87. {
  88. digitalWrite(pinRB, HIGH);
  89. digitalWrite(pinRF, HIGH);
  90. digitalWrite(pinLB, HIGH);
  91. digitalWrite(pinLF, HIGH);
  92. delay(10);
  93. }
  94. void turnL()
  95. {
  96. digitalWrite(pinRB, HIGH);
  97. digitalWrite(pinRF, LOW);
  98. digitalWrite(pinLB, HIGH);
  99. digitalWrite(pinLF, LOW);
  100. delay(10);
  101. }
  102.  
  103. void setup()
  104. {
  105. Serial.begin(9600);
  106. myservo.attach(12);
  107. myservo.write(0);
  108. M_Control_IO_config();
  109. stopp();
  110. delay(5000);// milli Second
  111. }
  112.  
  113. void Sensor_Scan(void)
  114. {
  115. SF = digitalRead(SensorFront);// 0 / 1
  116. SL = digitalRead(SensorLeft);// 0 / 1
  117. SM = digitalRead(SensorMiddle);// 0 / 1
  118. SR = digitalRead(SensorRight);// 0 / 1
  119. Serial.print(SL);
  120. Serial.print(SM);
  121. Serial.println(SR);
  122. Serial.println(SF);
  123. }
  124.  
  125. void loop()
  126. {
  127. Sensor_Scan();
  128.  
  129. if (SF == 1) {
  130. ///////////////////////////////////////////////////////////////////////////////
  131. if (SM == 0)// middle sensor in black area
  132. {
  133. if (SL == 1 & SR == 0) // black on left, white on right, turn left
  134. {
  135. turnR();
  136. }
  137. else if (SR == 1 & SL == 0) // white on left, black on right, turn right
  138. {
  139. turnL();
  140. }
  141. else // white on both sides, going forward
  142. {
  143. advance();
  144. }
  145. }
  146. ///////////////////////////////////////////////////////////////////////////////
  147. else // middle sensor on white area
  148. {
  149. if (SL == 1 & SR == 0) // black on left, white on right, turn left
  150. {
  151. turnR();
  152.  
  153. }
  154. else if (SR == 1 & SL == 0) // white on left, black on right, turn right
  155. {
  156. turnL();
  157.  
  158.  
  159. }
  160. else // all white, stop
  161. {
  162. delay(100);
  163. stopp() ;
  164. }
  165. }
  166. ///////////////////////////////////////////////////////////////////////////////
  167. }
  168.  
  169. else {
  170. stopp();
  171. myservo.write(90);
  172. delay(5000);
  173. myservo.write(0);
  174. delay(2000);
  175. }
  176.  
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement