root / trunk / code / projects / colonet / robot / joystick / continuous_control / tankcontrol.c @ 864
History | View | Annotate | Download (1009 Bytes)
1 | 864 | gtress | #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 | } |