-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLEDStripWhites.cpp
More file actions
141 lines (131 loc) · 3.05 KB
/
LEDStripWhites.cpp
File metadata and controls
141 lines (131 loc) · 3.05 KB
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
G35: An Arduino library for GE Color Effects G-35 holiday lights.
Copyright © 2011 The G35 Authors. Use, modification, and distribution are
subject to the BSD license as described in the accompanying LICENSE file.
By Mike Tsao <https://github.com/sowbug>.
and Mark Ortiz
See README for complete attributions.
*/
#include <LEDStripWhites.h>
#include <LEDStrip8806.h>
LEDStripWhites::LEDStripWhites(LEDStripG35& g35, uint8_t pattern)
: LEDStripLightProgram(g35, pattern), intensity_(0), pattern_(pattern), count_(1), sequence_(0), wait_(50)
{
uint8_t current = 0;
//LEDStrip8806 myStrip;
switch (pattern_ % 7)
{
case 0: //Warm White
g35_.fill_color(0, light_count_, COLOR_WARMWHITE); //myStrip.Color(0x00,0x00,0xFF)); //COLOR_WARMWHITE
break;
case 1: //Cold White
g35_.fill_color(0, light_count_, COLOR_WHITE); //myStrip.Color(0xFF,0x00,0x00)); //COLOUR_WHITE
break;
case 2: // Warm & Cold White
for (int i = 0; i < light_count_; i++)
{
if ((i % 2) == 0)
{
g35_.fill_color(i, 1, COLOR_WHITE); //
}
else
{
g35_.fill_color(i, 1, COLOR_WARMWHITE); //
}
}
break;
case 3: //Hint of RGB
for (int i = 0; i < light_count_; i++)
{
switch (current)
{
case 0:
g35_.fill_color(i, 1, COLOR(0x7F, 0x60, 0x60));
current = 1;
break;
case 1:
g35_.fill_color(i, 1, COLOR(0x60, 0x7F, 0x60));
current = 2;
break;
case 2:
g35_.fill_color(i, 1, COLOR(0x60, 0x60, 0x7F));
current = 0;
break;
}
}
break;
case 4: //Hint of CYM
for (int i = 0; i < light_count_; i++)
{
switch (current)
{
case 0:
g35_.fill_color(i, 1, COLOR(0x60, 0x7F, 0x7F));
current = 1;
break;
case 1:
g35_.fill_color(i, 1, COLOR(0x7F, 0x7F, 0x60));
current = 2;
break;
case 2:
g35_.fill_color(i, 1, COLOR(0x7F, 0x60, 0x7F));
current = 0;
break;
}
}
break;
}
g35_.show();
}
uint32_t LEDStripWhites::Do()
{
switch (pattern_ % 7)
{
case 5: //Hint of RGB chase
g35_.fill_sequence(0, count_, sequence_, 1, RGB);
g35_.show();
break;
case 6: //Hint of CYM chase
g35_.fill_sequence(0, count_, sequence_, 1, CYM);
g35_.show();
break;
default:
return 1000;
}
if (count_ < light_count_)
{
++count_;
}
else
{
++sequence_;
}
delay(wait_);
return bulb_frame_;
}
color_t LEDStripWhites::RGB(uint16_t sequence)
{
sequence = sequence % 3;
if (sequence == 0)
{
return COLOR(0x7F, 0x60, 0x60);
}
if (sequence == 1)
{
return COLOR(0x60, 0x7F, 0x60);
}
return COLOR(0x60, 0x60, 0x7F);
}
color_t LEDStripWhites::CYM(uint16_t sequence)
{
sequence = sequence % 3;
if (sequence == 0)
{
return COLOR(0x60, 0x7F, 0x7F);
}
if (sequence == 1)
{
return COLOR(0x7F, 0x7F, 0x60);
}
return COLOR(0x7F, 0x60, 0x7F);
}