Advertisement
MrRabetao

Carrinho 4WD com sensor de cor

Dec 5th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 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. cor1();
  70. cor2();
  71. if ((green_1 < red_1) && (blue_1 < green_1) && (blue_1>80)){
  72. direitaCor();
  73. delay(800);
  74. } else {
  75. if ((red_2 < green_2) && (blue_2 < red_2) && (blue_2>55)){
  76. esquerdaCor();
  77. delay(800);
  78. } else {
  79. ult = 0;
  80. frente();
  81.  
  82. }
  83. }
  84. }
  85.  
  86. if((valor1==HIGH) && (valor2==LOW)){
  87. ult = 1;
  88. direita();
  89. }
  90.  
  91. if((valor1==LOW) && (valor2==HIGH)){
  92. ult = 2;
  93. esquerda();
  94. }
  95.  
  96. if((valor1==LOW) && (valor2==LOW)){
  97. if (ult != 0){
  98. if (ult == 1)
  99. direita();
  100. if (ult == 2)
  101. esquerda();
  102. }
  103. else{
  104. giro180();
  105. }
  106. }
  107. }
  108.  
  109. void frente() {
  110. m1.setSpeed(200);
  111. m2.setSpeed(200);
  112. m3.setSpeed(200);
  113. m4.setSpeed(200);
  114. m1.run(ft);
  115. m2.run(ft);
  116. m3.run(ft);
  117. m4.run(ft);
  118. }
  119.  
  120. void giro180() {
  121. m1.setSpeed(160);
  122. m2.setSpeed(160);
  123. m3.setSpeed(160);
  124. m4.setSpeed(160);
  125. m1.run(ft);
  126. m2.run(ft);
  127. m3.run(ts);
  128. m4.run(ts);
  129. }
  130.  
  131. void esquerda() {
  132. m1.setSpeed(200);
  133. m2.setSpeed(200);
  134. m3.setSpeed(200);
  135. m4.setSpeed(200);
  136. m1.run(ft);
  137. m2.run(ft);
  138. m3.run(ts);
  139. m4.run(ts);
  140. }
  141.  
  142. void direita() {
  143. m1.setSpeed(200);
  144. m2.setSpeed(200);
  145. m3.setSpeed(200);
  146. m4.setSpeed(200);
  147. m1.run(ts);
  148. m2.run(ts);
  149. m3.run(ft);
  150. m4.run(ft);
  151. }
  152.  
  153. void esquerdaCor() {
  154. m1.setSpeed(200);
  155. m2.setSpeed(200);
  156. m3.setSpeed(85);
  157. m4.setSpeed(85);
  158. m1.run(ft);
  159. m2.run(ft);
  160. m3.run(ts);
  161. m4.run(ts);
  162. }
  163.  
  164. void direitaCor() {
  165. m1.setSpeed(85);
  166. m2.setSpeed(85);
  167. m3.setSpeed(200);
  168. m4.setSpeed(200);
  169. m1.run(ts);
  170. m2.run(ts);
  171. m3.run(ft);
  172. m4.run(ft);
  173. }
  174.  
  175. void cor1() {
  176. digitalWrite(s2_1, LOW);
  177. digitalWrite(s3_1, LOW);
  178. red_1 = pulseIn(out_1, digitalRead(out_1) == HIGH ? LOW : HIGH);
  179.  
  180.  
  181. digitalWrite(s3_1, HIGH);
  182. blue_1 = pulseIn(out_1, digitalRead(out_1) == HIGH ? LOW : HIGH);
  183.  
  184. digitalWrite(s2_1, HIGH);
  185. green_1 = pulseIn(out_1, digitalRead(out_1) == HIGH ? LOW : HIGH);
  186. }
  187.  
  188. void cor2() {
  189. digitalWrite(s2_2, LOW);
  190. digitalWrite(s3_2, LOW);
  191. red_2 = pulseIn(out_2, digitalRead(out_2) == HIGH ? LOW : HIGH);
  192.  
  193. digitalWrite(s3_2, HIGH);
  194. blue_2 = pulseIn(out_2, digitalRead(out_2) == HIGH ? LOW : HIGH);
  195.  
  196. digitalWrite(s2_2, HIGH);
  197. green_2 = pulseIn(out_1, digitalRead(out_2) == HIGH ? LOW : HIGH);
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement