root / trunk / code / behaviors / hunter_prey / james / main.c @ 1848
History | View | Annotate | Download (3.34 KB)
1 | 1848 | jmcarrol | /*HUNTER_PREY by jamesCarroll 10/26/10*/
|
---|---|---|---|
2 | 1847 | azirbel | #include <dragonfly_lib.h> |
3 | #include <wl_basic.h> |
||
4 | #include "hunter_prey.h" |
||
5 | |||
6 | 1848 | jmcarrol | #define WL_CHANNEL 15 |
7 | 1847 | azirbel | |
8 | /* Variables used to receive packets */
|
||
9 | unsigned char* packet_data; |
||
10 | int data_length;
|
||
11 | |||
12 | /* Data buffer used to send packets */
|
||
13 | 1848 | jmcarrol | char send_buffer[3]; |
14 | 1847 | azirbel | |
15 | int main(void) |
||
16 | { |
||
17 | |||
18 | 1848 | jmcarrol | /* Initialize dragonfly board */
|
19 | dragonfly_init(ALL_ON); |
||
20 | /* Initialize the basic wireless library */
|
||
21 | wl_basic_init_default(); |
||
22 | /* Set the XBee channel to your assigned channel */
|
||
23 | wl_set_channel(WL_CHANNEL); |
||
24 | 1847 | azirbel | |
25 | 1848 | jmcarrol | /* ****** CODE HERE ******* */
|
26 | int yes= 1; |
||
27 | int no = 3; |
||
28 | int speed = 200; |
||
29 | int isHunter = yes;
|
||
30 | int t1 = 0; |
||
31 | int t2 = 0; |
||
32 | int timechecked = 0; |
||
33 | int beginning = 1; |
||
34 | send_buffer[2] = get_robotid();
|
||
35 | if(wheel()<100) |
||
36 | isHunter=yes; |
||
37 | else
|
||
38 | isHunter=no; |
||
39 | 1847 | azirbel | |
40 | 1848 | jmcarrol | while(1) |
41 | { |
||
42 | if(isHunter == yes)
|
||
43 | 1847 | azirbel | { |
44 | 1848 | jmcarrol | bom_off(); |
45 | orb_set_color(RED); |
||
46 | while(1) |
||
47 | { |
||
48 | int front = 0; |
||
49 | front = range_read_distance(IR2); |
||
50 | bom_refresh(BOM_ALL); |
||
51 | int bomNum = 0; |
||
52 | bomNum = bom_get_max(); |
||
53 | if(hunter_prey_tagged(bomNum, front))
|
||
54 | 1847 | azirbel | { |
55 | 1848 | jmcarrol | send_buffer[0] = HUNTER_PREY_ACTION_TAG;
|
56 | send_buffer[1] = get_robotid();
|
||
57 | wl_basic_send_global_packet(42, send_buffer, 3); |
||
58 | 1847 | azirbel | } |
59 | 1848 | jmcarrol | packet_data = wl_basic_do_default(&data_length); |
60 | if(packet_data != 0) |
||
61 | 1847 | azirbel | { |
62 | 1848 | jmcarrol | if(data_length == 3 && packet_data[0] == HUNTER_PREY_ACTION_ACK) |
63 | 1847 | azirbel | { |
64 | 1848 | jmcarrol | if(packet_data[1] == get_robotid()) |
65 | 1847 | azirbel | { |
66 | 1848 | jmcarrol | orb_set_color(GREEN); |
67 | isHunter = no; |
||
68 | motor_l_set(1, 200); |
||
69 | motor_r_set(0,200);delay_ms(1000);break; |
||
70 | 1847 | azirbel | } |
71 | 1848 | jmcarrol | else{
|
72 | orb_set_color(BLUE);motor_r_set(0,0);motor_l_set(0,0);delay_ms(3000);break; |
||
73 | 1847 | azirbel | } |
74 | } |
||
75 | } |
||
76 | 1848 | jmcarrol | bom_refresh(BOM_ALL); |
77 | bomNum = bom_get_max(); |
||
78 | if(bomNum == 4) |
||
79 | { |
||
80 | motor_l_set(1, speed);
|
||
81 | motor_r_set(1, speed);
|
||
82 | 1847 | azirbel | } |
83 | 1848 | jmcarrol | else
|
84 | 1847 | azirbel | { |
85 | 1848 | jmcarrol | if(bomNum == -1){} |
86 | else if((bomNum >= 12) || (bomNum < 4)) |
||
87 | { |
||
88 | motor_l_set(FORWARD, speed); |
||
89 | motor_r_set(BACKWARD, speed); |
||
90 | 1847 | azirbel | } |
91 | 1848 | jmcarrol | else
|
92 | { |
||
93 | motor_l_set(BACKWARD, speed); |
||
94 | motor_r_set(FORWARD, speed); |
||
95 | 1847 | azirbel | } |
96 | 1848 | jmcarrol | } |
97 | } |
||
98 | } |
||
99 | else
|
||
100 | { |
||
101 | orb_set_color(GREEN); |
||
102 | bom_on(); |
||
103 | while(1) |
||
104 | { |
||
105 | int front = range_read_distance(IR2);
|
||
106 | packet_data = wl_basic_do_default(&data_length); |
||
107 | if(packet_data != 0) |
||
108 | { |
||
109 | if(data_length == 3 && packet_data[0] == HUNTER_PREY_ACTION_TAG) |
||
110 | { |
||
111 | send_buffer[0] = HUNTER_PREY_ACTION_ACK;
|
||
112 | send_buffer[1] = packet_data[1]; |
||
113 | wl_basic_send_global_packet(42, send_buffer, 3); |
||
114 | isHunter=yes; |
||
115 | orb_set_color(BLUE); |
||
116 | motor_r_set(0,0);motor_l_set(0,0); |
||
117 | bom_off(); |
||
118 | delay_ms(3000);
|
||
119 | break;
|
||
120 | 1847 | azirbel | } |
121 | } |
||
122 | 1848 | jmcarrol | int side1 = range_read_distance(IR1);
|
123 | int side2 = range_read_distance(IR3);
|
||
124 | t2 = rtc_get(); |
||
125 | if(front < 200 && front > 50 && !(timechecked == 1)) |
||
126 | 1847 | azirbel | { |
127 | 1848 | jmcarrol | orb2_set_color(RED); |
128 | timechecked = 1;
|
||
129 | t1 = rtc_get(); |
||
130 | motor_l_set(1, speed);
|
||
131 | motor_r_set(0, 0); |
||
132 | } |
||
133 | else if(side1 < 300 && side1 > 0 && timechecked != 1) |
||
134 | { |
||
135 | motor_r_set(0,0); |
||
136 | } |
||
137 | else if(side2 < 300 && side2 > 0 && timechecked != 1) |
||
138 | { |
||
139 | motor_l_set(0,0); |
||
140 | } |
||
141 | else
|
||
142 | { |
||
143 | if(t2 - t1 > 2 || beginning == 1) |
||
144 | { |
||
145 | orb2_set_color(BLUE); |
||
146 | timechecked = 0;
|
||
147 | motor_l_set(1, speed);
|
||
148 | motor_r_set(1, speed);
|
||
149 | beginning = 0;
|
||
150 | 1847 | azirbel | } |
151 | } |
||
152 | 1848 | jmcarrol | } |
153 | 1847 | azirbel | } |
154 | } |
||
155 | |||
156 | |||
157 | 1848 | jmcarrol | /* ****** END HERE ******* */
|
158 | 1847 | azirbel | |
159 | 1848 | jmcarrol | while(1); |
160 | |||
161 | return 0; |
||
162 | |||
163 | 1847 | azirbel | } |