Task 2, ClauTIC League, by MadTeam


/ Published in: Processing
Save to your folder(s)

Codi repte 2 ClauTic league


Copy this code and paste it in your HTML
  1. /* Segon repte clautic league
  2. Fer ziga zaga a les piramides
  3. arribar a la barca i tornar a la base
  4. utilitzant sensor d'ultrasons
  5. Aquesta versio amb la llibreria Ultrasonic
  6. */
  7.  
  8. /* Aquesta d'aquí sota és la llibreria
  9. dels sensor d'ultrasons comentada en el
  10. vídeo. Per més informació: http://goo.gl/T8UESz
  11. */
  12.  
  13. #include <Ultrasonic.h>
  14.  
  15. // Definició dels pins dels motors
  16. int mesq_av = 12; // Motor esquerra per endavant al pin 12
  17. int mesq_re = 11; // Motor esquerra per enradera al pin 11
  18. int mesq_vel = 10; // Motor esquerra control velocitat al pin PWM 10
  19.  
  20. int mdret_av = 7; // Motor dret per endavant al pin 7
  21. int mdret_re = 6; // Motor dret per enradera al pin 6
  22. int mdret_vel = 5; // Motor dret control velocitat al pin PWM 5
  23.  
  24. // Definició constants sensor distancia
  25. #define Echo 8
  26. #define Trip 9
  27. #define Led 13
  28.  
  29. Ultrasonic ultrasonic(Trip,Echo); // (Trig PIN,Echo PIN)
  30.  
  31. long distancia,temps;
  32.  
  33. int final=0; // Per fer el loop una sola vegada
  34. int compara;
  35. //int contador;
  36.  
  37. void setup(){
  38. // Activem pins dels motors com sortida
  39. // Motor esquerra
  40. pinMode(mesq_vel, OUTPUT);
  41. pinMode(mesq_av, OUTPUT);
  42. pinMode(mesq_re, OUTPUT);
  43. // Motor dret
  44. pinMode(mdret_vel, OUTPUT);
  45. pinMode(mdret_av, OUTPUT);
  46. pinMode(mdret_re, OUTPUT);
  47.  
  48. // pinMode(Echo, INPUT);
  49. // pinMode(Trig, OUTPUT);
  50.  
  51. pinMode(Led, OUTPUT);
  52. Serial.begin(9600);
  53. }
  54.  
  55. void loop(){
  56. if (final==0){
  57. //de la base a tutankamon
  58. digitalWrite(Led, HIGH);
  59. Motors(HIGH, LOW, 235, HIGH, LOW, 255);
  60. delay(800); //anterior:800
  61. // Motors(HIGH, LOW, 0, HIGH, LOW, 0);
  62.  
  63. //90º tutankamon piramide 1
  64. Motors(HIGH, LOW, 255, HIGH, LOW, 0);
  65. delay(130); //anterior:155
  66. Motors(HIGH, LOW, 0, HIGH, LOW, 0);
  67.  
  68. // Posem a la variable compara la distancia que dona el sensor des de la llibreria
  69. compara=ultrasonic.Ranging(CM);
  70.  
  71. //mentres estigui a + de "x" cm anar endevant
  72. while (compara > 22 || compara ==0 ){
  73. digitalWrite(Led, LOW);
  74. Motors(HIGH, LOW, 95, HIGH, LOW, 100);
  75. Serial.println(compara);
  76. compara=ultrasonic.Ranging(CM);
  77. }
  78. digitalWrite(Led, HIGH);
  79.  
  80. //esquivar 1a piramide primer girant a la dreta
  81. Motors(HIGH, LOW, 255, HIGH, LOW, 0);
  82. delay(140); //anterior: 140
  83. //recte
  84. Motors(HIGH, LOW, 100, HIGH, LOW, 145);
  85. delay(130);//abans 150
  86. Motors(HIGH, LOW, 0, HIGH, LOW, 0);
  87. delay(5);
  88.  
  89. //i despres girant a l'esquerra
  90. Motors(HIGH, LOW, 0, HIGH, LOW, 250);//abans 245
  91. delay(420); //anterior: 400
  92. Motors(LOW, LOW, 0, LOW, LOW, 0);
  93.  
  94. // Tornem a agafar el valor de distancia i establim distancia mínima
  95. compara=ultrasonic.Ranging(CM);
  96. while (compara > 22 || compara ==0 ){
  97. digitalWrite(Led, LOW);
  98. Motors(HIGH, LOW, 85, HIGH, LOW, 110);
  99. compara=ultrasonic.Ranging(CM);
  100. }
  101. digitalWrite(Led, HIGH);
  102.  
  103. //esquivar 1a piramide 2 girant esquerra
  104. Motors(HIGH, LOW, 0, HIGH, LOW, 255);
  105. delay(90);//Abans 100
  106. //va recte
  107. Motors(HIGH, LOW, 200, HIGH, LOW, 235);
  108. delay(140);//abans 160
  109. Motors(LOW, LOW, 0, LOW, LOW, 0);
  110. delay(100);
  111.  
  112. // i despres a la dreta
  113. Motors(HIGH, LOW, 245, HIGH, LOW, 95);
  114. delay(450);//abans 400
  115. Motors(LOW, LOW, 0, LOW, LOW, 0);
  116. delay(150);
  117. // avança una mica abans de tornar a girar a l'esquerra
  118. Motors(HIGH, LOW, 200, HIGH, LOW, 235);//abans 140
  119. delay(550);//abans 400
  120. Motors(LOW, LOW, 0, LOW, LOW, 0);
  121. delay(50);
  122.  
  123. // gira a l'esquerra per anar a la galera
  124. Motors(HIGH, LOW, 0, HIGH, LOW, 250);
  125. delay(300);
  126. Motors(LOW, LOW, 0, LOW, LOW, 0);
  127. delay(100);
  128.  
  129. // avança cap a la barca
  130. Motors(HIGH, LOW, 255, HIGH, LOW, 255);
  131. delay(750);
  132. Motors(LOW, LOW, 0, LOW, LOW, 0);
  133. delay(100);
  134.  
  135.  
  136. // torna a la base d'esquena
  137. Motors(LOW, HIGH, 245, LOW, HIGH, 250);
  138. delay(2000);
  139.  
  140. // i es para el motor
  141. Motors(HIGH, LOW, 0, HIGH, LOW, 0);
  142.  
  143. // es suma final, per no tornar a executar el bucle
  144. final++;
  145. }
  146. }
  147.  
  148. //FUNCIONS
  149. void Motors (char me_avan, char me_retr, int me_vel, char md_avan, char md_retr, int md_vel)
  150. {
  151. // Motor esquerra endavant o enrradera
  152. digitalWrite (mesq_av, me_avan);
  153. digitalWrite (mesq_re, me_retr);
  154. // Motor dret endavant o enrradera
  155. digitalWrite (mdret_av, md_avan);
  156. digitalWrite (mdret_re, md_retr);
  157. // Velocitat als motors
  158. analogWrite (mesq_vel, me_vel);
  159. analogWrite (mdret_vel, md_vel);
  160. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.