root / trunk / code / projects / colonet / robot / joystick / continuous_control / tankcontrol.c @ 864
History | View | Annotate | Download (1009 Bytes)
1 |
#include <dragonfly_lib.h> |
---|---|
2 |
#include <wireless.h> |
3 |
#include <wl_defs.h> |
4 |
#include "../../../common/colonet_defs.h" |
5 |
#include <serial.h> |
6 |
#include <stdio.h> |
7 |
#include <xbee.h> |
8 |
|
9 |
#define YCENTER 90 |
10 |
#define XCENTER 90 |
11 |
|
12 |
int joystick_pos (void); |
13 |
|
14 |
int main (void) { |
15 |
int cur_pos = 0; |
16 |
int x_pos, y_pos;
|
17 |
int vx, vy;
|
18 |
char buf[100]; |
19 |
|
20 |
/* init stuff */
|
21 |
dragonfly_init(SERIAL | USB | COMM | ORB | ANALOG); |
22 |
ADCSRA = _BV(ADEN) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); |
23 |
xbee_init(); |
24 |
orb_set_color(BLUE); |
25 |
|
26 |
|
27 |
while (1) { |
28 |
cur_pos = joystick_pos(); |
29 |
x_pos = cur_pos & 0xFF;
|
30 |
y_pos = (cur_pos >> 8) & 0xFF; |
31 |
|
32 |
vx = (x_pos - XCENTER) * 10;
|
33 |
vy = (y_pos - YCENTER) * 10;
|
34 |
|
35 |
sprintf(buf, "%d,%d\0", vx, vy);
|
36 |
usb_puts(buf); |
37 |
usb_puts("\n");
|
38 |
|
39 |
delay_ms(200);
|
40 |
} |
41 |
|
42 |
} |
43 |
|
44 |
|
45 |
/**
|
46 |
* Get the current X and Y axis readings.
|
47 |
*/
|
48 |
int joystick_pos (void) { |
49 |
char x_pos, y_pos;
|
50 |
char buf[100]; |
51 |
|
52 |
x_pos = (char) analog_get8(AN4);
|
53 |
y_pos = (char) analog_get8(AN5);
|
54 |
|
55 |
return x_pos | (y_pos << 8); |
56 |
} |