pigg

Arduino 藍芽遙控車

Dec 28th, 2015
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.87 KB | None | 0 0
  1. /*
  2. 藍芽接收
  3. 10 11
  4. 馬達 ABCD四顆
  5. 左前A
  6. 右前B
  7. 左後C
  8. 右後D
  9.  
  10.  左   頭   右
  11.     A    B
  12.     C    D
  13.       尾
  14.  
  15.  
  16. 使用兩顆L298N控制4個馬達
  17. Z=X,Y
  18. Z=馬達 X=正轉 Y=逆轉
  19. A=2,3
  20. B=4,5
  21. C=6,7
  22. D=8,9
  23.  
  24.  
  25. 副程式 列表
  26. AM_F  A馬達正轉 1,0
  27. AM_R  A馬達逆轉 0,1
  28. AM_S  A馬達停止 0,0
  29.  
  30. BM_F  B馬達正轉 1,0
  31. BM_R  B馬達逆轉 0,1
  32. BM_S  B馬達停止 0,0
  33.  
  34. CM_F  C馬達正轉 1,0
  35. CM_R  C馬達逆轉 0,1
  36. CM_S  C馬達停止 0,0
  37.  
  38. DM_F  D馬達正轉 1,0
  39. DM_R  D馬達逆轉 0,1
  40. DM_S  D馬達停止 0,0
  41.  
  42.  
  43. 藍芽傳輸內容:
  44.     a=前進上緣訊號=97
  45.     b=前進下緣訊號=98
  46.     c=後退上緣訊號=99
  47.     d=後退下緣訊號=100
  48.     e=左轉上緣訊號=101
  49.     f=左轉下緣訊號=102
  50.     g=右轉上緣訊號=103
  51.     h=右轉下緣訊號=104
  52.    
  53. */
  54. #include <SoftwareSerial.h>  //導入函式庫
  55. #include <Wire.h>   //導入函式庫
  56. SoftwareSerial BT(10,11);
  57.  
  58. //A馬達控制用副程式
  59. int AM_F()
  60. {
  61.     digitalWrite(2,HIGH);
  62.     digitalWrite(3,LOW);
  63. }
  64. int AM_R()
  65. {
  66.     digitalWrite(2,LOW);
  67.     digitalWrite(3,HIGH);  
  68. }
  69. int AM_S()
  70. {
  71.     digitalWrite(2,LOW);
  72.     digitalWrite(3,LOW);   
  73. }
  74.  
  75. //B馬達控制用副程式
  76. int BM_F()
  77. {
  78.     digitalWrite(4,HIGH);
  79.     digitalWrite(5,LOW);
  80. }
  81. int BM_R()
  82. {
  83.     digitalWrite(4,LOW);
  84.     digitalWrite(5,HIGH);  
  85. }
  86. int BM_S()
  87. {
  88.     digitalWrite(4,LOW);
  89.     digitalWrite(5,LOW);   
  90. }
  91.  
  92. //C馬達控制用副程式
  93. int CM_F()
  94. {
  95.     digitalWrite(6,HIGH);
  96.     digitalWrite(7,LOW);
  97. }
  98. int CM_R()
  99. {
  100.     digitalWrite(6,LOW);
  101.     digitalWrite(7,HIGH);  
  102. }
  103. int CM_S()
  104. {
  105.     digitalWrite(6,LOW);
  106.     digitalWrite(7,LOW);   
  107. }
  108.  
  109. //D馬達控制用副程式
  110. int DM_F()
  111. {
  112.     digitalWrite(8,HIGH);
  113.     digitalWrite(9,LOW);
  114. }
  115. int DM_R()
  116. {
  117.     digitalWrite(8,LOW);
  118.     digitalWrite(9,HIGH);  
  119. }
  120. int DM_S()
  121. {
  122.     digitalWrite(8,LOW);
  123.     digitalWrite(9,LOW);   
  124. }
  125.  
  126.  
  127.  
  128.  
  129. void setup()
  130. {
  131.     for(int pin=2;pin<=9;pin++)  //設定腳位2~9都是輸出(給馬達用)
  132.     {
  133.             pinMode(pin,OUTPUT);
  134.     }
  135.     Serial.begin(9600);
  136.     BT.begin(9600);
  137. }
  138.  
  139. void loop()
  140. {
  141.     if( BT.available() == 1) //如果藍芽裝置讀到了值
  142.     {
  143.         Serial.print("Receive:");//序列阜顯示Receive:
  144.         Serial.print(BT.read());//序列阜顯示收到的值
  145.         Serial.print("\n");//序列阜換行
  146.         int btread = BT.read();
  147.         if ((btread== 98 )||(btread == 100)||(btread == 102)||(btread == 104))
  148.         {
  149.             btread = 98;
  150.         }
  151.         if (btread == 97)  //前進時 ABCD都正轉
  152.         {
  153.             AM_F();
  154.             BM_F();
  155.             CM_F();
  156.             DM_F();
  157.         }
  158.         else if (btread == 99) //後退時 ABCD都逆轉
  159.         {
  160.             AM_R();
  161.             BM_R();
  162.             CM_R();
  163.             DM_R();
  164.         }
  165.         else if (btread == 101)  //左轉時 BD正 AC逆
  166.         {
  167.             BM_F();
  168.             DM_F();
  169.             AM_R();
  170.             CM_R();
  171.         }
  172.         else if (btread == 103)  //右轉時 AC正 BD逆
  173.         {
  174.             AM_F();
  175.             CM_F();
  176.             BM_R();
  177.             DM_R();
  178.         }
  179.         else if (btread == 98)  //如果按鈕放開 所有馬達停止
  180.         {
  181.             AM_S();
  182.             BM_S();
  183.             CM_S();
  184.             DM_S();
  185.         }
  186.     }
  187. }
Add Comment
Please, Sign In to add comment