Guest User

Untitled

a guest
Jan 17th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.94 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2.  
  3. // Pin definition
  4. #define PWMA 6
  5. #define PWMB 11
  6.  
  7. #define AIN1 9
  8. #define AIN2 7
  9. #define STBY 8
  10. #define BIN1 10
  11. #define BIN2 12
  12.  
  13. // Serial definition
  14. #define WHEEL_HEAD_CHAR 'W'
  15. #define BUFFER_LENGTH 8
  16. #define BAUDRATE 9600
  17.  
  18. // Control limit
  19. #define MAX_SPEED 510
  20. #define MIN_SPEED 0
  21. #define STOP_SPEED 255
  22.  
  23. #define RESP "WOK"
  24.  
  25. //#define DEBUG
  26.  
  27. #define BTrec 3
  28. #define BTtra 5
  29.  
  30.  
  31. SoftwareSerial BT(BTrec, BTtra);
  32. //定義Arduino BTrec, BTtra分別為RX及TX腳位
  33. //請注意Arduino的TX要接藍牙模組的RX, 反之亦然
  34.  
  35. int num;
  36. int r,g,b;
  37. int LED = 13;
  38.  
  39. int bufIndex = 0;
  40. char recvBuf[BUFFER_LENGTH] = {0};
  41. int recvCompelete = 0;
  42.  
  43. int standby = HIGH;
  44.  
  45. int motorL_speed = 150;
  46. int motorL_in1 = 0;
  47. int motorL_in2 = 0;
  48.  
  49. int motorR_speed = 150;
  50. int motorR_in1 = 0;
  51. int motorR_in2 = 0;
  52.  
  53. void ctrl_wheel()
  54. {
  55. digitalWrite(STBY, standby);
  56.  
  57. analogWrite(PWMA, motorR_speed);
  58. digitalWrite(AIN1, motorR_in1);
  59. digitalWrite(AIN2, motorR_in2);
  60.  
  61. analogWrite(PWMB, motorL_speed);
  62. digitalWrite(BIN1, motorL_in1);
  63. digitalWrite(BIN2, motorL_in2);
  64. delay(100);
  65. }
  66.  
  67. void setdir(int di){
  68. switch (di) {
  69. case 1://前
  70. motorL_in1 = LOW;//正轉
  71. motorL_in2 = HIGH;
  72. motorR_in1 = LOW;//正轉
  73. motorR_in2 = HIGH;
  74. break;//後
  75. case 2:
  76. motorL_in1 = HIGH;//反轉
  77. motorL_in2 = LOW;
  78. motorR_in1 = HIGH;//反轉
  79. motorR_in2 = LOW;
  80. break;//左
  81. case 3:
  82. motorL_in1 = HIGH;//反轉
  83. motorL_in2 = LOW;
  84. motorR_in1 = LOW;//正轉
  85. motorR_in2 = HIGH;
  86. break;//右
  87. case 4:
  88. motorL_in1 = LOW;//正轉
  89. motorL_in2 = HIGH;
  90. motorR_in1 = HIGH;//反轉
  91. motorR_in2 = LOW;
  92. break;
  93. default://停
  94. motorL_in1 = HIGH;
  95. motorL_in2 = HIGH;
  96. motorR_in1 = LOW;
  97. motorR_in2 = HIGH;
  98. }
  99. ctrl_wheel();
  100. }
  101.  
  102.  
  103. void setup()
  104. {
  105. // Initial pin mode
  106. pinMode(PWMA, OUTPUT);
  107. pinMode(PWMB, OUTPUT);
  108. pinMode(AIN1, OUTPUT);
  109. pinMode(AIN2, OUTPUT);
  110. pinMode(STBY, OUTPUT);
  111. pinMode(BIN1, OUTPUT);
  112. pinMode(BIN2, OUTPUT);
  113.  
  114. digitalWrite(PWMA, LOW);
  115. digitalWrite(PWMB, LOW);
  116. digitalWrite(AIN1, LOW);
  117. digitalWrite(AIN2, LOW);
  118. digitalWrite(STBY, LOW);
  119. digitalWrite(BIN1, LOW);
  120. digitalWrite(BIN2, LOW);
  121.  
  122. // Setup serial
  123.  
  124. Serial.begin(BAUDRATE);
  125. BT.begin(BAUDRATE);
  126. //while (!Serial);
  127.  
  128. // Send startup response
  129. Serial.println(RESP);
  130.  
  131. }
  132.  
  133. //f=102
  134. //l=108
  135. //r=114
  136. //b=98
  137. //R=82
  138. //G=71
  139. //B=66
  140. //space=32
  141. void loop() {
  142. byte cmmd[3];
  143. int insize;
  144. while(1){
  145. //read message from bluetooth
  146. if ((insize=(BT.available()))>0){
  147. //Serial.print("input size = ");
  148. Serial.print("it is:");
  149. //Serial.println(insize);
  150. for (int i=0; i<insize; i++){
  151. Serial.print(cmmd[i]=char(BT.read()));
  152. Serial.print(",");
  153. }
  154. Serial.print("\n");
  155. }
  156. //根據所收到訊號執行對應動作
  157.  
  158. //f=102
  159. //l=108
  160. //r=114
  161. //b=98
  162. //R=82
  163. //G=71
  164. //B=66
  165. //space=32
  166. switch (cmmd[0]) {//讀取第一個字元
  167. case 102://for
  168. Serial.println("for");
  169. setdir(1);
  170. digitalWrite(LED,HIGH);
  171. break;
  172.  
  173. case 98://bac
  174. Serial.println("bac");
  175. setdir(2);
  176. digitalWrite(LED,LOW);
  177. break;
  178. case 108://lef
  179. Serial.println("lef");
  180. setdir(3);
  181. break;
  182. case 114://rig
  183. Serial.println("rig");
  184. setdir(4);
  185. break;
  186. case 82://R
  187. //num=(cmmd[1]-48)*100 + (cmmd[2]-48)*10 + cmmd[3]-48;
  188. Serial.print("R");
  189. //Serial.println(num);
  190. delay(10);
  191. break;
  192. case 71://G
  193. //num=(cmmd[1]-48)*100 + (cmmd[2]-48)*10 + cmmd[3]-48;
  194. Serial.print("G");
  195. //Serial.println(num);
  196. delay(10);
  197. break;
  198. case 66://B
  199. //num=(cmmd[1]-48)*100 + (cmmd[2]-48)*10 + cmmd[3]-48;
  200. Serial.print("B");
  201. //Serial.println(num);
  202. delay(10);
  203. break;
  204. }
  205.  
  206. }
  207. }
Add Comment
Please, Sign In to add comment