Advertisement
safwan092

Untitled

Apr 13th, 2022
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. #define ENA 3 //must be PWM (~)
  2. #define IN1 4
  3. #define IN2 5
  4. #define IN3 6
  5. #define IN4 7
  6. #define ENB 9 //must be PWM (~)
  7. #define tr1 10
  8. #define ec1 11
  9. #define tr2 12
  10. #define ec2 13
  11.  
  12. byte com = 0; //reply from voice recognition
  13. long duration1, duration2;
  14. int distance1, distance2;
  15. int f = 0;
  16. int b = 0;
  17.  
  18. void setup() {
  19. Serial.begin(9600);
  20. pinMode(ENA, OUTPUT);
  21. pinMode(IN1, OUTPUT);
  22. pinMode(IN2, OUTPUT);
  23. pinMode(IN3, OUTPUT);
  24. pinMode(IN4, OUTPUT);
  25. pinMode(ENB, OUTPUT);
  26. pinMode(tr1, OUTPUT);
  27. pinMode(ec1, INPUT);
  28. pinMode(tr2, OUTPUT);
  29. pinMode(ec2, INPUT);
  30. analogWrite(ENA, 80); //0-255
  31. analogWrite(ENB, 80); //0-255
  32. stopp();
  33. delay(2000);
  34. Serial.write(0xAA);
  35. Serial.write(0x37);//Switch to Compact Mode
  36. delay(1000);
  37. Serial.write(0xAA);
  38. Serial.write(0x21);//Import group 1 and be ready for voice instruction
  39. }
  40.  
  41. void loop() {
  42. /*
  43. US1();
  44. US2();
  45. front();
  46. delay(1000);
  47. back();
  48. delay(1000);
  49. left();
  50. delay(1000);
  51. right();
  52. delay(1000);
  53. stopp();
  54. delay(1000);
  55. */
  56. US1();
  57. US2();
  58. if (f == 1 && distance1 < 20) {
  59. stopp();
  60. delay(1000);
  61. back();
  62. delay(1000);
  63. stopp();
  64. f = 0;
  65. }
  66. else if (f == 1 && distance1 > 20) {
  67. front();
  68. }
  69. if (b == 1 && distance2 < 20) {
  70. stopp();
  71. delay(1000);
  72. front();
  73. delay(1000);
  74. stopp();
  75. b = 0;
  76. }
  77. else if (b == 1 && distance2 > 20) {
  78. back();
  79. }
  80.  
  81.  
  82. while (Serial.available())
  83. {
  84. com = Serial.read();
  85. switch (com)
  86. {
  87. case 0x11:
  88. //أمام
  89. f = 1;
  90. break;
  91. case 0x12:
  92. //خلف
  93. b = 1;
  94. break;
  95. case 0x13:
  96. // يمين
  97. right();
  98. delay(500);
  99. stopp();
  100. break;
  101. case 0x14:
  102. // يسار
  103. left();
  104. delay(500);
  105. stopp();
  106. break;
  107. case 0x15:
  108. // توقف
  109. stopp();
  110. break;
  111. }// end of SWITCH
  112. }
  113.  
  114. }// end of LOOP
  115.  
  116. void front() {
  117. digitalWrite(IN1, 1);
  118. digitalWrite(IN2, 0);
  119. digitalWrite(IN3, 1);
  120. digitalWrite(IN4, 0);
  121. }
  122.  
  123. void back() {
  124. digitalWrite(IN1, 0);
  125. digitalWrite(IN2, 1);
  126. digitalWrite(IN3, 0);
  127. digitalWrite(IN4, 1);
  128. }
  129.  
  130. void left() {
  131. digitalWrite(IN1, 1);
  132. digitalWrite(IN2, 0);
  133. digitalWrite(IN3, 0);
  134. digitalWrite(IN4, 1);
  135. }
  136.  
  137. void right() {
  138. digitalWrite(IN1, 0);
  139. digitalWrite(IN2, 1);
  140. digitalWrite(IN3, 1);
  141. digitalWrite(IN4, 0);
  142. }
  143.  
  144. void stopp() {
  145. digitalWrite(IN1, 0);
  146. digitalWrite(IN2, 0);
  147. digitalWrite(IN3, 0);
  148. digitalWrite(IN4, 0);
  149. }
  150.  
  151. void US1() {
  152. digitalWrite(tr1, LOW);
  153. delayMicroseconds(5);
  154. digitalWrite(tr1, HIGH);
  155. delayMicroseconds(10);
  156. digitalWrite(tr1, LOW);
  157. duration1 = pulseIn(ec1, HIGH);
  158. distance1 = duration1 * 0.034 / 2;
  159. // Serial.print("Distance1 = ");
  160. // Serial.print(distance1);
  161. // Serial.print(" cm\t\t");
  162. }
  163.  
  164. void US2() {
  165. digitalWrite(tr2, LOW);
  166. delayMicroseconds(5);
  167. digitalWrite(tr2, HIGH);
  168. delayMicroseconds(10);
  169. digitalWrite(tr2, LOW);
  170. duration2 = pulseIn(ec2, HIGH);
  171. distance2 = duration2 * 0.034 / 2;
  172. // Serial.print("Distance2 = ");
  173. // Serial.print(distance2);
  174. // Serial.println(" cm");
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement