Guest User

Untitled

a guest
Feb 17th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. // Defining the sensor pins
  2. int SENSOR[6]= {0, 28, 27, 26, 25, 24}; //S1 to S5
  3.  
  4. // Defining the clapper pin and damp sensor pin, may be absent
  5. #define CLP 22
  6. #define NEAR 23
  7.  
  8. // L298N direction control pins
  9. // Same in in L293D
  10. #define IN2 50
  11. #define IN1 51
  12. #define IN4 52
  13. #define IN3 53
  14.  
  15. // Speed control pins, PWM signal always
  16. #define ENA 44
  17. #define ENB 45
  18.  
  19. // Defining the take color
  20. // 0 for black
  21. // 1 for white
  22. int IN_TRACK = false;
  23. int OUT_OF_TRACK = true;
  24.  
  25. // sensor value, initially all 0
  26. int S1=0, S2=0, S3=0, S4=0, S5=0, clp = 0, near=0;
  27.  
  28.  
  29.  
  30. int carStop();
  31. int straight();
  32. int turnLeft();
  33. int turnRight();
  34. int rotateLeft();
  35. int rotateRight();
  36.  
  37. void setup() {
  38. // Sensor pin as input pins
  39. pinMode(SENSOR[1], INPUT);
  40. pinMode(SENSOR[2], INPUT);
  41. pinMode(SENSOR[3], INPUT);
  42. pinMode(SENSOR[4], INPUT);
  43. pinMode(SENSOR[5], INPUT);
  44.  
  45. // clap and bump snesor pin as input pins
  46. pinMode(CLP, INPUT);
  47. pinMode(NEAR, INPUT);
  48.  
  49.  
  50. // motor direction control pins as output pin
  51. pinMode(IN2, OUTPUT);
  52. pinMode(IN1, OUTPUT);
  53. pinMode(IN4, OUTPUT);
  54. pinMode(IN3, OUTPUT);
  55.  
  56. // motor speed control pins as output pins , PWM Pins
  57. pinMode(ENA, OUTPUT);
  58. pinMode(ENB, OUTPUT);
  59.  
  60. // setting full speed
  61. analogWrite(ENA, 255);
  62. analogWrite(ENB, 255);
  63.  
  64. // to see ant serial moniter, use in debug
  65. Serial.begin(9600);
  66.  
  67. }
  68.  
  69. void loop() {
  70. //----------------------------------------
  71. // Sensor read
  72. S1 = digitalRead(SENSOR[1]);
  73. S2 = digitalRead(SENSOR[2]);
  74. S3 = digitalRead(SENSOR[3]);
  75. S4 = digitalRead(SENSOR[4]);
  76. S5 = digitalRead(SENSOR[5]);
  77. near = digitalRead(NEAR);
  78. clp = digitalRead(CLP);
  79. //--------------------------------------------
  80.  
  81. // See at serial monitor
  82. Serial.println("S1 : "+String(S1) +", "+"S2 : "+String(S2) +", "+"S3 : "+String(S3) +", "+"S4 : "+String(S4) +", "+"S5 : "+String(S5) +", ""NEAR : "+String(near) +", ");
  83.  
  84. if(near == true && clp==true){
  85. // stop if bump snesor is activate
  86. carStop();
  87. Serial.println("SOMTHING IS INFROT.");
  88.  
  89. }else if( S1 == OUT_OF_TRACK && S2 == OUT_OF_TRACK && S3 == OUT_OF_TRACK && S4 == OUT_OF_TRACK && S5 == OUT_OF_TRACK){
  90. // No track available
  91. Serial.println("YOU MAY BE LOST, TAKE A 180 DEG. TURN !!!");
  92.  
  93. }else if( S1 == IN_TRACK && S2 == IN_TRACK && S3 == IN_TRACK && S4 == IN_TRACK && S5 == IN_TRACK){
  94. // all sensor at track, It may be a checkpoint. do as per need
  95. Serial.println("YOU MAY BE AT CHECK POINT !!!");
  96.  
  97. }else if(S3 == OUT_OF_TRACK){
  98. // Center sensor is not at track
  99. if(S5 == IN_TRACK || S4 == IN_TRACK){
  100. // right sensor at track
  101. turnRight();
  102.  
  103. }else if(S1 == IN_TRACK || S2 == IN_TRACK){
  104. //left sensor at track
  105. turnLeft();
  106.  
  107. }else{
  108. // No need to left-right
  109. straight();
  110.  
  111. }
  112. }
  113. delay(10);
  114. }
  115.  
  116. int carStop(){
  117. // Changing the direction control pins
  118. digitalWrite(IN2, LOW);
  119. digitalWrite(IN1, LOW);
  120.  
  121. digitalWrite(IN4, LOW);
  122. digitalWrite(IN3, LOW);
  123. }
  124. int straight(){
  125. // Changing the direction control pins
  126. digitalWrite(IN2, HIGH);
  127. digitalWrite(IN1, LOW);
  128.  
  129. digitalWrite(IN4, HIGH);
  130. digitalWrite(IN3, LOW);
  131. }
  132. int turnLeft(){
  133. // Changing the direction control pins
  134. digitalWrite(IN2, HIGH);
  135. digitalWrite(IN1, LOW);
  136.  
  137. digitalWrite(IN4, LOW);
  138. digitalWrite(IN3, LOW);
  139. }
  140. int turnRight(){
  141. digitalWrite(IN2, LOW);
  142. digitalWrite(IN1, LOW);
  143.  
  144. digitalWrite(IN4, HIGH);
  145. digitalWrite(IN3, LOW);
  146. }
  147. int rotateLeft(){
  148. digitalWrite(IN2, HIGH);
  149. digitalWrite(IN1, LOW);
  150.  
  151. digitalWrite(IN4, LOW);
  152. digitalWrite(IN3, HIGH);
  153. }
  154. int rotateRight(){
  155. digitalWrite(IN2, LOW);
  156. digitalWrite(IN1, HIGH);
  157.  
  158. digitalWrite(IN4, HIGH);
  159. digitalWrite(IN3, LOW);
  160. }
Add Comment
Please, Sign In to add comment