Project

General

Profile

Statistics
| Revision:

root / trunk / code / projects / linefollowing / lineFollow.h @ 1954

History | View | Annotate | Download (6.18 KB)

1 1954 whchang
<<<<<<< .mine
2
#include <dragonfly_lib.h>
3
4
#ifndef _LINEFOLLOW_H_
5
#define _LINEFOLLOW_H_
6
7
#define LWHITE                        0
8
#define LGREY                        1
9
#define LBLACK                         2
10
#define CENTER                        3
11
#define LINELOST                -1
12
13
#define NOBARCODE                 -2
14
#define INTERSECTION         -25
15
16
#define NOLINE                        -50
17
#define FULL_LINE                 -51
18
19
//! Number of consecutive barcode color readings for a significant reading.
20
#define MAX_DURATION    20
21
//! Number of consecutive white barcode readings before a barcode reset.
22
#define TIMEOUT_DURATION    1000
23
//! Anything lower than this value is white
24
#define GREY_THRESHOLD 100
25
//! Anything higher than this value is black
26
#define BLACK_THRESHOLD 400
27
28
#define LEFT_SENSOR     1
29
#define RIGHT_SENSOR    0
30
31
/**
32
 * @brief Initializes line following.
33
 *
34
 * Must be called before line following will work.
35
 * Turns the analog loop off.
36
 */
37
void lineFollow_init(void);
38
39
/**        lineFollow
40
 *        Must call lineFollow_init first
41
 *        Must be called inside a loop
42
 */
43
int lineFollow(int speed);
44
45
/**        turnLeft turnRight mergeLeft mergeRight
46
 *        Must be called inside a loop
47
 *        returns 0 when complete
48
 */
49
int turnLeft(void);
50
int turnRight(void);
51
int mergeLeft(void);
52
int mergeRight(void);
53
54
/**
55
 * @brief Updates the values stored in the array to white or black based on
56
 * current sensor readings.
57
 *
58
 * @param values The array of five integers to be updated.
59
 */
60
void updateLine(int* values);
61
62
/**
63
 * @brief Returns an index of the middle of the line based on line readings.
64
 *
65
 * Two special return values are possible:
66
 *   NOLINE if none of the sensors holds a black value, and
67
 *   FULL_LINE if all of the sensors see black.
68
 *
69
 * Otherwise, returns a value from -4 (farthest left) to 4 (farthest right), with
70
 * 0 the line being centered in the middle.
71
 *
72
 * @param colors The array of 5 readings from the line sensor.  Must be either
73
 *    LWHITE or LBLACK.
74
 * @return Either a special value or an index from -4 to 4.
75
 *
76
 */
77
int lineLocate(int* colors);
78
79
/**        updatebarCode
80
 *        Reads in and processes
81
 *        bar code data
82
 */
83
void updateBarCode(void);
84
85
/**
86
 * @brief Gets the completed value read by the barcode reader, or NOBARCODE.
87
 *
88
 * Returns a bar code if available (if at the end of a barcode) and resets the
89
 * barcodePosition to 0. Otherwise, return NOBARCODE.  *
90
 * @return The value of the barcode if a complete barcode, else NOBARCODE.
91
 */
92
int getBarCode(void);
93
94
95
//! A simple function to return the minimum of two integers.
96
int min(int x, int y);
97
//! A simple function to return the maximum of two integers.
98
int max(int x, int y);
99
100
/** @todo Alex: I hate these functions, but I'm keeping them so code will still work. But we should delete them sometime. */
101
102
/**        motorLeft
103
 *        Commands the left motor
104
 *        Cannot be used to stop
105
 *        0-126 are backward
106
 *        127-255 are forward
107
 */
108
void motorLeft(int speed);
109
110
/**        motorRight
111
 *        Commands the right motor
112
 *        Cannot be used to stop
113
 *        0-126 are backward
114
 *        127-255 are forward
115
 */
116
void motorRight(int speed);
117
118
/**        lost
119
 *        Internal counter to detect if the line was lost
120
 */
