-
Notifications
You must be signed in to change notification settings - Fork 4
/
twinkle.h
43 lines (35 loc) · 933 Bytes
/
twinkle.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
static bool (*twinkle_buffer)[REPEAT_LENGTH] = (bool(*)[16]) &common_buffer;
static_assert(sizeof(*twinkle_buffer) <= sizeof(common_buffer), "twinkle_buffer must fit in common_buffer");
uint8_t twinkle_i;
uint8_t twinkle_div;
//functions for this pattern
//init function
void twinkle_init(void) {
for (uint8_t i = 0 ; i < REPEAT_LENGTH ; i++) {
(*twinkle_buffer)[i] = 0;
}
twinkle_i = 0;
twinkle_div = 0;
return;
}
//frame function
void twinkle_frame(void) {
//only run twice a second
if (twinkle_div++ < 12) {
return;
}
twinkle_div = 0;
//select the next bit slightly randomly
twinkle_i = random(0, REPEAT_LENGTH);
//invert the bit
(*twinkle_buffer)[twinkle_i] = (*twinkle_buffer)[twinkle_i] ^ 1;
return;
}
//getled function
rgb24 twinkle_getled(uint8_t led) {
if ((*twinkle_buffer)[led % REPEAT_LENGTH]) {
return(colour(WHITE,99));
} else {
return(colour(BLACK,99));
}
}