Advertisement
Al_Ninyo

Bluetooth Car v. 1.2

May 28th, 2016
422
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.32 KB | None | 0 0
  1. /************************
  2.  * Bluetooth Car v. 1.2
  3.  * Authors:
  4.  * Lugovcov Gleb
  5.  * Pahomov Daniil
  6.  * Kolpakov Vladimir
  7.  * http://ut60.ru
  8.  * 28.05.2016
  9.  ************************/
  10.  
  11. #include <SoftwareSerial.h>
  12. SoftwareSerial btSerial(6, 10); // Rx, Tx
  13.  
  14. #define IN1 18 //input1 подключен к пину A4
  15. #define IN2 17 //input2 подключен к пину A3
  16. #define IN3 8 //input3 подключен к пину 8
  17. #define IN4 7 //input4 подключен к пину 7
  18. #define EN1 3 //enable1 подключен к пину 3
  19. #define EN2 9 //enable2 подключен к пину 9
  20.  
  21. #define fary1 2 //светодиоды-фары1 подключены к пину 2
  22. #define fary2 4 //светодиоды-фары2 подключены к пину 4
  23. #define stopSignal1 11 //светодиоды-стопы1 (красные) подключены к пину 11
  24. #define stopSignal2 12 //светодиоды-стопы2 (красные) подключены к пину 12
  25. #define soundSignal 5 //динамик подключён к пину 5
  26.  
  27. int L = 0; //скорость левого двигателя
  28. int R = 0; //скорость правого двигателя
  29. boolean svet = 0; //состояние фар горит/не горит
  30. boolean L_side = 0;
  31. boolean R_side = 0;
  32.  
  33. void Engine() {
  34.  digitalWrite (IN2, !L_side);
  35.  digitalWrite (IN1, L_side);
  36.  digitalWrite (IN4, !R_side);
  37.  digitalWrite (IN3, R_side);
  38.  
  39.  analogWrite(EN1, L); //включаем левый двигатель
  40.  analogWrite(EN2, R); //включаем правый двигатель
  41. }
  42.  
  43. void stopSignal() {
  44.   digitalWrite(stopSignal1, HIGH);
  45.   digitalWrite(stopSignal2, HIGH);
  46.     delay(200);
  47.   digitalWrite(stopSignal1, LOW);
  48.   digitalWrite(stopSignal2, LOW);
  49. }
  50.  
  51. void setup() {
  52.   Serial.begin(9600);
  53.   pinMode (EN1, OUTPUT);
  54.   pinMode (IN1, OUTPUT);
  55.   pinMode (IN2, OUTPUT);
  56.   pinMode (EN2, OUTPUT);
  57.   pinMode (IN4, OUTPUT);
  58.   pinMode (IN3, OUTPUT);
  59.   pinMode (fary1, OUTPUT);
  60.   pinMode (fary2, OUTPUT);
  61.   pinMode (stopSignal1, OUTPUT);
  62.   pinMode (stopSignal2, OUTPUT);
  63.  
  64.   btSerial.begin(9600);
  65.   btSerial.setTimeout(10); //пауза чтения по BT 10 мс
  66.  
  67. }
  68.  
  69. void loop() {
  70.   if (btSerial.available())        // если что-то получили
  71.  {
  72.   int dataIn = btSerial.parseInt(); //читаем полученное число
  73.   Serial.print("btSerial: ");
  74.   Serial.println(dataIn);
  75.   switch (dataIn) {
  76.     case 1: //уменьшаем скорость левого двигателя
  77.       if (L > 60) {
  78.         L = L - 5;
  79.       }
  80.       else L = 0;
  81.       Engine();
  82.       stopSignal();
  83.     break;
  84.     case 2: //увеличиваем скорость левого двигателя
  85.       if (L < 255) {
  86.         if (L == 0) {
  87.           L = 80;
  88.         }
  89.         else {
  90.           L = L + 5;
  91.         }
  92.       }
  93.       else L = 255;
  94.       Engine();
  95.     break;
  96.     case 3: //уменьшаем скорость правого двигателя
  97.       if (R > 60) {
  98.         R = R - 5;
  99.       }
  100.       else R = 0;
  101.       Engine();
  102.       stopSignal();
  103.     break;
  104.     case 4: //увеличиваем скорость правого двигателя
  105.       if (R < 255) {
  106.         if (R == 0) {
  107.           R = 80;
  108.         }
  109.         else {
  110.           R = R + 5;
  111.         }
  112.       }
  113.       else R = 255;
  114.       Engine();
  115.     break;
  116.     case 0: //стоп
  117.       L = 0;
  118.       R = 0;
  119.       Engine();
  120.       stopSignal();
  121.     break;
  122.     case 9: //полный вперёд
  123.       L = 255;
  124.       R = 255;
  125.       Engine();
  126.     break;
  127.     case 8: //включаем/выключаем фары
  128.       svet = !svet;
  129.       digitalWrite(fary1, svet);
  130.       digitalWrite(fary2, svet);
  131.     break;
  132.     case 7: //гудок
  133.       tone(soundSignal, 500, 1000);
  134.       delay(500);
  135.       noTone(soundSignal);
  136.     break;
  137.     case 6: //меняем направление вращения двигателей
  138.       L_side = !L_side;
  139.       R_side = !R_side;
  140.       Engine();
  141.     break;
  142.     case 12: //меняем направление вращения левого двигателя
  143.       L_side = !L_side;
  144.       Engine();
  145.     break;
  146.     case 21: //меняем направление вращения правого двигателя
  147.       R_side = !R_side;
  148.       Engine();
  149.     break;
  150.   }
  151.  }
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement