/
bluetooth.ino
117 lines (101 loc) · 2.14 KB
/
bluetooth.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/**
// @Author dsdgun@gmail.com
// @site blog.dsdstudio.net
*/
#include <SoftwareSerial.h>
#define m1_pri_pin 8
#define m1_slv_pin 9
#define m2_pri_pin 10
#define m2_slv_pin 11
#define BT_RX_PIN 2
#define BT_TX_PIN 3
SoftwareSerial BTSerial(BT_RX_PIN, BT_TX_PIN);
void setup() {
pinMode(m1_pri_pin, OUTPUT);
pinMode(m1_slv_pin, OUTPUT);
pinMode(m2_pri_pin, OUTPUT);
pinMode(m2_slv_pin, OUTPUT);
Serial.begin(9600);
BTSerial.begin(9600);
}
/**
// from data Bluetooth virtual serial port
// to String Object
*/
String getSignalString(){
String signal = "";
while (BTSerial.available() > 0) {
signal += (char)BTSerial.read();
};
return signal;
}
void loop() {
if (BTSerial.available()){
String signal = getSignalString();
if ( signal.indexOf("#MHH") != -1 ){
stop();
}
if ( signal.indexOf("#MFF") != -1 ){
forward();
}
if ( signal.indexOf("#MBB") != -1 ){
backword();
}
if ( signal.indexOf("#MBF") != -1 ) {
left();
}
if ( signal.indexOf("#MFB") != -1 ) {
right();
}
// signal Debugging Message
Serial.println(signal);
}
}
void forward_pwm(){
analogWrite(m1_pri_pin, 100);
analogWrite(m1_slv_pin, 0);
analogWrite(m2_pri_pin, 100);
analogWrite(m2_slv_pin, 0);
}
void stop(){
digitalWrite(m1_pri_pin, LOW);
digitalWrite(m1_slv_pin, LOW);
digitalWrite(m2_pri_pin, LOW);
digitalWrite(m2_slv_pin, LOW);
}
/*
// Move forward Tank
*/
void forward(){
digitalWrite(m1_pri_pin, HIGH);
digitalWrite(m1_slv_pin, LOW);
digitalWrite(m2_pri_pin, HIGH);
digitalWrite(m2_slv_pin, LOW);
}
/*
// Move backward Tank
*/
void backword() {
digitalWrite(m1_pri_pin, LOW);
digitalWrite(m1_slv_pin, HIGH);
digitalWrite(m2_pri_pin, LOW);
digitalWrite(m2_slv_pin, HIGH);
}
/*
// Turn right Tank
*/
void right(){
digitalWrite(m1_pri_pin, LOW);
digitalWrite(m1_slv_pin, HIGH);
digitalWrite(m2_pri_pin, HIGH);
digitalWrite(m2_slv_pin, LOW);
}
/*
// Turn Left Tank
*/
void left(){
digitalWrite(m1_pri_pin, HIGH);
digitalWrite(m1_slv_pin, LOW);
digitalWrite(m2_pri_pin, LOW);
digitalWrite(m2_slv_pin, HIGH);
}