Task 3 Code 1, ClauTIC League, by MadTeam


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

This is the code for our Arduino robot in Task 3


Copy this code and paste it in your HTML
  1. //Aquesta és la progrmació del prototip B, es a dir, la definitiva
  2.  
  3. int Motor_Esq1=2, Motor_Esq2=4, Velocitat_Esq=3, Motor_Dret1=7, Motor_Dret2=8, Velocitat_Dret=6; //Declarem motors
  4. int sensor_valor_dret;
  5. int sensor_valor_esquerra;
  6. int pin_receptor_sensor_dret = A1;
  7. int pin_receptor_sensor_esquerra = A2;
  8. int blanc_o_negre = 930;
  9. int temps_delay = 10;
  10. int segona_vegada = 0;
  11. long temps_negres=99999999;
  12. long temps_nou=0;
  13.  
  14.  
  15. void setup()
  16. {
  17. pinMode(Motor_Esq1, OUTPUT);
  18. pinMode(Motor_Esq2, OUTPUT);
  19. pinMode(Velocitat_Esq, OUTPUT);
  20. pinMode(Motor_Dret1, OUTPUT);
  21. pinMode(Motor_Dret2, OUTPUT);
  22. pinMode(Velocitat_Dret, OUTPUT);
  23. Serial.begin(9600);
  24. }
  25.  
  26. void loop()
  27.  
  28.  
  29. {
  30. //marco la potencia dels dos
  31. analogWrite(Velocitat_Esq, 230);
  32. analogWrite(Velocitat_Dret, 225);
  33.  
  34. sensor_valor_dret = analogRead(pin_receptor_sensor_dret);
  35. sensor_valor_esquerra = analogRead(pin_receptor_sensor_esquerra);
  36. temps_nou= millis();
  37. Serial.print(temps_nou);
  38.  
  39.  
  40. //Si els sensor dret es blanc i el sensor esquerra es blanc, tira endevant
  41. if (sensor_valor_dret< blanc_o_negre && sensor_valor_esquerra<blanc_o_negre)
  42. {
  43. endavant(temps_delay);
  44. Serial.println("entra");
  45.  
  46. }
  47. //Si el sensor dret es negre i el sensor esquerra es blanc, gira a la dreta
  48. else if (sensor_valor_dret>blanc_o_negre && sensor_valor_esquerra<blanc_o_negre)
  49. {
  50. dreta(temps_delay);
  51. }
  52. //Si el sensor dret es blanc i el sensor esquerra es negre, gira a l'esquerra
  53. else if (sensor_valor_dret<blanc_o_negre && sensor_valor_esquerra>blanc_o_negre)
  54. {
  55. esquerra(temps_delay);
  56.  
  57. }
  58. //Si tots dos sensors son negres, posa els millis a 0 i gira a l'esquerra
  59. else if ( sensor_valor_dret>blanc_o_negre && sensor_valor_esquerra>blanc_o_negre)
  60. {
  61. if (segona_vegada == 0)
  62. {
  63. esquerra(temps_delay);
  64. segona_vegada ++;
  65. temps_negres=millis();
  66.  
  67. Serial.print("----------------------------------------------------------------");
  68. }
  69. }
  70.  
  71.  
  72. //Si arriva al final, para
  73. if ((temps_nou-temps_negres)>1300)
  74. {
  75. delay(99999999999);
  76. }
  77. }
  78.  
  79.  
  80.  
  81.  
  82. //FUNCIONS
  83. void endavant(int temps)
  84. {//Motor dret endavant
  85. digitalWrite(Motor_Dret1, HIGH);
  86. digitalWrite(Motor_Dret2, LOW);
  87. //motor esquerra endavant
  88. digitalWrite(Motor_Esq1, HIGH);
  89. digitalWrite(Motor_Esq2, LOW);
  90. delay(temps);
  91.  
  92. //paro el motor dret
  93. digitalWrite(Motor_Dret1, LOW);
  94. digitalWrite(Motor_Dret2, LOW);
  95. //paro el motor esquerra
  96. digitalWrite(Motor_Esq1, LOW);
  97. digitalWrite(Motor_Esq2, LOW);
  98. }
  99.  
  100.  
  101.  
  102. void endarrera(int temps)
  103. {//Motor dret endarrera
  104. digitalWrite(Motor_Dret1, LOW);
  105. digitalWrite(Motor_Dret2, HIGH);
  106. //motor esquerra endarrera
  107. digitalWrite(Motor_Esq1,LOW);
  108. digitalWrite(Motor_Esq2,HIGH);
  109. delay(temps);
  110. //paro el motor dret
  111. digitalWrite(Motor_Dret1, LOW);
  112. digitalWrite(Motor_Dret2, LOW);
  113. //paro el motor esquerra
  114. digitalWrite(Motor_Esq1, LOW);
  115. digitalWrite(Motor_Esq2, LOW);
  116. }
  117.  
  118. void dreta(int temps)
  119. {
  120. //Motor dret endarrera
  121. digitalWrite(Motor_Dret1, LOW);
  122. digitalWrite(Motor_Dret2, HIGH);
  123. //motor esquerra endavant
  124. digitalWrite(Motor_Esq1, HIGH);
  125. digitalWrite(Motor_Esq2, LOW);
  126. delay(temps);
  127.  
  128. //paro el motor dret
  129. digitalWrite(Motor_Dret1, LOW);
  130. digitalWrite(Motor_Dret2, LOW);
  131. //paro el motor esquerra
  132. digitalWrite(Motor_Esq1, LOW);
  133. digitalWrite(Motor_Esq2, LOW);
  134. }
  135.  
  136. void esquerra(int temps)
  137. {
  138. //Motor dret endavant
  139. digitalWrite(Motor_Dret1, HIGH);
  140. digitalWrite(Motor_Dret2, LOW);
  141. //motor esquerra endarrera
  142. digitalWrite(Motor_Esq1, LOW);
  143. digitalWrite(Motor_Esq2, HIGH);
  144. delay(temps);
  145.  
  146. //paro el motor dret
  147. digitalWrite(Motor_Dret1, LOW);
  148. digitalWrite(Motor_Dret2, LOW);
  149. //paro el motor esquerra
  150. digitalWrite(Motor_Esq1, LOW);
  151. digitalWrite(Motor_Esq2, LOW);
  152. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.