Project

General

Profile

Statistics
| Revision:

root / trunk / code / behaviors / library_test / main.c @ 1154

History | View | Annotate | Download (4.37 KB)

1
#include <dragonfly_lib.h>
2
//#include "smart_run_around_fsm.h"
3

    
4
// Martin "deffi" Herrmann Test
5

    
6
static void oset(uint8_t r,uint8_t g,uint8_t b)
7
{
8
    orbs_set(r,g,b,255-r,255-g,255-b);
9
}
10

    
11
static void color_circle (void)
12
{
13
    while(1)
14
    {
15
        for (uint8_t part=0; part<6; ++part)
16
        {
17
            for (uint8_t up=0; up<255; ++up)
18
            {
19
                uint8_t dn=255-up;
20
                uint8_t on=255;
21
                uint8_t of=0;
22

    
23
                if (1)
24
                {
25
                    // Maximum brightness mode
26
                    switch (part)
27
                    {
28
                        case 0: oset (on, up, of); break;
29
                        case 1: oset (dn, on, of); break;
30
                        case 2: oset (of, on, up); break;
31
                        case 3: oset (of, dn, on); break;
32
                        case 4: oset (up, of, on); break;
33
                        case 5: oset (on, of, dn); break;
34
                    }
35
                }
36
                else
37
                {
38
                    // Constant brightness mode (not very constant though)
39
                    switch (part%3)
40
                    {
41
                        case 0: oset (dn, up, of); break;
42
                        case 1: oset (of, dn, up); break;
43
                        case 2: oset (up, of, dn); break;
44
                    }
45
                }
46

    
47
                delay_ms (2);
48
            }
49
        }
50
    }
51
}
52

    
53
static void acl(void)
54
{
55
#define redval 255
56
#define greenval 150
57
#define interval 1300
58
#define flash 20
59
#define pause 200
60

    
61
#define def do { orb1_set(redval,0,0); orb2_set(0,greenval,0); } while (0)
62
#define wht do { orb_set(255,255,255); } while (0)
63

    
64
    while (1)
65
    {
66
        wht; delay_ms (flash);
67
        def; delay_ms (pause-flash);
68
        wht; delay_ms (flash);
69
        def; delay_ms (pause-flash);
70
        def; delay_ms (interval-2*pause-2*flash);
71
    }
72
}
73

    
74
int main(void) {
75
    //  dragonfly_init(ALL_ON);
76
    dragonfly_init(0);
77

    
78
    usb_init ();
79
    usb_puts ("Startup\r\n");
80

    
81

    
82
    //encoders_init ();
83

    
84
    //analog_init(ADC_START);
85
    //analog_init(0);
86

    
87
    //range_init();
88

    
89
    //DDRF=2;
90

    
91
    //motors_init ();
92
    //motor2_set (FORWARD, 64);
93

    
94
    //orb_init_binary ();
95
    orb_init_pwm ();
96

    
97
    if (false)
98
    {
99
        orbs_set (255, 0, 0, 0, 0, 0); delay_ms (500);
100
        orbs_set (0, 255, 0, 0, 0, 0); delay_ms (500);
101
        orbs_set (0, 0, 255, 0, 0, 0); delay_ms (500);
102
        orbs_set (0, 0, 0, 255, 0, 0); delay_ms (500);
103
        orbs_set (0, 0, 0, 0, 255, 0); delay_ms (500);
104
        orbs_set (0, 0, 0, 0, 0, 255); delay_ms (500);
105
    }
106

    
107
    if (false)
108
    {
109
        orb_set (1,1,1);
110
        while (1)
111
        {
112
            SYNC
113
            {
114
                for (uint8_t m=0; m<100; ++m)
115
                {
116
                    _delay_us(10);
117
                }
118
            }
119
        }
120
    }
121

    
122
    if (false)
123
    {
124
        while (1)
125
        {
126
            for (uint8_t x=0; x<255; ++x)
127
            {
128
                orbs_set (x, 1, 2, 3, 4, 5);
129

    
130
                for (uint8_t n=0; n<80; ++n)
131
                {
132
                    SYNC
133
                    { for (uint8_t m=0; m<1; ++m) _delay_us(50); }
134
                }
135
            }
136

    
137
            for (uint8_t x=255; x>0; --x)
138
            {
139
                orbs_set (x, 1, 1, 1, 1, 1);
140
                delay_ms (4);
141
            }
142
        }
143
    }
144

    
145
    if (false)
146
    {
147
        //orbs_set (2,4,6,8,10,12);
148
        //orbs_set (32, 64, 96, 128, 160, 192);
149
        orbs_set (128,128,128,128,128,128);
150
        while (1);
151
    }
152

    
153
    if (false)
154
    {
155
        if (!button2_read ())
156
        {
157
            orb_set_mode (orb_mode_pwm);
158
            orb_disable_timer ();
159

    
160
            while (1)
161
            {
162
                // Continuously call the sorting routine for timing test
163
                for (uint8_t i=0; i<200; ++i)
164
                {
165
                    orbs_set (10,20,30,40,50,60);
166
                    delay_ms (10);
167
                }
168

    
169
                for (uint8_t i=0; i<200; ++i)
170
                {
171
                    orbs_set (60,50,40,30,20,10);
172
                    delay_ms (10);
173
                }
174
            }
175
        }
176
        else
177
        {
178
            while (button2_read ());
179
            if (button1_read ())
180
            {
181
                color_circle ();
182
            }
183
            else
184
            {
185
                acl ();
186
            }
187
        }
188
    }
189

    
190

    
191

    
192
    // Do some lighting
193
    if (!button2_read ())
194
        color_circle ();
195
    else
196
        acl ();
197

    
198
}
199