Project

General

Profile

Statistics
| Revision:

root / trunk / code / projects / test / test_rangefinder.c @ 1461

History | View | Annotate | Download (1.86 KB)

1 791 dsschult
/**
2 1381 alevkoy
 * @file test_rangefinder.c
3
 * @brief Contains unit test for rangefinder.c module of libdragonfly
4 827 dsschult
 *
5 1381 alevkoy
 * Contains a function allowing the user to test whether the rangefinder module
6
 * works correctly.
7
 *
8
 * @author Colony Project, CMU Robotics Club
9
 **/
10
11
/* Testing Procedure
12 1414 alevkoy
 * - Place hand in front of orbs in 4, 3, 2, 1, 5 order
13 1381 alevkoy
 * - Observe orbs
14
 *
15
 * Expected Behavior:
16
 * - Orbs flash BLUE 3 times to signal start of test
17 1382 alevkoy
 * - During test
18 1414 alevkoy
 *  - Orb 1 changes to reflect which sensor is under test
19
 *  - Orb 2 stays RED until that sensor gets a usable reading, i.e. within visible distance
20 1382 alevkoy
 * - Orbs flash PURPLE 3 times to signal end of test
21 791 dsschult
 */
22
23 1381 alevkoy
#include <dragonfly_lib.h>
24 1067 nparis
25 1414 alevkoy
#define TEST_TIME 500        // duration of success indicator (in ms)
26 1382 alevkoy
#define ON_DELAY 500        // duration of flashes at beginning and end (in ms)
27
#define OFF_DELAY 250        // delay between flashes at beginning and end (in ms)
28 1067 nparis
29 1452 dsschult
int testrangefinder(void) {
30 1382 alevkoy
    int i;  // index
31 1414 alevkoy
    int sensor[5] = {IR4, IR3, IR2, IR1, IR5};
32
    int color[5] = {RED, ORANGE, YELLOW, GREEN, BLUE};
33 1461 bneuman
    int ret;
34 1381 alevkoy
35
    // flash orbs BLUE 3 times
36
    for (i = 0; i < 3; i++) {
37
        orb_set_color(BLUE);
38 1382 alevkoy
        delay_ms(ON_DELAY);
39 1381 alevkoy
        orb_set_color(ORB_OFF);
40 1382 alevkoy
        delay_ms(OFF_DELAY);
41 1381 alevkoy
    }
42
43 1414 alevkoy
    for (i = 0; i < 5; i++) {
44
        // indicate sensor under test
45
        orb2_set_color(color[i]);
46 1382 alevkoy
47 1414 alevkoy
        // wait for sensor interaction
48 1461 bneuman
        while ((ret = range_read_distance(sensor[i])) == -1) {
49 1414 alevkoy
            // stay RED until IR4 sees something
50
            orb1_set_color(RED);
51 1461 bneuman
            if(ret == -3) { //library not init'd
52
              while(1) {
53
                orb2_set_color(GREEN);
54
                orb1_set_color(RED);
55
                delay_ms(250);
56
                orb1_set_color(GREEN);
57
                orb2_set_color(RED);
58
                delay_ms(250);
59
              }
60
            }
61
        }
62 1414 alevkoy
63
        orb1_set_color(GREEN);
64
        delay_ms(TEST_TIME);
65 1381 alevkoy
    }
66
67 1382 alevkoy
    // flash orbs PURPLE 3 times
68
    for (i = 0; i < 3; i++) {
69
        orb_set_color(PURPLE);
70
        delay_ms(ON_DELAY);
71
        orb_set_color(ORB_OFF);
72
        delay_ms(OFF_DELAY);
73
    }
74
75 1381 alevkoy
    return 0;
76 791 dsschult
}