121
int lost;
122
123
int onLine(void);
124
125
#endif
126
=======
127
#include <dragonfly_lib.h>
128
129
#ifndef _LINEFOLLOW_H_
130
#define _LINEFOLLOW_H_
131
132
#define LWHITE                        0
133
#define LGREY                        1
134
#define LBLACK                         2
135
#define CENTER                        3
136
#define LINELOST                -1
137
138
#define NOBARCODE                 -2
139
#define INTERSECTION         -25
140
141
#define NOLINE                        -50
142
#define FULL_LINE                 -51
143
144
//! Number of consecutive barcode color readings for a significant reading.
145
#define MAX_DURATION    20
146
//! Number of consecutive white barcode readings before a barcode reset.
147
#define TIMEOUT_DURATION    1000
148
//! Anything lower than this value is white
149
#define GREY_THRESHOLD 100
150
//! Anything higher than this value is black
151
#define BLACK_THRESHOLD 400
152
153
#define LEFT_SENSOR     1
154
#define RIGHT_SENSOR    0
155
156
/**
157
 * @brief Initializes line following.
158
 *
159
 * Must be called before line following will work.
160
 * Turns the analog loop off.
161
 */
162
void lineFollow_init(void);
163
164
/**        lineFollow
165
 *        Must call lineFollow_init first
166
 *        Must be called inside a loop
167
 */
168
int lineFollow(int speed);
169
170
/**        turnLeft turnRight mergeLeft mergeRight
171
 *        Must be called inside a loop
172
 *        returns 0 when complete
173
 */
174
int turnLeft(void);
175
int turnRight(void);
176
int mergeLeft(void);
177
int mergeRight(void);
178
179
/**
180
 * @brief Updates the values stored in the array to white or black based on
181
 * current sensor readings.
182
 *
183
 * @param values The array of five integers to be updated.
184
 */
185
void updateLine(int* values);
186
187
/**
188
 * @brief Returns an index of the middle of the line based on line readings.
189
 *
190
 * Two special return values are possible:
191
 *   NOLINE if none of the sensors holds a black value, and
192
 *   FULL_LINE if all of the sensors see black.
193
 *
194
 * Otherwise, returns a value from -4 (farthest left) to 4 (farthest right), with
195
 * 0 the line being centered in the middle.
196
 *
197
 * @param colors The array of 5 readings from the line sensor.  Must be either
198
 *    LWHITE or LBLACK.
199
 * @return Either a special value or an index from -4 to 4.
200
 *
201
 */
202
int lineLocate(int* colors);
203
204
/**        updatebarCode
205
 *        Reads in and processes
206
 *        bar code data
207
 */
208
void updateBarCode(void);
209
210
/**
211
 * @brief Gets the completed value read by the barcode reader, or NOBARCODE.
212
 *
213
 * Returns a bar code if available (if at the end of a barcode) and resets the
214
 * barcodePosition to 0. Otherwise, return NOBARCODE.  *
215
 * @return The value of the barcode if a complete barcode, else NOBARCODE.
216
 */
217
int getBarCode(void);
218
219
220
//! A simple function to return the minimum of two integers.
221
int min(int x, int y);
222
//! A simple function to return the maximum of two integers.
223
int max(int x, int y);
224
225
/** @todo Alex: I hate these functions, but I'm keeping them so code will still work. But we should delete them sometime. */
226
227
/**        motorLeft
228
 *        Commands the left motor
229
 *        Cannot be used to stop
230
 *        0-126 are backward
231
 *        127-255 are forward
232
 */
233
void motorLeft(int speed);
234
235
/**        motorRight
236
 *        Commands the right motor
237
 *        Cannot be used to stop
238
 *        0-126 are backward
239
 *        127-255 are forward
240
 */
241
void motorRight(int speed);
242
243
/**        lost
244
 *        Internal counter to detect if the line was lost
245
 */
246
int lost;
247
248
int onLine(void);
249
250
#endif
251
>>>>>>> .r1952