Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************
- * Bluetooth Car v. 1.2
- * Authors:
- * Lugovcov Gleb
- * Pahomov Daniil
- * Kolpakov Vladimir
- * http://ut60.ru
- * 28.05.2016
- ************************/
- #include <SoftwareSerial.h>
- SoftwareSerial btSerial(6, 10); // Rx, Tx
- #define IN1 18 //input1 подключен к пину A4
- #define IN2 17 //input2 подключен к пину A3
- #define IN3 8 //input3 подключен к пину 8
- #define IN4 7 //input4 подключен к пину 7
- #define EN1 3 //enable1 подключен к пину 3
- #define EN2 9 //enable2 подключен к пину 9
- #define fary1 2 //светодиоды-фары1 подключены к пину 2
- #define fary2 4 //светодиоды-фары2 подключены к пину 4
- #define stopSignal1 11 //светодиоды-стопы1 (красные) подключены к пину 11
- #define stopSignal2 12 //светодиоды-стопы2 (красные) подключены к пину 12
- #define soundSignal 5 //динамик подключён к пину 5
- int L = 0; //скорость левого двигателя
- int R = 0; //скорость правого двигателя
- boolean svet = 0; //состояние фар горит/не горит
- boolean L_side = 0;
- boolean R_side = 0;
- void Engine() {
- digitalWrite (IN2, !L_side);
- digitalWrite (IN1, L_side);
- digitalWrite (IN4, !R_side);
- digitalWrite (IN3, R_side);
- analogWrite(EN1, L); //включаем левый двигатель
- analogWrite(EN2, R); //включаем правый двигатель
- }
- void stopSignal() {
- digitalWrite(stopSignal1, HIGH);
- digitalWrite(stopSignal2, HIGH);
- delay(200);
- digitalWrite(stopSignal1, LOW);
- digitalWrite(stopSignal2, LOW);
- }
- void setup() {
- Serial.begin(9600);
- pinMode (EN1, OUTPUT);
- pinMode (IN1, OUTPUT);
- pinMode (IN2, OUTPUT);
- pinMode (EN2, OUTPUT);
- pinMode (IN4, OUTPUT);
- pinMode (IN3, OUTPUT);
- pinMode (fary1, OUTPUT);
- pinMode (fary2, OUTPUT);
- pinMode (stopSignal1, OUTPUT);
- pinMode (stopSignal2, OUTPUT);
- btSerial.begin(9600);
- btSerial.setTimeout(10); //пауза чтения по BT 10 мс
- }
- void loop() {
- if (btSerial.available()) // если что-то получили
- {
- int dataIn = btSerial.parseInt(); //читаем полученное число
- Serial.print("btSerial: ");
- Serial.println(dataIn);
- switch (dataIn) {
- case 1: //уменьшаем скорость левого двигателя
- if (L > 60) {
- L = L - 5;
- }
- else L = 0;
- Engine();
- stopSignal();
- break;
- case 2: //увеличиваем скорость левого двигателя
- if (L < 255) {
- if (L == 0) {
- L = 80;
- }
- else {
- L = L + 5;
- }
- }
- else L = 255;
- Engine();
- break;
- case 3: //уменьшаем скорость правого двигателя
- if (R > 60) {
- R = R - 5;
- }
- else R = 0;
- Engine();
- stopSignal();
- break;
- case 4: //увеличиваем скорость правого двигателя
- if (R < 255) {
- if (R == 0) {
- R = 80;
- }
- else {
- R = R + 5;
- }
- }
- else R = 255;
- Engine();
- break;
- case 0: //стоп
- L = 0;
- R = 0;
- Engine();
- stopSignal();
- break;
- case 9: //полный вперёд
- L = 255;
- R = 255;
- Engine();
- break;
- case 8: //включаем/выключаем фары
- svet = !svet;
- digitalWrite(fary1, svet);
- digitalWrite(fary2, svet);
- break;
- case 7: //гудок
- tone(soundSignal, 500, 1000);
- delay(500);
- noTone(soundSignal);
- break;
- case 6: //меняем направление вращения двигателей
- L_side = !L_side;
- R_side = !R_side;
- Engine();
- break;
- case 12: //меняем направление вращения левого двигателя
- L_side = !L_side;
- Engine();
- break;
- case 21: //меняем направление вращения правого двигателя
- R_side = !R_side;
- Engine();
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement