-
Notifications
You must be signed in to change notification settings - Fork 0
/
BT_Controller.ino
72 lines (57 loc) · 1.48 KB
/
BT_Controller.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
#define valueOf(key) atof(textOf(key))
const byte led = 5;
const byte numChars = 70;
char receivedChars[numChars];
boolean newData = false;
boolean RecAtLeast1Time = false;
char *input;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
recvWithStartEndMarkers();
if(RecAtLeast1Time==true){
input = textOf("CUSTOM");
analogWrite(led,valueOf("Y"));
Serial.println(input);
newData = false;
}
}
char* textOf(const char *key){
char* pivot = strstr (receivedChars,key);
char* result;
if(pivot != NULL){
result = strtok(pivot+strlen(key)+1, ",}");
}
return result;
}
void recvWithStartEndMarkers() {
static boolean recvInProgress = false;
static byte ndx = 0;
char startMarker = '{';
char endMarker = '}';
char rc;
while (Serial.available() > 0 && newData == false) {
rc = Serial.read();
if (recvInProgress == true) {
if (rc != endMarker) {
receivedChars[ndx] = rc;
ndx++;
if (ndx >= numChars) {
ndx = numChars - 1;
}
}
else {
receivedChars[ndx] = '\0'; // terminate the string
recvInProgress = false;
ndx = 0;
newData = true;
RecAtLeast1Time = true;
}
}
else if (rc == startMarker) {
recvInProgress = true;
}
}
}