Project

General

Profile

Statistics
| Branch: | Revision:

robobuggy / arduino / RCbuggyMega / xbee.cpp @ 6331ce9f

History | View | Annotate | Download (1.54 KB)

1
/**
2
 * Code relating to something I'm not sure yet
3
 * @author Audrey Yeoh (ayeoh)
4
 *
5
 */
6

    
7
#include <Arduino.h>
8
#include "xbee.h"
9

    
10
#define STEERING_CENTER 133
11

    
12
// holds the data read from the serial xbee
13
static char data;
14

    
15
// holds the message itself
16
static String message;
17

    
18
static int pingPong = 1;
19
static int startFound = 0;
20
static int midFound = 0;
21
static int endFound = 1;
22
static char intbuf[32];
23

    
24
static int steeringAngle = STEERING_CENTER;
25
static int brake = 0;
26

    
27
static int led;
28

    
29
void xbee_init(int ledPin){
30
  pinMode(ledPin, OUTPUT);
31
  led = ledPin;
32
}
33

    
34
// parses the data from the xbee serial
35
void parse(char data){
36
  switch(data){
37
    case 'A':
38
      startFound = 1;
39
      midFound = 0;
40
      endFound = 0;
41
      message = "";
42
      break;
43

    
44
    case 'B':
45
      startFound = 0;
46
      midFound = 1;
47
      endFound = 0;
48
      break;
49
    case 'C':
50
      startFound = 0;
51
      midFound = 0;
52
      endFound =1;
53
      break;
54
    default: // all other cases
55
      if (startFound){
56
        message = message + data;
57

    
58
      }else if (midFound){
59
        if (data == '1'){
60
          brake = 1;
61
        }else{
62
          brake = 0;
63
        }
64
        message.toCharArray(intbuf, sizeof(intbuf));
65
        steeringAngle = atoi(intbuf);
66
      }
67
      break;
68
  }
69
}
70

    
71

    
72
int getSteeringAngle(){
73
  return steeringAngle;
74
}
75

    
76
int getBrake(){
77
        return brake;
78
}
79

    
80
// flops an led everytime a message is received.
81
// Helps to debug whether messages are received
82
void debugMessage(){
83
  if (pingPong == 0){
84
    digitalWrite(led, LOW);
85
  }else{
86
    digitalWrite(led, HIGH);
87
  }
88

    
89
  pingPong = 1 - pingPong;
90
}