Task 3 Code 2, ClauTIC League, by MadTeam


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

Task 3 Code 2, ClauTIC League, by MadTeam


Copy this code and paste it in your HTML
  1. /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2.   * *
  3.   * Tïtol: Tercer repte ClauTIC *
  4.   * Objectiu: Seguir la línia fins arribar a creta. *
  5.   * Versió: 3.3.3 *
  6.   * Robot: Tossut, Prototip A *
  7.   * *
  8.   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  9.  
  10. // Definició dels pins dels motors
  11. int mesq_av = 12; // Motor esquerra per endavant al pin 12
  12. int mesq_re = 11; // Motor esquerra per enradera al pin 11
  13. int mesq_vel = 10; // Motor esquerra control velocitat al pin PWM 10
  14.  
  15. int mdret_av = 7; // Motor dret per endavant al pin 7
  16. int mdret_re = 6; // Motor dret per enradera al pin 6
  17. int mdret_vel = 5; // Motor dret control velocitat al pin PWM 5
  18.  
  19. //Definició dels pins del sensors
  20. int sen_esq = A0;
  21. int sen_dre = A1;
  22. int sen_cen = A2;
  23.  
  24. //Definició de les variables que guardaran els valors
  25. int val_esq;
  26. int val_dre;
  27. int val_cen;
  28.  
  29. int estat_color;
  30.  
  31. //Definició del límit entre colors
  32. int limit = 220; //més amunt negre, més avall blanc.
  33.  
  34. // Definim les variables pel contador de temps
  35. unsigned long temps, tempsant=0, interval=50;
  36.  
  37. void setup()
  38. {
  39. // Activem pins dels motors com sortida
  40. // Motor esquerra
  41. pinMode(mesq_vel, OUTPUT);
  42. pinMode(mesq_av, OUTPUT);
  43. pinMode(mesq_re, OUTPUT);
  44. // Motor dret
  45. pinMode(mdret_vel, OUTPUT);
  46. pinMode(mdret_av, OUTPUT);
  47. pinMode(mdret_re, OUTPUT);
  48. //Sensors de línea com entrada
  49. pinMode(sen_esq, INPUT);
  50. pinMode(sen_dre, INPUT);
  51. pinMode(sen_cen, INPUT);
  52.  
  53. Serial.begin(9600);
  54. }
  55.  
  56. void loop()
  57. {
  58. val_esq = analogRead(sen_esq);
  59. val_dre = analogRead(sen_dre);
  60. val_cen = analogRead(sen_cen);
  61.  
  62. /* if (segona==0){
  63.   Serial.print(val_esq);
  64.   Serial.print(" ");
  65.   Serial.print(val_cen);
  66.   Serial.print(" ");
  67.   Serial.print(val_dre);
  68.   Serial.print(" - ");
  69.   Serial.print(segona);
  70.   Serial.println(" - ");
  71.   }*/
  72. estat_color = sequencia_color(limit, val_esq, val_cen, val_dre);
  73. /* if (segona==0){
  74.   Serial.print(" ");
  75.   Serial.println(estat_color);
  76.   //delay(200);
  77.   }*/
  78. switch (estat_color) {
  79. case 10: // blanc negre blanc 010
  80. temps = millis();
  81. tempsant=millis();
  82. while (temps < (tempsant+interval)){
  83. Motors(HIGH, LOW, 150, HIGH, LOW, 150); // motors endavant
  84. temps=millis();
  85. }
  86. Motors(LOW, LOW, 0, LOW, LOW, 0);
  87. break;
  88. case 1: // blanc blanc negre 001
  89. temps = millis();
  90. tempsant=millis();
  91. while (temps < (tempsant+interval)){
  92. Motors(HIGH, LOW, 100, HIGH, LOW, 0); // gira a la dreta ++
  93. temps=millis();
  94. }
  95. Motors(LOW, LOW, 0, LOW, LOW, 0);
  96. break;
  97. case 100: // negre blanc blanc 100
  98. temps = millis();
  99. tempsant=millis();
  100. while (temps < (tempsant+(interval))){
  101. Motors(HIGH, LOW, 0, HIGH, LOW, 120);// gira a l'esquerra --
  102. temps=millis();
  103. }
  104. Motors(LOW, LOW, 0, LOW, LOW, 0);
  105. break;
  106. case 110: // negre negre blanc 110
  107. temps = millis();
  108. tempsant=millis();
  109. while (temps < (tempsant+interval)){
  110. Motors(HIGH, LOW, 0, HIGH, LOW, 120);// gira a l'esquerra
  111. temps=millis();
  112. }
  113. Motors(LOW, LOW, 0, LOW, LOW, 0);
  114. break;
  115. case 11: // blanc negre negre 011
  116. temps = millis();
  117. tempsant=millis();
  118. while (temps < (tempsant+interval)){
  119. Motors(HIGH, LOW, 100, HIGH, LOW, 0); // gira a la dreta
  120. temps=millis();
  121. }
  122. Motors(LOW, LOW, 0, LOW, LOW, 0);
  123. break;
  124. case 111: // negre negre negre 111
  125. temps = millis();
  126. tempsant=millis();
  127. while (temps < (tempsant+interval)){
  128. Motors(HIGH, LOW, 0, HIGH, LOW, 120);// gira a l'esquerra
  129. temps=millis();
  130. }
  131. Motors(LOW, LOW, 0, LOW, LOW, 0);
  132. break;
  133. case 101: // negre blanc negre 101
  134. temps = millis();
  135. tempsant=millis();
  136. while (temps < (tempsant+interval)){
  137. Motors(HIGH, LOW, 0, HIGH, LOW, 120);// gira a l'esquerra
  138. temps=millis();
  139. }
  140. Motors(LOW, LOW, 0, LOW, LOW, 0);
  141. break;
  142. case 0: // blanc blanc blanc 000
  143. Motors(LOW, LOW, 0, LOW, LOW, 0);
  144. break;
  145. }
  146. }
  147.  
  148. //FUNCIONS
  149.  
  150. void Motors (char me_avan, char me_retr, int me_vel, char md_avan, char md_retr, int md_vel)
  151. {
  152. // Motor esquerra endavant o enrradera
  153. digitalWrite (mesq_av, me_avan); // Es passa al motor esquerra si anar endavant es HIGH o LOW
  154. digitalWrite (mesq_re, me_retr); // Es passa al motor esquerra si anar enradera es HIGH o LOW
  155. // Motor dret endavant o enrradera
  156. digitalWrite (mdret_av, md_avan); // Es passa al motor dret si anar endavant es HIGH o LOW
  157. digitalWrite (mdret_re, md_retr); // Es passa al motor dret si anar enradera es HIGH o LOW
  158. // Velocitat als motors
  159. analogWrite (mesq_vel, me_vel); // Es passa al motor esquerra la velocitat
  160. analogWrite (mdret_vel, md_vel); // Es passa al motor dret la velocitat
  161. }
  162.  
  163. int sequencia_color(int valor_limit, int lec_esq, int lec_cen, int lec_dre)
  164. {
  165. int tira_color = 0;
  166.  
  167. if (lec_esq > valor_limit) {
  168. tira_color = 100; // resultat de 1 * 100
  169. }else {
  170. tira_color = 0; // resultat de 0 * 100
  171. }
  172. if (lec_cen > valor_limit) {
  173. tira_color = tira_color + 10; // resultat de 1 * 10
  174. } else {
  175. tira_color = tira_color + 0; // resultat de 0 * 10
  176. }
  177. if (lec_dre > valor_limit) {
  178. tira_color = tira_color + 1; // el valor és 1
  179. } else {
  180. tira_color = tira_color + 0; // el valor és 0
  181. }
  182.  
  183. return tira_color; //es retorna el valor de la variable tira_color
  184. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.