Advertisement
Guest User

Tangi kood

a guest
Jan 17th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  1. /*
  2. IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
  3. An IR detector/demodulator must be connected to the input RECV_PIN.
  4. Version 0.1 July, 2009
  5. Copyright 2009 Ken Shirriff
  6. http://arcfn.com
  7. */
  8.  
  9. #include <IRremote.h>
  10.  
  11. #define OK_BUTTON 1217346747
  12. #define BUTTON_PRESSED 4294967295
  13. #define DOWN 465573243
  14. #define LEFT 2351064443
  15. #define RIGHT 71952287
  16. #define UP 1033561079
  17. #define STAR 3238126971
  18. #define HASHTAG 4039382595
  19. #define ONE 16753245
  20. #define TWO 16736925
  21. #define THREE 4001918335
  22.  
  23. int RECV_PIN = 13;
  24. int LED_left = 2;
  25. int LED_right = 3;
  26.  
  27. int trackSensor_left_Analog = 0;
  28. int trackSensor_right_Analog = 1;
  29. int buzzer = 7; //to be terminated
  30. int ultraSound_Trig = 2;
  31. int ultraSound_Echo = 3;
  32. int powerCircuit = 11;
  33. int IN1 = 8; // vasak
  34. int IN2 = 9;
  35. int IN3 = 10; // parem
  36. int IN4 = 12;
  37. int ENA = 5;
  38. int ENB = 6;
  39.  
  40. int mode = 0;
  41. //int oldMode = 0;
  42. /*
  43. 0 - stop
  44. 1 - forward
  45. 2 - back
  46. 3 - left
  47. 4 - right
  48. */
  49.  
  50. IRrecv irrecv(RECV_PIN);
  51.  
  52. decode_results results;
  53.  
  54. void setup()
  55. {
  56. Serial.begin(9600);
  57. irrecv.enableIRIn(); // Start the receiver
  58. pinMode(1, OUTPUT);
  59. pinMode(LED_left, OUTPUT);
  60. pinMode(LED_right, OUTPUT);
  61. pinMode(4, OUTPUT);
  62. pinMode(5, OUTPUT);
  63. pinMode(6, OUTPUT);
  64. //pinMode(7, OUTPUT);
  65. pinMode(IN1, OUTPUT);
  66. pinMode(IN2, OUTPUT);
  67. pinMode(IN3, OUTPUT);
  68. pinMode(11, OUTPUT);
  69. pinMode(IN4, OUTPUT);
  70. pinMode(RECV_PIN, INPUT);
  71. set_motorspeed(230, 170);
  72. }
  73.  
  74. void loop()
  75. {
  76. if (irrecv.decode(&results))
  77. {
  78. Serial.println(results.value, DEC);
  79. irrecv.resume(); // Receive the next value
  80.  
  81. switch (results.value)
  82. {
  83. // First four case look if any new buttons have been pressed
  84. case UP:
  85. mode = 1;
  86. break;
  87.  
  88. case DOWN:
  89. mode = 2;
  90. break;
  91.  
  92. case LEFT:
  93. mode = 3;
  94. break;
  95.  
  96. case RIGHT:
  97. mode = 4;
  98. break;
  99.  
  100. // This one checks if the reciever just got the repeat sign, in which case is just repeats the last command
  101. case BUTTON_PRESSED:
  102. mode = mode;
  103. break;
  104.  
  105. // If no interesting input is recieved then will switch to "stop" mode
  106. default:
  107. mode = 0;
  108. break;
  109. }
  110.  
  111. switch (mode) //This switch then executes whichever mode was selected by the input switch
  112. {
  113. case 1:
  114. go_ahead();
  115. break;
  116.  
  117. case 2:
  118. go_back();
  119. break;
  120.  
  121. case 3:
  122. turn_left();
  123. break;
  124.  
  125. case 4:
  126. turn_right();
  127. break;
  128. }
  129. }
  130. go_stop(); //As a final thing in the loop, the program resets everything to stop mode values.
  131. }
  132.  
  133. void go_ahead() //motor rotate clockwise -->robot go ahead
  134. {
  135. digitalWrite(IN1, LOW);
  136. digitalWrite(IN2, HIGH);
  137. digitalWrite(IN3, LOW);
  138. digitalWrite(IN4, HIGH);
  139. digitalWrite(LED_left, LOW);
  140. digitalWrite(LED_right, LOW);
  141. delay(200);
  142. }
  143. void go_back() //motor rotate counterclockwise -->robot go back
  144. {
  145. digitalWrite(IN1, HIGH);
  146. digitalWrite(IN2, LOW);
  147. digitalWrite(IN3, HIGH);
  148. digitalWrite(IN4, LOW);
  149. digitalWrite(LED_left, HIGH);
  150. digitalWrite(LED_right, HIGH);
  151. delay(200);
  152.  
  153. }
  154. void go_stop() //motor brake -->robot stop
  155. {
  156. digitalWrite(IN1, LOW);
  157. digitalWrite(IN2, LOW);
  158. digitalWrite(IN3, LOW);
  159. digitalWrite(IN4, LOW);
  160. digitalWrite(LED_left, HIGH);
  161. digitalWrite(LED_right, HIGH);
  162. //delay(15);
  163. }
  164. void turn_left() //left motor rotate counterclockwise and right motor rotate clockwise -->robot turn left
  165. {
  166. digitalWrite(IN1, HIGH); //Left motor goes in reverse
  167. digitalWrite(IN2, LOW);
  168. digitalWrite(IN3, LOW);
  169. digitalWrite(IN4, HIGH); //Right motor goes in forward
  170. digitalWrite(LED_left, LOW);
  171. digitalWrite(LED_right, HIGH);
  172. delay(200); //This delay is approximately the time between two IR signals plus some padding for the remote control to appear silky smooth
  173. }
  174. void turn_right() //left motor rotate clockwise and right motor rotate counterclockwise -->robot turn right
  175. {
  176. digitalWrite(IN1, LOW);
  177. digitalWrite(IN2, HIGH);
  178. digitalWrite(IN3, HIGH);
  179. digitalWrite(IN4, LOW);
  180. digitalWrite(LED_left, HIGH);
  181. digitalWrite(LED_right, LOW);
  182. delay(200);
  183. }
  184. /*set motor speed */
  185. void set_motorspeed(int lspeed, int rspeed) //change motor speed
  186. {
  187. analogWrite(ENA, lspeed); //lspeed:0-255
  188. analogWrite(ENB, rspeed); //rspeed:0-255
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement