Guest User

Untitled

a guest
Feb 23rd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.13 KB | None | 0 0
  1. #include <Servo.h>
  2. #include <NewPing.h>
  3. #define TRIGGER_PINF 2
  4. #define ECHO_PINF A1
  5. #define TRIGGER_PINR 4
  6. #define ECHO_PINR A2
  7. #define TRIGGER_PINL 10
  8. #define ECHO_PINL A4
  9. #define MAX_DISTANCE 400
  10. NewPing uF(TRIGGER_PINF, ECHO_PINF, MAX_DISTANCE);
  11. NewPing uR(TRIGGER_PINR, ECHO_PINR, MAX_DISTANCE);
  12. NewPing uL(TRIGGER_PINL, ECHO_PINL, MAX_DISTANCE);
  13. Servo s;
  14. int uF1;
  15. int uR1;
  16. int uL1;
  17. int sumF;
  18. int sumR;
  19. int sumL;
  20. int in1=7;
  21. int in2=8;
  22. int in3=13;
  23. int in4=12;
  24. int en1=6;
  25. int en2=5;
  26. int f=A3;
  27. int fD=9;
  28. int value;
  29. int i; //servo angle
  30. int I; //counter
  31. //counter
  32. int r=11; //relay
  33. unsigned long timea;
  34. unsigned long timeb;
  35. void setup() {
  36. pinMode(in1,OUTPUT);
  37. pinMode(in2,OUTPUT);
  38. pinMode(in3,OUTPUT);
  39. pinMode(in4,OUTPUT);
  40. pinMode(en1, OUTPUT);
  41. pinMode(en2, OUTPUT);
  42. pinMode(f,INPUT); //flame
  43. pinMode(fD,INPUT);
  44. pinMode(r,OUTPUT);
  45. s.attach(3);
  46. Serial.begin(9600);
  47. delay(50);
  48. }
  49. void walk_right(){
  50. analogWrite(en1, 255);
  51. analogWrite(en2, 255);
  52. digitalWrite(in1,HIGH);
  53. digitalWrite(in2,LOW);
  54. digitalWrite(in3,HIGH);
  55. digitalWrite(in4,LOW);
  56.  
  57. }
  58. void walk_backward_fast(){
  59. analogWrite(en1, 255);
  60. analogWrite(en2, 255);
  61. digitalWrite(in1,HIGH);
  62. digitalWrite(in2,LOW);
  63. digitalWrite(in3,HIGH);
  64. digitalWrite(in4,LOW);
  65.  
  66. }
  67. void walk_left(){
  68. analogWrite(en1, 255); //low speed
  69. analogWrite(en2, 255);
  70. digitalWrite(in1,LOW);
  71. digitalWrite(in2,HIGH);
  72. digitalWrite(in3,LOW);
  73. digitalWrite(in4,HIGH);
  74.  
  75. }
  76. void walk_forward_fast(){
  77. analogWrite(en1, 255);
  78. analogWrite(en2, 255);
  79. digitalWrite(in1,LOW);
  80. digitalWrite(in2,HIGH);
  81. digitalWrite(in3,LOW);
  82. digitalWrite(in4,HIGH);
  83. }
  84. void walk_backward(){
  85. //changes according to the position of the robot
  86. analogWrite(en1, 100);
  87. analogWrite(en2, 100);
  88. digitalWrite(in1,LOW);
  89. digitalWrite(in2,HIGH);
  90. digitalWrite(in3,HIGH);
  91. digitalWrite(in4,LOW);
  92. }
  93. void walk_forward(){
  94. //changes according to the position of the robot
  95. analogWrite(en1, 100);
  96. analogWrite(en2, 100);
  97. digitalWrite(in1,HIGH);
  98. digitalWrite(in2,LOW);
  99. digitalWrite(in3,LOW);
  100. digitalWrite(in4,HIGH);
  101. }
  102. void stop1(){
  103. analogWrite(en1, 255);
  104. analogWrite(en2, 255);
  105. digitalWrite(in1,LOW);
  106. digitalWrite(in2,LOW);
  107. digitalWrite(in3,LOW);
  108. digitalWrite(in4,LOW);
  109.  
  110. }
  111. void detect(){
  112. s.write(0);
  113. delay(500); //34an mydtect4 7aga whwa rag3 (performance)
  114. for (i=0;i < 180; i+=1){
  115. s.write(i);
  116. delay(4);
  117.  
  118. if(digitalRead(fD) == 0){
  119.  
  120. if (i <= 94){
  121. walk_right();
  122. delay((94-i)*(700/90));
  123. stop1();
  124. delay(100);
  125. s.write(90);
  126. delay(200);
  127.  
  128. if (digitalRead(fD) == 0) {
  129.  
  130. timeb = millis();
  131. walk_forward_fast();
  132. digitalWrite(r, HIGH);
  133. while(digitalRead(fD) == 0){
  134. delay(1);
  135. }
  136. stop1();
  137. timea= millis() - timeb;
  138. delay(500);
  139. digitalWrite(r,LOW);
  140. walk_backward_fast();
  141. delay(timea);
  142. stop1(); }
  143. walk_left();
  144. delay((94-i)*(600/90));
  145. stop1();
  146.  
  147. }
  148. else
  149. {
  150. walk_left();
  151. delay((i-94)*(600/90));
  152. stop1();
  153. delay(100);
  154. s.write(90);
  155. delay(200);
  156. if (digitalRead(fD) == 0) {
  157. timeb = millis();
  158. walk_forward_fast();
  159. digitalWrite(r, HIGH);
  160. while(digitalRead(fD) == 0){
  161. delay(1);
  162. }
  163. stop1();
  164. timea= millis() - timeb;
  165. delay(500);
  166. digitalWrite(r,LOW);
  167. walk_backward_fast();
  168. delay(timea);
  169. stop1();}
  170. walk_right();
  171. delay((i-90)*(700/90));
  172. stop1();
  173. }
  174. }
  175. }
  176. }
  177. void readUF(int x){
  178. sumF = 0; sumR=0; sumL=0;
  179. for(i=1 ; i < (x+1) ;i++){
  180. sumF = sumF + uF.ping_cm();
  181. delay(20);
  182. }
  183. uF1 = sumF/x;
  184. }
  185. void readUL(int y){
  186. sumL=0;
  187. for(i=1 ; i < (y+1) ;i++){
  188. sumL= sumL+ uL.ping_cm();
  189. delay(20);
  190. }
  191. uL1 = sumL/y;
  192.  
  193.  
  194. }
  195. void readUR(int z){
  196. sumR=0;
  197. for(i=1 ; i < (z+1) ;i++){
  198. sumR= sumR+ uR.ping_cm();
  199. delay(20);
  200. }
  201. uR1 = sumR/z;
  202.  
  203. }
  204.  
  205.  
  206. void loop(){
  207. // detect();
  208. walk_forward();
  209. readUF(30);
  210. Serial.print("front ");
  211. Serial.println(uF1);
  212. Serial.print("right ");
  213. Serial.println(uR1);
  214. Serial.print("left ");
  215. Serial.println(uL1);
  216. if (uF1 <= 15){
  217. stop1();
  218. readUR(30);
  219. readUL(30);
  220. if (uR1 > uL1){
  221.  
  222. walk_right();
  223. delay(390);
  224. stop1();
  225. delay(1000);
  226. }
  227. else{
  228. walk_left();
  229. delay(400);
  230. stop1();
  231. delay(1000);
  232. }
  233. }
  234. }
Add Comment
Please, Sign In to add comment