Project

General

Profile

Statistics
| Revision:

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

History | View | Annotate | Download (4.37 KB)

1 1083 deffi
#include <dragonfly_lib.h>
2
//#include "smart_run_around_fsm.h"
3
4
// Martin "deffi" Herrmann Test
5
6 1131 deffi
static void oset(uint8_t r,uint8_t g,uint8_t b)
7 1126 deffi
{
8 1154 deffi
    orbs_set(r,g,b,255-r,255-g,255-b);
9 1126 deffi
}
10
11 1131 deffi
static void color_circle (void)
12 1083 deffi
{
13 1154 deffi
    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 1083 deffi
}
52
53 1131 deffi
static void acl(void)
54 1083 deffi
{
55 1154 deffi
#define redval 255
56
#define greenval 150
57
#define interval 1300
58
#define flash 20
59
#define pause 200
60 1083 deffi
61 1154 deffi
#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 1111 deffi
64 1154 deffi
    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 1083 deffi
}
73
74
int main(void) {
75 1154 deffi
    //  dragonfly_init(ALL_ON);
76
    dragonfly_init(0);
77 1111 deffi
78 1154 deffi
    usb_init ();
79
    usb_puts ("Startup\r\n");
80 1111 deffi
81 1131 deffi
82 1154 deffi
    //encoders_init ();
83 1111 deffi
84 1083 deffi
    //analog_init(ADC_START);
85 1154 deffi
    //analog_init(0);
86 1111 deffi
87 1083 deffi
    //range_init();
88
89 1154 deffi
    //DDRF=2;
90 1087 deffi
91 1154 deffi
    //motors_init ();
92
    //motor2_set (FORWARD, 64);
93 1102 deffi
94 1154 deffi
    //orb_init_binary ();
95
    orb_init_pwm ();
96 1109 deffi
97 1154 deffi
    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 1111 deffi
107 1154 deffi
    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 1138 deffi
122 1154 deffi
    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 1138 deffi
130 1154 deffi
                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 1139 deffi
137 1154 deffi
            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 1083 deffi
145 1154 deffi
    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 1083 deffi
153 1154 deffi
    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 1083 deffi
}