Advertisement
MrRabetao

Projeto 4WD - Final

Nov 29th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. #include <AFMotor.h>
  2. #define ft 1
  3. #define ts 2
  4.  
  5. int sense1 = 52;
  6. int sense2 = 53;
  7.  
  8. int valor1 = 0;
  9. int valor2 = 0;
  10.  
  11. int ult = 0;
  12.  
  13. int s0_1 = 22;
  14. int s1_1 = 24;
  15. int s2_1 = 26;
  16. int s3_1 = 28;
  17. int out_1 = 30;
  18.  
  19. int red_1 = 0;
  20. int green_1 = 0;
  21. int blue_1 = 0;
  22.  
  23. int s0_2 = 31;
  24. int s1_2 = 33;
  25. int s2_2 = 35;
  26. int s3_2 = 37;
  27. int out_2 = 39;
  28.  
  29. int red_2 = 0;
  30. int green_2 = 0;
  31. int blue_2 = 0;
  32.  
  33. AF_DCMotor m1(1);
  34. AF_DCMotor m2(2);
  35. AF_DCMotor m3(3);
  36. AF_DCMotor m4(4);
  37.  
  38. void setup() {
  39. m1.setSpeed(255);
  40. m2.setSpeed(255);
  41. m3.setSpeed(255);
  42. m4.setSpeed(255);
  43. pinMode(sense1, INPUT);
  44. pinMode(sense2, INPUT);
  45. pinMode(s0_1, OUTPUT);
  46. pinMode(s1_1, OUTPUT);
  47. pinMode(s2_1, OUTPUT);
  48. pinMode(s3_1, OUTPUT);
  49. pinMode(out_1, INPUT);
  50. pinMode(s0_2, OUTPUT);
  51. pinMode(s1_2, OUTPUT);
  52. pinMode(s2_2, OUTPUT);
  53. pinMode(s3_2, OUTPUT);
  54. pinMode(out_2, INPUT);
  55. digitalWrite(s0_1, HIGH);
  56. digitalWrite(s1_1, LOW);
  57. digitalWrite(s0_2, HIGH);
  58. digitalWrite(s1_2, LOW);
  59. delay(1000);
  60. Serial.begin(9600);
  61. }
  62.  
  63. void loop() {
  64.  
  65. valor1 = digitalRead(sense1);
  66. valor2 = digitalRead(sense2);
  67.  
  68. if((valor1==HIGH) && (valor2==HIGH)){
  69.  
  70. cor1();
  71. cor2();
  72.  
  73. if ((green_1 < red_1) && (blue_1 < green_1) && (blue_1>75)){
  74. direitaCor();
  75. delay(700);
  76. } else {
  77. if ((red_2 < green_2) && (blue_2 < red_2) && (blue_2>50)){
  78. esquerdaCor();
  79. delay(700);
  80. } else {
  81. ult = 0;
  82. frente();
  83.  
  84. }
  85. }
  86. /* ult = 0;
  87. frente();*/
  88. }
  89.  
  90. if((valor1==HIGH) && (valor2==LOW)){
  91. ult = 1;
  92. direita();
  93. }
  94.  
  95. if((valor1==LOW) && (valor2==HIGH)){
  96. ult = 2;
  97. esquerda();
  98. }
  99.  
  100. if((valor1==LOW) && (valor2==LOW)){
  101. if (ult != 0){
  102. if (ult == 1)
  103. direita();
  104. if (ult == 2)
  105. esquerda();
  106. }
  107. else{
  108. giro180();
  109. }
  110. }
  111. }
  112.  
  113. void frente() {
  114. m1.setSpeed(225);
  115. m2.setSpeed(225);
  116. m3.setSpeed(225);
  117. m4.setSpeed(225);
  118. m1.run(ft);
  119. m2.run(ft);
  120. m3.run(ft);
  121. m4.run(ft);
  122. }
  123.  
  124. void giro180() {
  125. m1.setSpeed(160);
  126. m2.setSpeed(160);
  127. m3.setSpeed(160);
  128. m4.setSpeed(160);
  129. m1.run(ft);
  130. m2.run(ft);
  131. m3.run(ts);
  132. m4.run(ts);
  133. }
  134.  
  135. void esquerda() {
  136. m1.setSpeed(225);
  137. m2.setSpeed(225);
  138. m3.setSpeed(225);
  139. m4.setSpeed(225);
  140. m1.run(ft);
  141. m2.run(ft);
  142. m3.run(ts);
  143. m4.run(ts);
  144. }
  145.  
  146. void direita() {
  147. m1.setSpeed(225);
  148. m2.setSpeed(225);
  149. m3.setSpeed(255);
  150. m4.setSpeed(255);
  151. m1.run(ts);
  152. m2.run(ts);
  153. m3.run(ft);
  154. m4.run(ft);
  155. }
  156.  
  157. void esquerdaCor() {
  158. m1.setSpeed(255);
  159. m2.setSpeed(255);
  160. m3.setSpeed(100);
  161. m4.setSpeed(100);
  162. m1.run(ft);
  163. m2.run(ft);
  164. m3.run(ts);
  165. m4.run(ts);
  166. }
  167.  
  168. void direitaCor() {
  169. m1.setSpeed(100);
  170. m2.setSpeed(100);
  171. m3.setSpeed(255);
  172. m4.setSpeed(255);
  173. m1.run(ts);
  174. m2.run(ts);
  175. m3.run(ft);
  176. m4.run(ft);
  177. }
  178.  
  179. void cor1() {
  180. digitalWrite(s2_1, LOW);
  181. digitalWrite(s3_1, LOW);
  182. red_1 = pulseIn(out_1, digitalRead(out_1) == HIGH ? LOW : HIGH);
  183.  
  184.  
  185. digitalWrite(s3_1, HIGH);
  186. blue_1 = pulseIn(out_1, digitalRead(out_1) == HIGH ? LOW : HIGH);
  187.  
  188. digitalWrite(s2_1, HIGH);
  189. green_1 = pulseIn(out_1, digitalRead(out_1) == HIGH ? LOW : HIGH);
  190. }
  191.  
  192. void cor2() {
  193. digitalWrite(s2_2, LOW);
  194. digitalWrite(s3_2, LOW);
  195. red_2 = pulseIn(out_2, digitalRead(out_2) == HIGH ? LOW : HIGH);
  196.  
  197. digitalWrite(s3_2, HIGH);
  198. blue_2 = pulseIn(out_2, digitalRead(out_2) == HIGH ? LOW : HIGH);
  199.  
  200. digitalWrite(s2_2, HIGH);
  201. green_2 = pulseIn(out_1, digitalRead(out_2) == HIGH ? LOW : HIGH);
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement