daily pastebin goal
65%
SHARE
TWEET

Untitled

a guest Jan 17th, 2018 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
Top